From 9d82df61098c4a43013829bf9a0e7cedb7e26845 Mon Sep 17 00:00:00 2001 From: Sapan Bhatia Date: Mon, 4 May 2009 16:00:59 +0000 Subject: [PATCH] --- linux-2.6-720-click.patch | 133488 +---------------------------------- 1 file changed, 2224 insertions(+), 131264 deletions(-) diff --git a/linux-2.6-720-click.patch b/linux-2.6-720-click.patch index 0cc82e29c..979049969 100644 --- a/linux-2.6-720-click.patch +++ b/linux-2.6-720-click.patch @@ -1,131290 +1,2250 @@ -diff -Nurb click-1.6.0/Makefile click-1.6.0-27/Makefile ---- click-1.6.0/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/Makefile 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,230 @@ -+# Warning: this file must be usable by regular make -+# (unlike the Makefiles in subdirectories). -+ -+SHELL = /bin/sh -+ -+ -+PACKAGE = click -+VERSION = 1.6.0 -+ -+top_srcdir = . -+srcdir = . -+top_builddir = . -+subdir = . -+conf_auxdir = $(top_srcdir) -+ -+AUTOCONF = autoconf -+# ACLOCAL = aclocal -I m4 -+ACLOCAL = : -+PERL = perl -+INSTALL = /usr/bin/install -c -+INSTALL_IF_CHANGED = $(top_builddir)/installch -+INSTALL_DATA = /usr/bin/install -c -m 644 -+INSTALL_DATA_IF_CHANGED = $(top_builddir)/installch -m 644 -+mkinstalldirs = $(conf_auxdir)/mkinstalldirs -+ -+EXTRA_PROVIDES = -+PROVISIONS = i686 i386 i586 int64 linux linux_2_6 pcap $(EXTRA_PROVIDES) -+ -+prefix = /d/click/click-1.6.0-27/inst -+exec_prefix = /d/click/click-1.6.0-27/inst -+includedir = /d/click/click-1.6.0-27/inst/include -+clickincludedir = $(includedir)/click -+netincludedir = $(includedir)/clicknet -+toolincludedir = $(includedir)/clicktool -+bindir = /d/click/click-1.6.0-27/inst/bin -+datarootdir = /d/click/click-1.6.0-27/inst/share -+datadir = /d/click/click-1.6.0-27/inst/share -+clickdatadir = $(datadir)/click -+ -+DRIVERS = userlevel linuxmodule -+OTHER_TARGETS = tools -+ALL_TARGETS = $(DRIVERS) $(OTHER_TARGETS) -+ -+all: $(ALL_TARGETS) Makefile -+ -+bsdmodule: Makefile click-buildtool stamp-h -+ @cd bsdmodule && $(MAKE) all -+linuxmodule: Makefile click-buildtool stamp-h -+ @cd linuxmodule && $(MAKE) all -+ns: Makefile click-buildtool stamp-h -+ @cd ns && $(MAKE) all -+userlevel: Makefile click-buildtool click-compile stamp-h -+ @cd userlevel && $(MAKE) all -+exopc: Makefile click-buildtool stamp-h -+ @cd exopc && $(MAKE) all -+tools: Makefile -+ @cd tools && $(MAKE) all -+ -+install: Makefile click-buildtool click-compile stamp-h installch -+ @for d in $(ALL_TARGETS); do (cd $$d && $(MAKE) install) || exit 1; done -+ @$(MAKE) install-local install-doc install-local-include -+install-local: elementmap.xml click-buildtool click-compile config.mk \ -+ etc/pkg-config.mk installch -+ $(mkinstalldirs) $(DESTDIR)$(bindir) -+ $(INSTALL_IF_CHANGED) click-buildtool $(DESTDIR)$(bindir)/click-buildtool -+ $(INSTALL_IF_CHANGED) click-compile $(DESTDIR)$(bindir)/click-compile -+ $(INSTALL_IF_CHANGED) $(srcdir)/click-mkelemmap $(DESTDIR)$(bindir)/click-mkelemmap -+ $(INSTALL_IF_CHANGED) $(top_srcdir)/test/testie $(DESTDIR)$(bindir)/testie -+ $(mkinstalldirs) $(DESTDIR)$(clickdatadir) -+ $(INSTALL) $(mkinstalldirs) $(DESTDIR)$(clickdatadir)/mkinstalldirs -+ $(INSTALL_DATA) elementmap.xml $(DESTDIR)$(clickdatadir)/elementmap.xml -+ $(INSTALL_DATA_IF_CHANGED) config.mk $(DESTDIR)$(clickdatadir)/config.mk -+ $(INSTALL_DATA_IF_CHANGED) etc/pkg-config.mk $(DESTDIR)$(clickdatadir)/pkg-config.mk -+ $(INSTALL_DATA_IF_CHANGED) $(srcdir)/etc/pkg-Makefile $(DESTDIR)$(clickdatadir)/pkg-Makefile -+ $(INSTALL_DATA_IF_CHANGED) $(srcdir)/etc/pkg-userlevel.mk $(DESTDIR)$(clickdatadir)/pkg-userlevel.mk -+ $(INSTALL_DATA_IF_CHANGED) $(srcdir)/etc/pkg-linuxmodule.mk $(DESTDIR)$(clickdatadir)/pkg-linuxmodule.mk -+ $(INSTALL_DATA_IF_CHANGED) $(srcdir)/etc/pkg-linuxmodule-26.mk $(DESTDIR)$(clickdatadir)/pkg-linuxmodule-26.mk -+ (cd $(top_srcdir); pwd) > $(DESTDIR)$(clickdatadir)/srcdir -+ /bin/rm -rf $(DESTDIR)$(clickdatadir)/src -+ /bin/ln -s "`cd $(top_srcdir); pwd`" $(DESTDIR)$(clickdatadir)/src -+install-doc: elementmap.xml -+ @cd doc && $(MAKE) install -+install-info: -+ @cd doc && $(MAKE) install-info -+install-man: elementmap.xml -+ @-for d in $(ALL_TARGETS) doc; do (cd $$d && $(MAKE) install-man); done -+install-local-include: stamp-h installch -+ $(mkinstalldirs) $(DESTDIR)$(clickincludedir) -+ $(INSTALL_DATA_IF_CHANGED) $(srcdir)/include/click/*.h $(DESTDIR)$(clickincludedir) -+ $(INSTALL_DATA_IF_CHANGED) $(srcdir)/include/click/*.hh $(DESTDIR)$(clickincludedir) -+ $(INSTALL_DATA_IF_CHANGED) $(srcdir)/include/click/*.cc $(DESTDIR)$(clickincludedir) -+ $(INSTALL_DATA_IF_CHANGED) $(top_builddir)/include/click/*.h $(DESTDIR)$(clickincludedir) -+ $(mkinstalldirs) $(DESTDIR)$(clickincludedir)/standard -+ $(INSTALL_DATA_IF_CHANGED) $(srcdir)/include/click/standard/*.hh $(DESTDIR)$(clickincludedir)/standard -+ $(mkinstalldirs) $(DESTDIR)$(netincludedir) -+ $(INSTALL_DATA_IF_CHANGED) $(srcdir)/include/clicknet/*.h $(DESTDIR)$(netincludedir) -+install-include: install-local-include -+ @cd tools && $(MAKE) install-include -+install-lib: -+ @if echo $(ALL_TARGETS) | grep userlevel >/dev/null 2>&1; then cd userlevel && $(MAKE) install-lib; fi -+ @if echo $(ALL_TARGETS) | grep tools >/dev/null 2>&1; then cd tools && $(MAKE) install-lib; fi -+ -+uninstall: elementmap.xml -+ @for d in $(ALL_TARGETS) doc; do (cd $$d && $(MAKE) uninstall) || exit 1; done -+ @$(MAKE) uninstall-local uninstall-local-include -+uninstall-local: -+ /bin/rm -f $(DESTDIR)$(bindir)/click-buildtool $(DESTDIR)$(bindir)/click-compile $(DESTDIR)$(bindir)/click-mkelemmap $(DESTDIR)$(bindir)/testie $(DESTDIR)$(clickdatadir)/elementmap.xml $(DESTDIR)$(clickdatadir)/srcdir $(DESTDIR)$(clickdatadir)/src $(DESTDIR)$(clickdatadir)/config.mk $(DESTDIR)$(clickdatadir)/mkinstalldirs -+ /bin/rm -f $(DESTDIR)$(clickdatadir)/pkg-config.mk $(DESTDIR)$(clickdatadir)/pkg-userlevel.mk $(DESTDIR)$(clickdatadir)/pkg-linuxmodule.mk $(DESTDIR)$(clickdatadir)/pkg-linuxmodule-26.mk $(DESTDIR)$(clickdatadir)/pkg-Makefile -+uninstall-local-include: -+ cd $(srcdir)/include/click; for i in *.h *.hh *.cc; do /bin/rm -f $(DESTDIR)$(clickincludedir)/$$i; done -+ cd $(top_builddir)/include/click; for i in *.h; do /bin/rm -f $(DESTDIR)$(clickincludedir)/$$i; done -+ cd $(srcdir)/include/click/standard; for i in *.hh; do /bin/rm -f $(DESTDIR)$(clickincludedir)/standard/$$i; done -+ cd $(srcdir)/include/clicknet; for i in *.h; do /bin/rm -f $(DESTDIR)$(netincludedir)/$$i; done -+ @-/bin/rmdir $(DESTDIR)$(clickincludedir)/standard -+ @-/bin/rmdir $(DESTDIR)$(clickincludedir) -+ @-/bin/rmdir $(DESTDIR)$(netincludedir) -+ -+elemlist elemlists: click-buildtool -+ @for d in $(DRIVERS); do (cd $$d && $(MAKE) elemlist) || exit 1; done -+ -+MKELEMMAPFLAGS = -+elementmap.xml: click-buildtool $(srcdir)/click-mkelemmap always -+ echo $(DRIVERS) app aqm ethernet icmp ip standard tcpudp $(EXTRA_PROVIDES) | $(top_builddir)/click-buildtool findelem -r "$(PROVISIONS) $(DRIVERS)" -p $(top_srcdir) | $(PERL) $(top_srcdir)/click-mkelemmap -r "$(PROVISIONS)" -t "$(DRIVERS)" -p $(top_srcdir) -Iinclude -s "`cd $(top_srcdir) && pwd`" $(MKELEMMAPFLAGS) > elementmap.xml -+always: -+ @: -+ -+click-buildtool: $(srcdir)/click-buildtool.in config.status -+ cd $(top_builddir) && \ -+ CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status -+ @chmod +x click-buildtool; touch click-buildtool -+click-compile: $(srcdir)/click-compile.in config.status -+ cd $(top_builddir) && \ -+ CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status -+ @chmod +x click-compile; touch click-compile -+config.mk: $(srcdir)/config.mk.in config.status -+ cd $(top_builddir) && \ -+ CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status -+installch: $(srcdir)/installch.in config.status -+ cd $(top_builddir) && \ -+ CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status -+ @chmod +x installch; touch installch -+etc/pkg-config.mk: $(srcdir)/etc/pkg-config.mk.in config.status -+ cd $(top_builddir) && \ -+ CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status -+ -+$(srcdir)/configure: $(srcdir)/configure.in $(srcdir)/m4/click.m4 -+ cd $(srcdir) && $(ACLOCAL) && $(AUTOCONF) -+config.status: $(srcdir)/configure -+ $(SHELL) $(srcdir)/configure '--prefix=/d/click/click-1.6.0-27/inst' '--exec-prefix=/d/click/click-1.6.0-27/inst' '--with-linux=/d/kernels/linux-2.6.27.10-clickport' '--with-linux-map=/d/uml/trelclickSystem.map' -+Makefile: config.status $(srcdir)/Makefile.in -+ cd $(top_builddir) && \ -+ CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status -+config.h: stamp-h -+stamp-h: $(srcdir)/config.h.in $(srcdir)/config-bsdmodule.h.in $(srcdir)/config-linuxmodule.h.in $(srcdir)/config-ns.h.in $(srcdir)/config-userlevel.h.in config.status -+ cd $(top_builddir) \ -+ && CONFIG_FILES= $(SHELL) ./config.status -+ echo > stamp-h -+ -+check-filenames: -+ @a=`find . \( -name \*.cc -or -name \*.c \) -print | sed 's/.*\/\(.*\)\.c*$$/\1.o/' | grep -v 'elements\.o' | sort | uniq -d`; \ -+ if test -z $$a; then echo OK; else echo "*** warning: duplicate object file names:"; echo "$$a"; fi -+ -+clean: -+ @-for d in bsdmodule linuxmodule ns userlevel tools doc; do (cd $$d && $(MAKE) clean); done -+ -rm -f elementmap.xml conftest.* -+distclean: -+ @-for d in bsdmodule linuxmodule ns userlevel tools doc; do (cd $$d && $(MAKE) distclean); done -+ -rm -f Makefile config.status etc/libclick/Makefile -+ -rm -f include/click/config.h include/click/config-*.h include/click/pathvars.h -+ -rm -f config.cache config.log click-buildtool click-compile config.mk stamp-h -+ -rm -f etc/pkg-config.mk -+ -rm -f elementmap.xml conftest.* installch -+ -+ -+distdir = $(PACKAGE)-$(VERSION) -+top_distdir = $(distdir) -+ -+dist: distdir -+ tar czf $(distdir).tar.gz $(distdir) -+ -rm -rf $(distdir) -+distdir: $(srcdir)/configure -+ -rm -rf doc/click.info* doc/testie.1 $(srcdir)/doc/click.info* $(srcdir)/doc/testie.1 -+ cd doc && $(MAKE) info testie.1 -+ cd $(srcdir)/etc/samplepackage && $(AUTOCONF) -+ -rm -rf $(distdir) -+ mkdir $(distdir) -+ chmod 777 $(distdir) -+ @echo Copying library, documentation, configuration, and driver files... -+ [ "$(srcdir)" == . ] || cp doc/click.info* doc/testie.1 $(srcdir)/doc -+ @for file in `cat $(srcdir)/DISTFILES | grep .`; do \ -+ if expr "$$file" : '.*:$$' >/dev/null 2>&1; then \ -+ d=`echo $$file | sed 's/:$$//;s/^\.\///'`; \ -+ elif test -d "$(srcdir)/$$d/$$file"; then \ -+ mkdir $(distdir)/$$d/$$file; \ -+ chmod 777 $(distdir)/$$d/$$file; \ -+ else \ -+ for f in `cd $(srcdir)/$$d && echo $$file`; do \ -+ test -f "$(distdir)/$$d/$$f" \ -+ || ln $(srcdir)/$$d/$$f $(distdir)/$$d/$$f 2> /dev/null \ -+ || cp -p $(srcdir)/$$d/$$f $(distdir)/$$d/$$f \ -+ || echo "Could not copy $$d/$$f!" 1>&2; \ -+ done; fi; \ -+ done -+ @echo Copying element files... -+ @d=$(srcdir); \ -+ for dir in `cd $$d && find elements -type d | grep -v 'exopc\|CVS'`; do \ -+ mkdir $(distdir)/$$dir 2>/dev/null; \ -+ chmod 777 $(distdir)/$$dir; \ -+ for cfile in `cd $$d && find $$dir -maxdepth 1 \( -type f -and \( -name \[^,.]\*.cc -or -name \[^,.]\*.c -or -name \[^,.]\*.hh -or -name \[^,.]\*.h -or -name README \) \) -print`; do \ -+ ln $$d/$$cfile $(distdir)/$$cfile; \ -+ done; \ -+ done -+ @echo Removing files not meant for distribution... -+ @if test -r $(srcdir)/NODIST; then \ -+ for i in `cat $(srcdir)/NODIST`; do \ -+ rm -rf $(distdir)/$$i; \ -+ done; fi -+ @if grep -q 'Id:.*benjie' `find $(srcdir)/etc -maxdepth 1 -type f`; then \ -+ echo 'ERROR: Benjie must be punished!'; exit 1; \ -+ fi -+ @if test `grep 'CLICK_VERSION=' $(srcdir)/configure.in` != `grep 'CLICK_VERSION=' $(srcdir)/etc/libclick/lc-configure.in`; then \ -+ echo 'ERROR: Bad libclick CLICK_VERSION!'; exit 1; \ -+ fi -+ -+ -+.PHONY: all always elemlist elemlists \ -+ bsdmodule exopc linuxmodule ns tools userlevel \ -+ clean distclean dist distdir \ -+ install install-doc install-lib install-man install-local install-include install-local-include \ -+ uninstall uninstall-local uninstall-local-include -diff -Nurb click-1.6.0/autom4te.cache/output.0 click-1.6.0-27/autom4te.cache/output.0 ---- click-1.6.0/autom4te.cache/output.0 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/autom4te.cache/output.0 2009-01-27 12:14:43.000000000 -0500 -@@ -0,0 +1,17329 @@ -+@%:@! /bin/sh -+@%:@ Guess values for system-dependent variables and create Makefiles. -+@%:@ Generated by GNU Autoconf 2.61 for click 1.6.0. -+@%:@ -+@%:@ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -+@%:@ 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -+@%:@ This configure script is free software; the Free Software Foundation -+@%:@ gives unlimited permission to copy, distribute and modify it. -+## --------------------- ## -+## M4sh Initialization. ## -+## --------------------- ## -+ -+# Be more Bourne compatible -+DUALCASE=1; export DUALCASE # for MKS sh -+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then -+ emulate sh -+ NULLCMD=: -+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '${1+"$@"}'='"$@"' -+ setopt NO_GLOB_SUBST -+else -+ case `(set -o) 2>/dev/null` in -+ *posix*) set -o posix ;; -+esac -+ -+fi -+ -+ -+ -+ -+# PATH needs CR -+# Avoid depending upon Character Ranges. -+as_cr_letters='abcdefghijklmnopqrstuvwxyz' -+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -+as_cr_Letters=$as_cr_letters$as_cr_LETTERS -+as_cr_digits='0123456789' -+as_cr_alnum=$as_cr_Letters$as_cr_digits -+ -+# The user is always right. -+if test "${PATH_SEPARATOR+set}" != set; then -+ echo "#! /bin/sh" >conf$$.sh -+ echo "exit 0" >>conf$$.sh -+ chmod +x conf$$.sh -+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then -+ PATH_SEPARATOR=';' -+ else -+ PATH_SEPARATOR=: -+ fi -+ rm -f conf$$.sh -+fi -+ -+# Support unset when possible. -+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then -+ as_unset=unset -+else -+ as_unset=false -+fi -+ -+ -+# IFS -+# We need space, tab and new line, in precisely that order. Quoting is -+# there to prevent editors from complaining about space-tab. -+# (If _AS_PATH_WALK were called with IFS unset, it would disable word -+# splitting by setting IFS to empty value.) -+as_nl=' -+' -+IFS=" "" $as_nl" -+ -+# Find who we are. Look in the path if we contain no directory separator. -+case $0 in -+ *[\\/]* ) as_myself=$0 ;; -+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -+done -+IFS=$as_save_IFS -+ -+ ;; -+esac -+# We did not find ourselves, most probably we were run as `sh COMMAND' -+# in which case we are not to be found in the path. -+if test "x$as_myself" = x; then -+ as_myself=$0 -+fi -+if test ! -f "$as_myself"; then -+ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 -+ { (exit 1); exit 1; } -+fi -+ -+# Work around bugs in pre-3.0 UWIN ksh. -+for as_var in ENV MAIL MAILPATH -+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -+done -+PS1='$ ' -+PS2='> ' -+PS4='+ ' -+ -+# NLS nuisances. -+for as_var in \ -+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ -+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ -+ LC_TELEPHONE LC_TIME -+do -+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then -+ eval $as_var=C; export $as_var -+ else -+ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -+ fi -+done -+ -+# Required to use basename. -+if expr a : '\(a\)' >/dev/null 2>&1 && -+ test "X`expr 00001 : '.*\(...\)'`" = X001; then -+ as_expr=expr -+else -+ as_expr=false -+fi -+ -+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then -+ as_basename=basename -+else -+ as_basename=false -+fi -+ -+ -+# Name of the executable. -+as_me=`$as_basename -- "$0" || -+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ -+ X"$0" : 'X\(//\)$' \| \ -+ X"$0" : 'X\(/\)' \| . 2>/dev/null || -+echo X/"$0" | -+ sed '/^.*\/\([^/][^/]*\)\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\/\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\/\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ -+# CDPATH. -+$as_unset CDPATH -+ -+ -+if test "x$CONFIG_SHELL" = x; then -+ if (eval ":") 2>/dev/null; then -+ as_have_required=yes -+else -+ as_have_required=no -+fi -+ -+ if test $as_have_required = yes && (eval ": -+(as_func_return () { -+ (exit \$1) -+} -+as_func_success () { -+ as_func_return 0 -+} -+as_func_failure () { -+ as_func_return 1 -+} -+as_func_ret_success () { -+ return 0 -+} -+as_func_ret_failure () { -+ return 1 -+} -+ -+exitcode=0 -+if as_func_success; then -+ : -+else -+ exitcode=1 -+ echo as_func_success failed. -+fi -+ -+if as_func_failure; then -+ exitcode=1 -+ echo as_func_failure succeeded. -+fi -+ -+if as_func_ret_success; then -+ : -+else -+ exitcode=1 -+ echo as_func_ret_success failed. -+fi -+ -+if as_func_ret_failure; then -+ exitcode=1 -+ echo as_func_ret_failure succeeded. -+fi -+ -+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then -+ : -+else -+ exitcode=1 -+ echo positional parameters were not saved. -+fi -+ -+test \$exitcode = 0) || { (exit 1); exit 1; } -+ -+( -+ as_lineno_1=\$LINENO -+ as_lineno_2=\$LINENO -+ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && -+ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } -+") 2> /dev/null; then -+ : -+else -+ as_candidate_shells= -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ case $as_dir in -+ /*) -+ for as_base in sh bash ksh sh5; do -+ as_candidate_shells="$as_candidate_shells $as_dir/$as_base" -+ done;; -+ esac -+done -+IFS=$as_save_IFS -+ -+ -+ for as_shell in $as_candidate_shells $SHELL; do -+ # Try only shells that exist, to save several forks. -+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } && -+ { ("$as_shell") 2> /dev/null <<\_ASEOF -+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then -+ emulate sh -+ NULLCMD=: -+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '${1+"$@"}'='"$@"' -+ setopt NO_GLOB_SUBST -+else -+ case `(set -o) 2>/dev/null` in -+ *posix*) set -o posix ;; -+esac -+ -+fi -+ -+ -+: -+_ASEOF -+}; then -+ CONFIG_SHELL=$as_shell -+ as_have_required=yes -+ if { "$as_shell" 2> /dev/null <<\_ASEOF -+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then -+ emulate sh -+ NULLCMD=: -+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '${1+"$@"}'='"$@"' -+ setopt NO_GLOB_SUBST -+else -+ case `(set -o) 2>/dev/null` in -+ *posix*) set -o posix ;; -+esac -+ -+fi -+ -+ -+: -+(as_func_return () { -+ (exit $1) -+} -+as_func_success () { -+ as_func_return 0 -+} -+as_func_failure () { -+ as_func_return 1 -+} -+as_func_ret_success () { -+ return 0 -+} -+as_func_ret_failure () { -+ return 1 -+} -+ -+exitcode=0 -+if as_func_success; then -+ : -+else -+ exitcode=1 -+ echo as_func_success failed. -+fi -+ -+if as_func_failure; then -+ exitcode=1 -+ echo as_func_failure succeeded. -+fi -+ -+if as_func_ret_success; then -+ : -+else -+ exitcode=1 -+ echo as_func_ret_success failed. -+fi -+ -+if as_func_ret_failure; then -+ exitcode=1 -+ echo as_func_ret_failure succeeded. -+fi -+ -+if ( set x; as_func_ret_success y && test x = "$1" ); then -+ : -+else -+ exitcode=1 -+ echo positional parameters were not saved. -+fi -+ -+test $exitcode = 0) || { (exit 1); exit 1; } -+ -+( -+ as_lineno_1=$LINENO -+ as_lineno_2=$LINENO -+ test "x$as_lineno_1" != "x$as_lineno_2" && -+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } -+ -+_ASEOF -+}; then -+ break -+fi -+ -+fi -+ -+ done -+ -+ if test "x$CONFIG_SHELL" != x; then -+ for as_var in BASH_ENV ENV -+ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -+ done -+ export CONFIG_SHELL -+ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} -+fi -+ -+ -+ if test $as_have_required = no; then -+ echo This script requires a shell more modern than all the -+ echo shells that I found on your system. Please install a -+ echo modern shell, or manually run the script under such a -+ echo shell if you do have one. -+ { (exit 1); exit 1; } -+fi -+ -+ -+fi -+ -+fi -+ -+ -+ -+(eval "as_func_return () { -+ (exit \$1) -+} -+as_func_success () { -+ as_func_return 0 -+} -+as_func_failure () { -+ as_func_return 1 -+} -+as_func_ret_success () { -+ return 0 -+} -+as_func_ret_failure () { -+ return 1 -+} -+ -+exitcode=0 -+if as_func_success; then -+ : -+else -+ exitcode=1 -+ echo as_func_success failed. -+fi -+ -+if as_func_failure; then -+ exitcode=1 -+ echo as_func_failure succeeded. -+fi -+ -+if as_func_ret_success; then -+ : -+else -+ exitcode=1 -+ echo as_func_ret_success failed. -+fi -+ -+if as_func_ret_failure; then -+ exitcode=1 -+ echo as_func_ret_failure succeeded. -+fi -+ -+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then -+ : -+else -+ exitcode=1 -+ echo positional parameters were not saved. -+fi -+ -+test \$exitcode = 0") || { -+ echo No shell found that supports shell functions. -+ echo Please tell autoconf@gnu.org about your system, -+ echo including any error possibly output before this -+ echo message -+} -+ -+ -+ -+ as_lineno_1=$LINENO -+ as_lineno_2=$LINENO -+ test "x$as_lineno_1" != "x$as_lineno_2" && -+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { -+ -+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO -+ # uniformly replaced by the line number. The first 'sed' inserts a -+ # line-number line after each line using $LINENO; the second 'sed' -+ # does the real work. The second script uses 'N' to pair each -+ # line-number line with the line containing $LINENO, and appends -+ # trailing '-' during substitution so that $LINENO is not a special -+ # case at line end. -+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the -+ # scripts with optimization help from Paolo Bonzini. Blame Lee -+ # E. McMahon (1931-1989) for sed's syntax. :-) -+ sed -n ' -+ p -+ /[$]LINENO/= -+ ' <$as_myself | -+ sed ' -+ s/[$]LINENO.*/&-/ -+ t lineno -+ b -+ :lineno -+ N -+ :loop -+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ -+ t loop -+ s/-\n.*// -+ ' >$as_me.lineno && -+ chmod +x "$as_me.lineno" || -+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 -+ { (exit 1); exit 1; }; } -+ -+ # Don't try to exec as it changes $[0], causing all sort of problems -+ # (the dirname of $[0] is not the place where we might find the -+ # original and so on. Autoconf is especially sensitive to this). -+ . "./$as_me.lineno" -+ # Exit status is that of the last command. -+ exit -+} -+ -+ -+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then -+ as_dirname=dirname -+else -+ as_dirname=false -+fi -+ -+ECHO_C= ECHO_N= ECHO_T= -+case `echo -n x` in -+-n*) -+ case `echo 'x\c'` in -+ *c*) ECHO_T=' ';; # ECHO_T is single tab character. -+ *) ECHO_C='\c';; -+ esac;; -+*) -+ ECHO_N='-n';; -+esac -+ -+if expr a : '\(a\)' >/dev/null 2>&1 && -+ test "X`expr 00001 : '.*\(...\)'`" = X001; then -+ as_expr=expr -+else -+ as_expr=false -+fi -+ -+rm -f conf$$ conf$$.exe conf$$.file -+if test -d conf$$.dir; then -+ rm -f conf$$.dir/conf$$.file -+else -+ rm -f conf$$.dir -+ mkdir conf$$.dir -+fi -+echo >conf$$.file -+if ln -s conf$$.file conf$$ 2>/dev/null; then -+ as_ln_s='ln -s' -+ # ... but there are two gotchas: -+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. -+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. -+ # In both cases, we have to default to `cp -p'. -+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || -+ as_ln_s='cp -p' -+elif ln conf$$.file conf$$ 2>/dev/null; then -+ as_ln_s=ln -+else -+ as_ln_s='cp -p' -+fi -+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -+rmdir conf$$.dir 2>/dev/null -+ -+if mkdir -p . 2>/dev/null; then -+ as_mkdir_p=: -+else -+ test -d ./-p && rmdir ./-p -+ as_mkdir_p=false -+fi -+ -+if test -x / >/dev/null 2>&1; then -+ as_test_x='test -x' -+else -+ if ls -dL / >/dev/null 2>&1; then -+ as_ls_L_option=L -+ else -+ as_ls_L_option= -+ fi -+ as_test_x=' -+ eval sh -c '\'' -+ if test -d "$1"; then -+ test -d "$1/."; -+ else -+ case $1 in -+ -*)set "./$1";; -+ esac; -+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in -+ ???[sx]*):;;*)false;;esac;fi -+ '\'' sh -+ ' -+fi -+as_executable_p=$as_test_x -+ -+# Sed expression to map a string onto a valid CPP name. -+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" -+ -+# Sed expression to map a string onto a valid variable name. -+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -+ -+ -+ -+exec 7<&0 &1 -+ -+# Name of the host. -+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -+# so uname gets run too. -+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` -+ -+# -+# Initializations. -+# -+ac_default_prefix=/usr/local -+ac_clean_files= -+ac_config_libobj_dir=. -+LIB@&t@OBJS= -+cross_compiling=no -+subdirs= -+MFLAGS= -+MAKEFLAGS= -+SHELL=${CONFIG_SHELL-/bin/sh} -+ -+# Identity of this package. -+PACKAGE_NAME='click' -+PACKAGE_TARNAME='click' -+PACKAGE_VERSION='1.6.0' -+PACKAGE_STRING='click 1.6.0' -+PACKAGE_BUGREPORT='' +Files linux-2.6.27.10/arch/x86/boot/compressed/relocs and linux-2.6.27.10-clickport/arch/x86/boot/compressed/relocs differ +Files linux-2.6.27.10/arch/x86/boot/compressed/vmlinux.bin.all and linux-2.6.27.10-clickport/arch/x86/boot/compressed/vmlinux.bin.all differ +Files linux-2.6.27.10/arch/x86/boot/compressed/vmlinux.relocs and linux-2.6.27.10-clickport/arch/x86/boot/compressed/vmlinux.relocs differ +diff -Nurb linux-2.6.27.10/arch/x86/kernel/.tmp_i387.ver linux-2.6.27.10-clickport/arch/x86/kernel/.tmp_i387.ver +--- linux-2.6.27.10/arch/x86/kernel/.tmp_i387.ver 2009-01-27 16:05:11.000000000 -0500 ++++ linux-2.6.27.10-clickport/arch/x86/kernel/.tmp_i387.ver 1969-12-31 19:00:00.000000000 -0500 +@@ -1 +0,0 @@ +-__crc_dump_fpu = 0x6dee7be5 ; +diff -Nurb linux-2.6.27.10/drivers/input/serio/i8042-ppcio.h linux-2.6.27.10-clickport/drivers/input/serio/i8042-ppcio.h +--- linux-2.6.27.10/drivers/input/serio/i8042-ppcio.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/drivers/input/serio/i8042-ppcio.h 2009-01-27 15:47:16.000000000 -0500 +@@ -77,7 +77,7 @@ + asm volatile("lis 7,0xff88 \n\ + lswi 6,7,0x8 \n\ + mr %0,6" +- : "=r" (kbd_data) :: "6", "7"); ++ : "=r" (kbd_data) : : "6", "7"); + + __raw_writel(0x00000000, 0xff50000c); + eieio(); +@@ -99,7 +99,7 @@ + ori 7,7,0x8 \n\ + lswi 6,7,0x8 \n\ + mr %0,6" +- : "=r" (kbd_status) :: "6", "7"); ++ : "=r" (kbd_status) : : "6", "7"); + + __raw_writel(0x00000000, 0xff50000c); + eieio(); +diff -Nurb linux-2.6.27.10/drivers/net/wireless/rayctl.h linux-2.6.27.10-clickport/drivers/net/wireless/rayctl.h +--- linux-2.6.27.10/drivers/net/wireless/rayctl.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/drivers/net/wireless/rayctl.h 2009-01-27 15:47:16.000000000 -0500 +@@ -418,9 +418,7 @@ + }; + + /****** Host-to-ECF Data Area at Shared RAM offset 0x200 *********************/ +-struct host_to_ecf_area { +- +-}; ++EMPTY_STRUCT_DECL(host_to_ecf_area); + + /****** ECF-to-Host Data Area at Shared RAM offset 0x0300 ********************/ + struct startup_res_518 { +diff -Nurb linux-2.6.27.10/drivers/video/i810/i810_main.h linux-2.6.27.10-clickport/drivers/video/i810/i810_main.h +--- linux-2.6.27.10/drivers/video/i810/i810_main.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/drivers/video/i810/i810_main.h 2009-01-27 15:47:16.000000000 -0500 +@@ -54,7 +54,7 @@ + #ifdef CONFIG_X86 + static inline void flush_cache(void) + { +- asm volatile ("wbinvd":::"memory"); ++ asm volatile ("wbinvd": : :"memory"); + } + #else + #define flush_cache() do { } while(0) +diff -Nurb linux-2.6.27.10/fs/file_table.c linux-2.6.27.10-clickport/fs/file_table.c +--- linux-2.6.27.10/fs/file_table.c 2009-01-27 15:18:03.000000000 -0500 ++++ linux-2.6.27.10-clickport/fs/file_table.c 2009-01-27 15:47:16.000000000 -0500 +@@ -34,6 +34,8 @@ + /* public. Not pretty! */ + __cacheline_aligned_in_smp DEFINE_SPINLOCK(files_lock); + ++EXPORT_SYMBOL(files_lock); + -+# Factoring default headers for most tests. -+ac_includes_default="\ -+#include -+#ifdef HAVE_SYS_TYPES_H -+# include + static struct percpu_counter nr_files __cacheline_aligned_in_smp; + + static inline void file_free_rcu(struct rcu_head *head) +diff -Nurb linux-2.6.27.10/fs/super.c linux-2.6.27.10-clickport/fs/super.c +--- linux-2.6.27.10/fs/super.c 2009-01-27 15:18:03.000000000 -0500 ++++ linux-2.6.27.10-clickport/fs/super.c 2009-01-27 15:47:16.000000000 -0500 +@@ -48,6 +48,8 @@ + LIST_HEAD(super_blocks); + DEFINE_SPINLOCK(sb_lock); + ++EXPORT_SYMBOL(sb_lock); ++ + /** + * alloc_super - create new superblock + * @type: filesystem type superblock should belong to +diff -Nurb linux-2.6.27.10/include/asm-cris/arch-v10/io.h linux-2.6.27.10-clickport/include/asm-cris/arch-v10/io.h +--- linux-2.6.27.10/include/asm-cris/arch-v10/io.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-cris/arch-v10/io.h 2009-01-27 15:47:26.000000000 -0500 +@@ -190,8 +190,8 @@ + ({ int _Foofoo; __asm__ volatile ("bmod [%0],%0" : "=r" (_Foofoo) : "0" \ + (255)); _Foofoo; }) + +-#define TRACE_OFF() do { __asm__ volatile ("bmod [%0],%0" :: "r" (254)); } while (0) +-#define SIM_END() do { __asm__ volatile ("bmod [%0],%0" :: "r" (28)); } while (0) ++#define TRACE_OFF() do { __asm__ volatile ("bmod [%0],%0" : : "r" (254)); } while (0) ++#define SIM_END() do { __asm__ volatile ("bmod [%0],%0" : : "r" (28)); } while (0) + #define CRIS_CYCLES() __extension__ \ + ({ unsigned long c; asm ("bmod [%1],%0" : "=r" (c) : "r" (27)); c;}) + #endif /* ! defined CONFIG_SVINTO_SIM */ +diff -Nurb linux-2.6.27.10/include/asm-cris/module.h linux-2.6.27.10-clickport/include/asm-cris/module.h +--- linux-2.6.27.10/include/asm-cris/module.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-cris/module.h 2009-01-27 15:47:26.000000000 -0500 +@@ -1,7 +1,7 @@ + #ifndef _ASM_CRIS_MODULE_H + #define _ASM_CRIS_MODULE_H + /* cris is simple */ +-struct mod_arch_specific { }; ++EMPTY_STRUCT_DECL(mod_arch_specific); + + #define Elf_Shdr Elf32_Shdr + #define Elf_Sym Elf32_Sym +diff -Nurb linux-2.6.27.10/include/asm-frv/bug.h linux-2.6.27.10-clickport/include/asm-frv/bug.h +--- linux-2.6.27.10/include/asm-frv/bug.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-frv/bug.h 2009-01-27 15:47:26.000000000 -0500 +@@ -17,7 +17,7 @@ + /* + * Tell the user there is some problem. + */ +-extern asmlinkage void __debug_bug_trap(int signr); ++asmlinkage void __debug_bug_trap(int signr); + + #ifdef CONFIG_NO_KERNEL_MSG + #define _debug_bug_printk() +diff -Nurb linux-2.6.27.10/include/asm-frv/fpu.h linux-2.6.27.10-clickport/include/asm-frv/fpu.h +--- linux-2.6.27.10/include/asm-frv/fpu.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-frv/fpu.h 2009-01-27 15:47:26.000000000 -0500 +@@ -6,6 +6,6 @@ + * MAX floating point unit state size (FSAVE/FRESTORE) + */ + +-#define kernel_fpu_end() do { asm volatile("bar":::"memory"); preempt_enable(); } while(0) ++#define kernel_fpu_end() do { asm volatile("bar": : :"memory"); preempt_enable(); } while(0) + + #endif /* __ASM_FPU_H */ +diff -Nurb linux-2.6.27.10/include/asm-frv/gdb-stub.h linux-2.6.27.10-clickport/include/asm-frv/gdb-stub.h +--- linux-2.6.27.10/include/asm-frv/gdb-stub.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-frv/gdb-stub.h 2009-01-27 15:47:26.000000000 -0500 +@@ -87,14 +87,14 @@ + extern void gdbstub_tx_flush(void); + extern void gdbstub_do_rx(void); + +-extern asmlinkage void __debug_stub_init_break(void); +-extern asmlinkage void __break_hijack_kernel_event(void); +-extern asmlinkage void __break_hijack_kernel_event_breaks_here(void); +-extern asmlinkage void start_kernel(void); +- +-extern asmlinkage void gdbstub_rx_handler(void); +-extern asmlinkage void gdbstub_rx_irq(void); +-extern asmlinkage void gdbstub_intercept(void); ++asmlinkage void __debug_stub_init_break(void); ++asmlinkage void __break_hijack_kernel_event(void); ++asmlinkage void __break_hijack_kernel_event_breaks_here(void); ++asmlinkage void start_kernel(void); ++ ++asmlinkage void gdbstub_rx_handler(void); ++asmlinkage void gdbstub_rx_irq(void); ++asmlinkage void gdbstub_intercept(void); + + extern uint32_t __entry_usertrap_table[]; + extern uint32_t __entry_kerneltrap_table[]; +diff -Nurb linux-2.6.27.10/include/asm-frv/highmem.h linux-2.6.27.10-clickport/include/asm-frv/highmem.h +--- linux-2.6.27.10/include/asm-frv/highmem.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-frv/highmem.h 2009-01-27 15:47:26.000000000 -0500 +@@ -82,11 +82,11 @@ + dampr = paddr | xAMPRx_L | xAMPRx_M | xAMPRx_S | xAMPRx_SS_16Kb | xAMPRx_V; \ + \ + if (type != __KM_CACHE) \ +- asm volatile("movgs %0,dampr"#ampr :: "r"(dampr) : "memory"); \ ++ asm volatile("movgs %0,dampr"#ampr : : "r"(dampr) : "memory"); \ + else \ + asm volatile("movgs %0,iampr"#ampr"\n" \ + "movgs %0,dampr"#ampr"\n" \ +- :: "r"(dampr) : "memory" \ ++ : : "r"(dampr) : "memory" \ + ); \ + \ + asm("movsg damlr"#ampr",%0" : "=r"(damlr)); \ +@@ -140,9 +140,9 @@ + + #define __kunmap_atomic_primary(type, ampr) \ + do { \ +- asm volatile("movgs gr0,dampr"#ampr"\n" ::: "memory"); \ ++ asm volatile("movgs gr0,dampr"#ampr"\n" : : : "memory"); \ + if (type == __KM_CACHE) \ +- asm volatile("movgs gr0,iampr"#ampr"\n" ::: "memory"); \ ++ asm volatile("movgs gr0,iampr"#ampr"\n" : : : "memory");\ + } while(0) + + #define __kunmap_atomic_secondary(slot, vaddr) \ +diff -Nurb linux-2.6.27.10/include/asm-frv/module.h linux-2.6.27.10-clickport/include/asm-frv/module.h +--- linux-2.6.27.10/include/asm-frv/module.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-frv/module.h 2009-01-27 15:47:26.000000000 -0500 +@@ -11,9 +11,7 @@ + #ifndef _ASM_MODULE_H + #define _ASM_MODULE_H + +-struct mod_arch_specific +-{ +-}; ++EMPTY_STRUCT_DECL(mod_arch_specific); + + #define Elf_Shdr Elf32_Shdr + #define Elf_Sym Elf32_Sym +diff -Nurb linux-2.6.27.10/include/asm-frv/pgtable.h linux-2.6.27.10-clickport/include/asm-frv/pgtable.h +--- linux-2.6.27.10/include/asm-frv/pgtable.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-frv/pgtable.h 2009-01-27 15:47:26.000000000 -0500 +@@ -176,7 +176,7 @@ + #define set_pte(pteptr, pteval) \ + do { \ + *(pteptr) = (pteval); \ +- asm volatile("dcf %M0" :: "U"(*pteptr)); \ ++ asm volatile("dcf %M0" : : "U"(*pteptr)); \ + } while(0) + #define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval) + +@@ -210,7 +210,7 @@ + #define set_pgd(pgdptr, pgdval) \ + do { \ + memcpy((pgdptr), &(pgdval), sizeof(pgd_t)); \ +- asm volatile("dcf %M0" :: "U"(*(pgdptr))); \ ++ asm volatile("dcf %M0" : : "U"(*(pgdptr))); \ + } while(0) + + static inline pud_t *pud_offset(pgd_t *pgd, unsigned long address) +diff -Nurb linux-2.6.27.10/include/asm-frv/processor.h linux-2.6.27.10-clickport/include/asm-frv/processor.h +--- linux-2.6.27.10/include/asm-frv/processor.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-frv/processor.h 2009-01-27 15:47:26.000000000 -0500 +@@ -111,9 +111,9 @@ + { + } + +-extern asmlinkage int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); +-extern asmlinkage void save_user_regs(struct user_context *target); +-extern asmlinkage void *restore_user_regs(const struct user_context *target, ...); ++asmlinkage int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); ++asmlinkage void save_user_regs(struct user_context *target); ++asmlinkage void *restore_user_regs(const struct user_context *target, ...); + + #define copy_segments(tsk, mm) do { } while (0) + #define release_segments(mm) do { } while (0) +diff -Nurb linux-2.6.27.10/include/asm-frv/spr-regs.h linux-2.6.27.10-clickport/include/asm-frv/spr-regs.h +--- linux-2.6.27.10/include/asm-frv/spr-regs.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-frv/spr-regs.h 2009-01-27 15:47:26.000000000 -0500 +@@ -343,7 +343,7 @@ + + #define restore_dampr(R, _dampr) \ + do { \ +- asm volatile("movgs %0,dampr"R :: "r"(_dampr)); \ ++ asm volatile("movgs %0,dampr"R : : "r"(_dampr)); \ + } while(0) + + /* +diff -Nurb linux-2.6.27.10/include/asm-frv/system.h linux-2.6.27.10-clickport/include/asm-frv/system.h +--- linux-2.6.27.10/include/asm-frv/system.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-frv/system.h 2009-01-27 15:47:26.000000000 -0500 +@@ -23,7 +23,7 @@ + * `prev' will never be the same as `next'. + * The `mb' is to tell GCC not to cache `current' across this call. + */ +-extern asmlinkage ++asmlinkage + struct task_struct *__switch_to(struct thread_struct *prev_thread, + struct thread_struct *next_thread, + struct task_struct *prev); +@@ -175,7 +175,7 @@ + /* + * Force strict CPU ordering. + */ +-#define nop() asm volatile ("nop"::) ++#define nop() asm volatile ("nop": :) + #define mb() asm volatile ("membar" : : :"memory") + #define rmb() asm volatile ("membar" : : :"memory") + #define wmb() asm volatile ("membar" : : :"memory") +diff -Nurb linux-2.6.27.10/include/asm-m32r/module.h linux-2.6.27.10-clickport/include/asm-m32r/module.h +--- linux-2.6.27.10/include/asm-m32r/module.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-m32r/module.h 2009-01-27 15:47:32.000000000 -0500 +@@ -1,7 +1,7 @@ + #ifndef _ASM_M32R_MODULE_H + #define _ASM_M32R_MODULE_H + +-struct mod_arch_specific { }; ++EMPTY_STRUCT_DECL(mod_arch_specific); + + #define Elf_Shdr Elf32_Shdr + #define Elf_Sym Elf32_Sym +diff -Nurb linux-2.6.27.10/include/asm-m68k/system.h linux-2.6.27.10-clickport/include/asm-m68k/system.h +--- linux-2.6.27.10/include/asm-m68k/system.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-m68k/system.h 2009-01-27 15:47:33.000000000 -0500 +@@ -167,23 +167,23 @@ + #define __HAVE_ARCH_CMPXCHG 1 + + static inline unsigned long __cmpxchg(volatile void *p, unsigned long old, +- unsigned long new, int size) ++ unsigned long n, int size) + { + switch (size) { + case 1: + __asm__ __volatile__ ("casb %0,%2,%1" + : "=d" (old), "=m" (*(char *)p) +- : "d" (new), "0" (old), "m" (*(char *)p)); ++ : "d" (n), "0" (old), "m" (*(char *)p)); + break; + case 2: + __asm__ __volatile__ ("casw %0,%2,%1" + : "=d" (old), "=m" (*(short *)p) +- : "d" (new), "0" (old), "m" (*(short *)p)); ++ : "d" (n), "0" (old), "m" (*(short *)p)); + break; + case 4: + __asm__ __volatile__ ("casl %0,%2,%1" + : "=d" (old), "=m" (*(int *)p) +- : "d" (new), "0" (old), "m" (*(int *)p)); ++ : "d" (n), "0" (old), "m" (*(int *)p)); + break; + } + return old; +diff -Nurb linux-2.6.27.10/include/asm-mips/fpu.h linux-2.6.27.10-clickport/include/asm-mips/fpu.h +--- linux-2.6.27.10/include/asm-mips/fpu.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-mips/fpu.h 2009-01-27 15:52:53.000000000 -0500 +@@ -28,11 +28,11 @@ + struct sigcontext; + struct sigcontext32; + +-extern asmlinkage int (*save_fp_context)(struct sigcontext __user *sc); +-extern asmlinkage int (*restore_fp_context)(struct sigcontext __user *sc); ++asmlinkage int (*save_fp_context)(struct sigcontext __user *sc); ++asmlinkage int (*restore_fp_context)(struct sigcontext __user *sc); + +-extern asmlinkage int (*save_fp_context32)(struct sigcontext32 __user *sc); +-extern asmlinkage int (*restore_fp_context32)(struct sigcontext32 __user *sc); ++asmlinkage int (*save_fp_context32)(struct sigcontext32 __user *sc); ++asmlinkage int (*restore_fp_context32)(struct sigcontext32 __user *sc); + + extern void fpu_emulator_init_fpu(void); + extern int fpu_emulator_save_context(struct sigcontext __user *sc); +diff -Nurb linux-2.6.27.10/include/asm-mips/io.h linux-2.6.27.10-clickport/include/asm-mips/io.h +--- linux-2.6.27.10/include/asm-mips/io.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-mips/io.h 2009-01-27 15:47:33.000000000 -0500 +@@ -303,7 +303,7 @@ + volatile type *__mem; \ + type __val; \ + \ +- __mem = (void *)__swizzle_addr_##bwlq((unsigned long)(mem)); \ ++ __mem = (type *)__swizzle_addr_##bwlq((unsigned long)(mem)); \ + \ + __val = pfx##ioswab##bwlq(__mem, val); \ + \ +@@ -336,7 +336,7 @@ + volatile type *__mem; \ + type __val; \ + \ +- __mem = (void *)__swizzle_addr_##bwlq((unsigned long)(mem)); \ ++ __mem = (type *)__swizzle_addr_##bwlq((unsigned long)(mem)); \ + \ + if (sizeof(type) != sizeof(u64) || sizeof(u64) == sizeof(long)) \ + __val = *__mem; \ +@@ -370,7 +370,7 @@ + volatile type *__addr; \ + type __val; \ + \ +- __addr = (void *)__swizzle_addr_##bwlq(mips_io_port_base + port); \ ++ __addr = (type *)__swizzle_addr_##bwlq(mips_io_port_base + port); \ + \ + __val = pfx##ioswab##bwlq(__addr, val); \ + \ +@@ -386,7 +386,7 @@ + volatile type *__addr; \ + type __val; \ + \ +- __addr = (void *)__swizzle_addr_##bwlq(mips_io_port_base + port); \ ++ __addr = (type *)__swizzle_addr_##bwlq(mips_io_port_base + port); \ + \ + BUILD_BUG_ON(sizeof(type) > sizeof(unsigned long)); \ + \ +@@ -448,7 +448,7 @@ + static inline void writes##bwlq(volatile void __iomem *mem, \ + const void *addr, unsigned int count) \ + { \ +- const volatile type *__addr = addr; \ ++ const volatile type *__addr = (const type *) addr; \ + \ + while (count--) { \ + __mem_write##bwlq(*__addr, mem); \ +@@ -459,7 +459,7 @@ + static inline void reads##bwlq(volatile void __iomem *mem, void *addr, \ + unsigned int count) \ + { \ +- volatile type *__addr = addr; \ ++ volatile type *__addr = (type *) addr; \ + \ + while (count--) { \ + *__addr = __mem_read##bwlq(mem); \ +@@ -472,7 +472,7 @@ + static inline void outs##bwlq(unsigned long port, const void *addr, \ + unsigned int count) \ + { \ +- const volatile type *__addr = addr; \ ++ const volatile type *__addr = (const type *) addr; \ + \ + while (count--) { \ + __mem_out##bwlq(*__addr, port); \ +@@ -483,7 +483,7 @@ + static inline void ins##bwlq(unsigned long port, void *addr, \ + unsigned int count) \ + { \ +- volatile type *__addr = addr; \ ++ volatile type *__addr = (type *) addr; \ + \ + while (count--) { \ + *__addr = __mem_in##bwlq(port); \ +@@ -505,7 +505,7 @@ + + + /* Depends on MIPS II instruction set */ +-#define mmiowb() asm volatile ("sync" ::: "memory") ++#define mmiowb() asm volatile ("sync" : : : "memory") + + static inline void memset_io(volatile void __iomem *addr, unsigned char val, int count) + { +diff -Nurb linux-2.6.27.10/include/asm-mips/ip32/mace.h linux-2.6.27.10-clickport/include/asm-mips/ip32/mace.h +--- linux-2.6.27.10/include/asm-mips/ip32/mace.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-mips/ip32/mace.h 2009-01-27 15:47:33.000000000 -0500 +@@ -308,11 +308,9 @@ + */ + + /* Parallel port */ +-struct mace_parallel { +-}; ++EMPTY_STRUCT_DECL(mace_parallel); + +-struct mace_ecp1284 { /* later... */ +-}; ++EMPTY_STRUCT_DECL(mace_ecp1284); /* later... */ + + /* Serial port */ + struct mace_serial { +diff -Nurb linux-2.6.27.10/include/asm-mips/mips-boards/sim.h linux-2.6.27.10-clickport/include/asm-mips/mips-boards/sim.h +--- linux-2.6.27.10/include/asm-mips/mips-boards/sim.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-mips/mips-boards/sim.h 2009-01-27 15:47:33.000000000 -0500 +@@ -31,7 +31,7 @@ + ({ \ + __asm__ __volatile__( \ + "sltiu $0,$0, %0" \ +- ::"i"(code) \ ++ : :"i"(code) \ + ); \ + }) + +diff -Nurb linux-2.6.27.10/include/asm-mips/mipsregs.h linux-2.6.27.10-clickport/include/asm-mips/mipsregs.h +--- linux-2.6.27.10/include/asm-mips/mipsregs.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-mips/mipsregs.h 2009-01-27 15:47:33.000000000 -0500 +@@ -1052,15 +1052,15 @@ + #define mfhi2() ({ long mfhi2; __asm__("mfhi %0, $ac2" : "=r" (mfhi2)); mfhi2;}) + #define mfhi3() ({ long mfhi3; __asm__("mfhi %0, $ac3" : "=r" (mfhi3)); mfhi3;}) + +-#define mtlo0(x) __asm__("mtlo %0, $ac0" ::"r" (x)) +-#define mtlo1(x) __asm__("mtlo %0, $ac1" ::"r" (x)) +-#define mtlo2(x) __asm__("mtlo %0, $ac2" ::"r" (x)) +-#define mtlo3(x) __asm__("mtlo %0, $ac3" ::"r" (x)) +- +-#define mthi0(x) __asm__("mthi %0, $ac0" ::"r" (x)) +-#define mthi1(x) __asm__("mthi %0, $ac1" ::"r" (x)) +-#define mthi2(x) __asm__("mthi %0, $ac2" ::"r" (x)) +-#define mthi3(x) __asm__("mthi %0, $ac3" ::"r" (x)) ++#define mtlo0(x) __asm__("mtlo %0, $ac0" : :"r" (x)) ++#define mtlo1(x) __asm__("mtlo %0, $ac1" : :"r" (x)) ++#define mtlo2(x) __asm__("mtlo %0, $ac2" : :"r" (x)) ++#define mtlo3(x) __asm__("mtlo %0, $ac3" : :"r" (x)) ++ ++#define mthi0(x) __asm__("mthi %0, $ac0" : :"r" (x)) ++#define mthi1(x) __asm__("mthi %0, $ac1" : :"r" (x)) ++#define mthi2(x) __asm__("mthi %0, $ac2" : :"r" (x)) ++#define mthi3(x) __asm__("mthi %0, $ac3" : :"r" (x)) + + #else + +@@ -1390,13 +1390,13 @@ + } \ + \ + static inline unsigned int \ +-change_c0_##name(unsigned int change, unsigned int new) \ ++change_c0_##name(unsigned int change, unsigned int newval) \ + { \ + unsigned int res; \ + \ + res = read_c0_##name(); \ + res &= ~change; \ +- res |= (new & change); \ ++ res |= (newval & change); \ + write_c0_##name(res); \ + \ + return res; \ +diff -Nurb linux-2.6.27.10/include/asm-mips/paccess.h linux-2.6.27.10-clickport/include/asm-mips/paccess.h +--- linux-2.6.27.10/include/asm-mips/paccess.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-mips/paccess.h 2009-01-27 15:47:33.000000000 -0500 +@@ -22,8 +22,8 @@ + #define __PA_ADDR ".dword" + #endif + +-extern asmlinkage void handle_ibe(void); +-extern asmlinkage void handle_dbe(void); ++asmlinkage void handle_ibe(void); ++asmlinkage void handle_dbe(void); + + #define put_dbe(x, ptr) __put_dbe((x), (ptr), sizeof(*(ptr))) + #define get_dbe(x, ptr) __get_dbe((x), (ptr), sizeof(*(ptr))) +diff -Nurb linux-2.6.27.10/include/asm-mips/processor.h linux-2.6.27.10-clickport/include/asm-mips/processor.h +--- linux-2.6.27.10/include/asm-mips/processor.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-mips/processor.h 2009-01-27 15:47:33.000000000 -0500 +@@ -242,7 +242,7 @@ + * overhead of a function call by forcing the compiler to save the return + * address register on the stack. + */ +-#define return_address() ({__asm__ __volatile__("":::"$31");__builtin_return_address(0);}) ++#define return_address() ({__asm__ __volatile__("": : :"$31");__builtin_return_address(0);}) + + #ifdef CONFIG_CPU_HAS_PREFETCH + +diff -Nurb linux-2.6.27.10/include/asm-mips/ptrace.h linux-2.6.27.10-clickport/include/asm-mips/ptrace.h +--- linux-2.6.27.10/include/asm-mips/ptrace.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-mips/ptrace.h 2009-01-27 15:47:33.000000000 -0500 +@@ -84,7 +84,7 @@ + #define instruction_pointer(regs) ((regs)->cp0_epc) + #define profile_pc(regs) instruction_pointer(regs) + +-extern asmlinkage void do_syscall_trace(struct pt_regs *regs, int entryexit); ++asmlinkage void do_syscall_trace(struct pt_regs *regs, int entryexit); + + extern NORET_TYPE void die(const char *, const struct pt_regs *) ATTRIB_NORET; + +diff -Nurb linux-2.6.27.10/include/asm-mips/smp.h linux-2.6.27.10-clickport/include/asm-mips/smp.h +--- linux-2.6.27.10/include/asm-mips/smp.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-mips/smp.h 2009-01-27 15:47:33.000000000 -0500 +@@ -55,7 +55,7 @@ + mp_ops->send_ipi_single(cpu, SMP_RESCHEDULE_YOURSELF); + } + +-extern asmlinkage void smp_call_function_interrupt(void); ++asmlinkage void smp_call_function_interrupt(void); + + extern void arch_send_call_function_single_ipi(int cpu); + extern void arch_send_call_function_ipi(cpumask_t mask); +diff -Nurb linux-2.6.27.10/include/asm-mips/system.h linux-2.6.27.10-clickport/include/asm-mips/system.h +--- linux-2.6.27.10/include/asm-mips/system.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-mips/system.h 2009-01-27 15:47:33.000000000 -0500 +@@ -27,7 +27,7 @@ + * switch_to(n) should switch tasks to task nr n, first + * checking that n isn't the current task, in which case it does nothing. + */ +-extern asmlinkage void *resume(void *last, void *next, void *next_ti); ++asmlinkage void *resume(void *last, void *next, void *next_ti); + + struct task_struct; + +@@ -189,9 +189,9 @@ + { + switch (size) { + case 4: +- return __xchg_u32(ptr, x); ++ return __xchg_u32((volatile int *) ptr, x); + case 8: +- return __xchg_u64(ptr, x); ++ return __xchg_u64((volatile __u64 *) ptr, x); + } + __xchg_called_with_bad_pointer(); + return x; +diff -Nurb linux-2.6.27.10/include/asm-parisc/system.h linux-2.6.27.10-clickport/include/asm-parisc/system.h +--- linux-2.6.27.10/include/asm-parisc/system.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-parisc/system.h 2009-01-27 15:47:34.000000000 -0500 +@@ -122,7 +122,7 @@ + ** The __asm__ op below simple prevents gcc/ld from reordering + ** instructions across the mb() "call". + */ +-#define mb() __asm__ __volatile__("":::"memory") /* barrier() */ ++#define mb() __asm__ __volatile__("": : :"memory") /* barrier() */ + #define rmb() mb() + #define wmb() mb() + #define smp_mb() mb() +diff -Nurb linux-2.6.27.10/include/asm-um/module-i386.h linux-2.6.27.10-clickport/include/asm-um/module-i386.h +--- linux-2.6.27.10/include/asm-um/module-i386.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-um/module-i386.h 2009-01-27 15:47:37.000000000 -0500 +@@ -2,9 +2,7 @@ + #define __UM_MODULE_I386_H + + /* UML is simple */ +-struct mod_arch_specific +-{ +-}; ++EMPTY_STRUCT_DECL(mod_arch_specific); + + #define Elf_Shdr Elf32_Shdr + #define Elf_Sym Elf32_Sym +diff -Nurb linux-2.6.27.10/include/asm-um/module-x86_64.h linux-2.6.27.10-clickport/include/asm-um/module-x86_64.h +--- linux-2.6.27.10/include/asm-um/module-x86_64.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-um/module-x86_64.h 2009-01-27 15:47:37.000000000 -0500 +@@ -8,9 +8,7 @@ + #define __UM_MODULE_X86_64_H + + /* UML is simple */ +-struct mod_arch_specific +-{ +-}; ++EMPTY_STRUCT_DECL(mod_arch_specific); + + #define Elf_Shdr Elf64_Shdr + #define Elf_Sym Elf64_Sym +diff -Nurb linux-2.6.27.10/include/asm-x86/bitops.h linux-2.6.27.10-clickport/include/asm-x86/bitops.h +--- linux-2.6.27.10/include/asm-x86/bitops.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-x86/bitops.h 2009-01-28 11:21:01.000000000 -0500 +@@ -35,7 +35,7 @@ + * a mask operation on a byte. + */ + #define IS_IMMEDIATE(nr) (__builtin_constant_p(nr)) +-#define CONST_MASK_ADDR(nr, addr) BITOP_ADDR((void *)(addr) + ((nr)>>3)) ++#define CONST_MASK_ADDR(nr, addr) BITOP_ADDR((char *)(addr) + ((nr)>>3)) + #define CONST_MASK(nr) (1 << ((nr) & 7)) + + /** +diff -Nurb linux-2.6.27.10/include/asm-x86/desc.h linux-2.6.27.10-clickport/include/asm-x86/desc.h +--- linux-2.6.27.10/include/asm-x86/desc.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-x86/desc.h 2009-01-28 11:30:11.000000000 -0500 +@@ -70,7 +70,7 @@ + + static inline int desc_empty(const void *ptr) + { +- const u32 *desc = ptr; ++ const u32 *desc = (const u32 *) ptr; + return !(desc[0] | desc[1]); + } + +diff -Nurb linux-2.6.27.10/include/asm-x86/hw_irq.h linux-2.6.27.10-clickport/include/asm-x86/hw_irq.h +--- linux-2.6.27.10/include/asm-x86/hw_irq.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-x86/hw_irq.h 2009-01-28 11:57:08.000000000 -0500 +@@ -84,6 +84,16 @@ + extern void eisa_set_level_irq(unsigned int irq); + + /* Voyager functions */ ++#ifdef __cplusplus ++asmlinkage void vic_cpi_interrupt(void); ++asmlinkage void vic_sys_interrupt(void); ++asmlinkage void vic_cmn_interrupt(void); ++asmlinkage void qic_timer_interrupt(void); ++asmlinkage void qic_invalidate_interrupt(void); ++asmlinkage void qic_reschedule_interrupt(void); ++asmlinkage void qic_enable_irq_interrupt(void); ++asmlinkage void qic_call_function_interrupt(void); ++#else + extern asmlinkage void vic_cpi_interrupt(void); + extern asmlinkage void vic_sys_interrupt(void); + extern asmlinkage void vic_cmn_interrupt(void); +@@ -93,6 +103,8 @@ + extern asmlinkage void qic_enable_irq_interrupt(void); + extern asmlinkage void qic_call_function_interrupt(void); + +#endif -+#ifdef HAVE_SYS_STAT_H -+# include ++ + #ifdef CONFIG_X86_32 + extern void (*const interrupt[NR_IRQS])(void); + #else +diff -Nurb linux-2.6.27.10/include/asm-x86/page.h linux-2.6.27.10-clickport/include/asm-x86/page.h +--- linux-2.6.27.10/include/asm-x86/page.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-x86/page.h 2009-01-28 11:24:13.000000000 -0500 +@@ -138,7 +138,7 @@ + + static inline pte_t native_make_pte(pteval_t val) + { +- return (pte_t) { .pte = val }; ++ return (pte_t) ({pte_t duh; duh.pte = val;duh;}); + } + + static inline pteval_t native_pte_val(pte_t pte) +diff -Nurb linux-2.6.27.10/include/asm-x86/paravirt.h linux-2.6.27.10-clickport/include/asm-x86/paravirt.h +--- linux-2.6.27.10/include/asm-x86/paravirt.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-x86/paravirt.h 2009-01-28 11:28:41.000000000 -0500 +@@ -1060,7 +1060,7 @@ + pv_mmu_ops.make_pte, + val); + +- return (pte_t) { .pte = ret }; ++ return (pte_t) ({pte_t duh; duh.pte = ret;duh;}); + } + + static inline pteval_t pte_val(pte_t pte) +@@ -1131,7 +1131,7 @@ + ret = PVOP_CALL3(pteval_t, pv_mmu_ops.ptep_modify_prot_start, + mm, addr, ptep); + +- return (pte_t) { .pte = ret }; ++ return (pte_t) ({pte_t duh; duh.pte = ret;duh;}); + } + + static inline void ptep_modify_prot_commit(struct mm_struct *mm, unsigned long addr, +@@ -1314,10 +1314,12 @@ + set_pte_at(mm, addr, ptep, __pte(0)); + } + ++/* + static inline void pmd_clear(pmd_t *pmdp) + { + set_pmd(pmdp, __pmd(0)); + } ++*/ + #endif /* CONFIG_X86_PAE */ + + /* Lazy mode for batching updates / context switch */ +diff -Nurb linux-2.6.27.10/include/asm-x86/pgtable-2level.h linux-2.6.27.10-clickport/include/asm-x86/pgtable-2level.h +--- linux-2.6.27.10/include/asm-x86/pgtable-2level.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-x86/pgtable-2level.h 2009-01-28 11:47:18.000000000 -0500 +@@ -33,10 +33,12 @@ + native_set_pte(ptep, pte); + } + ++/* + static inline void native_pmd_clear(pmd_t *pmdp) + { + native_set_pmd(pmdp, __pmd(0)); + } ++*/ + + static inline void native_pte_clear(struct mm_struct *mm, + unsigned long addr, pte_t *xp) +diff -Nurb linux-2.6.27.10/include/asm-x86/pgtable.h linux-2.6.27.10-clickport/include/asm-x86/pgtable.h +--- linux-2.6.27.10/include/asm-x86/pgtable.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-x86/pgtable.h 2009-01-28 11:46:55.000000000 -0500 +@@ -260,11 +260,13 @@ + pgprot_val(pgprot)) & __supported_pte_mask); + } + ++/* + static inline pmd_t pfn_pmd(unsigned long page_nr, pgprot_t pgprot) + { + return __pmd((((phys_addr_t)page_nr << PAGE_SHIFT) | + pgprot_val(pgprot)) & __supported_pte_mask); + } ++*/ + + static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) + { +diff -Nurb linux-2.6.27.10/include/asm-x86/spinlock_types.h linux-2.6.27.10-clickport/include/asm-x86/spinlock_types.h +--- linux-2.6.27.10/include/asm-x86/spinlock_types.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-x86/spinlock_types.h 2009-01-28 11:44:42.000000000 -0500 +@@ -9,12 +9,19 @@ + unsigned int slock; + } raw_spinlock_t; + ++#ifndef __cplusplus + #define __RAW_SPIN_LOCK_UNLOCKED { 0 } ++#else ++#define __RAW_SPIN_LOCK_UNLOCKED ({raw_spinlock_t duh; duh.slock=0;duh;}) +#endif -+#ifdef STDC_HEADERS -+# include -+# include + + typedef struct { + unsigned int lock; + } raw_rwlock_t; + ++#ifndef __cplusplus + #define __RAW_RW_LOCK_UNLOCKED { RW_LOCK_BIAS } +- +#else -+# ifdef HAVE_STDLIB_H -+# include -+# endif ++#define __RAW_RW_LOCK_UNLOCKED ({raw_rwlock_t duh;duh.lock=RW_LOCK_BIAS;duh;}) +#endif -+#ifdef HAVE_STRING_H -+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -+# include -+# endif -+# include -+#endif -+#ifdef HAVE_STRINGS_H -+# include -+#endif -+#ifdef HAVE_INTTYPES_H -+# include -+#endif -+#ifdef HAVE_STDINT_H -+# include + #endif +diff -Nurb linux-2.6.27.10/include/asm-x86/vdso.h linux-2.6.27.10-clickport/include/asm-x86/vdso.h +--- linux-2.6.27.10/include/asm-x86/vdso.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-x86/vdso.h 2009-01-28 11:29:35.000000000 -0500 +@@ -33,8 +33,8 @@ + * These symbols are defined with the addresses in the vsyscall page. + * See vsyscall-sigreturn.S. + */ +-extern void __user __kernel_sigreturn; +-extern void __user __kernel_rt_sigreturn; ++extern void* __user __kernel_sigreturn; ++extern void* __user __kernel_rt_sigreturn; + + /* + * These symbols are defined by vdso32.S to mark the bounds +diff -Nurb linux-2.6.27.10/include/asm-xtensa/module.h linux-2.6.27.10-clickport/include/asm-xtensa/module.h +--- linux-2.6.27.10/include/asm-xtensa/module.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-xtensa/module.h 2009-01-27 15:50:31.000000000 -0500 +@@ -13,10 +13,7 @@ + #ifndef _XTENSA_MODULE_H + #define _XTENSA_MODULE_H + +-struct mod_arch_specific +-{ +- /* No special elements, yet. */ +-}; ++EMPTY_STRUCT_DECL(mod_arch_specific); + + #define MODULE_ARCH_VERMAGIC "xtensa-" __stringify(XCHAL_CORE_ID) " " + +diff -Nurb linux-2.6.27.10/include/asm-xtensa/processor.h linux-2.6.27.10-clickport/include/asm-xtensa/processor.h +--- linux-2.6.27.10/include/asm-xtensa/processor.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-xtensa/processor.h 2009-01-27 15:47:52.000000000 -0500 +@@ -183,7 +183,7 @@ + + /* Special register access. */ + +-#define WSR(v,sr) __asm__ __volatile__ ("wsr %0,"__stringify(sr) :: "a"(v)); ++#define WSR(v,sr) __asm__ __volatile__ ("wsr %0,"__stringify(sr) : : "a"(v)); + #define RSR(v,sr) __asm__ __volatile__ ("rsr %0,"__stringify(sr) : "=a"(v)); + + #define set_sr(x,sr) ({unsigned int v=(unsigned int)x; WSR(v,sr);}) +diff -Nurb linux-2.6.27.10/include/asm-xtensa/system.h linux-2.6.27.10-clickport/include/asm-xtensa/system.h +--- linux-2.6.27.10/include/asm-xtensa/system.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/asm-xtensa/system.h 2009-01-27 15:47:52.000000000 -0500 +@@ -21,21 +21,21 @@ + __asm__ __volatile__ ("rsr %0,"__stringify(PS) : "=a" (x)); + #define local_irq_restore(x) do { \ + __asm__ __volatile__ ("wsr %0, "__stringify(PS)" ; rsync" \ +- :: "a" (x) : "memory"); } while(0); ++ : : "a" (x) : "memory"); } while(0); + #define local_irq_save(x) do { \ + __asm__ __volatile__ ("rsil %0, "__stringify(LOCKLEVEL) \ +- : "=a" (x) :: "memory");} while(0); ++ : "=a" (x) : : "memory");} while(0); + + static inline void local_irq_disable(void) + { + unsigned long flags; + __asm__ __volatile__ ("rsil %0, "__stringify(LOCKLEVEL) +- : "=a" (flags) :: "memory"); ++ : "=a" (flags) : : "memory"); + } + static inline void local_irq_enable(void) + { + unsigned long flags; +- __asm__ __volatile__ ("rsil %0, 0" : "=a" (flags) :: "memory"); ++ __asm__ __volatile__ ("rsil %0, 0" : "=a" (flags) : : "memory"); + + } + +Files linux-2.6.27.10/include/linux/.bitops.h.swp and linux-2.6.27.10-clickport/include/linux/.bitops.h.swp differ +diff -Nurb linux-2.6.27.10/include/linux/backing-dev.h linux-2.6.27.10-clickport/include/linux/backing-dev.h +--- linux-2.6.27.10/include/linux/backing-dev.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/backing-dev.h 2009-01-27 15:56:49.000000000 -0500 +@@ -29,7 +29,7 @@ + BDI_unused, /* Available bits start here */ + }; + +-typedef int (congested_fn)(void *, int); ++typedef int (congested_fn_t)(void *, int); + + enum bdi_stat_item { + BDI_RECLAIMABLE, +@@ -43,7 +43,7 @@ + unsigned long ra_pages; /* max readahead in PAGE_CACHE_SIZE units */ + unsigned long state; /* Always use atomic bitops on this */ + unsigned int capabilities; /* Device capabilities */ +- congested_fn *congested_fn; /* Function pointer if device is md/dm */ ++ congested_fn_t *congested_fn; /* Function pointer if device is md/dm */ + void *congested_data; /* Pointer to aux data for congested func */ + void (*unplug_io_fn)(struct backing_dev_info *, struct page *); + void *unplug_io_data; +diff -Nurb linux-2.6.27.10/include/linux/compat.h linux-2.6.27.10-clickport/include/linux/compat.h +--- linux-2.6.27.10/include/linux/compat.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/compat.h 2009-01-27 15:47:52.000000000 -0500 +@@ -115,7 +115,7 @@ + + struct compat_siginfo; + +-extern asmlinkage long compat_sys_waitid(int, compat_pid_t, ++asmlinkage long compat_sys_waitid(int, compat_pid_t, + struct compat_siginfo __user *, int, + struct compat_rusage __user *); + +diff -Nurb linux-2.6.27.10/include/linux/dmaengine.h linux-2.6.27.10-clickport/include/linux/dmaengine.h +--- linux-2.6.27.10/include/linux/dmaengine.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/dmaengine.h 2009-01-28 11:51:02.000000000 -0500 +@@ -377,7 +377,7 @@ + + static inline void async_tx_ack(struct dma_async_tx_descriptor *tx) + { +- tx->flags |= DMA_CTRL_ACK; ++ tx->flags = (enum dma_ctrl_flags) (tx->flags | DMA_CTRL_ACK); + } + + static inline bool async_tx_test_ack(struct dma_async_tx_descriptor *tx) +diff -Nurb linux-2.6.27.10/include/linux/dqblk_v1.h linux-2.6.27.10-clickport/include/linux/dqblk_v1.h +--- linux-2.6.27.10/include/linux/dqblk_v1.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/dqblk_v1.h 2009-01-27 15:47:52.000000000 -0500 +@@ -18,7 +18,6 @@ + #define V1_DEL_REWRITE 2 + + /* Special information about quotafile */ +-struct v1_mem_dqinfo { +-}; ++EMPTY_STRUCT_DECL(v1_mem_dqinfo); + + #endif /* _LINUX_DQBLK_V1_H */ +diff -Nurb linux-2.6.27.10/include/linux/fs.h linux-2.6.27.10-clickport/include/linux/fs.h +--- linux-2.6.27.10/include/linux/fs.h 2009-01-27 15:18:03.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/fs.h 2009-01-27 15:47:52.000000000 -0500 +@@ -2109,7 +2109,7 @@ + + static inline void simple_transaction_set(struct file *file, size_t n) + { +- struct simple_transaction_argresp *ar = file->private_data; ++ struct simple_transaction_argresp *ar = (struct simple_transaction_argresp *) file->private_data; + + BUG_ON(n > SIMPLE_TRANSACTION_LIMIT); + +diff -Nurb linux-2.6.27.10/include/linux/highmem.h linux-2.6.27.10-clickport/include/linux/highmem.h +--- linux-2.6.27.10/include/linux/highmem.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/highmem.h 2009-01-27 15:47:52.000000000 -0500 +@@ -165,8 +165,8 @@ + { + char *vfrom, *vto; + +- vfrom = kmap_atomic(from, KM_USER0); +- vto = kmap_atomic(to, KM_USER1); ++ vfrom = (char*)kmap_atomic(from, KM_USER0); ++ vto = (char*)kmap_atomic(to, KM_USER1); + copy_user_page(vto, vfrom, vaddr, to); + kunmap_atomic(vfrom, KM_USER0); + kunmap_atomic(vto, KM_USER1); +@@ -178,8 +178,8 @@ + { + char *vfrom, *vto; + +- vfrom = kmap_atomic(from, KM_USER0); +- vto = kmap_atomic(to, KM_USER1); ++ vfrom = (char*)kmap_atomic(from, KM_USER0); ++ vto = (char*)kmap_atomic(to, KM_USER1); + copy_page(vto, vfrom); + kunmap_atomic(vfrom, KM_USER0); + kunmap_atomic(vto, KM_USER1); +diff -Nurb linux-2.6.27.10/include/linux/hrtimer.h linux-2.6.27.10-clickport/include/linux/hrtimer.h +--- linux-2.6.27.10/include/linux/hrtimer.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/hrtimer.h 2009-01-28 11:55:10.000000000 -0500 +@@ -384,7 +384,7 @@ + static inline void timer_stats_account_hrtimer(struct hrtimer *timer) + { + timer_stats_update_stats(timer, timer->start_pid, timer->start_site, +- timer->function, timer->start_comm, 0); ++ (void *) timer->function, timer->start_comm, 0); + } + + extern void __timer_stats_hrtimer_set_start_info(struct hrtimer *timer, +diff -Nurb linux-2.6.27.10/include/linux/inetdevice.h linux-2.6.27.10-clickport/include/linux/inetdevice.h +--- linux-2.6.27.10/include/linux/inetdevice.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/inetdevice.h 2009-01-27 15:47:52.000000000 -0500 +@@ -166,7 +166,7 @@ + + static inline struct in_device *__in_dev_get_rcu(const struct net_device *dev) + { +- struct in_device *in_dev = dev->ip_ptr; ++ struct in_device *in_dev = (struct in_device *) dev->ip_ptr; + if (in_dev) + in_dev = rcu_dereference(in_dev); + return in_dev; +diff -Nurb linux-2.6.27.10/include/linux/jhash.h linux-2.6.27.10-clickport/include/linux/jhash.h +--- linux-2.6.27.10/include/linux/jhash.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/jhash.h 2009-01-28 12:46:26.000000000 -0500 +@@ -44,7 +44,7 @@ + static inline u32 jhash(const void *key, u32 length, u32 initval) + { + u32 a, b, c, len; +- const u8 *k = key; ++ const u8 *k = (const u8 *) key; + + len = length; + a = b = JHASH_GOLDEN_RATIO; +diff -Nurb linux-2.6.27.10/include/linux/kernel.h linux-2.6.27.10-clickport/include/linux/kernel.h +--- linux-2.6.27.10/include/linux/kernel.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/kernel.h 2009-01-28 11:26:08.000000000 -0500 +@@ -213,7 +213,7 @@ + { return false; } + #endif + +-extern void asmlinkage __attribute__((format(printf, 1, 2))) ++asmlinkage void __attribute__((format(printf, 1, 2))) + early_printk(const char *fmt, ...); + + unsigned long int_sqrt(unsigned long); +diff -Nurb linux-2.6.27.10/include/linux/ktime.h linux-2.6.27.10-clickport/include/linux/ktime.h +--- linux-2.6.27.10/include/linux/ktime.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/ktime.h 2009-01-28 11:53:54.000000000 -0500 +@@ -71,6 +71,12 @@ + + #if (BITS_PER_LONG == 64) || defined(CONFIG_KTIME_SCALAR) + ++#ifdef __cplusplus ++# define KTIME_TV64(__s) ({ ktime_t __kt; __kt.tv64 = (__s); __kt; }) ++#else ++# define KTIME_TV64(__s) ((ktime_t) { .tv64 = (__s) }) +#endif -+#ifdef HAVE_UNISTD_H -+# include -+#endif" -+ -+ac_subst_vars='SHELL -+PATH_SEPARATOR -+PACKAGE_NAME -+PACKAGE_TARNAME -+PACKAGE_VERSION -+PACKAGE_STRING -+PACKAGE_BUGREPORT -+exec_prefix -+prefix -+program_transform_name -+bindir -+sbindir -+libexecdir -+datarootdir -+datadir -+sysconfdir -+sharedstatedir -+localstatedir -+includedir -+oldincludedir -+docdir -+infodir -+htmldir -+dvidir -+pdfdir -+psdir -+libdir -+localedir -+mandir -+DEFS -+ECHO_C -+ECHO_N -+ECHO_T -+LIBS -+build_alias -+host_alias -+target_alias -+ac_configure_args -+CLICK_VERSION -+conf_auxdir -+build -+build_cpu -+build_vendor -+build_os -+host -+host_cpu -+host_vendor -+host_os -+target -+target_cpu -+target_vendor -+target_os -+CC -+CXX -+CFLAGS -+LDFLAGS -+CPPFLAGS -+ac_ct_CC -+EXEEXT -+OBJEXT -+DEPCFLAGS -+CFLAGS_NDEBUG -+CPP -+CXXFLAGS -+ac_ct_CXX -+CXXFLAGS_NDEBUG -+CXXCPP -+KERNEL_CC -+KERNEL_CXX -+AR -+LD -+RANLIB -+STRIP -+AR_CREATEFLAGS -+linuxdir -+element_groups -+freebsd_srcdir -+freebsd_includedir -+LIB@&t@OBJS -+GREP -+EGREP -+BUILD_CC -+BUILD_CXX -+BUILD_AR -+BUILD_RANLIB -+HOST_TOOLS -+DL_LIBS -+LDMODULEFLAGS -+BUILD_DL_LIBS -+SOCKET_LIBS -+EXTRA_DRIVER_OBJS -+EXTRA_TOOL_OBJS -+LINUXMODULE_2_6 -+POSSIBLE_DRIVERS -+DRIVERS -+HAVE_USERLEVEL_DRIVER -+HAVE_LINUXMODULE_DRIVER -+HAVE_BSDMODULE_DRIVER -+OTHER_TARGETS -+TOOLDIRS -+TOOL_TARGETS -+PCAP_INCLUDES -+PCAP_LIBS -+PROPER_INCLUDES -+PROPER_LIBS -+XML2CLICK -+EXPAT_INCLUDES -+EXPAT_LIBS -+LINUX_CFLAGS -+INSTALL_PROGRAM -+INSTALL_SCRIPT -+INSTALL_DATA -+INSTALL_IF_CHANGED -+CLICKINSTALL -+SUBMAKE -+GMAKE -+AUTOCONF -+perl5 -+localperl5 -+PERL -+INSTALL_INFO -+MAKEINFO -+TEXI2DVI -+POD2MAN -+clickdatadir -+provisions -+LTLIBOBJS' -+ac_subst_files='' -+ ac_precious_vars='build_alias -+host_alias -+target_alias -+CC -+CFLAGS -+LDFLAGS -+LIBS -+CPPFLAGS -+CPP -+CXX -+CXXFLAGS -+CCC -+CXXCPP' -+ -+ -+# Initialize some variables set by options. -+ac_init_help= -+ac_init_version=false -+# The variables have the same names as the options, with -+# dashes changed to underlines. -+cache_file=/dev/null -+exec_prefix=NONE -+no_create= -+no_recursion= -+prefix=NONE -+program_prefix=NONE -+program_suffix=NONE -+program_transform_name=s,x,x, -+silent= -+site= -+srcdir= -+verbose= -+x_includes=NONE -+x_libraries=NONE -+ -+# Installation directory options. -+# These are left unexpanded so users can "make install exec_prefix=/foo" -+# and all the variables that are supposed to be based on exec_prefix -+# by default will actually change. -+# Use braces instead of parens because sh, perl, etc. also accept them. -+# (The list follows the same order as the GNU Coding Standards.) -+bindir='${exec_prefix}/bin' -+sbindir='${exec_prefix}/sbin' -+libexecdir='${exec_prefix}/libexec' -+datarootdir='${prefix}/share' -+datadir='${datarootdir}' -+sysconfdir='${prefix}/etc' -+sharedstatedir='${prefix}/com' -+localstatedir='${prefix}/var' -+includedir='${prefix}/include' -+oldincludedir='/usr/include' -+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -+infodir='${datarootdir}/info' -+htmldir='${docdir}' -+dvidir='${docdir}' -+pdfdir='${docdir}' -+psdir='${docdir}' -+libdir='${exec_prefix}/lib' -+localedir='${datarootdir}/locale' -+mandir='${datarootdir}/man' -+ -+ac_prev= -+ac_dashdash= -+for ac_option -+do -+ # If the previous option needs an argument, assign it. -+ if test -n "$ac_prev"; then -+ eval $ac_prev=\$ac_option -+ ac_prev= -+ continue -+ fi -+ -+ case $ac_option in -+ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; -+ *) ac_optarg=yes ;; -+ esac -+ -+ # Accept the important Cygnus configure options, so we can diagnose typos. -+ -+ case $ac_dashdash$ac_option in -+ --) -+ ac_dashdash=yes ;; -+ -+ -bindir | --bindir | --bindi | --bind | --bin | --bi) -+ ac_prev=bindir ;; -+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) -+ bindir=$ac_optarg ;; -+ -+ -build | --build | --buil | --bui | --bu) -+ ac_prev=build_alias ;; -+ -build=* | --build=* | --buil=* | --bui=* | --bu=*) -+ build_alias=$ac_optarg ;; -+ -+ -cache-file | --cache-file | --cache-fil | --cache-fi \ -+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) -+ ac_prev=cache_file ;; -+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ -+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) -+ cache_file=$ac_optarg ;; -+ -+ --config-cache | -C) -+ cache_file=config.cache ;; -+ -+ -datadir | --datadir | --datadi | --datad) -+ ac_prev=datadir ;; -+ -datadir=* | --datadir=* | --datadi=* | --datad=*) -+ datadir=$ac_optarg ;; -+ -+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ -+ | --dataroo | --dataro | --datar) -+ ac_prev=datarootdir ;; -+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ -+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) -+ datarootdir=$ac_optarg ;; -+ -+ -disable-* | --disable-*) -+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` -+ # Reject names that are not valid shell variable names. -+ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && -+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2 -+ { (exit 1); exit 1; }; } -+ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` -+ eval enable_$ac_feature=no ;; -+ -+ -docdir | --docdir | --docdi | --doc | --do) -+ ac_prev=docdir ;; -+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) -+ docdir=$ac_optarg ;; -+ -+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) -+ ac_prev=dvidir ;; -+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) -+ dvidir=$ac_optarg ;; -+ -+ -enable-* | --enable-*) -+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` -+ # Reject names that are not valid shell variable names. -+ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && -+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2 -+ { (exit 1); exit 1; }; } -+ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` -+ eval enable_$ac_feature=\$ac_optarg ;; -+ -+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ -+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ -+ | --exec | --exe | --ex) -+ ac_prev=exec_prefix ;; -+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ -+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ -+ | --exec=* | --exe=* | --ex=*) -+ exec_prefix=$ac_optarg ;; -+ -+ -gas | --gas | --ga | --g) -+ # Obsolete; use --with-gas. -+ with_gas=yes ;; -+ -+ -help | --help | --hel | --he | -h) -+ ac_init_help=long ;; -+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) -+ ac_init_help=recursive ;; -+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) -+ ac_init_help=short ;; -+ -+ -host | --host | --hos | --ho) -+ ac_prev=host_alias ;; -+ -host=* | --host=* | --hos=* | --ho=*) -+ host_alias=$ac_optarg ;; -+ -+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) -+ ac_prev=htmldir ;; -+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ -+ | --ht=*) -+ htmldir=$ac_optarg ;; -+ -+ -includedir | --includedir | --includedi | --included | --include \ -+ | --includ | --inclu | --incl | --inc) -+ ac_prev=includedir ;; -+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ -+ | --includ=* | --inclu=* | --incl=* | --inc=*) -+ includedir=$ac_optarg ;; -+ -+ -infodir | --infodir | --infodi | --infod | --info | --inf) -+ ac_prev=infodir ;; -+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) -+ infodir=$ac_optarg ;; -+ -+ -libdir | --libdir | --libdi | --libd) -+ ac_prev=libdir ;; -+ -libdir=* | --libdir=* | --libdi=* | --libd=*) -+ libdir=$ac_optarg ;; -+ -+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ -+ | --libexe | --libex | --libe) -+ ac_prev=libexecdir ;; -+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ -+ | --libexe=* | --libex=* | --libe=*) -+ libexecdir=$ac_optarg ;; -+ -+ -localedir | --localedir | --localedi | --localed | --locale) -+ ac_prev=localedir ;; -+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) -+ localedir=$ac_optarg ;; -+ -+ -localstatedir | --localstatedir | --localstatedi | --localstated \ -+ | --localstate | --localstat | --localsta | --localst | --locals) -+ ac_prev=localstatedir ;; -+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ -+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) -+ localstatedir=$ac_optarg ;; -+ -+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m) -+ ac_prev=mandir ;; -+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) -+ mandir=$ac_optarg ;; -+ -+ -nfp | --nfp | --nf) -+ # Obsolete; use --without-fp. -+ with_fp=no ;; -+ -+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \ -+ | --no-cr | --no-c | -n) -+ no_create=yes ;; -+ -+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \ -+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) -+ no_recursion=yes ;; -+ -+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ -+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ -+ | --oldin | --oldi | --old | --ol | --o) -+ ac_prev=oldincludedir ;; -+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ -+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ -+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) -+ oldincludedir=$ac_optarg ;; -+ -+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) -+ ac_prev=prefix ;; -+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) -+ prefix=$ac_optarg ;; -+ -+ -program-prefix | --program-prefix | --program-prefi | --program-pref \ -+ | --program-pre | --program-pr | --program-p) -+ ac_prev=program_prefix ;; -+ -program-prefix=* | --program-prefix=* | --program-prefi=* \ -+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) -+ program_prefix=$ac_optarg ;; -+ -+ -program-suffix | --program-suffix | --program-suffi | --program-suff \ -+ | --program-suf | --program-su | --program-s) -+ ac_prev=program_suffix ;; -+ -program-suffix=* | --program-suffix=* | --program-suffi=* \ -+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) -+ program_suffix=$ac_optarg ;; -+ -+ -program-transform-name | --program-transform-name \ -+ | --program-transform-nam | --program-transform-na \ -+ | --program-transform-n | --program-transform- \ -+ | --program-transform | --program-transfor \ -+ | --program-transfo | --program-transf \ -+ | --program-trans | --program-tran \ -+ | --progr-tra | --program-tr | --program-t) -+ ac_prev=program_transform_name ;; -+ -program-transform-name=* | --program-transform-name=* \ -+ | --program-transform-nam=* | --program-transform-na=* \ -+ | --program-transform-n=* | --program-transform-=* \ -+ | --program-transform=* | --program-transfor=* \ -+ | --program-transfo=* | --program-transf=* \ -+ | --program-trans=* | --program-tran=* \ -+ | --progr-tra=* | --program-tr=* | --program-t=*) -+ program_transform_name=$ac_optarg ;; -+ -+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) -+ ac_prev=pdfdir ;; -+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) -+ pdfdir=$ac_optarg ;; -+ -+ -psdir | --psdir | --psdi | --psd | --ps) -+ ac_prev=psdir ;; -+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) -+ psdir=$ac_optarg ;; -+ -+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ -+ | -silent | --silent | --silen | --sile | --sil) -+ silent=yes ;; -+ -+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) -+ ac_prev=sbindir ;; -+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ -+ | --sbi=* | --sb=*) -+ sbindir=$ac_optarg ;; -+ -+ -sharedstatedir | --sharedstatedir | --sharedstatedi \ -+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ -+ | --sharedst | --shareds | --shared | --share | --shar \ -+ | --sha | --sh) -+ ac_prev=sharedstatedir ;; -+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ -+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ -+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ -+ | --sha=* | --sh=*) -+ sharedstatedir=$ac_optarg ;; -+ -+ -site | --site | --sit) -+ ac_prev=site ;; -+ -site=* | --site=* | --sit=*) -+ site=$ac_optarg ;; -+ -+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) -+ ac_prev=srcdir ;; -+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) -+ srcdir=$ac_optarg ;; -+ -+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ -+ | --syscon | --sysco | --sysc | --sys | --sy) -+ ac_prev=sysconfdir ;; -+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ -+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) -+ sysconfdir=$ac_optarg ;; -+ -+ -target | --target | --targe | --targ | --tar | --ta | --t) -+ ac_prev=target_alias ;; -+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) -+ target_alias=$ac_optarg ;; -+ -+ -v | -verbose | --verbose | --verbos | --verbo | --verb) -+ verbose=yes ;; -+ -+ -version | --version | --versio | --versi | --vers | -V) -+ ac_init_version=: ;; -+ -+ -with-* | --with-*) -+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` -+ # Reject names that are not valid shell variable names. -+ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && -+ { echo "$as_me: error: invalid package name: $ac_package" >&2 -+ { (exit 1); exit 1; }; } -+ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` -+ eval with_$ac_package=\$ac_optarg ;; -+ -+ -without-* | --without-*) -+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` -+ # Reject names that are not valid shell variable names. -+ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && -+ { echo "$as_me: error: invalid package name: $ac_package" >&2 -+ { (exit 1); exit 1; }; } -+ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` -+ eval with_$ac_package=no ;; -+ -+ --x) -+ # Obsolete; use --with-x. -+ with_x=yes ;; -+ -+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ -+ | --x-incl | --x-inc | --x-in | --x-i) -+ ac_prev=x_includes ;; -+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ -+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) -+ x_includes=$ac_optarg ;; -+ -+ -x-libraries | --x-libraries | --x-librarie | --x-librari \ -+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) -+ ac_prev=x_libraries ;; -+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ -+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) -+ x_libraries=$ac_optarg ;; -+ -+ -*) { echo "$as_me: error: unrecognized option: $ac_option -+Try \`$0 --help' for more information." >&2 -+ { (exit 1); exit 1; }; } -+ ;; -+ -+ *=*) -+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` -+ # Reject names that are not valid shell variable names. -+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && -+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 -+ { (exit 1); exit 1; }; } -+ eval $ac_envvar=\$ac_optarg -+ export $ac_envvar ;; -+ -+ *) -+ # FIXME: should be removed in autoconf 3.0. -+ echo "$as_me: WARNING: you should use --build, --host, --target" >&2 -+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && -+ echo "$as_me: WARNING: invalid host type: $ac_option" >&2 -+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} -+ ;; -+ -+ esac -+done -+ -+if test -n "$ac_prev"; then -+ ac_option=--`echo $ac_prev | sed 's/_/-/g'` -+ { echo "$as_me: error: missing argument to $ac_option" >&2 -+ { (exit 1); exit 1; }; } -+fi -+ -+# Be sure to have absolute directory names. -+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ -+ datadir sysconfdir sharedstatedir localstatedir includedir \ -+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ -+ libdir localedir mandir -+do -+ eval ac_val=\$$ac_var -+ case $ac_val in -+ [\\/$]* | ?:[\\/]* ) continue;; -+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;; -+ esac -+ { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 -+ { (exit 1); exit 1; }; } -+done -+ -+# There might be people who depend on the old broken behavior: `$host' -+# used to hold the argument of --host etc. -+# FIXME: To remove some day. -+build=$build_alias -+host=$host_alias -+target=$target_alias -+ -+# FIXME: To remove some day. -+if test "x$host_alias" != x; then -+ if test "x$build_alias" = x; then -+ cross_compiling=maybe -+ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. -+ If a cross compiler is detected then cross compile mode will be used." >&2 -+ elif test "x$build_alias" != "x$host_alias"; then -+ cross_compiling=yes -+ fi -+fi -+ -+ac_tool_prefix= -+test -n "$host_alias" && ac_tool_prefix=$host_alias- -+ -+test "$silent" = yes && exec 6>/dev/null -+ -+ -+ac_pwd=`pwd` && test -n "$ac_pwd" && -+ac_ls_di=`ls -di .` && -+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || -+ { echo "$as_me: error: Working directory cannot be determined" >&2 -+ { (exit 1); exit 1; }; } -+test "X$ac_ls_di" = "X$ac_pwd_ls_di" || -+ { echo "$as_me: error: pwd does not report name of working directory" >&2 -+ { (exit 1); exit 1; }; } -+ -+ -+# Find the source files, if location was not specified. -+if test -z "$srcdir"; then -+ ac_srcdir_defaulted=yes -+ # Try the directory containing this script, then the parent directory. -+ ac_confdir=`$as_dirname -- "$0" || -+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$0" : 'X\(//\)[^/]' \| \ -+ X"$0" : 'X\(//\)$' \| \ -+ X"$0" : 'X\(/\)' \| . 2>/dev/null || -+echo X"$0" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)[^/].*/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ srcdir=$ac_confdir -+ if test ! -r "$srcdir/$ac_unique_file"; then -+ srcdir=.. -+ fi -+else -+ ac_srcdir_defaulted=no -+fi -+if test ! -r "$srcdir/$ac_unique_file"; then -+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." -+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 -+ { (exit 1); exit 1; }; } -+fi -+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -+ac_abs_confdir=`( -+ cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 -+ { (exit 1); exit 1; }; } -+ pwd)` -+# When building in place, set srcdir=. -+if test "$ac_abs_confdir" = "$ac_pwd"; then -+ srcdir=. -+fi -+# Remove unnecessary trailing slashes from srcdir. -+# Double slashes in file names in object file debugging info -+# mess up M-x gdb in Emacs. -+case $srcdir in -+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -+esac -+for ac_var in $ac_precious_vars; do -+ eval ac_env_${ac_var}_set=\${${ac_var}+set} -+ eval ac_env_${ac_var}_value=\$${ac_var} -+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} -+ eval ac_cv_env_${ac_var}_value=\$${ac_var} -+done -+ -+# -+# Report the --help message. -+# -+if test "$ac_init_help" = "long"; then -+ # Omit some internal or obsolete options to make the list less imposing. -+ # This message is too long to be a string in the A/UX 3.1 sh. -+ cat <<_ACEOF -+\`configure' configures click 1.6.0 to adapt to many kinds of systems. -+ -+Usage: $0 [OPTION]... [VAR=VALUE]... -+ -+To assign environment variables (e.g., CC, CFLAGS...), specify them as -+VAR=VALUE. See below for descriptions of some of the useful variables. -+ -+Defaults for the options are specified in brackets. -+ -+Configuration: -+ -h, --help display this help and exit -+ --help=short display options specific to this package -+ --help=recursive display the short help of all the included packages -+ -V, --version display version information and exit -+ -q, --quiet, --silent do not print \`checking...' messages -+ --cache-file=FILE cache test results in FILE [disabled] -+ -C, --config-cache alias for \`--cache-file=config.cache' -+ -n, --no-create do not create output files -+ --srcdir=DIR find the sources in DIR [configure dir or \`..'] -+ -+Installation directories: -+ --prefix=PREFIX install architecture-independent files in PREFIX -+ [$ac_default_prefix] -+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX -+ [PREFIX] -+ -+By default, \`make install' will install all the files in -+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -+an installation prefix other than \`$ac_default_prefix' using \`--prefix', -+for instance \`--prefix=\$HOME'. -+ -+For better control, use the options below. -+ -+Fine tuning of the installation directories: -+ --bindir=DIR user executables [EPREFIX/bin] -+ --sbindir=DIR system admin executables [EPREFIX/sbin] -+ --libexecdir=DIR program executables [EPREFIX/libexec] -+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] -+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] -+ --localstatedir=DIR modifiable single-machine data [PREFIX/var] -+ --libdir=DIR object code libraries [EPREFIX/lib] -+ --includedir=DIR C header files [PREFIX/include] -+ --oldincludedir=DIR C header files for non-gcc [/usr/include] -+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] -+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR] -+ --infodir=DIR info documentation [DATAROOTDIR/info] -+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale] -+ --mandir=DIR man documentation [DATAROOTDIR/man] -+ --docdir=DIR documentation root @<:@DATAROOTDIR/doc/click@:>@ -+ --htmldir=DIR html documentation [DOCDIR] -+ --dvidir=DIR dvi documentation [DOCDIR] -+ --pdfdir=DIR pdf documentation [DOCDIR] -+ --psdir=DIR ps documentation [DOCDIR] -+_ACEOF -+ -+ cat <<\_ACEOF -+ -+System types: -+ --build=BUILD configure for building on BUILD [guessed] -+ --host=HOST cross-compile to build programs to run on HOST [BUILD] -+ --target=TARGET configure for building compilers for TARGET [HOST] -+_ACEOF -+fi -+ -+if test -n "$ac_init_help"; then -+ case $ac_init_help in -+ short | recursive ) echo "Configuration of click 1.6.0:";; -+ esac -+ cat <<\_ACEOF -+ -+Optional Features: -+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) -+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes] -+ --disable-userlevel disable user-level driver -+ --enable-user-multithread support userlevel multithreading (EXPERIMENTAL) -+ --disable-linuxmodule disable Linux kernel driver -+ --enable-multithread[=N] support kernel multithreading, N threads max -+ --enable-warp9 reduce PollDevice functionality for speed -+ --enable-kassert enable kernel assertions -+ --enable-adaptive use adaptive scheduler to flexibly arbitrate -+ between Click and the kernel (EXPERIMENTAL) -+ --enable-bsdmodule enable FreeBSD kernel driver (EXPERIMENTAL) -+ --enable-nsclick enable NS simulator driver (EXPERIMENTAL) -+ --enable-all-elements include all provided element groups -+ --enable-analysis include elements for network analysis -+ --disable-app do not include application-level elements -+ --disable-aqm do not include active queue management elements -+ --disable-ethernet do not include Ethernet elements -+ --enable-etherswitch include Ethernet switch elements (EXPERIMENTAL) -+ --enable-grid include Grid elements (see FAQ) -+ --disable-icmp do not include ICMP elements -+ --disable-ip do not include IP elements -+ --enable-ip6 include IPv6 elements (EXPERIMENTAL) -+ --enable-ipsec include IP security elements -+ --enable-local include local elements -+ --enable-radio include radio elements (EXPERIMENTAL) -+ --enable-simple include simple versions of other elements -+ --disable-standard do not include standard elements -+ --disable-tcpudp do not include TCP and UDP elements -+ --enable-test include regression test elements -+ --enable-wifi include wifi elements and support -+ --enable-experimental enable experimental elements in normal groups -+ --disable-int64 disable 64-bit integer support -+ --enable-nanotimestamp enable nanosecond timestamps -+ --enable-tools=WHERE enable tools (host/build/mixed/no) [mixed] -+ --disable-dynamic-linking disable dynamic linking -+ --disable-stride disable stride scheduler -+ --enable-task-heap use heap for task list -+ --enable-dmalloc enable debugging malloc -+ --enable-intel-cpu enable Intel-specific machine instructions -+ -+Optional Packages: -+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] -+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) -+ --with-linux[=DIR] Linux source code is in DIR -+ --with-linux-map[=FILE] filename for Linux System.map [LINUXDIR/System.map] -+ --with-freebsd[=SRC,INC] FreeBSD source code is in SRC [/usr/src/sys], -+ include directory is INC [/usr/include] -+ --with-proper[=PREFIX] use PlanetLab Proper library (optional) -+ --with-expat[=PREFIX] locate expat XML library (optional) -+ -+Some influential environment variables: -+ CC C compiler command -+ CFLAGS C compiler flags -+ LDFLAGS linker flags, e.g. -L if you have libraries in a -+ nonstandard directory -+ LIBS libraries to pass to the linker, e.g. -l -+ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if -+ you have headers in a nonstandard directory -+ CPP C preprocessor -+ CXX C++ compiler command -+ CXXFLAGS C++ compiler flags -+ CXXCPP C++ preprocessor -+ -+Use these variables to override the choices made by `configure' or to help -+it to find libraries and programs with nonstandard names/locations. -+ -+_ACEOF -+ac_status=$? -+fi -+ -+if test "$ac_init_help" = "recursive"; then -+ # If there are subdirs, report their specific --help. -+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue -+ test -d "$ac_dir" || continue -+ ac_builddir=. -+ -+case "$ac_dir" in -+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -+*) -+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` -+ # A ".." for each directory in $ac_dir_suffix. -+ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` -+ case $ac_top_builddir_sub in -+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; -+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; -+ esac ;; -+esac -+ac_abs_top_builddir=$ac_pwd -+ac_abs_builddir=$ac_pwd$ac_dir_suffix -+# for backward compatibility: -+ac_top_builddir=$ac_top_build_prefix -+ -+case $srcdir in -+ .) # We are building in place. -+ ac_srcdir=. -+ ac_top_srcdir=$ac_top_builddir_sub -+ ac_abs_top_srcdir=$ac_pwd ;; -+ [\\/]* | ?:[\\/]* ) # Absolute name. -+ ac_srcdir=$srcdir$ac_dir_suffix; -+ ac_top_srcdir=$srcdir -+ ac_abs_top_srcdir=$srcdir ;; -+ *) # Relative name. -+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix -+ ac_top_srcdir=$ac_top_build_prefix$srcdir -+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -+esac -+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix -+ -+ cd "$ac_dir" || { ac_status=$?; continue; } -+ # Check for guested configure. -+ if test -f "$ac_srcdir/configure.gnu"; then -+ echo && -+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive -+ elif test -f "$ac_srcdir/configure"; then -+ echo && -+ $SHELL "$ac_srcdir/configure" --help=recursive -+ else -+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 -+ fi || ac_status=$? -+ cd "$ac_pwd" || { ac_status=$?; break; } -+ done -+fi -+ -+test -n "$ac_init_help" && exit $ac_status -+if $ac_init_version; then -+ cat <<\_ACEOF -+click configure 1.6.0 -+generated by GNU Autoconf 2.61 -+ -+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -+2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -+This configure script is free software; the Free Software Foundation -+gives unlimited permission to copy, distribute and modify it. -+_ACEOF -+ exit -+fi -+cat >config.log <<_ACEOF -+This file contains any messages produced by compilers while -+running configure, to aid debugging if configure makes a mistake. -+ -+It was created by click $as_me 1.6.0, which was -+generated by GNU Autoconf 2.61. Invocation command line was -+ -+ $ $0 $@ -+ -+_ACEOF -+exec 5>>config.log -+{ -+cat <<_ASUNAME -+@%:@@%:@ --------- @%:@@%:@ -+@%:@@%:@ Platform. @%:@@%:@ -+@%:@@%:@ --------- @%:@@%:@ -+ -+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -+uname -m = `(uname -m) 2>/dev/null || echo unknown` -+uname -r = `(uname -r) 2>/dev/null || echo unknown` -+uname -s = `(uname -s) 2>/dev/null || echo unknown` -+uname -v = `(uname -v) 2>/dev/null || echo unknown` -+ -+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` -+ -+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` -+ -+_ASUNAME -+ -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ echo "PATH: $as_dir" -+done -+IFS=$as_save_IFS -+ -+} >&5 -+ -+cat >&5 <<_ACEOF -+ -+ -+@%:@@%:@ ----------- @%:@@%:@ -+@%:@@%:@ Core tests. @%:@@%:@ -+@%:@@%:@ ----------- @%:@@%:@ -+ -+_ACEOF -+ -+ -+# Keep a trace of the command line. -+# Strip out --no-create and --no-recursion so they do not pile up. -+# Strip out --silent because we don't want to record it for future runs. -+# Also quote any args containing shell meta-characters. -+# Make two passes to allow for proper duplicate-argument suppression. -+ac_configure_args= -+ac_configure_args0= -+ac_configure_args1= -+ac_must_keep_next=false -+for ac_pass in 1 2 -+do -+ for ac_arg -+ do -+ case $ac_arg in -+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ -+ | -silent | --silent | --silen | --sile | --sil) -+ continue ;; -+ *\'*) -+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; -+ esac -+ case $ac_pass in -+ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; -+ 2) -+ ac_configure_args1="$ac_configure_args1 '$ac_arg'" -+ if test $ac_must_keep_next = true; then -+ ac_must_keep_next=false # Got value, back to normal. -+ else -+ case $ac_arg in -+ *=* | --config-cache | -C | -disable-* | --disable-* \ -+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ -+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ -+ | -with-* | --with-* | -without-* | --without-* | --x) -+ case "$ac_configure_args0 " in -+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; -+ esac -+ ;; -+ -* ) ac_must_keep_next=true ;; -+ esac -+ fi -+ ac_configure_args="$ac_configure_args '$ac_arg'" -+ ;; -+ esac -+ done -+done -+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } -+ -+# When interrupted or exit'd, cleanup temporary files, and complete -+# config.log. We remove comments because anyway the quotes in there -+# would cause problems or look ugly. -+# WARNING: Use '\'' to represent an apostrophe within the trap. -+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -+trap 'exit_status=$? -+ # Save into config.log some information that might help in debugging. -+ { -+ echo -+ -+ cat <<\_ASBOX -+@%:@@%:@ ---------------- @%:@@%:@ -+@%:@@%:@ Cache variables. @%:@@%:@ -+@%:@@%:@ ---------------- @%:@@%:@ -+_ASBOX -+ echo -+ # The following way of writing the cache mishandles newlines in values, -+( -+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do -+ eval ac_val=\$$ac_var -+ case $ac_val in #( -+ *${as_nl}*) -+ case $ac_var in #( -+ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; -+ esac -+ case $ac_var in #( -+ _ | IFS | as_nl) ;; #( -+ *) $as_unset $ac_var ;; -+ esac ;; -+ esac -+ done -+ (set) 2>&1 | -+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( -+ *${as_nl}ac_space=\ *) -+ sed -n \ -+ "s/'\''/'\''\\\\'\'''\''/g; -+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" -+ ;; #( -+ *) -+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" -+ ;; -+ esac | -+ sort -+) -+ echo -+ -+ cat <<\_ASBOX -+@%:@@%:@ ----------------- @%:@@%:@ -+@%:@@%:@ Output variables. @%:@@%:@ -+@%:@@%:@ ----------------- @%:@@%:@ -+_ASBOX -+ echo -+ for ac_var in $ac_subst_vars -+ do -+ eval ac_val=\$$ac_var -+ case $ac_val in -+ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; -+ esac -+ echo "$ac_var='\''$ac_val'\''" -+ done | sort -+ echo -+ -+ if test -n "$ac_subst_files"; then -+ cat <<\_ASBOX -+@%:@@%:@ ------------------- @%:@@%:@ -+@%:@@%:@ File substitutions. @%:@@%:@ -+@%:@@%:@ ------------------- @%:@@%:@ -+_ASBOX -+ echo -+ for ac_var in $ac_subst_files -+ do -+ eval ac_val=\$$ac_var -+ case $ac_val in -+ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; -+ esac -+ echo "$ac_var='\''$ac_val'\''" -+ done | sort -+ echo -+ fi -+ -+ if test -s confdefs.h; then -+ cat <<\_ASBOX -+@%:@@%:@ ----------- @%:@@%:@ -+@%:@@%:@ confdefs.h. @%:@@%:@ -+@%:@@%:@ ----------- @%:@@%:@ -+_ASBOX -+ echo -+ cat confdefs.h -+ echo -+ fi -+ test "$ac_signal" != 0 && -+ echo "$as_me: caught signal $ac_signal" -+ echo "$as_me: exit $exit_status" -+ } >&5 -+ rm -f core *.core core.conftest.* && -+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files && -+ exit $exit_status -+' 0 -+for ac_signal in 1 2 13 15; do -+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -+done -+ac_signal=0 -+ -+# confdefs.h avoids OS command line length limits that DEFS can exceed. -+rm -f -r conftest* confdefs.h -+ -+# Predefined preprocessor variables. -+ -+cat >>confdefs.h <<_ACEOF -+@%:@define PACKAGE_NAME "$PACKAGE_NAME" -+_ACEOF -+ -+ -+cat >>confdefs.h <<_ACEOF -+@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" -+_ACEOF -+ -+ -+cat >>confdefs.h <<_ACEOF -+@%:@define PACKAGE_VERSION "$PACKAGE_VERSION" -+_ACEOF -+ -+ -+cat >>confdefs.h <<_ACEOF -+@%:@define PACKAGE_STRING "$PACKAGE_STRING" -+_ACEOF -+ -+ -+cat >>confdefs.h <<_ACEOF -+@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -+_ACEOF -+ -+ -+# Let the site file select an alternate cache file if it wants to. -+# Prefer explicitly selected file to automatically selected ones. -+if test -n "$CONFIG_SITE"; then -+ set x "$CONFIG_SITE" -+elif test "x$prefix" != xNONE; then -+ set x "$prefix/share/config.site" "$prefix/etc/config.site" -+else -+ set x "$ac_default_prefix/share/config.site" \ -+ "$ac_default_prefix/etc/config.site" -+fi -+shift -+for ac_site_file -+do -+ if test -r "$ac_site_file"; then -+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -+echo "$as_me: loading site script $ac_site_file" >&6;} -+ sed 's/^/| /' "$ac_site_file" >&5 -+ . "$ac_site_file" -+ fi -+done -+ -+if test -r "$cache_file"; then -+ # Some versions of bash will fail to source /dev/null (special -+ # files actually), so we avoid doing that. -+ if test -f "$cache_file"; then -+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -+echo "$as_me: loading cache $cache_file" >&6;} -+ case $cache_file in -+ [\\/]* | ?:[\\/]* ) . "$cache_file";; -+ *) . "./$cache_file";; -+ esac -+ fi -+else -+ { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -+echo "$as_me: creating cache $cache_file" >&6;} -+ >$cache_file -+fi -+ -+# Check that the precious variables saved in the cache have kept the same -+# value. -+ac_cache_corrupted=false -+for ac_var in $ac_precious_vars; do -+ eval ac_old_set=\$ac_cv_env_${ac_var}_set -+ eval ac_new_set=\$ac_env_${ac_var}_set -+ eval ac_old_val=\$ac_cv_env_${ac_var}_value -+ eval ac_new_val=\$ac_env_${ac_var}_value -+ case $ac_old_set,$ac_new_set in -+ set,) -+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} -+ ac_cache_corrupted=: ;; -+ ,set) -+ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} -+ ac_cache_corrupted=: ;; -+ ,);; -+ *) -+ if test "x$ac_old_val" != "x$ac_new_val"; then -+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} -+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -+echo "$as_me: former value: $ac_old_val" >&2;} -+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -+echo "$as_me: current value: $ac_new_val" >&2;} -+ ac_cache_corrupted=: -+ fi;; -+ esac -+ # Pass precious variables to config.status. -+ if test "$ac_new_set" = set; then -+ case $ac_new_val in -+ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; -+ *) ac_arg=$ac_var=$ac_new_val ;; -+ esac -+ case " $ac_configure_args " in -+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. -+ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; -+ esac -+ fi -+done -+if $ac_cache_corrupted; then -+ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -+echo "$as_me: error: changes in the environment can compromise the build" >&2;} -+ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} -+ { (exit 1); exit 1; }; } -+fi -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ -+set +x +v -+ -+ac_config_headers="$ac_config_headers include/click/config.h:config.h.in include/click/pathvars.h:pathvars.h.in include/click/config-bsdmodule.h:config-bsdmodule.h.in include/click/config-linuxmodule.h:config-linuxmodule.h.in include/click/config-ns.h:config-ns.h.in include/click/config-userlevel.h:config-userlevel.h.in" -+ -+ -+CLICK_VERSION=$PACKAGE_VERSION -+ -+ -+cat >>confdefs.h <<_ACEOF -+@%:@define CLICK_VERSION "$CLICK_VERSION" -+_ACEOF -+ -+ -+ -+ -+ ac_user_cc=; test -n "$CC" && ac_user_cc=y -+ ac_user_kernel_cc=; test -n "$KERNEL_CC" && ac_user_kernel_cc=y -+ ac_user_cxx=; test -n "$CXX" && ac_user_cxx=y -+ ac_user_build_cxx=; test -n "$BUILD_CXX" && ac_user_build_cxx=y -+ ac_user_kernel_cxx=; test -n "$KERNEL_CXX" && ac_user_kernel_cxx=y -+ ac_user_depcflags=; test -n "$DEPCFLAGS" && ac_user_depcflags=y -+ ac_compile_with_warnings=y -+ -+ conf_auxdir='$(top_srcdir)' -+ -+ -+ -+ -+ -+ac_aux_dir= -+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do -+ if test -f "$ac_dir/install-sh"; then -+ ac_aux_dir=$ac_dir -+ ac_install_sh="$ac_aux_dir/install-sh -c" -+ break -+ elif test -f "$ac_dir/install.sh"; then -+ ac_aux_dir=$ac_dir -+ ac_install_sh="$ac_aux_dir/install.sh -c" -+ break -+ elif test -f "$ac_dir/shtool"; then -+ ac_aux_dir=$ac_dir -+ ac_install_sh="$ac_aux_dir/shtool install -c" -+ break -+ fi -+done -+if test -z "$ac_aux_dir"; then -+ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 -+echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} -+ { (exit 1); exit 1; }; } -+fi -+ -+# These three variables are undocumented and unsupported, -+# and are intended to be withdrawn in a future Autoconf release. -+# They can cause serious problems if a builder's source tree is in a directory -+# whose full name contains unusual characters. -+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. -+ -+ -+# Make sure we can run config.sub. -+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || -+ { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 -+echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} -+ { (exit 1); exit 1; }; } -+ -+{ echo "$as_me:$LINENO: checking build system type" >&5 -+echo $ECHO_N "checking build system type... $ECHO_C" >&6; } -+if test "${ac_cv_build+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_build_alias=$build_alias -+test "x$ac_build_alias" = x && -+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -+test "x$ac_build_alias" = x && -+ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -+echo "$as_me: error: cannot guess build type; you must specify one" >&2;} -+ { (exit 1); exit 1; }; } -+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || -+ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 -+echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} -+ { (exit 1); exit 1; }; } -+ -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -+echo "${ECHO_T}$ac_cv_build" >&6; } -+case $ac_cv_build in -+*-*-*) ;; -+*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 -+echo "$as_me: error: invalid value of canonical build" >&2;} -+ { (exit 1); exit 1; }; };; -+esac -+build=$ac_cv_build -+ac_save_IFS=$IFS; IFS='-' -+set x $ac_cv_build -+shift -+build_cpu=$1 -+build_vendor=$2 -+shift; shift -+# Remember, the first character of IFS is used to create $*, -+# except with old shells: -+build_os=$* -+IFS=$ac_save_IFS -+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -+ -+ -+{ echo "$as_me:$LINENO: checking host system type" >&5 -+echo $ECHO_N "checking host system type... $ECHO_C" >&6; } -+if test "${ac_cv_host+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test "x$host_alias" = x; then -+ ac_cv_host=$ac_cv_build -+else -+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || -+ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 -+echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} -+ { (exit 1); exit 1; }; } -+fi -+ -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -+echo "${ECHO_T}$ac_cv_host" >&6; } -+case $ac_cv_host in -+*-*-*) ;; -+*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 -+echo "$as_me: error: invalid value of canonical host" >&2;} -+ { (exit 1); exit 1; }; };; -+esac -+host=$ac_cv_host -+ac_save_IFS=$IFS; IFS='-' -+set x $ac_cv_host -+shift -+host_cpu=$1 -+host_vendor=$2 -+shift; shift -+# Remember, the first character of IFS is used to create $*, -+# except with old shells: -+host_os=$* -+IFS=$ac_save_IFS -+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac -+ -+ -+{ echo "$as_me:$LINENO: checking target system type" >&5 -+echo $ECHO_N "checking target system type... $ECHO_C" >&6; } -+if test "${ac_cv_target+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test "x$target_alias" = x; then -+ ac_cv_target=$ac_cv_host -+else -+ ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || -+ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 -+echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} -+ { (exit 1); exit 1; }; } -+fi -+ -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5 -+echo "${ECHO_T}$ac_cv_target" >&6; } -+case $ac_cv_target in -+*-*-*) ;; -+*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 -+echo "$as_me: error: invalid value of canonical target" >&2;} -+ { (exit 1); exit 1; }; };; -+esac -+target=$ac_cv_target -+ac_save_IFS=$IFS; IFS='-' -+set x $ac_cv_target -+shift -+target_cpu=$1 -+target_vendor=$2 -+shift; shift -+# Remember, the first character of IFS is used to create $*, -+# except with old shells: -+target_os=$* -+IFS=$ac_save_IFS -+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac -+ -+ -+# The aliases save the names the user supplied, while $host etc. -+# will get canonicalized. -+test -n "$target_alias" && -+ test "$program_prefix$program_suffix$program_transform_name" = \ -+ NONENONEs,x,x, && -+ program_prefix=${target_alias}- -+ -+if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -+set dummy ${ac_tool_prefix}gcc; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_CC+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$CC"; then -+ ac_cv_prog_CC="$CC" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_CC="${ac_tool_prefix}gcc" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+CC=$ac_cv_prog_CC -+if test -n "$CC"; then -+ { echo "$as_me:$LINENO: result: $CC" >&5 -+echo "${ECHO_T}$CC" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+fi -+if test -z "$ac_cv_prog_CC"; then -+ ac_ct_CC=$CC -+ # Extract the first word of "gcc", so it can be a program name with args. -+set dummy gcc; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$ac_ct_CC"; then -+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_CC="gcc" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_CC=$ac_cv_prog_ac_ct_CC -+if test -n "$ac_ct_CC"; then -+ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -+echo "${ECHO_T}$ac_ct_CC" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ if test "x$ac_ct_CC" = x; then -+ CC="" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -+whose name does not start with the host triplet. If you think this -+configuration is useful to you, please write to autoconf@gnu.org." >&5 -+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -+whose name does not start with the host triplet. If you think this -+configuration is useful to you, please write to autoconf@gnu.org." >&2;} -+ac_tool_warned=yes ;; -+esac -+ CC=$ac_ct_CC -+ fi -+else -+ CC="$ac_cv_prog_CC" -+fi -+ -+if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}g++", so it can be a program name with args. -+set dummy ${ac_tool_prefix}g++; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_CXX+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$CXX"; then -+ ac_cv_prog_CXX="$CXX" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_CXX="${ac_tool_prefix}g++" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+CXX=$ac_cv_prog_CXX -+if test -n "$CXX"; then -+ { echo "$as_me:$LINENO: result: $CXX" >&5 -+echo "${ECHO_T}$CXX" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+fi -+if test -z "$ac_cv_prog_CXX"; then -+ ac_ct_CXX=$CXX -+ # Extract the first word of "g++", so it can be a program name with args. -+set dummy g++; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$ac_ct_CXX"; then -+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_CXX="g++" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -+if test -n "$ac_ct_CXX"; then -+ { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 -+echo "${ECHO_T}$ac_ct_CXX" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ if test "x$ac_ct_CXX" = x; then -+ CXX="" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -+whose name does not start with the host triplet. If you think this -+configuration is useful to you, please write to autoconf@gnu.org." >&5 -+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -+whose name does not start with the host triplet. If you think this -+configuration is useful to you, please write to autoconf@gnu.org." >&2;} -+ac_tool_warned=yes ;; -+esac -+ CXX=$ac_ct_CXX -+ fi -+else -+ CXX="$ac_cv_prog_CXX" -+fi -+ -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -+set dummy ${ac_tool_prefix}gcc; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_CC+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$CC"; then -+ ac_cv_prog_CC="$CC" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_CC="${ac_tool_prefix}gcc" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+CC=$ac_cv_prog_CC -+if test -n "$CC"; then -+ { echo "$as_me:$LINENO: result: $CC" >&5 -+echo "${ECHO_T}$CC" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+fi -+if test -z "$ac_cv_prog_CC"; then -+ ac_ct_CC=$CC -+ # Extract the first word of "gcc", so it can be a program name with args. -+set dummy gcc; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$ac_ct_CC"; then -+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_CC="gcc" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_CC=$ac_cv_prog_ac_ct_CC -+if test -n "$ac_ct_CC"; then -+ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -+echo "${ECHO_T}$ac_ct_CC" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ if test "x$ac_ct_CC" = x; then -+ CC="" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -+whose name does not start with the host triplet. If you think this -+configuration is useful to you, please write to autoconf@gnu.org." >&5 -+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -+whose name does not start with the host triplet. If you think this -+configuration is useful to you, please write to autoconf@gnu.org." >&2;} -+ac_tool_warned=yes ;; -+esac -+ CC=$ac_ct_CC -+ fi -+else -+ CC="$ac_cv_prog_CC" -+fi + -+if test -z "$CC"; then -+ if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -+set dummy ${ac_tool_prefix}cc; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_CC+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$CC"; then -+ ac_cv_prog_CC="$CC" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_CC="${ac_tool_prefix}cc" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+CC=$ac_cv_prog_CC -+if test -n "$CC"; then -+ { echo "$as_me:$LINENO: result: $CC" >&5 -+echo "${ECHO_T}$CC" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+ fi -+fi -+if test -z "$CC"; then -+ # Extract the first word of "cc", so it can be a program name with args. -+set dummy cc; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_CC+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$CC"; then -+ ac_cv_prog_CC="$CC" # Let the user override the test. -+else -+ ac_prog_rejected=no -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then -+ ac_prog_rejected=yes -+ continue -+ fi -+ ac_cv_prog_CC="cc" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+if test $ac_prog_rejected = yes; then -+ # We found a bogon in the path, so make sure we never use it. -+ set dummy $ac_cv_prog_CC -+ shift -+ if test $@%:@ != 0; then -+ # We chose a different compiler from the bogus one. -+ # However, it has the same basename, so the bogon will be chosen -+ # first if we set CC to just the basename; use the full file name. -+ shift -+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" -+ fi -+fi -+fi -+fi -+CC=$ac_cv_prog_CC -+if test -n "$CC"; then -+ { echo "$as_me:$LINENO: result: $CC" >&5 -+echo "${ECHO_T}$CC" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+fi -+if test -z "$CC"; then -+ if test -n "$ac_tool_prefix"; then -+ for ac_prog in cl.exe -+ do -+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -+set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_CC+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$CC"; then -+ ac_cv_prog_CC="$CC" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+CC=$ac_cv_prog_CC -+if test -n "$CC"; then -+ { echo "$as_me:$LINENO: result: $CC" >&5 -+echo "${ECHO_T}$CC" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+ test -n "$CC" && break -+ done -+fi -+if test -z "$CC"; then -+ ac_ct_CC=$CC -+ for ac_prog in cl.exe -+do -+ # Extract the first word of "$ac_prog", so it can be a program name with args. -+set dummy $ac_prog; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$ac_ct_CC"; then -+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_CC="$ac_prog" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_CC=$ac_cv_prog_ac_ct_CC -+if test -n "$ac_ct_CC"; then -+ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -+echo "${ECHO_T}$ac_ct_CC" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+ test -n "$ac_ct_CC" && break -+done -+ -+ if test "x$ac_ct_CC" = x; then -+ CC="" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -+whose name does not start with the host triplet. If you think this -+configuration is useful to you, please write to autoconf@gnu.org." >&5 -+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -+whose name does not start with the host triplet. If you think this -+configuration is useful to you, please write to autoconf@gnu.org." >&2;} -+ac_tool_warned=yes ;; -+esac -+ CC=$ac_ct_CC -+ fi -+fi -+ -+fi -+ -+ -+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -+See \`config.log' for more details." >&5 -+echo "$as_me: error: no acceptable C compiler found in \$PATH -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } -+ -+# Provide some information about the compiler. -+echo "$as_me:$LINENO: checking for C compiler version" >&5 -+ac_compiler=`set X $ac_compile; echo $2` -+{ (ac_try="$ac_compiler --version >&5" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compiler --version >&5") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+{ (ac_try="$ac_compiler -v >&5" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compiler -v >&5") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+{ (ac_try="$ac_compiler -V >&5" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compiler -V >&5") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+ -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+ac_clean_files_save=$ac_clean_files -+ac_clean_files="$ac_clean_files a.out a.exe b.out" -+# Try to create an executable without -o first, disregard a.out. -+# It will help us diagnose broken compilers, and finding out an intuition -+# of exeext. -+{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } -+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -+# -+# List of possible output files, starting from the most likely. -+# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) -+# only as a last resort. b.out is created by i960 compilers. -+ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' -+# -+# The IRIX 6 linker writes into existing files which may not be -+# executable, retaining their permissions. Remove them first so a -+# subsequent execution test works. -+ac_rmfiles= -+for ac_file in $ac_files -+do -+ case $ac_file in -+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; -+ * ) ac_rmfiles="$ac_rmfiles $ac_file";; -+ esac -+done -+rm -f $ac_rmfiles -+ -+if { (ac_try="$ac_link_default" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link_default") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; then -+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -+# in a Makefile. We should not override ac_cv_exeext if it was cached, -+# so that the user can short-circuit this test for compilers unknown to -+# Autoconf. -+for ac_file in $ac_files '' -+do -+ test -f "$ac_file" || continue -+ case $ac_file in -+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) -+ ;; -+ [ab].out ) -+ # We found the default executable, but exeext='' is most -+ # certainly right. -+ break;; -+ *.* ) -+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; -+ then :; else -+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` -+ fi -+ # We set ac_cv_exeext here because the later test for it is not -+ # safe: cross compilers may not add the suffix if given an `-o' -+ # argument, so we may need to know it at that point already. -+ # Even if this section looks crufty: it has the advantage of -+ # actually working. -+ break;; -+ * ) -+ break;; -+ esac -+done -+test "$ac_cv_exeext" = no && ac_cv_exeext= -+ -+else -+ ac_file='' -+fi -+ -+{ echo "$as_me:$LINENO: result: $ac_file" >&5 -+echo "${ECHO_T}$ac_file" >&6; } -+if test -z "$ac_file"; then -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables -+See \`config.log' for more details." >&5 -+echo "$as_me: error: C compiler cannot create executables -+See \`config.log' for more details." >&2;} -+ { (exit 77); exit 77; }; } -+fi -+ -+ac_exeext=$ac_cv_exeext -+ -+# Check that the compiler produces executables we can run. If not, either -+# the compiler is broken, or we cross compile. -+{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } -+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -+# If not cross compiling, check that we can run a simple program. -+if test "$cross_compiling" != yes; then -+ if { ac_try='./$ac_file' -+ { (case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_try") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ cross_compiling=no -+ else -+ if test "$cross_compiling" = maybe; then -+ cross_compiling=yes -+ else -+ { { echo "$as_me:$LINENO: error: cannot run C compiled programs. -+If you meant to cross compile, use \`--host'. -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot run C compiled programs. -+If you meant to cross compile, use \`--host'. -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } -+ fi -+ fi -+fi -+{ echo "$as_me:$LINENO: result: yes" >&5 -+echo "${ECHO_T}yes" >&6; } -+ -+rm -f a.out a.exe conftest$ac_cv_exeext b.out -+ac_clean_files=$ac_clean_files_save -+# Check that the compiler produces executables we can run. If not, either -+# the compiler is broken, or we cross compile. -+{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } -+{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 -+echo "${ECHO_T}$cross_compiling" >&6; } -+ -+{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 -+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; then -+ # If both `conftest.exe' and `conftest' are `present' (well, observable) -+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -+# work properly (i.e., refer to `conftest.exe'), while it won't with -+# `rm'. -+for ac_file in conftest.exe conftest conftest.*; do -+ test -f "$ac_file" || continue -+ case $ac_file in -+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; -+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` -+ break;; -+ * ) break;; -+ esac -+done -+else -+ { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } -+fi -+ -+rm -f conftest$ac_cv_exeext -+{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -+echo "${ECHO_T}$ac_cv_exeext" >&6; } -+ -+rm -f conftest.$ac_ext -+EXEEXT=$ac_cv_exeext -+ac_exeext=$EXEEXT -+{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 -+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } -+if test "${ac_cv_objext+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.o conftest.obj -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; then -+ for ac_file in conftest.o conftest.obj conftest.*; do -+ test -f "$ac_file" || continue; -+ case $ac_file in -+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; -+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` -+ break;; -+ esac -+done -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute suffix of object files: cannot compile -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } -+fi -+ -+rm -f conftest.$ac_cv_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -+echo "${ECHO_T}$ac_cv_objext" >&6; } -+OBJEXT=$ac_cv_objext -+ac_objext=$OBJEXT -+{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } -+if test "${ac_cv_c_compiler_gnu+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+#ifndef __GNUC__ -+ choke me -+#endif -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_compiler_gnu=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_compiler_gnu=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ac_cv_c_compiler_gnu=$ac_compiler_gnu -+ -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } -+GCC=`test $ac_compiler_gnu = yes && echo yes` -+ac_test_CFLAGS=${CFLAGS+set} -+ac_save_CFLAGS=$CFLAGS -+{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } -+if test "${ac_cv_prog_cc_g+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_save_c_werror_flag=$ac_c_werror_flag -+ ac_c_werror_flag=yes -+ ac_cv_prog_cc_g=no -+ CFLAGS="-g" -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_prog_cc_g=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ CFLAGS="" -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ : -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_c_werror_flag=$ac_save_c_werror_flag -+ CFLAGS="-g" -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_prog_cc_g=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ ac_c_werror_flag=$ac_save_c_werror_flag -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } -+if test "$ac_test_CFLAGS" = set; then -+ CFLAGS=$ac_save_CFLAGS -+elif test $ac_cv_prog_cc_g = yes; then -+ if test "$GCC" = yes; then -+ CFLAGS="-g -O2" -+ else -+ CFLAGS="-g" -+ fi -+else -+ if test "$GCC" = yes; then -+ CFLAGS="-O2" -+ else -+ CFLAGS= -+ fi -+fi -+{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 -+echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } -+if test "${ac_cv_prog_cc_c89+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_cv_prog_cc_c89=no -+ac_save_CC=$CC -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+#include -+#include -+#include -+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -+struct buf { int x; }; -+FILE * (*rcsopen) (struct buf *, struct stat *, int); -+static char *e (p, i) -+ char **p; -+ int i; -+{ -+ return p[i]; -+} -+static char *f (char * (*g) (char **, int), char **p, ...) -+{ -+ char *s; -+ va_list v; -+ va_start (v,p); -+ s = g (p, va_arg (v,int)); -+ va_end (v); -+ return s; -+} -+ -+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has -+ function prototypes and stuff, but not '\xHH' hex character constants. -+ These don't provoke an error unfortunately, instead are silently treated -+ as 'x'. The following induces an error, until -std is added to get -+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an -+ array size at least. It's necessary to write '\x00'==0 to get something -+ that's true only with -std. */ -+int osf4_cc_array ['\x00' == 0 ? 1 : -1]; -+ -+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters -+ inside strings and character constants. */ -+#define FOO(x) 'x' -+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; -+ -+int test (int i, double x); -+struct s1 {int (*f) (int a);}; -+struct s2 {int (*f) (double a);}; -+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -+int argc; -+char **argv; -+int -+main () -+{ -+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; -+ ; -+ return 0; -+} -+_ACEOF -+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -+do -+ CC="$ac_save_CC $ac_arg" -+ rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_prog_cc_c89=$ac_arg -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ -+fi -+ -+rm -f core conftest.err conftest.$ac_objext -+ test "x$ac_cv_prog_cc_c89" != "xno" && break -+done -+rm -f conftest.$ac_ext -+CC=$ac_save_CC -+ -+fi -+# AC_CACHE_VAL -+case "x$ac_cv_prog_cc_c89" in -+ x) -+ { echo "$as_me:$LINENO: result: none needed" >&5 -+echo "${ECHO_T}none needed" >&6; } ;; -+ xno) -+ { echo "$as_me:$LINENO: result: unsupported" >&5 -+echo "${ECHO_T}unsupported" >&6; } ;; -+ *) -+ CC="$CC $ac_cv_prog_cc_c89" -+ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 -+echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; -+esac -+ -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ -+ -+ -+ ac_base_cc="$CC" -+ test -z "$ac_user_cc" -a -n "$GCC" -a -n "$ac_compile_with_warnings" && \ -+ CC="$CC -W -Wall" -+ -+ test -z "$ac_user_cc" -a -n "$GCC" -a -n "$ac_compile_with_warnings" -a -z "$ac_user_depcflags" && \ -+ DEPCFLAGS="-MD" -+ -+ -+ CFLAGS_NDEBUG=`echo "$CFLAGS" | sed 's/-g//'` -+ -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } -+# On Suns, sometimes $CPP names a directory. -+if test -n "$CPP" && test -d "$CPP"; then -+ CPP= -+fi -+if test -z "$CPP"; then -+ if test "${ac_cv_prog_CPP+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ # Double quotes because CPP needs to be expanded -+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" -+ do -+ ac_preproc_ok=false -+for ac_c_preproc_warn_flag in '' yes -+do -+ # Use a header file that comes with gcc, so configuring glibc -+ # with a fresh cross-compiler works. -+ # Prefer to if __STDC__ is defined, since -+ # exists even on freestanding compilers. -+ # On the NeXT, cc -E runs the code through the compiler's parser, -+ # not just through cpp. "Syntax error" is here to catch this case. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+@%:@ifdef __STDC__ -+@%:@ include -+@%:@else -+@%:@ include -+@%:@endif -+ Syntax error -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ : -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ # Broken: fails on valid input. -+continue -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+ -+ # OK, works on sane cases. Now check whether nonexistent headers -+ # can be detected and how. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+@%:@include -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ # Broken: success on invalid input. -+continue -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ # Passes both tests. -+ac_preproc_ok=: -+break -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+ -+done -+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -+rm -f conftest.err conftest.$ac_ext -+if $ac_preproc_ok; then -+ break -+fi -+ -+ done -+ ac_cv_prog_CPP=$CPP -+ -+fi -+ CPP=$ac_cv_prog_CPP -+else -+ ac_cv_prog_CPP=$CPP -+fi -+{ echo "$as_me:$LINENO: result: $CPP" >&5 -+echo "${ECHO_T}$CPP" >&6; } -+ac_preproc_ok=false -+for ac_c_preproc_warn_flag in '' yes -+do -+ # Use a header file that comes with gcc, so configuring glibc -+ # with a fresh cross-compiler works. -+ # Prefer to if __STDC__ is defined, since -+ # exists even on freestanding compilers. -+ # On the NeXT, cc -E runs the code through the compiler's parser, -+ # not just through cpp. "Syntax error" is here to catch this case. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+@%:@ifdef __STDC__ -+@%:@ include -+@%:@else -+@%:@ include -+@%:@endif -+ Syntax error -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ : -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ # Broken: fails on valid input. -+continue -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+ -+ # OK, works on sane cases. Now check whether nonexistent headers -+ # can be detected and how. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+@%:@include -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ # Broken: success on invalid input. -+continue -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ # Passes both tests. -+ac_preproc_ok=: -+break -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+ -+done -+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -+rm -f conftest.err conftest.$ac_ext -+if $ac_preproc_ok; then -+ : -+else -+ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -+See \`config.log' for more details." >&5 -+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } -+fi -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ -+{ echo "$as_me:$LINENO: checking for inline" >&5 -+echo $ECHO_N "checking for inline... $ECHO_C" >&6; } -+if test "${ac_cv_c_inline+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_cv_c_inline=no -+for ac_kw in inline __inline__ __inline; do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#ifndef __cplusplus -+typedef int foo_t; -+static $ac_kw foo_t static_foo () {return 0; } -+$ac_kw foo_t foo () {return 0; } -+#endif -+ -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_c_inline=$ac_kw -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ test "$ac_cv_c_inline" != no && break -+done -+ -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 -+echo "${ECHO_T}$ac_cv_c_inline" >&6; } -+ -+ -+case $ac_cv_c_inline in -+ inline | yes) ;; -+ *) -+ case $ac_cv_c_inline in -+ no) ac_val=;; -+ *) ac_val=$ac_cv_c_inline;; -+ esac -+ cat >>confdefs.h <<_ACEOF -+#ifndef __cplusplus -+#define inline $ac_val -+#endif -+_ACEOF -+ ;; -+esac -+ -+ -+ac_ext=cpp -+ac_cpp='$CXXCPP $CPPFLAGS' -+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -+if test -z "$CXX"; then -+ if test -n "$CCC"; then -+ CXX=$CCC -+ else -+ if test -n "$ac_tool_prefix"; then -+ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC -+ do -+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -+set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_CXX+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$CXX"; then -+ ac_cv_prog_CXX="$CXX" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+CXX=$ac_cv_prog_CXX -+if test -n "$CXX"; then -+ { echo "$as_me:$LINENO: result: $CXX" >&5 -+echo "${ECHO_T}$CXX" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+ test -n "$CXX" && break -+ done -+fi -+if test -z "$CXX"; then -+ ac_ct_CXX=$CXX -+ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC -+do -+ # Extract the first word of "$ac_prog", so it can be a program name with args. -+set dummy $ac_prog; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$ac_ct_CXX"; then -+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_CXX="$ac_prog" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -+if test -n "$ac_ct_CXX"; then -+ { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 -+echo "${ECHO_T}$ac_ct_CXX" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+ test -n "$ac_ct_CXX" && break -+done -+ -+ if test "x$ac_ct_CXX" = x; then -+ CXX="g++" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -+whose name does not start with the host triplet. If you think this -+configuration is useful to you, please write to autoconf@gnu.org." >&5 -+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -+whose name does not start with the host triplet. If you think this -+configuration is useful to you, please write to autoconf@gnu.org." >&2;} -+ac_tool_warned=yes ;; -+esac -+ CXX=$ac_ct_CXX -+ fi -+fi -+ -+ fi -+fi -+# Provide some information about the compiler. -+echo "$as_me:$LINENO: checking for C++ compiler version" >&5 -+ac_compiler=`set X $ac_compile; echo $2` -+{ (ac_try="$ac_compiler --version >&5" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compiler --version >&5") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+{ (ac_try="$ac_compiler -v >&5" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compiler -v >&5") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+{ (ac_try="$ac_compiler -V >&5" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compiler -V >&5") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+ -+{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 -+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } -+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+#ifndef __GNUC__ -+ choke me + /** + * ktime_set - Set a ktime_t variable from a seconds/nanoseconds value + * @secs: seconds to set +@@ -82,32 +88,37 @@ + { + #if (BITS_PER_LONG == 64) + if (unlikely(secs >= KTIME_SEC_MAX)) +- return (ktime_t){ .tv64 = KTIME_MAX }; ++ return KTIME_TV64(KTIME_MAX); + #endif +- return (ktime_t) { .tv64 = (s64)secs * NSEC_PER_SEC + (s64)nsecs }; ++ return KTIME_TV64((s64)secs * NSEC_PER_SEC + (s64)nsecs); + } + + /* Subtract two ktime_t variables. rem = lhs -rhs: */ + #define ktime_sub(lhs, rhs) \ +- ({ (ktime_t){ .tv64 = (lhs).tv64 - (rhs).tv64 }; }) ++ KTIME_TV64((lhs).tv64 - (rhs).tv64) + + /* Add two ktime_t variables. res = lhs + rhs: */ + #define ktime_add(lhs, rhs) \ +- ({ (ktime_t){ .tv64 = (lhs).tv64 + (rhs).tv64 }; }) ++ KTIME_TV64((lhs).tv64 + (rhs).tv64) + + /* + * Add a ktime_t variable and a scalar nanosecond value. + * res = kt + nsval: + */ + #define ktime_add_ns(kt, nsval) \ +- ({ (ktime_t){ .tv64 = (kt).tv64 + (nsval) }; }) ++ KTIME_TV64((kt).tv64 + (nsval)) + + /* + * Subtract a scalar nanosecod from a ktime_t variable + * res = kt - nsval: + */ ++#ifdef __cplusplus ++#define ktime_sub_ns(kt, nsval) \ ++ ({ktime_t duh; duh.tv64 = (kt).tv64 - (nsval); duh; }) ++#else + #define ktime_sub_ns(kt, nsval) \ + ({ (ktime_t){ .tv64 = (kt).tv64 - (nsval) }; }) +#endif -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_compiler_gnu=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_compiler_gnu=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu -+ -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 -+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } -+GXX=`test $ac_compiler_gnu = yes && echo yes` -+ac_test_CXXFLAGS=${CXXFLAGS+set} -+ac_save_CXXFLAGS=$CXXFLAGS -+{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 -+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } -+if test "${ac_cv_prog_cxx_g+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_save_cxx_werror_flag=$ac_cxx_werror_flag -+ ac_cxx_werror_flag=yes -+ ac_cv_prog_cxx_g=no -+ CXXFLAGS="-g" -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_prog_cxx_g=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ CXXFLAGS="" -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ : -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cxx_werror_flag=$ac_save_cxx_werror_flag -+ CXXFLAGS="-g" -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_prog_cxx_g=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ ac_cxx_werror_flag=$ac_save_cxx_werror_flag -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 -+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } -+if test "$ac_test_CXXFLAGS" = set; then -+ CXXFLAGS=$ac_save_CXXFLAGS -+elif test $ac_cv_prog_cxx_g = yes; then -+ if test "$GXX" = yes; then -+ CXXFLAGS="-g -O2" -+ else -+ CXXFLAGS="-g" -+ fi -+else -+ if test "$GXX" = yes; then -+ CXXFLAGS="-O2" -+ else -+ CXXFLAGS= -+ fi -+fi -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ -+ -+ -+ -+ if grep __cplusplus confdefs.h >/dev/null 2>&1; then -+ sed 's/#ifdef __cplusplus/#if defined(__cplusplus) \&\& !defined(__KERNEL__)/' < confdefs.h > confdefs.h~ -+ mv confdefs.h~ confdefs.h -+ fi -+ -+ if test -z "$GXX"; then -+ { echo "$as_me:$LINENO: WARNING: -+========================================= -+ -+Your C++ compiler ($CXX) is not a GNU C++ compiler! -+Either set the 'CXX' environment variable to tell me where -+a GNU C++ compiler is, or compile at your own risk. -+(This code uses a few GCC extensions and GCC-specific compiler options, -+and Linux header files are GCC-specific.) -+ -+=========================================" >&5 -+echo "$as_me: WARNING: -+========================================= -+ -+Your C++ compiler ($CXX) is not a GNU C++ compiler! -+Either set the 'CXX' environment variable to tell me where -+a GNU C++ compiler is, or compile at your own risk. -+(This code uses a few GCC extensions and GCC-specific compiler options, -+and Linux header files are GCC-specific.) -+ -+=========================================" >&2;} -+ fi -+ -+ ac_ext=cpp -+ac_cpp='$CXXCPP $CPPFLAGS' -+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -+ -+ if test -n "$GXX"; then -+ GXX_VERSION=`$CXX --version | head -n 1 | sed 's/^[^0-9]*\([0-9.]*\).*/\1/'` -+ GXX_MAJOR=`echo $GXX_VERSION | sed 's/\..*//'` -+ GXX_MINOR=`echo $GXX_VERSION | sed 's/^[^.]*\.\([^.]*\).*/\1/'` -+ -+ if test $GXX_MAJOR -lt 2 -o \( $GXX_MAJOR -eq 2 -a $GXX_MINOR -le 7 \); then -+ { { echo "$as_me:$LINENO: error: -+========================================= -+ -+Your GNU C++ compiler ($CXX) is too old! -+Either download a newer compiler, or tell me to use a different compiler -+by setting the 'CXX' environment variable and rerunning me. -+ -+=========================================" >&5 -+echo "$as_me: error: -+========================================= -+ -+Your GNU C++ compiler ($CXX) is too old! -+Either download a newer compiler, or tell me to use a different compiler -+by setting the 'CXX' environment variable and rerunning me. -+ -+=========================================" >&2;} -+ { (exit 1); exit 1; }; } -+ fi -+ fi -+ -+ -+ { echo "$as_me:$LINENO: checking whether works" >&5 -+echo $ECHO_N "checking whether works... $ECHO_C" >&6; } -+if test "${ac_cv_good_new_hdr+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+int -+main () -+{ -+ -+ int a; -+ int *b = new(&a) int; -+ return 0; -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ ac_cv_good_new_hdr=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_good_new_hdr=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_good_new_hdr" >&5 -+echo "${ECHO_T}$ac_cv_good_new_hdr" >&6; } -+ if test "$ac_cv_good_new_hdr" = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_NEW_HDR 1 -+_ACEOF -+ -+ else -+ { echo "$as_me:$LINENO: checking whether works" >&5 -+echo $ECHO_N "checking whether works... $ECHO_C" >&6; } -+if test "${ac_cv_good_new_h+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+int -+main () -+{ -+ -+ int a; -+ int *b = new(&a) int; -+ return 0; -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ ac_cv_good_new_h=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_good_new_h=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_good_new_h" >&5 -+echo "${ECHO_T}$ac_cv_good_new_h" >&6; } -+ if test "$ac_cv_good_new_h" = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_NEW_H 1 -+_ACEOF -+ -+ fi -+ fi -+ -+ -+ VTABLE_THUNKS= -+ test -n "$GXX" && test "$GXX_MAJOR" -lt 3 && VTABLE_THUNKS=-fvtable-thunks -+ -+ -+ CXX_WARNINGS= -+ test -z "$ac_user_cxx" -a -n "$GXX" -a -n "$ac_compile_with_warnings" && \ -+ CXX_WARNINGS='-W -Wall' -+ -+ ac_base_cxx="$CXX" -+ test -z "$ac_user_cxx" -a -n "$GXX" -a -n "$ac_compile_with_warnings" && \ -+ CXX="$CXX $CXX_WARNINGS $VTABLE_THUNKS" -+ -+ CXXFLAGS_NDEBUG=`echo "$CXXFLAGS" | sed 's/-g//'` -+ -+ -+ac_ext=cpp -+ac_cpp='$CXXCPP $CPPFLAGS' -+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -+{ echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 -+echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; } -+if test -z "$CXXCPP"; then -+ if test "${ac_cv_prog_CXXCPP+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ # Double quotes because CXXCPP needs to be expanded -+ for CXXCPP in "$CXX -E" "/lib/cpp" -+ do -+ ac_preproc_ok=false -+for ac_cxx_preproc_warn_flag in '' yes -+do -+ # Use a header file that comes with gcc, so configuring glibc -+ # with a fresh cross-compiler works. -+ # Prefer to if __STDC__ is defined, since -+ # exists even on freestanding compilers. -+ # On the NeXT, cc -E runs the code through the compiler's parser, -+ # not just through cpp. "Syntax error" is here to catch this case. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+@%:@ifdef __STDC__ -+@%:@ include -+@%:@else -+@%:@ include -+@%:@endif -+ Syntax error -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ : -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ # Broken: fails on valid input. -+continue -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+ -+ # OK, works on sane cases. Now check whether nonexistent headers -+ # can be detected and how. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+@%:@include -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ # Broken: success on invalid input. -+continue -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ # Passes both tests. -+ac_preproc_ok=: -+break -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+ -+done -+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -+rm -f conftest.err conftest.$ac_ext -+if $ac_preproc_ok; then -+ break -+fi -+ -+ done -+ ac_cv_prog_CXXCPP=$CXXCPP -+ -+fi -+ CXXCPP=$ac_cv_prog_CXXCPP -+else -+ ac_cv_prog_CXXCPP=$CXXCPP -+fi -+{ echo "$as_me:$LINENO: result: $CXXCPP" >&5 -+echo "${ECHO_T}$CXXCPP" >&6; } -+ac_preproc_ok=false -+for ac_cxx_preproc_warn_flag in '' yes -+do -+ # Use a header file that comes with gcc, so configuring glibc -+ # with a fresh cross-compiler works. -+ # Prefer to if __STDC__ is defined, since -+ # exists even on freestanding compilers. -+ # On the NeXT, cc -E runs the code through the compiler's parser, -+ # not just through cpp. "Syntax error" is here to catch this case. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+@%:@ifdef __STDC__ -+@%:@ include -+@%:@else -+@%:@ include -+@%:@endif -+ Syntax error -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ : -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ # Broken: fails on valid input. -+continue -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+ -+ # OK, works on sane cases. Now check whether nonexistent headers -+ # can be detected and how. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+@%:@include -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ # Broken: success on invalid input. -+continue -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ # Passes both tests. -+ac_preproc_ok=: -+break -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+ -+done -+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -+rm -f conftest.err conftest.$ac_ext -+if $ac_preproc_ok; then -+ : -+else -+ { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check -+See \`config.log' for more details." >&5 -+echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } -+fi -+ -+ac_ext=cpp -+ac_cpp='$CXXCPP $CPPFLAGS' -+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -+ -+ -+ -+ -+ test -z "$ac_user_kernel_cc" && \ -+ KERNEL_CC="$ac_base_cc" -+ test -z "$ac_user_kernel_cc" -a -n "$GCC" -a -n "$ac_compile_with_warnings" && \ -+ KERNEL_CC="$ac_base_cc -w $CXX_WARNINGS" -+ -+ -+ -+ -+ test -z "$ac_user_kernel_cxx" && \ -+ KERNEL_CXX="$ac_base_cxx" -+ test -z "$ac_user_kernel_cxx" -a -n "$GXX" -a -n "$ac_compile_with_warnings" && \ -+ KERNEL_CXX="$ac_base_cxx -w $CXX_WARNINGS -fno-exceptions -fno-rtti $VTABLE_THUNKS" -+ -+ -+ -+ac_preset_ar="$AR" -+if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. -+set dummy ${ac_tool_prefix}ar; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_AR+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$AR"; then -+ ac_cv_prog_AR="$AR" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_AR="${ac_tool_prefix}ar" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+AR=$ac_cv_prog_AR -+if test -n "$AR"; then -+ { echo "$as_me:$LINENO: result: $AR" >&5 -+echo "${ECHO_T}$AR" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+fi -+if test -z "$ac_cv_prog_AR"; then -+ ac_ct_AR=$AR -+ # Extract the first word of "ar", so it can be a program name with args. -+set dummy ar; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$ac_ct_AR"; then -+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_AR="ar" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_AR=$ac_cv_prog_ac_ct_AR -+if test -n "$ac_ct_AR"; then -+ { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 -+echo "${ECHO_T}$ac_ct_AR" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ if test "x$ac_ct_AR" = x; then -+ AR="" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -+whose name does not start with the host triplet. If you think this -+configuration is useful to you, please write to autoconf@gnu.org." >&5 -+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -+whose name does not start with the host triplet. If you think this -+configuration is useful to you, please write to autoconf@gnu.org." >&2;} -+ac_tool_warned=yes ;; -+esac -+ AR=$ac_ct_AR -+ fi -+else -+ AR="$ac_cv_prog_AR" -+fi -+ -+if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args. -+set dummy ${ac_tool_prefix}ld; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_LD+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$LD"; then -+ ac_cv_prog_LD="$LD" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_LD="${ac_tool_prefix}ld" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+LD=$ac_cv_prog_LD -+if test -n "$LD"; then -+ { echo "$as_me:$LINENO: result: $LD" >&5 -+echo "${ECHO_T}$LD" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+fi -+if test -z "$ac_cv_prog_LD"; then -+ ac_ct_LD=$LD -+ # Extract the first word of "ld", so it can be a program name with args. -+set dummy ld; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_ac_ct_LD+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$ac_ct_LD"; then -+ ac_cv_prog_ac_ct_LD="$ac_ct_LD" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_LD="ld" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_LD=$ac_cv_prog_ac_ct_LD -+if test -n "$ac_ct_LD"; then -+ { echo "$as_me:$LINENO: result: $ac_ct_LD" >&5 -+echo "${ECHO_T}$ac_ct_LD" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ if test "x$ac_ct_LD" = x; then -+ LD="" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -+whose name does not start with the host triplet. If you think this -+configuration is useful to you, please write to autoconf@gnu.org." >&5 -+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -+whose name does not start with the host triplet. If you think this -+configuration is useful to you, please write to autoconf@gnu.org." >&2;} -+ac_tool_warned=yes ;; -+esac -+ LD=$ac_ct_LD -+ fi -+else -+ LD="$ac_cv_prog_LD" -+fi -+ -+if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -+set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_RANLIB+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$RANLIB"; then -+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+RANLIB=$ac_cv_prog_RANLIB -+if test -n "$RANLIB"; then -+ { echo "$as_me:$LINENO: result: $RANLIB" >&5 -+echo "${ECHO_T}$RANLIB" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+fi -+if test -z "$ac_cv_prog_RANLIB"; then -+ ac_ct_RANLIB=$RANLIB -+ # Extract the first word of "ranlib", so it can be a program name with args. -+set dummy ranlib; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$ac_ct_RANLIB"; then -+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_RANLIB="ranlib" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -+if test -n "$ac_ct_RANLIB"; then -+ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -+echo "${ECHO_T}$ac_ct_RANLIB" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ if test "x$ac_ct_RANLIB" = x; then -+ RANLIB=":" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -+whose name does not start with the host triplet. If you think this -+configuration is useful to you, please write to autoconf@gnu.org." >&5 -+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -+whose name does not start with the host triplet. If you think this -+configuration is useful to you, please write to autoconf@gnu.org." >&2;} -+ac_tool_warned=yes ;; -+esac -+ RANLIB=$ac_ct_RANLIB -+ fi -+else -+ RANLIB="$ac_cv_prog_RANLIB" -+fi -+ -+if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -+set dummy ${ac_tool_prefix}strip; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_STRIP+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$STRIP"; then -+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_STRIP="${ac_tool_prefix}strip" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+STRIP=$ac_cv_prog_STRIP -+if test -n "$STRIP"; then -+ { echo "$as_me:$LINENO: result: $STRIP" >&5 -+echo "${ECHO_T}$STRIP" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+fi -+if test -z "$ac_cv_prog_STRIP"; then -+ ac_ct_STRIP=$STRIP -+ # Extract the first word of "strip", so it can be a program name with args. -+set dummy strip; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$ac_ct_STRIP"; then -+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_STRIP="strip" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -+if test -n "$ac_ct_STRIP"; then -+ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -+echo "${ECHO_T}$ac_ct_STRIP" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ if test "x$ac_ct_STRIP" = x; then -+ STRIP=":" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -+whose name does not start with the host triplet. If you think this -+configuration is useful to you, please write to autoconf@gnu.org." >&5 -+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -+whose name does not start with the host triplet. If you think this -+configuration is useful to you, please write to autoconf@gnu.org." >&2;} -+ac_tool_warned=yes ;; -+esac -+ STRIP=$ac_ct_STRIP -+ fi -+else -+ STRIP="$ac_cv_prog_STRIP" -+fi -+ -+ -+conf_auxdir='$(top_srcdir)' -+ -+ -+test -z "$AR_CREATEFLAGS" && AR_CREATEFLAGS=cru -+ -+ -+ -+ -+ -+# Check whether --enable-userlevel was given. -+if test "${enable_userlevel+set}" = set; then -+ enableval=$enable_userlevel; : -+else -+ enable_userlevel=yes -+fi -+ -+ -+# Check whether --enable-user-multithread was given. -+if test "${enable_user_multithread+set}" = set; then -+ enableval=$enable_user_multithread; : -+else -+ enable_user_multithread=no -+fi -+ -+if test "x$enable_user_multithread" = xyes; then -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_USER_MULTITHREAD 1 -+_ACEOF -+ -+fi -+ -+ -+ -+# Check whether --enable-linuxmodule was given. -+if test "${enable_linuxmodule+set}" = set; then -+ enableval=$enable_linuxmodule; : -+else -+ enable_linuxmodule=yes; enable_linuxmodule_default=yes -+fi -+ -+ -+# Check whether --enable-multithread was given. -+if test "${enable_multithread+set}" = set; then -+ enableval=$enable_multithread; : -+else -+ enable_multithread=no -+fi -+ -+ -+test "$enable_multithread" = yes && enable_multithread=4 -+test "$enable_multithread" = no && enable_multithread=1 -+if test "$enable_multithread" -gt 1; then -+ cat >>confdefs.h <<_ACEOF -+@%:@define NUM_CLICK_CPUS $enable_multithread -+_ACEOF -+ -+ cat >>confdefs.h <<_ACEOF -+@%:@define __MTCLICK__ 1 -+_ACEOF -+ -+ saveflags="$CPPFLAGS" -+ CPPFLAGS="$saveflags -D__MTCLICK__" -+else -+ cat >>confdefs.h <<_ACEOF -+@%:@define NUM_CLICK_CPUS 1 -+_ACEOF -+ -+fi -+ -+# Check whether --enable-warp9 was given. -+if test "${enable_warp9+set}" = set; then -+ enableval=$enable_warp9; : -+else -+ enable_warp9=no -+fi -+ -+if test "x$enable_warp9" = xyes; then -+ cat >>confdefs.h <<\_ACEOF -+@%:@define CLICK_WARP9 1 -+_ACEOF -+ -+fi -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_CLICKFS 1 -+_ACEOF -+ -+ -+# Check whether --enable-kassert was given. -+if test "${enable_kassert+set}" = set; then -+ enableval=$enable_kassert; : -+else -+ enable_kassert=no -+fi -+ -+if test $enable_kassert = yes; then -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_KERNEL_ASSERT 1 -+_ACEOF -+ -+fi -+ -+# Check whether --enable-adaptive was given. -+if test "${enable_adaptive+set}" = set; then -+ enableval=$enable_adaptive; : -+else -+ enable_adaptive=no -+fi -+ -+if test "x$enable_adaptive" = xyes; then -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_ADAPTIVE_SCHEDULER 1 -+_ACEOF -+ -+fi -+ -+ -+ -+ -+# Check whether --enable-bsdmodule was given. -+if test "${enable_bsdmodule+set}" = set; then -+ enableval=$enable_bsdmodule; : -+else -+ enable_bsdmodule=no -+fi -+ -+ -+ -+# Check whether --enable-nsclick was given. -+if test "${enable_nsclick+set}" = set; then -+ enableval=$enable_nsclick; : -+else -+ enable_nsclick=no -+fi -+ -+ -+ -+ -+ -+# Check whether --with-linux was given. -+if test "${with_linux+set}" = set; then -+ withval=$with_linux; linuxdir=$withval -+else -+ linuxdir=NONE -+fi -+ -+test -z "$linuxdir" -o "$linuxdir" = yes && linuxdir=yes -+ -+ -+# Check whether --with-linux-map was given. -+if test "${with_linux_map+set}" = set; then -+ withval=$with_linux_map; linux_system_map=$withval; if test -z "$withval" -o "$withval" = yes; then linux_system_map=NONE; fi -+else -+ linux_system_map=NONE -+fi -+ -+ -+linux_system_map_boot=no -+ -+if test "x$linuxdir" = xNONE -o "x$linuxdir" = xyes; then -+ if uname -r 2>/dev/null | grep '^2\.6' >/dev/null 2>&1; then -+ linuxdir=/lib/modules/"`uname -r`"/build -+ linux_system_map_boot="`uname -r`" -+ else -+ linuxdir=/usr/src/linux -+ fi -+ if test ! -d "$linuxdir" -a "x$enable_linuxmodule" = xyes; then -+ if test "x$enable_linuxmodule_default" = xyes; then -+ linuxdir=NONE; enable_linuxmodule=no -+ else -+ { { echo "$as_me:$LINENO: error: -+========================================= -+ -+Can't find $linuxdir, so I can't compile the linuxmodule driver! -+(You may need the --with-linux=DIR option.) -+ -+=========================================" >&5 -+echo "$as_me: error: -+========================================= -+ -+Can't find $linuxdir, so I can't compile the linuxmodule driver! -+(You may need the --with-linux=DIR option.) -+ -+=========================================" >&2;} -+ { (exit 1); exit 1; }; } -+ fi -+ fi -+fi -+ -+if test "x$linuxdir" = xNONE -o "x$linuxdir" = xno -o "x$enable_linuxmodule" != xyes; then -+ ac_have_linux_kernel=n -+ linuxdir=NONE -+elif expr "_$linuxdir" : '_[^/\\]' >/dev/null; then -+ { { echo "$as_me:$LINENO: error: -+========================================= -+ -+The --with-linux directory $linuxdir is relative. -+You must supply an absolute path starting with /. -+ -+=========================================" >&5 -+echo "$as_me: error: -+========================================= -+ -+The --with-linux directory $linuxdir is relative. -+You must supply an absolute path starting with /. -+ -+=========================================" >&2;} -+ { (exit 1); exit 1; }; } -+elif test -r $linuxdir/include/linux/skbuff.h; then -+ ac_have_linux_kernel=y -+else -+ { { echo "$as_me:$LINENO: error: -+========================================= -+ -+Can't find $linuxdir/include/linux/skbuff.h. -+Are you sure $linuxdir contains Linux kernel source? -+ -+=========================================" >&5 -+echo "$as_me: error: -+========================================= -+ -+Can't find $linuxdir/include/linux/skbuff.h. -+Are you sure $linuxdir contains Linux kernel source? -+ -+=========================================" >&2;} -+ { (exit 1); exit 1; }; } -+fi -+ -+cat >>confdefs.h <<_ACEOF -+@%:@define LINUX_SRCDIR "${linuxdir}" -+_ACEOF -+ -+ -+ -+ -+ -+# Check whether --enable-all-elements was given. -+if test "${enable_all_elements+set}" = set; then -+ enableval=$enable_all_elements; -+fi -+ -+ -+element_groups="" -+ -+ -+ -+# Check whether --enable-analysis was given. -+if test "${enable_analysis+set}" = set; then -+ enableval=$enable_analysis; -+else -+ enable_analysis=NO -+fi -+test "x$enable_all_elements" = xyes -a "x$enable_analysis" = xNO && enable_analysis=yes -+if test "x$enable_analysis" = xyes; then -+ : -+ -+fi -+# Check whether --enable-app was given. -+if test "${enable_app+set}" = set; then -+ enableval=$enable_app; -+else -+ enable_app=yes -+fi -+test "x$enable_all_elements" = xyes -a "x$enable_app" = xNO && enable_app=yes -+if test "x$enable_app" = xyes; then -+ : -+ -+fi -+# Check whether --enable-aqm was given. -+if test "${enable_aqm+set}" = set; then -+ enableval=$enable_aqm; -+else -+ enable_aqm=yes -+fi -+test "x$enable_all_elements" = xyes -a "x$enable_aqm" = xNO && enable_aqm=yes -+if test "x$enable_aqm" = xyes; then -+ : -+ -+fi -+# Check whether --enable-ethernet was given. -+if test "${enable_ethernet+set}" = set; then -+ enableval=$enable_ethernet; -+else -+ enable_ethernet=yes -+fi -+test "x$enable_all_elements" = xyes -a "x$enable_ethernet" = xNO && enable_ethernet=yes -+if test "x$enable_ethernet" = xyes; then -+ : -+ -+fi -+# Check whether --enable-etherswitch was given. -+if test "${enable_etherswitch+set}" = set; then -+ enableval=$enable_etherswitch; -+else -+ enable_etherswitch=NO -+fi -+test "x$enable_all_elements" = xyes -a "x$enable_etherswitch" = xNO && enable_etherswitch=yes -+if test "x$enable_etherswitch" = xyes; then -+ : -+ -+fi -+# Check whether --enable-grid was given. -+if test "${enable_grid+set}" = set; then -+ enableval=$enable_grid; -+else -+ enable_grid=NO -+fi -+test "x$enable_all_elements" = xyes -a "x$enable_grid" = xNO && enable_grid=yes -+if test "x$enable_grid" = xyes; then -+ : -+ -+fi -+# Check whether --enable-icmp was given. -+if test "${enable_icmp+set}" = set; then -+ enableval=$enable_icmp; -+else -+ enable_icmp=yes -+fi -+test "x$enable_all_elements" = xyes -a "x$enable_icmp" = xNO && enable_icmp=yes -+if test "x$enable_icmp" = xyes; then -+ : -+ -+fi -+# Check whether --enable-ip was given. -+if test "${enable_ip+set}" = set; then -+ enableval=$enable_ip; -+else -+ enable_ip=yes -+fi -+test "x$enable_all_elements" = xyes -a "x$enable_ip" = xNO && enable_ip=yes -+if test "x$enable_ip" = xyes; then -+ : -+ -+fi -+# Check whether --enable-ip6 was given. -+if test "${enable_ip6+set}" = set; then -+ enableval=$enable_ip6; -+else -+ enable_ip6=NO -+fi -+test "x$enable_all_elements" = xyes -a "x$enable_ip6" = xNO && enable_ip6=yes -+if test "x$enable_ip6" = xyes; then -+ : -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_IP6 1 -+_ACEOF -+ -+fi -+# Check whether --enable-ipsec was given. -+if test "${enable_ipsec+set}" = set; then -+ enableval=$enable_ipsec; -+else -+ enable_ipsec=NO -+fi -+test "x$enable_all_elements" = xyes -a "x$enable_ipsec" = xNO && enable_ipsec=yes -+if test "x$enable_ipsec" = xyes; then -+ : -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_IPSEC 1 -+_ACEOF -+ -+fi -+# Check whether --enable-local was given. -+if test "${enable_local+set}" = set; then -+ enableval=$enable_local; -+else -+ enable_local=NO -+fi -+test "x$enable_all_elements" = xyes -a "x$enable_local" = xNO && enable_local=yes -+if test "x$enable_local" = xyes; then -+ : -+ -+fi -+# Check whether --enable-radio was given. -+if test "${enable_radio+set}" = set; then -+ enableval=$enable_radio; -+else -+ enable_radio=NO -+fi -+test "x$enable_all_elements" = xyes -a "x$enable_radio" = xNO && enable_radio=yes -+if test "x$enable_radio" = xyes; then -+ : -+ -+fi -+# Check whether --enable-simple was given. -+if test "${enable_simple+set}" = set; then -+ enableval=$enable_simple; -+else -+ enable_simple=NO -+fi -+test "x$enable_all_elements" = xyes -a "x$enable_simple" = xNO && enable_simple=yes -+if test "x$enable_simple" = xyes; then -+ : -+ -+fi -+# Check whether --enable-standard was given. -+if test "${enable_standard+set}" = set; then -+ enableval=$enable_standard; -+else -+ enable_standard=yes -+fi -+test "x$enable_all_elements" = xyes -a "x$enable_standard" = xNO && enable_standard=yes -+if test "x$enable_standard" = xyes; then -+ : -+ -+fi -+# Check whether --enable-tcpudp was given. -+if test "${enable_tcpudp+set}" = set; then -+ enableval=$enable_tcpudp; -+else -+ enable_tcpudp=yes -+fi -+test "x$enable_all_elements" = xyes -a "x$enable_tcpudp" = xNO && enable_tcpudp=yes -+if test "x$enable_tcpudp" = xyes; then -+ : -+ -+fi -+# Check whether --enable-test was given. -+if test "${enable_test+set}" = set; then -+ enableval=$enable_test; -+else -+ enable_test=NO -+fi -+test "x$enable_all_elements" = xyes -a "x$enable_test" = xNO && enable_test=yes -+if test "x$enable_test" = xyes; then -+ : -+ -+fi -+# Check whether --enable-wifi was given. -+if test "${enable_wifi+set}" = set; then -+ enableval=$enable_wifi; -+else -+ enable_wifi=NO -+fi -+test "x$enable_all_elements" = xyes -a "x$enable_wifi" = xNO && enable_wifi=yes -+if test "x$enable_wifi" = xyes; then -+ : -+ -+fi -+# Check whether --enable-experimental was given. -+if test "${enable_experimental+set}" = set; then -+ enableval=$enable_experimental; : -+else -+ enable_experimental=no -+fi -+ -+ -+for i in `(cd $srcdir/elements; ls | sed '/^CVS$/d;/^bsdmodule$/d;/^exopc$/d;/^linuxmodule$/d;/^ns$/d;/^userlevel$/d')`; do -+ enableval=`eval 'echo $'"enable_$i"` -+ test "x$enable_all_elements" = xyes -a "x$enableval" '!=' 'no' && enableval=yes -+ test -d "$srcdir/elements/$i" -a "$enableval" = "yes" && element_groups="$element_groups $i" -+done -+ -+ -+ -+ -+ -+# Check whether --with-freebsd was given. -+if test "${with_freebsd+set}" = set; then -+ withval=$with_freebsd; freebsddir=$withval; if test -z "$withval" -o "$withval" = yes; then freebsddir=/usr/src/sys,/usr/include; fi -+else -+ freebsddir=NONE -+fi -+ -+ -+if test "x$freebsddir" = xNONE; then -+ if test -d /usr/src/sys -a -d /usr/include; then -+ freebsddir=/usr/src/sys,/usr/include -+ elif test "x$enable_bsdmodule" = xyes; then -+ { echo "$as_me:$LINENO: WARNING: -+========================================= -+ -+Can't find /usr/src/sys and/or /usr/include, so I'm not compiling -+the bsdmodule driver. (You may need the --with-freebsd=DIR option.) -+ -+=========================================" >&5 -+echo "$as_me: WARNING: -+========================================= -+ -+Can't find /usr/src/sys and/or /usr/include, so I'm not compiling -+the bsdmodule driver. (You may need the --with-freebsd=DIR option.) -+ -+=========================================" >&2;} -+ fi -+fi -+ -+freebsd_srcdir=`echo "$freebsddir," | sed -e 's/,.*//'` -+freebsd_includedir=`echo "$freebsddir,/usr/include," | sed -e 's/^[^,]*,\([^,]*\),.*$/\1/'` -+ -+if test "x$freebsddir" = xNONE -o "x$freebsddir" = xno -o "x$enable_bsdmodule" != xyes; then -+ ac_have_bsd_kernel=n -+ freebsddir=NONE -+elif expr '(' "_$freebsd_includedir" : '_[^/\\]' ')' '|' '(' "_$freebsd_srcdir" : '_[^/\\]' ')'; then -+ { { echo "$as_me:$LINENO: error: -+========================================= -+ -+The --with-freebsd directories $freebsd_srcdir,$freebsd_includedir -+are relative. You must supply absolute paths starting with /. -+ -+=========================================" >&5 -+echo "$as_me: error: -+========================================= -+ -+The --with-freebsd directories $freebsd_srcdir,$freebsd_includedir -+are relative. You must supply absolute paths starting with /. -+ -+=========================================" >&2;} -+ { (exit 1); exit 1; }; } -+elif test -r $freebsd_includedir/net/if_var.h -a -r $freebsd_srcdir/kern/vnode_if.src; then -+ ac_have_bsd_kernel=y -+else -+ { { echo "$as_me:$LINENO: error: -+========================================= -+ -+Can't find $freebsd_includedir/net/if_var.h and/or -+$freebsd_srcdir/kern/vnode_if.src. Are you sure $freebsd_srcdir -+and $freebsd_includedir contain FreeBSD kernel source? -+ -+=========================================" >&5 -+echo "$as_me: error: -+========================================= -+ -+Can't find $freebsd_includedir/net/if_var.h and/or -+$freebsd_srcdir/kern/vnode_if.src. Are you sure $freebsd_srcdir -+and $freebsd_includedir contain FreeBSD kernel source? -+ -+=========================================" >&2;} -+ { (exit 1); exit 1; }; } -+fi -+ -+ -+ -+cat >>confdefs.h <<_ACEOF -+@%:@define FREEBSD_INCLUDEDIR "${freebsd_includedir}" -+_ACEOF -+ -+ -+ -+ -+{ echo "$as_me:$LINENO: checking whether we are compiling for Linux" >&5 -+echo $ECHO_N "checking whether we are compiling for Linux... $ECHO_C" >&6; } -+if test "${ac_cv_under_linux+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+#ifndef __linux__ -+#error "fuckers! fuckers!" -+#endif -+return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_under_linux=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_under_linux=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_under_linux" >&5 -+echo "${ECHO_T}$ac_cv_under_linux" >&6; } -+ -+ -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ -+for ac_func in strerror -+do -+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -+{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+/* Define $ac_func to an innocuous variant, in case declares $ac_func. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define $ac_func innocuous_$ac_func -+ -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char $ac_func (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ -+ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ -+#undef $ac_func -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char $ac_func (); -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined __stub_$ac_func || defined __stub___$ac_func -+choke me -+#endif -+ -+int -+main () -+{ -+return $ac_func (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ eval "$as_ac_var=yes" -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ eval "$as_ac_var=no" -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+ac_res=`eval echo '${'$as_ac_var'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+if test `eval echo '${'$as_ac_var'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF -+ -+else -+ case " $LIB@&t@OBJS " in -+ *" $ac_func.$ac_objext "* ) ;; -+ *) LIB@&t@OBJS="$LIB@&t@OBJS $ac_func.$ac_objext" -+ ;; -+esac -+ -+fi -+done -+ -+ -+ -+ -+ -+ -+for ac_func in snprintf strtoul tcgetpgrp vsnprintf -+do -+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -+{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+/* Define $ac_func to an innocuous variant, in case declares $ac_func. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define $ac_func innocuous_$ac_func -+ -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char $ac_func (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ -+ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ -+#undef $ac_func -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ + + /* convert a timespec to ktime_t format: */ + static inline ktime_t timespec_to_ktime(struct timespec ts) +@@ -132,6 +143,18 @@ + + #else + +#ifdef __cplusplus -+extern "C" -+#endif -+char $ac_func (); -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined __stub_$ac_func || defined __stub___$ac_func -+choke me -+#endif -+ -+int -+main () -+{ -+return $ac_func (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ eval "$as_ac_var=yes" -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ eval "$as_ac_var=no" -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+ac_res=`eval echo '${'$as_ac_var'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+if test `eval echo '${'$as_ac_var'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF -+ -+fi -+done -+ -+ac_ext=cpp -+ac_cpp='$CXXCPP $CPPFLAGS' -+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -+ -+ -+ -+ -+# Check whether --enable-int64 was given. -+if test "${enable_int64+set}" = set; then -+ enableval=$enable_int64; : -+else -+ enable_int64=yes -+fi -+ -+ -+ -+{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 -+echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } -+if test "${ac_cv_path_GREP+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ # Extract the first word of "grep ggrep" to use in msg output -+if test -z "$GREP"; then -+set dummy grep ggrep; ac_prog_name=$2 -+if test "${ac_cv_path_GREP+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_path_GREP_found=false -+# Loop through the user's path and test for each of PROGNAME-LIST -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_prog in grep ggrep; do -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" -+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue -+ # Check for GNU ac_path_GREP and select it if it is found. -+ # Check for GNU $ac_path_GREP -+case `"$ac_path_GREP" --version 2>&1` in -+*GNU*) -+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -+*) -+ ac_count=0 -+ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" -+ while : -+ do -+ cat "conftest.in" "conftest.in" >"conftest.tmp" -+ mv "conftest.tmp" "conftest.in" -+ cp "conftest.in" "conftest.nl" -+ echo 'GREP' >> "conftest.nl" -+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break -+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break -+ ac_count=`expr $ac_count + 1` -+ if test $ac_count -gt ${ac_path_GREP_max-0}; then -+ # Best one so far, save it but keep looking for a better one -+ ac_cv_path_GREP="$ac_path_GREP" -+ ac_path_GREP_max=$ac_count -+ fi -+ # 10*(2^10) chars as input seems more than enough -+ test $ac_count -gt 10 && break -+ done -+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -+esac -+ -+ -+ $ac_path_GREP_found && break 3 -+ done -+done -+ -+done -+IFS=$as_save_IFS -+ -+ -+fi -+ -+GREP="$ac_cv_path_GREP" -+if test -z "$GREP"; then -+ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -+echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} -+ { (exit 1); exit 1; }; } -+fi -+ -+else -+ ac_cv_path_GREP=$GREP -+fi -+ -+ -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 -+echo "${ECHO_T}$ac_cv_path_GREP" >&6; } -+ GREP="$ac_cv_path_GREP" -+ -+ -+{ echo "$as_me:$LINENO: checking for egrep" >&5 -+echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } -+if test "${ac_cv_path_EGREP+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 -+ then ac_cv_path_EGREP="$GREP -E" -+ else -+ # Extract the first word of "egrep" to use in msg output -+if test -z "$EGREP"; then -+set dummy egrep; ac_prog_name=$2 -+if test "${ac_cv_path_EGREP+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_path_EGREP_found=false -+# Loop through the user's path and test for each of PROGNAME-LIST -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_prog in egrep; do -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" -+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue -+ # Check for GNU ac_path_EGREP and select it if it is found. -+ # Check for GNU $ac_path_EGREP -+case `"$ac_path_EGREP" --version 2>&1` in -+*GNU*) -+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -+*) -+ ac_count=0 -+ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" -+ while : -+ do -+ cat "conftest.in" "conftest.in" >"conftest.tmp" -+ mv "conftest.tmp" "conftest.in" -+ cp "conftest.in" "conftest.nl" -+ echo 'EGREP' >> "conftest.nl" -+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break -+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break -+ ac_count=`expr $ac_count + 1` -+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then -+ # Best one so far, save it but keep looking for a better one -+ ac_cv_path_EGREP="$ac_path_EGREP" -+ ac_path_EGREP_max=$ac_count -+ fi -+ # 10*(2^10) chars as input seems more than enough -+ test $ac_count -gt 10 && break -+ done -+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -+esac -+ -+ -+ $ac_path_EGREP_found && break 3 -+ done -+done -+ -+done -+IFS=$as_save_IFS -+ -+ -+fi -+ -+EGREP="$ac_cv_path_EGREP" -+if test -z "$EGREP"; then -+ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -+echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} -+ { (exit 1); exit 1; }; } -+fi -+ -+else -+ ac_cv_path_EGREP=$EGREP -+fi -+ -+ -+ fi -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 -+echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } -+ EGREP="$ac_cv_path_EGREP" -+ -+ -+{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } -+if test "${ac_cv_header_stdc+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+#include -+#include -+#include -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_header_stdc=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_header_stdc=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ -+if test $ac_cv_header_stdc = yes; then -+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+ -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "memchr" >/dev/null 2>&1; then -+ : -+else -+ ac_cv_header_stdc=no -+fi -+rm -f conftest* -+ -+fi -+ -+if test $ac_cv_header_stdc = yes; then -+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+ -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "free" >/dev/null 2>&1; then -+ : -+else -+ ac_cv_header_stdc=no -+fi -+rm -f conftest* -+ -+fi -+ -+if test $ac_cv_header_stdc = yes; then -+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. -+ if test "$cross_compiling" = yes; then -+ : -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+#include -+#if ((' ' & 0x0FF) == 0x020) -+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -+#else -+# define ISLOWER(c) \ -+ (('a' <= (c) && (c) <= 'i') \ -+ || ('j' <= (c) && (c) <= 'r') \ -+ || ('s' <= (c) && (c) <= 'z')) -+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -+#endif -+ -+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -+int -+main () -+{ -+ int i; -+ for (i = 0; i < 256; i++) -+ if (XOR (islower (i), ISLOWER (i)) -+ || toupper (i) != TOUPPER (i)) -+ return 2; -+ return 0; -+} -+_ACEOF -+rm -f conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -+ { (case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_try") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ : -+else -+ echo "$as_me: program exited with status $ac_status" >&5 -+echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+( exit $ac_status ) -+ac_cv_header_stdc=no -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+ -+ -+fi -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -+echo "${ECHO_T}$ac_cv_header_stdc" >&6; } -+if test $ac_cv_header_stdc = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define STDC_HEADERS 1 -+_ACEOF -+ -+fi -+ -+# On IRIX 5.3, sys/types and inttypes.h are conflicting. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ -+ inttypes.h stdint.h unistd.h -+do -+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -+{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ -+@%:@include <$ac_header> -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ eval "$as_ac_Header=yes" -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ eval "$as_ac_Header=no" -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+ac_res=`eval echo '${'$as_ac_Header'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+if test `eval echo '${'$as_ac_Header'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF -+ -+fi -+ -+done -+ -+ -+{ echo "$as_me:$LINENO: checking for int" >&5 -+echo $ECHO_N "checking for int... $ECHO_C" >&6; } -+if test "${ac_cv_type_int+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+typedef int ac__type_new_; -+int -+main () -+{ -+if ((ac__type_new_ *) 0) -+ return 0; -+if (sizeof (ac__type_new_)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_type_int=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_type_int=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 -+echo "${ECHO_T}$ac_cv_type_int" >&6; } -+ -+# The cast to long int works around a bug in the HP C Compiler -+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -+# This bug is HP SR number 8606223364. -+{ echo "$as_me:$LINENO: checking size of int" >&5 -+echo $ECHO_N "checking size of int... $ECHO_C" >&6; } -+if test "${ac_cv_sizeof_int+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test "$cross_compiling" = yes; then -+ # Depending upon the size, compute the lo and hi bounds. -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef int ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_lo=0 ac_mid=0 -+ while :; do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef int ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_hi=$ac_mid; break -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_lo=`expr $ac_mid + 1` -+ if test $ac_lo -le $ac_mid; then -+ ac_lo= ac_hi= -+ break -+ fi -+ ac_mid=`expr 2 '*' $ac_mid + 1` -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef int ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_hi=-1 ac_mid=-1 -+ while :; do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef int ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_lo=$ac_mid; break -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_hi=`expr '(' $ac_mid ')' - 1` -+ if test $ac_mid -le $ac_hi; then -+ ac_lo= ac_hi= -+ break -+ fi -+ ac_mid=`expr 2 '*' $ac_mid` -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_lo= ac_hi= -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+# Binary search between lo and hi bounds. -+while test "x$ac_lo" != "x$ac_hi"; do -+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef int ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_hi=$ac_mid -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_lo=`expr '(' $ac_mid ')' + 1` -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+done -+case $ac_lo in -+?*) ac_cv_sizeof_int=$ac_lo;; -+'') if test "$ac_cv_type_int" = yes; then -+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (int) -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (int) -+See \`config.log' for more details." >&2;} -+ { (exit 77); exit 77; }; } -+ else -+ ac_cv_sizeof_int=0 -+ fi ;; -+esac -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef int ac__type_sizeof_; -+static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } -+static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } -+@%:@include -+@%:@include -+int -+main () -+{ -+ -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ return 1; -+ if (((long int) (sizeof (ac__type_sizeof_))) < 0) -+ { -+ long int i = longval (); -+ if (i != ((long int) (sizeof (ac__type_sizeof_)))) -+ return 1; -+ fprintf (f, "%ld\n", i); -+ } -+ else -+ { -+ unsigned long int i = ulongval (); -+ if (i != ((long int) (sizeof (ac__type_sizeof_)))) -+ return 1; -+ fprintf (f, "%lu\n", i); -+ } -+ return ferror (f) || fclose (f) != 0; -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -+ { (case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_try") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_sizeof_int=`cat conftest.val` -+else -+ echo "$as_me: program exited with status $ac_status" >&5 -+echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+( exit $ac_status ) -+if test "$ac_cv_type_int" = yes; then -+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (int) -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (int) -+See \`config.log' for more details." >&2;} -+ { (exit 77); exit 77; }; } -+ else -+ ac_cv_sizeof_int=0 -+ fi -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+rm -f conftest.val -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 -+echo "${ECHO_T}$ac_cv_sizeof_int" >&6; } -+ -+ -+ -+cat >>confdefs.h <<_ACEOF -+@%:@define SIZEOF_INT $ac_cv_sizeof_int -+_ACEOF -+ -+ -+{ echo "$as_me:$LINENO: checking for long" >&5 -+echo $ECHO_N "checking for long... $ECHO_C" >&6; } -+if test "${ac_cv_type_long+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+typedef long ac__type_new_; -+int -+main () -+{ -+if ((ac__type_new_ *) 0) -+ return 0; -+if (sizeof (ac__type_new_)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_type_long=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_type_long=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 -+echo "${ECHO_T}$ac_cv_type_long" >&6; } -+ -+# The cast to long int works around a bug in the HP C Compiler -+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -+# This bug is HP SR number 8606223364. -+{ echo "$as_me:$LINENO: checking size of long" >&5 -+echo $ECHO_N "checking size of long... $ECHO_C" >&6; } -+if test "${ac_cv_sizeof_long+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test "$cross_compiling" = yes; then -+ # Depending upon the size, compute the lo and hi bounds. -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef long ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_lo=0 ac_mid=0 -+ while :; do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef long ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_hi=$ac_mid; break -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_lo=`expr $ac_mid + 1` -+ if test $ac_lo -le $ac_mid; then -+ ac_lo= ac_hi= -+ break -+ fi -+ ac_mid=`expr 2 '*' $ac_mid + 1` -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef long ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_hi=-1 ac_mid=-1 -+ while :; do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef long ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_lo=$ac_mid; break -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_hi=`expr '(' $ac_mid ')' - 1` -+ if test $ac_mid -le $ac_hi; then -+ ac_lo= ac_hi= -+ break -+ fi -+ ac_mid=`expr 2 '*' $ac_mid` -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_lo= ac_hi= -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+# Binary search between lo and hi bounds. -+while test "x$ac_lo" != "x$ac_hi"; do -+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef long ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_hi=$ac_mid -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_lo=`expr '(' $ac_mid ')' + 1` -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+done -+case $ac_lo in -+?*) ac_cv_sizeof_long=$ac_lo;; -+'') if test "$ac_cv_type_long" = yes; then -+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (long) -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (long) -+See \`config.log' for more details." >&2;} -+ { (exit 77); exit 77; }; } -+ else -+ ac_cv_sizeof_long=0 -+ fi ;; -+esac -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef long ac__type_sizeof_; -+static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } -+static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } -+@%:@include -+@%:@include -+int -+main () -+{ -+ -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ return 1; -+ if (((long int) (sizeof (ac__type_sizeof_))) < 0) -+ { -+ long int i = longval (); -+ if (i != ((long int) (sizeof (ac__type_sizeof_)))) -+ return 1; -+ fprintf (f, "%ld\n", i); -+ } -+ else -+ { -+ unsigned long int i = ulongval (); -+ if (i != ((long int) (sizeof (ac__type_sizeof_)))) -+ return 1; -+ fprintf (f, "%lu\n", i); -+ } -+ return ferror (f) || fclose (f) != 0; -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -+ { (case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_try") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_sizeof_long=`cat conftest.val` -+else -+ echo "$as_me: program exited with status $ac_status" >&5 -+echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+( exit $ac_status ) -+if test "$ac_cv_type_long" = yes; then -+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (long) -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (long) -+See \`config.log' for more details." >&2;} -+ { (exit 77); exit 77; }; } -+ else -+ ac_cv_sizeof_long=0 -+ fi -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+rm -f conftest.val -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 -+echo "${ECHO_T}$ac_cv_sizeof_long" >&6; } -+ -+ -+ -+cat >>confdefs.h <<_ACEOF -+@%:@define SIZEOF_LONG $ac_cv_sizeof_long -+_ACEOF -+ -+ -+ -+ -+for ac_header in inttypes.h -+do -+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ { echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+fi -+ac_res=`eval echo '${'$as_ac_Header'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+else -+ # Is the header compilable? -+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+@%:@include <$ac_header> -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_header_compiler=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_compiler=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -+echo "${ECHO_T}$ac_header_compiler" >&6; } -+ -+# Is the header present? -+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+@%:@include <$ac_header> -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ ac_header_preproc=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_preproc=no -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -+echo "${ECHO_T}$ac_header_preproc" >&6; } -+ -+# So? What about this header? -+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in -+ yes:no: ) -+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -+ ac_header_preproc=yes -+ ;; -+ no:yes:* ) -+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -+ -+ ;; -+esac -+{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ eval "$as_ac_Header=\$ac_header_preproc" -+fi -+ac_res=`eval echo '${'$as_ac_Header'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+ -+fi -+if test `eval echo '${'$as_ac_Header'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF -+ have_inttypes_h=yes -+else -+ have_inttypes_h=no -+fi -+ -+done -+ -+ -+ if test $have_inttypes_h = no; then -+ { echo "$as_me:$LINENO: checking for uintXX_t typedefs" >&5 -+echo $ECHO_N "checking for uintXX_t typedefs... $ECHO_C" >&6; } -+if test "${ac_cv_uint_t+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+ -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "(^|[^a-zA-Z_0-9])uint32_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then -+ ac_cv_uint_t=yes -+else -+ ac_cv_uint_t=no -+fi -+rm -f conftest* -+ -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_uint_t" >&5 -+echo "${ECHO_T}$ac_cv_uint_t" >&6; } -+ fi -+ if test $have_inttypes_h = no -a "$ac_cv_uint_t" = no; then -+ { echo "$as_me:$LINENO: checking for u_intXX_t typedefs" >&5 -+echo $ECHO_N "checking for u_intXX_t typedefs... $ECHO_C" >&6; } -+if test "${ac_cv_u_int_t+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+ -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "(^|[^a-zA-Z_0-9])u_int32_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then -+ ac_cv_u_int_t=yes -+else -+ ac_cv_u_int_t=no -+fi -+rm -f conftest* -+ -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_u_int_t" >&5 -+echo "${ECHO_T}$ac_cv_u_int_t" >&6; } -+ fi -+ if test $have_inttypes_h = yes -o "$ac_cv_uint_t" = yes; then : -+ elif test "$ac_cv_u_int_t" = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_U_INT_TYPES 1 -+_ACEOF -+ -+ else -+ { { echo "$as_me:$LINENO: error: -+========================================= -+ -+Neither uint32_t nor u_int32_t defined by or ! -+ -+=========================================" >&5 -+echo "$as_me: error: -+========================================= -+ -+Neither uint32_t nor u_int32_t defined by or ! -+ -+=========================================" >&2;} -+ { (exit 1); exit 1; }; } -+ fi -+ -+ { echo "$as_me:$LINENO: checking whether machine is indifferent to alignment" >&5 -+echo $ECHO_N "checking whether machine is indifferent to alignment... $ECHO_C" >&6; } -+if test "${ac_cv_alignment_indifferent+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test "x$have_inttypes_h" = xyes; then inttypes_hdr='inttypes.h'; else inttypes_hdr='sys/types.h'; fi -+ -+ if test "$cross_compiling" = yes; then -+ ac_cv_alignment_indifferent=no -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include <$inttypes_hdr> -+#include -+void get_value(char *buf, int offset, int32_t *value) { -+ int i; -+ for (i = 0; i < 4; i++) -+ buf[i + offset] = i; -+ *value = *((int32_t *)(buf + offset)); -+} -+int main(int argc, char *argv[]) { -+ char buf[12]; -+ int i; -+ int32_t value, try_value; -+ get_value(buf, 0, &value); -+ for (i = 1; i < 4; i++) { -+ get_value(buf, i, &try_value); -+ if (value != try_value) -+ exit(1); -+ } -+ exit(0); -+} -+_ACEOF -+rm -f conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -+ { (case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_try") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_alignment_indifferent=yes -+else -+ echo "$as_me: program exited with status $ac_status" >&5 -+echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+( exit $ac_status ) -+ac_cv_alignment_indifferent=no -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+ -+ -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_alignment_indifferent" >&5 -+echo "${ECHO_T}$ac_cv_alignment_indifferent" >&6; } -+ if test "x$ac_cv_alignment_indifferent" = xyes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_INDIFFERENT_ALIGNMENT 1 -+_ACEOF -+ -+ fi -+if test "x$enable_int64" = xyes; then -+ { echo "$as_me:$LINENO: checking for long long" >&5 -+echo $ECHO_N "checking for long long... $ECHO_C" >&6; } -+if test "${ac_cv_type_long_long+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+typedef long long ac__type_new_; -+int -+main () -+{ -+if ((ac__type_new_ *) 0) -+ return 0; -+if (sizeof (ac__type_new_)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_type_long_long=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_type_long_long=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 -+echo "${ECHO_T}$ac_cv_type_long_long" >&6; } -+ -+# The cast to long int works around a bug in the HP C Compiler -+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -+# This bug is HP SR number 8606223364. -+{ echo "$as_me:$LINENO: checking size of long long" >&5 -+echo $ECHO_N "checking size of long long... $ECHO_C" >&6; } -+if test "${ac_cv_sizeof_long_long+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test "$cross_compiling" = yes; then -+ # Depending upon the size, compute the lo and hi bounds. -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef long long ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_lo=0 ac_mid=0 -+ while :; do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef long long ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_hi=$ac_mid; break -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_lo=`expr $ac_mid + 1` -+ if test $ac_lo -le $ac_mid; then -+ ac_lo= ac_hi= -+ break -+ fi -+ ac_mid=`expr 2 '*' $ac_mid + 1` -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef long long ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_hi=-1 ac_mid=-1 -+ while :; do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef long long ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_lo=$ac_mid; break -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_hi=`expr '(' $ac_mid ')' - 1` -+ if test $ac_mid -le $ac_hi; then -+ ac_lo= ac_hi= -+ break -+ fi -+ ac_mid=`expr 2 '*' $ac_mid` -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_lo= ac_hi= -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+# Binary search between lo and hi bounds. -+while test "x$ac_lo" != "x$ac_hi"; do -+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef long long ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_hi=$ac_mid -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_lo=`expr '(' $ac_mid ')' + 1` -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+done -+case $ac_lo in -+?*) ac_cv_sizeof_long_long=$ac_lo;; -+'') if test "$ac_cv_type_long_long" = yes; then -+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long) -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (long long) -+See \`config.log' for more details." >&2;} -+ { (exit 77); exit 77; }; } -+ else -+ ac_cv_sizeof_long_long=0 -+ fi ;; -+esac -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef long long ac__type_sizeof_; -+static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } -+static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } -+@%:@include -+@%:@include -+int -+main () -+{ -+ -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ return 1; -+ if (((long int) (sizeof (ac__type_sizeof_))) < 0) -+ { -+ long int i = longval (); -+ if (i != ((long int) (sizeof (ac__type_sizeof_)))) -+ return 1; -+ fprintf (f, "%ld\n", i); -+ } -+ else -+ { -+ unsigned long int i = ulongval (); -+ if (i != ((long int) (sizeof (ac__type_sizeof_)))) -+ return 1; -+ fprintf (f, "%lu\n", i); -+ } -+ return ferror (f) || fclose (f) != 0; -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -+ { (case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_try") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_sizeof_long_long=`cat conftest.val` -+else -+ echo "$as_me: program exited with status $ac_status" >&5 -+echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+( exit $ac_status ) -+if test "$ac_cv_type_long_long" = yes; then -+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long) -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (long long) -+See \`config.log' for more details." >&2;} -+ { (exit 77); exit 77; }; } -+ else -+ ac_cv_sizeof_long_long=0 -+ fi -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+rm -f conftest.val -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 -+echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6; } -+ -+ -+ -+cat >>confdefs.h <<_ACEOF -+@%:@define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long -+_ACEOF -+ -+ -+ -+ if test "x$have_inttypes_h" = xyes; then -+ inttypes_hdr='inttypes.h' -+ else -+ inttypes_hdr='sys/types.h' -+ fi -+ -+ { echo "$as_me:$LINENO: checking for long long" >&5 -+echo $ECHO_N "checking for long long... $ECHO_C" >&6; } -+if test "${ac_cv_type_long_long+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+typedef long long ac__type_new_; -+int -+main () -+{ -+if ((ac__type_new_ *) 0) -+ return 0; -+if (sizeof (ac__type_new_)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_type_long_long=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_type_long_long=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 -+echo "${ECHO_T}$ac_cv_type_long_long" >&6; } -+if test $ac_cv_type_long_long = yes; then -+ -+cat >>confdefs.h <<_ACEOF -+@%:@define HAVE_LONG_LONG 1 -+_ACEOF -+ -+ -+fi -+ -+ { echo "$as_me:$LINENO: checking for int64_t typedef" >&5 -+echo $ECHO_N "checking for int64_t typedef... $ECHO_C" >&6; } -+if test "${ac_cv_int64_t+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include <$inttypes_hdr> -+ -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "(^|[^a-zA-Z_0-9])int64_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then -+ ac_cv_int64_t=yes -+else -+ ac_cv_int64_t=no -+fi -+rm -f conftest* -+ -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_int64_t" >&5 -+echo "${ECHO_T}$ac_cv_int64_t" >&6; } -+ { echo "$as_me:$LINENO: checking for uint64_t typedef" >&5 -+echo $ECHO_N "checking for uint64_t typedef... $ECHO_C" >&6; } -+if test "${ac_cv_uint64_t+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include <$inttypes_hdr> -+ -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "(^|[^a-zA-Z_0-9])u_?int64_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then -+ ac_cv_uint64_t=yes -+else -+ ac_cv_uint64_t=no -+fi -+rm -f conftest* -+ -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_uint64_t" >&5 -+echo "${ECHO_T}$ac_cv_uint64_t" >&6; } -+ -+ have_int64_types= -+ if test $ac_cv_int64_t = no -o $ac_cv_uint64_t = no; then -+ { { echo "$as_me:$LINENO: error: -+========================================= -+ -+int64_t types not defined by $inttypes_hdr! -+Compile with '--disable-int64'. -+ -+=========================================" >&5 -+echo "$as_me: error: -+========================================= -+ -+int64_t types not defined by $inttypes_hdr! -+Compile with '--disable-int64'. -+ -+=========================================" >&2;} -+ { (exit 1); exit 1; }; } -+ else -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_INT64_TYPES 1 -+_ACEOF -+ -+ have_int64_types=yes -+ -+ { echo "$as_me:$LINENO: checking whether long and int64_t are the same type" >&5 -+echo $ECHO_N "checking whether long and int64_t are the same type... $ECHO_C" >&6; } -+if test "${ac_cv_long_64+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_ext=cpp -+ac_cpp='$CXXCPP $CPPFLAGS' -+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include <$inttypes_hdr> -+void f1(long) { -+} -+void f1(int64_t) { // will fail if long and int64_t are the same type -+} -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_long_64=no -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_long_64=yes -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_long_64" >&5 -+echo "${ECHO_T}$ac_cv_long_64" >&6; } -+ if test $ac_cv_long_64 = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_INT64_IS_LONG_USERLEVEL 1 -+_ACEOF -+ -+ fi -+ -+ { echo "$as_me:$LINENO: checking whether long long and int64_t are the same type" >&5 -+echo $ECHO_N "checking whether long long and int64_t are the same type... $ECHO_C" >&6; } -+if test "${ac_cv_long_long_64+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_ext=cpp -+ac_cpp='$CXXCPP $CPPFLAGS' -+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include <$inttypes_hdr> -+void f1(long long) { -+} -+void f1(int64_t) { // will fail if long long and int64_t are the same type -+} -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_long_long_64=no -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_long_long_64=yes -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_long_long_64" >&5 -+echo "${ECHO_T}$ac_cv_long_long_64" >&6; } -+ if test $ac_cv_long_long_64 = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+_ACEOF -+ -+ fi -+ fi -+fi -+{ echo "$as_me:$LINENO: checking for struct timeval" >&5 -+echo $ECHO_N "checking for struct timeval... $ECHO_C" >&6; } -+if test "${ac_cv_type_struct_timeval+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+typedef struct timeval ac__type_new_; -+int -+main () -+{ -+if ((ac__type_new_ *) 0) -+ return 0; -+if (sizeof (ac__type_new_)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_type_struct_timeval=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_type_struct_timeval=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_timeval" >&5 -+echo "${ECHO_T}$ac_cv_type_struct_timeval" >&6; } -+ -+# The cast to long int works around a bug in the HP C Compiler -+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -+# This bug is HP SR number 8606223364. -+{ echo "$as_me:$LINENO: checking size of struct timeval" >&5 -+echo $ECHO_N "checking size of struct timeval... $ECHO_C" >&6; } -+if test "${ac_cv_sizeof_struct_timeval+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test "$cross_compiling" = yes; then -+ # Depending upon the size, compute the lo and hi bounds. -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef struct timeval ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_lo=0 ac_mid=0 -+ while :; do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef struct timeval ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_hi=$ac_mid; break -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_lo=`expr $ac_mid + 1` -+ if test $ac_lo -le $ac_mid; then -+ ac_lo= ac_hi= -+ break -+ fi -+ ac_mid=`expr 2 '*' $ac_mid + 1` -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef struct timeval ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_hi=-1 ac_mid=-1 -+ while :; do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef struct timeval ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_lo=$ac_mid; break -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_hi=`expr '(' $ac_mid ')' - 1` -+ if test $ac_mid -le $ac_hi; then -+ ac_lo= ac_hi= -+ break -+ fi -+ ac_mid=`expr 2 '*' $ac_mid` -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_lo= ac_hi= -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+# Binary search between lo and hi bounds. -+while test "x$ac_lo" != "x$ac_hi"; do -+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef struct timeval ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_hi=$ac_mid -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_lo=`expr '(' $ac_mid ')' + 1` -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+done -+case $ac_lo in -+?*) ac_cv_sizeof_struct_timeval=$ac_lo;; -+'') if test "$ac_cv_type_struct_timeval" = yes; then -+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (struct timeval) -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (struct timeval) -+See \`config.log' for more details." >&2;} -+ { (exit 77); exit 77; }; } -+ else -+ ac_cv_sizeof_struct_timeval=0 -+ fi ;; -+esac -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef struct timeval ac__type_sizeof_; -+static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } -+static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } -+@%:@include -+@%:@include -+int -+main () -+{ -+ -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ return 1; -+ if (((long int) (sizeof (ac__type_sizeof_))) < 0) -+ { -+ long int i = longval (); -+ if (i != ((long int) (sizeof (ac__type_sizeof_)))) -+ return 1; -+ fprintf (f, "%ld\n", i); -+ } -+ else -+ { -+ unsigned long int i = ulongval (); -+ if (i != ((long int) (sizeof (ac__type_sizeof_)))) -+ return 1; -+ fprintf (f, "%lu\n", i); -+ } -+ return ferror (f) || fclose (f) != 0; -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -+ { (case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_try") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_sizeof_struct_timeval=`cat conftest.val` -+else -+ echo "$as_me: program exited with status $ac_status" >&5 -+echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+( exit $ac_status ) -+if test "$ac_cv_type_struct_timeval" = yes; then -+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (struct timeval) -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (struct timeval) -+See \`config.log' for more details." >&2;} -+ { (exit 77); exit 77; }; } -+ else -+ ac_cv_sizeof_struct_timeval=0 -+ fi -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+rm -f conftest.val -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_struct_timeval" >&5 -+echo "${ECHO_T}$ac_cv_sizeof_struct_timeval" >&6; } -+ -+ -+ -+cat >>confdefs.h <<_ACEOF -+@%:@define SIZEOF_STRUCT_TIMEVAL $ac_cv_sizeof_struct_timeval -+_ACEOF -+ -+ -+{ echo "$as_me:$LINENO: checking for struct timespec" >&5 -+echo $ECHO_N "checking for struct timespec... $ECHO_C" >&6; } -+if test "${ac_cv_type_struct_timespec+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+typedef struct timespec ac__type_new_; -+int -+main () -+{ -+if ((ac__type_new_ *) 0) -+ return 0; -+if (sizeof (ac__type_new_)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_type_struct_timespec=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_type_struct_timespec=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_timespec" >&5 -+echo "${ECHO_T}$ac_cv_type_struct_timespec" >&6; } -+if test $ac_cv_type_struct_timespec = yes; then -+ -+cat >>confdefs.h <<_ACEOF -+@%:@define HAVE_STRUCT_TIMESPEC 1 -+_ACEOF -+ -+have_timespec=yes -+else -+ have_timespec=no -+fi -+ -+if test "x$have_timespec" = xyes; then -+ { echo "$as_me:$LINENO: checking for struct timespec" >&5 -+echo $ECHO_N "checking for struct timespec... $ECHO_C" >&6; } -+if test "${ac_cv_type_struct_timespec+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+typedef struct timespec ac__type_new_; -+int -+main () -+{ -+if ((ac__type_new_ *) 0) -+ return 0; -+if (sizeof (ac__type_new_)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_type_struct_timespec=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_type_struct_timespec=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_timespec" >&5 -+echo "${ECHO_T}$ac_cv_type_struct_timespec" >&6; } -+ -+# The cast to long int works around a bug in the HP C Compiler -+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -+# This bug is HP SR number 8606223364. -+{ echo "$as_me:$LINENO: checking size of struct timespec" >&5 -+echo $ECHO_N "checking size of struct timespec... $ECHO_C" >&6; } -+if test "${ac_cv_sizeof_struct_timespec+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test "$cross_compiling" = yes; then -+ # Depending upon the size, compute the lo and hi bounds. -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef struct timespec ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_lo=0 ac_mid=0 -+ while :; do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef struct timespec ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_hi=$ac_mid; break -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_lo=`expr $ac_mid + 1` -+ if test $ac_lo -le $ac_mid; then -+ ac_lo= ac_hi= -+ break -+ fi -+ ac_mid=`expr 2 '*' $ac_mid + 1` -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef struct timespec ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_hi=-1 ac_mid=-1 -+ while :; do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef struct timespec ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_lo=$ac_mid; break -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_hi=`expr '(' $ac_mid ')' - 1` -+ if test $ac_mid -le $ac_hi; then -+ ac_lo= ac_hi= -+ break -+ fi -+ ac_mid=`expr 2 '*' $ac_mid` -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_lo= ac_hi= -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+# Binary search between lo and hi bounds. -+while test "x$ac_lo" != "x$ac_hi"; do -+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef struct timespec ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_hi=$ac_mid -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_lo=`expr '(' $ac_mid ')' + 1` -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+done -+case $ac_lo in -+?*) ac_cv_sizeof_struct_timespec=$ac_lo;; -+'') if test "$ac_cv_type_struct_timespec" = yes; then -+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (struct timespec) -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (struct timespec) -+See \`config.log' for more details." >&2;} -+ { (exit 77); exit 77; }; } -+ else -+ ac_cv_sizeof_struct_timespec=0 -+ fi ;; -+esac -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ typedef struct timespec ac__type_sizeof_; -+static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } -+static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } -+@%:@include -+@%:@include -+int -+main () -+{ -+ -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ return 1; -+ if (((long int) (sizeof (ac__type_sizeof_))) < 0) -+ { -+ long int i = longval (); -+ if (i != ((long int) (sizeof (ac__type_sizeof_)))) -+ return 1; -+ fprintf (f, "%ld\n", i); -+ } -+ else -+ { -+ unsigned long int i = ulongval (); -+ if (i != ((long int) (sizeof (ac__type_sizeof_)))) -+ return 1; -+ fprintf (f, "%lu\n", i); -+ } -+ return ferror (f) || fclose (f) != 0; -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -+ { (case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_try") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_sizeof_struct_timespec=`cat conftest.val` -+else -+ echo "$as_me: program exited with status $ac_status" >&5 -+echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+( exit $ac_status ) -+if test "$ac_cv_type_struct_timespec" = yes; then -+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (struct timespec) -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (struct timespec) -+See \`config.log' for more details." >&2;} -+ { (exit 77); exit 77; }; } -+ else -+ ac_cv_sizeof_struct_timespec=0 -+ fi -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+rm -f conftest.val -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_struct_timespec" >&5 -+echo "${ECHO_T}$ac_cv_sizeof_struct_timespec" >&6; } -+ -+ -+ -+cat >>confdefs.h <<_ACEOF -+@%:@define SIZEOF_STRUCT_TIMESPEC $ac_cv_sizeof_struct_timespec -+_ACEOF -+ -+ -+fi -+ -+ -+ -+for ac_header in endian.h machine/endian.h -+do -+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ { echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+fi -+ac_res=`eval echo '${'$as_ac_Header'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+else -+ # Is the header compilable? -+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+@%:@include <$ac_header> -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_header_compiler=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_compiler=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -+echo "${ECHO_T}$ac_header_compiler" >&6; } -+ -+# Is the header present? -+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+@%:@include <$ac_header> -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ ac_header_preproc=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_preproc=no -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -+echo "${ECHO_T}$ac_header_preproc" >&6; } -+ -+# So? What about this header? -+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in -+ yes:no: ) -+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -+ ac_header_preproc=yes -+ ;; -+ no:yes:* ) -+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -+ -+ ;; -+esac -+{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ eval "$as_ac_Header=\$ac_header_preproc" -+fi -+ac_res=`eval echo '${'$as_ac_Header'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+ -+fi -+if test `eval echo '${'$as_ac_Header'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF -+ if test "x$ac_header" != x; then -+ endian_hdr=$ac_header -+ else -+ endian_hdr=$ac_hdr -+ fi -+ break -+else -+ endian_hdr=no -+fi -+ -+done -+ -+ if test "x$endian_hdr" != xno; then -+ { echo "$as_me:$LINENO: checking endianness" >&5 -+echo $ECHO_N "checking endianness... $ECHO_C" >&6; } -+if test "${ac_cv_endian+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ -+ ac_cv_endian=0 -+ cat > conftest.$ac_ext < -+#ifdef __BYTE_ORDER -+__BYTE_ORDER -+#elif defined(BYTE_ORDER) -+BYTE_ORDER -+#else -+0 -+#endif -+EOF -+ ac_try="$ac_cpp conftest.$ac_ext >conftest.result 2>conftest.out" -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -+ if test -z "$ac_err"; then -+ ac_cv_endian=`grep '^[1234]' conftest.result` -+ test -z "$ac_cv_endian" && ac_cv_endian=0 -+ else -+ echo "$ac_err" >&5 -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ fi -+ rm -f conftest* -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_endian" >&5 -+echo "${ECHO_T}$ac_cv_endian" >&6; } -+ elif test "x$cross_compiling" != xyes ; then -+ { echo "$as_me:$LINENO: checking endianness" >&5 -+echo $ECHO_N "checking endianness... $ECHO_C" >&6; } -+if test "${ac_cv_endian+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test "$cross_compiling" = yes; then -+ ac_cv_endian=0 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+#include -+int main(int argc, char *argv[]) { -+ union { int i; char c[4]; } u; -+ FILE *f = fopen("conftestdata", "w"); -+ if (!f) -+ exit(1); -+ u.i = ('1') | ('2' << 8) | ('3' << 16) | ('4' << 24); -+ fprintf(f, "%4.4s\n", u.c); -+ exit(0); -+} -+_ACEOF -+rm -f conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -+ { (case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_try") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_endian=`cat conftestdata` -+else -+ echo "$as_me: program exited with status $ac_status" >&5 -+echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+( exit $ac_status ) -+ac_cv_endian=0 -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+ -+ -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_endian" >&5 -+echo "${ECHO_T}$ac_cv_endian" >&6; } -+ else -+ ac_cv_endian=0 -+ fi -+ -+cat >>confdefs.h <<_ACEOF -+@%:@define CLICK_BYTE_ORDER $ac_cv_endian -+_ACEOF -+ -+ -+for ac_header in byteswap.h -+do -+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ { echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+fi -+ac_res=`eval echo '${'$as_ac_Header'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+else -+ # Is the header compilable? -+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+@%:@include <$ac_header> -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_header_compiler=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_compiler=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -+echo "${ECHO_T}$ac_header_compiler" >&6; } -+ -+# Is the header present? -+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+@%:@include <$ac_header> -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ ac_header_preproc=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_preproc=no -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -+echo "${ECHO_T}$ac_header_preproc" >&6; } -+ -+# So? What about this header? -+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in -+ yes:no: ) -+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -+ ac_header_preproc=yes -+ ;; -+ no:yes:* ) -+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -+ -+ ;; -+esac -+{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ eval "$as_ac_Header=\$ac_header_preproc" -+fi -+ac_res=`eval echo '${'$as_ac_Header'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+ -+fi -+if test `eval echo '${'$as_ac_Header'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF -+ -+fi -+ -+done -+ -+ -+ -+ { echo "$as_me:$LINENO: checking whether signed right shift is arithmetic" >&5 -+echo $ECHO_N "checking whether signed right shift is arithmetic... $ECHO_C" >&6; } -+if test "${ac_cv_arithmetic_right_shift+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+int f(int x[((int) -1) >> 15]) { return x[0]; } -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_arithmetic_right_shift=no -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_arithmetic_right_shift=yes -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_arithmetic_right_shift" >&5 -+echo "${ECHO_T}$ac_cv_arithmetic_right_shift" >&6; } -+ if test $ac_cv_arithmetic_right_shift = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+_ACEOF -+ -+ fi -+ -+ ac_ext=cpp -+ac_cpp='$CXXCPP $CPPFLAGS' -+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -+ -+ { echo "$as_me:$LINENO: checking for addressable va_list type" >&5 -+echo $ECHO_N "checking for addressable va_list type... $ECHO_C" >&6; } -+if test "${ac_cv_va_list_addr+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+void f(va_list *) { -+} -+void g(va_list val) { -+ f(&val); -+} -+void h(int a, ...) { -+ va_list val; -+ va_start(val, a); -+ g(val); -+ va_end(val); -+} -+int -+main () -+{ -+h(2, 3, 4); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_va_list_addr=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_va_list_addr=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_va_list_addr" >&5 -+echo "${ECHO_T}$ac_cv_va_list_addr" >&6; } -+ if test "x$ac_cv_va_list_addr" = xyes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_ADDRESSABLE_VA_LIST 1 -+_ACEOF -+ -+ fi -+ -+ -+ { echo "$as_me:$LINENO: checking for __builtin_clz" >&5 -+echo $ECHO_N "checking for __builtin_clz... $ECHO_C" >&6; } -+if test "${ac_cv_have___builtin_clz+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+volatile int x = 11; -+int -+main () -+{ -+int y = __builtin_clz(x); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_have___builtin_clz=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_have___builtin_clz=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_have___builtin_clz" >&5 -+echo "${ECHO_T}$ac_cv_have___builtin_clz" >&6; } -+ if test $ac_cv_have___builtin_clz = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE___BUILTIN_CLZ 1 -+_ACEOF -+ -+ fi -+ { echo "$as_me:$LINENO: checking for __builtin_clzl" >&5 -+echo $ECHO_N "checking for __builtin_clzl... $ECHO_C" >&6; } -+if test "${ac_cv_have___builtin_clzl+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+volatile long x = 11; -+int -+main () -+{ -+int y = __builtin_clzl(x); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_have___builtin_clzl=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_have___builtin_clzl=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_have___builtin_clzl" >&5 -+echo "${ECHO_T}$ac_cv_have___builtin_clzl" >&6; } -+ if test $ac_cv_have___builtin_clzl = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE___BUILTIN_CLZL 1 -+_ACEOF -+ -+ fi -+ { echo "$as_me:$LINENO: checking for __builtin_clzll" >&5 -+echo $ECHO_N "checking for __builtin_clzll... $ECHO_C" >&6; } -+if test "${ac_cv_have___builtin_clzll+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+volatile long long x = 11; -+int -+main () -+{ -+int y = __builtin_clzll(x); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_have___builtin_clzll=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_have___builtin_clzll=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_have___builtin_clzll" >&5 -+echo "${ECHO_T}$ac_cv_have___builtin_clzll" >&6; } -+ if test $ac_cv_have___builtin_clzll = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE___BUILTIN_CLZLL 1 -+_ACEOF -+ -+ fi -+ -+ { echo "$as_me:$LINENO: checking for __builtin_ffs" >&5 -+echo $ECHO_N "checking for __builtin_ffs... $ECHO_C" >&6; } -+if test "${ac_cv_have___builtin_ffs+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+volatile int x = 11; -+int -+main () -+{ -+int y = __builtin_ffs(x); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_have___builtin_ffs=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_have___builtin_ffs=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_have___builtin_ffs" >&5 -+echo "${ECHO_T}$ac_cv_have___builtin_ffs" >&6; } -+ if test $ac_cv_have___builtin_ffs = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE___BUILTIN_FFS 1 -+_ACEOF -+ -+ fi -+ { echo "$as_me:$LINENO: checking for __builtin_ffsl" >&5 -+echo $ECHO_N "checking for __builtin_ffsl... $ECHO_C" >&6; } -+if test "${ac_cv_have___builtin_ffsl+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+volatile long x = 11; -+int -+main () -+{ -+int y = __builtin_ffsl(x); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_have___builtin_ffsl=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_have___builtin_ffsl=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_have___builtin_ffsl" >&5 -+echo "${ECHO_T}$ac_cv_have___builtin_ffsl" >&6; } -+ if test $ac_cv_have___builtin_ffsl = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE___BUILTIN_FFSL 1 -+_ACEOF -+ -+ fi -+ { echo "$as_me:$LINENO: checking for __builtin_ffsll" >&5 -+echo $ECHO_N "checking for __builtin_ffsll... $ECHO_C" >&6; } -+if test "${ac_cv_have___builtin_ffsll+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+volatile long long x = 11; -+int -+main () -+{ -+int y = __builtin_ffsll(x); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_have___builtin_ffsll=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_have___builtin_ffsll=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_have___builtin_ffsll" >&5 -+echo "${ECHO_T}$ac_cv_have___builtin_ffsll" >&6; } -+ if test $ac_cv_have___builtin_ffsll = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE___BUILTIN_FFSLL 1 -+_ACEOF -+ -+ fi -+ -+ -+for ac_header in strings.h -+do -+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ { echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+fi -+ac_res=`eval echo '${'$as_ac_Header'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+else -+ # Is the header compilable? -+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+@%:@include <$ac_header> -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_header_compiler=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_compiler=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -+echo "${ECHO_T}$ac_header_compiler" >&6; } -+ -+# Is the header present? -+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+@%:@include <$ac_header> -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ ac_header_preproc=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_preproc=no -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -+echo "${ECHO_T}$ac_header_preproc" >&6; } -+ -+# So? What about this header? -+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in -+ yes:no: ) -+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -+ ac_header_preproc=yes -+ ;; -+ no:yes:* ) -+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -+ -+ ;; -+esac -+{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ eval "$as_ac_Header=\$ac_header_preproc" -+fi -+ac_res=`eval echo '${'$as_ac_Header'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+ -+fi -+if test `eval echo '${'$as_ac_Header'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF -+ -+fi -+ -+done -+ -+ -+ -+ -+for ac_func in ffs ffsl ffsll -+do -+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -+{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+/* Define $ac_func to an innocuous variant, in case declares $ac_func. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define $ac_func innocuous_$ac_func -+ -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char $ac_func (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ -+ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ -+#undef $ac_func -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char $ac_func (); -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined __stub_$ac_func || defined __stub___$ac_func -+choke me -+#endif -+ -+int -+main () -+{ -+return $ac_func (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ eval "$as_ac_var=yes" -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ eval "$as_ac_var=no" -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+ac_res=`eval echo '${'$as_ac_var'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+if test `eval echo '${'$as_ac_var'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF -+ -+fi -+done -+ -+ -+ -+ -+ -+# Check whether --enable-nanotimestamp was given. -+if test "${enable_nanotimestamp+set}" = set; then -+ enableval=$enable_nanotimestamp; -+fi -+ -+if test "x$enable_nanotimestamp" = xyes; then -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_NANOTIMESTAMP_ENABLED 1 -+_ACEOF -+ -+fi -+ -+ -+ -+# Check whether --enable-tools was given. -+if test "${enable_tools+set}" = set; then -+ enableval=$enable_tools; : -+else -+ enable_tools=mixed -+fi -+ -+ -+if test "$enable_tools" != mixed -a "$enable_tools" != host -a "$enable_tools" != build -a "$enable_tools" != no; then -+ { { echo "$as_me:$LINENO: error: -+========================================= -+ -+Bad value for --enable-tools. Try 'host', 'build', 'mixed', or 'no'. -+ -+=========================================" >&5 -+echo "$as_me: error: -+========================================= -+ -+Bad value for --enable-tools. Try 'host', 'build', 'mixed', or 'no'. -+ -+=========================================" >&2;} -+ { (exit 1); exit 1; }; } -+elif test "$enable_tools" = no; then -+ HOST_TOOLS=host -+elif test "$cross_compiling" = no -o "$enable_tools" = host; then -+ HOST_TOOLS=host -+else -+ for ac_prog in gcc -+do -+ # Extract the first word of "$ac_prog", so it can be a program name with args. -+set dummy $ac_prog; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_BUILD_CC+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$BUILD_CC"; then -+ ac_cv_prog_BUILD_CC="$BUILD_CC" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_BUILD_CC="$ac_prog" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+BUILD_CC=$ac_cv_prog_BUILD_CC -+if test -n "$BUILD_CC"; then -+ { echo "$as_me:$LINENO: result: $BUILD_CC" >&5 -+echo "${ECHO_T}$BUILD_CC" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+ test -n "$BUILD_CC" && break -+done -+ -+ for ac_prog in g++ -+do -+ # Extract the first word of "$ac_prog", so it can be a program name with args. -+set dummy $ac_prog; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_BUILD_CXX+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$BUILD_CXX"; then -+ ac_cv_prog_BUILD_CXX="$BUILD_CXX" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_BUILD_CXX="$ac_prog" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+BUILD_CXX=$ac_cv_prog_BUILD_CXX -+if test -n "$BUILD_CXX"; then -+ { echo "$as_me:$LINENO: result: $BUILD_CXX" >&5 -+echo "${ECHO_T}$BUILD_CXX" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+ test -n "$BUILD_CXX" && break -+done -+ -+ -+ ac_base_build_cxx="$CXX" -+ test -z "$ac_user_build_cxx" -a -n "$ac_compile_with_warnings" && \ -+ BUILD_CXX="$BUILD_CXX $CXX_WARNINGS $VTABLE_THUNKS" -+ -+ for ac_prog in ar -+do -+ # Extract the first word of "$ac_prog", so it can be a program name with args. -+set dummy $ac_prog; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_BUILD_AR+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$BUILD_AR"; then -+ ac_cv_prog_BUILD_AR="$BUILD_AR" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_BUILD_AR="$ac_prog" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+BUILD_AR=$ac_cv_prog_BUILD_AR -+if test -n "$BUILD_AR"; then -+ { echo "$as_me:$LINENO: result: $BUILD_AR" >&5 -+echo "${ECHO_T}$BUILD_AR" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+ test -n "$BUILD_AR" && break -+done -+ -+ for ac_prog in ranlib -+do -+ # Extract the first word of "$ac_prog", so it can be a program name with args. -+set dummy $ac_prog; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_BUILD_RANLIB+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$BUILD_RANLIB"; then -+ ac_cv_prog_BUILD_RANLIB="$BUILD_RANLIB" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_BUILD_RANLIB="$ac_prog" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+BUILD_RANLIB=$ac_cv_prog_BUILD_RANLIB -+if test -n "$BUILD_RANLIB"; then -+ { echo "$as_me:$LINENO: result: $BUILD_RANLIB" >&5 -+echo "${ECHO_T}$BUILD_RANLIB" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+ test -n "$BUILD_RANLIB" && break -+done -+test -n "$BUILD_RANLIB" || BUILD_RANLIB=":" -+ -+ HOST_TOOLS=$enable_tools -+fi -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+for ac_header in unistd.h termio.h netdb.h sys/event.h pwd.h grp.h -+do -+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ { echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+fi -+ac_res=`eval echo '${'$as_ac_Header'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+else -+ # Is the header compilable? -+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+@%:@include <$ac_header> -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_header_compiler=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_compiler=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -+echo "${ECHO_T}$ac_header_compiler" >&6; } -+ -+# Is the header present? -+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+@%:@include <$ac_header> -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ ac_header_preproc=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_preproc=no -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -+echo "${ECHO_T}$ac_header_preproc" >&6; } -+ -+# So? What about this header? -+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in -+ yes:no: ) -+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -+ ac_header_preproc=yes -+ ;; -+ no:yes:* ) -+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -+ -+ ;; -+esac -+{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ eval "$as_ac_Header=\$ac_header_preproc" -+fi -+ac_res=`eval echo '${'$as_ac_Header'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+ -+fi -+if test `eval echo '${'$as_ac_Header'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF -+ -+fi -+ -+done -+ -+ -+ if test "${ac_cv_header_poll_h+set}" = set; then -+ { echo "$as_me:$LINENO: checking for poll.h" >&5 -+echo $ECHO_N "checking for poll.h... $ECHO_C" >&6; } -+if test "${ac_cv_header_poll_h+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_header_poll_h" >&5 -+echo "${ECHO_T}$ac_cv_header_poll_h" >&6; } -+else -+ # Is the header compilable? -+{ echo "$as_me:$LINENO: checking poll.h usability" >&5 -+echo $ECHO_N "checking poll.h usability... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+@%:@include -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_header_compiler=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_compiler=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -+echo "${ECHO_T}$ac_header_compiler" >&6; } -+ -+# Is the header present? -+{ echo "$as_me:$LINENO: checking poll.h presence" >&5 -+echo $ECHO_N "checking poll.h presence... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+@%:@include -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ ac_header_preproc=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_preproc=no -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -+echo "${ECHO_T}$ac_header_preproc" >&6; } -+ -+# So? What about this header? -+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in -+ yes:no: ) -+ { echo "$as_me:$LINENO: WARNING: poll.h: accepted by the compiler, rejected by the preprocessor!" >&5 -+echo "$as_me: WARNING: poll.h: accepted by the compiler, rejected by the preprocessor!" >&2;} -+ { echo "$as_me:$LINENO: WARNING: poll.h: proceeding with the compiler's result" >&5 -+echo "$as_me: WARNING: poll.h: proceeding with the compiler's result" >&2;} -+ ac_header_preproc=yes -+ ;; -+ no:yes:* ) -+ { echo "$as_me:$LINENO: WARNING: poll.h: present but cannot be compiled" >&5 -+echo "$as_me: WARNING: poll.h: present but cannot be compiled" >&2;} -+ { echo "$as_me:$LINENO: WARNING: poll.h: check for missing prerequisite headers?" >&5 -+echo "$as_me: WARNING: poll.h: check for missing prerequisite headers?" >&2;} -+ { echo "$as_me:$LINENO: WARNING: poll.h: see the Autoconf documentation" >&5 -+echo "$as_me: WARNING: poll.h: see the Autoconf documentation" >&2;} -+ { echo "$as_me:$LINENO: WARNING: poll.h: section \"Present But Cannot Be Compiled\"" >&5 -+echo "$as_me: WARNING: poll.h: section \"Present But Cannot Be Compiled\"" >&2;} -+ { echo "$as_me:$LINENO: WARNING: poll.h: proceeding with the preprocessor's result" >&5 -+echo "$as_me: WARNING: poll.h: proceeding with the preprocessor's result" >&2;} -+ { echo "$as_me:$LINENO: WARNING: poll.h: in the future, the compiler will take precedence" >&5 -+echo "$as_me: WARNING: poll.h: in the future, the compiler will take precedence" >&2;} -+ -+ ;; -+esac -+{ echo "$as_me:$LINENO: checking for poll.h" >&5 -+echo $ECHO_N "checking for poll.h... $ECHO_C" >&6; } -+if test "${ac_cv_header_poll_h+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_cv_header_poll_h=$ac_header_preproc -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_header_poll_h" >&5 -+echo "${ECHO_T}$ac_cv_header_poll_h" >&6; } -+ -+fi -+if test $ac_cv_header_poll_h = yes; then -+ ac_cv_poll_h=yes -+else -+ ac_cv_poll_h=no -+fi -+ -+ -+ if test "$ac_cv_poll_h" = yes; then -+ { echo "$as_me:$LINENO: checking whether is emulated" >&5 -+echo $ECHO_N "checking whether is emulated... $ECHO_C" >&6; } -+if test "${ac_cv_emulated_poll_h+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+#ifdef _POLL_EMUL_H_ -+# error "error" -+#endif -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_emulated_poll_h=no -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_emulated_poll_h=yes -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_emulated_poll_h" >&5 -+echo "${ECHO_T}$ac_cv_emulated_poll_h" >&6; } -+ if test "x$ac_cv_emulated_poll_h" = xno; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_POLL_H 1 -+_ACEOF -+ -+ fi -+ fi -+ -+ -+for ac_func in sigaction -+do -+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -+{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+/* Define $ac_func to an innocuous variant, in case declares $ac_func. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define $ac_func innocuous_$ac_func -+ -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char $ac_func (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ -+ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ -+#undef $ac_func -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char $ac_func (); -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined __stub_$ac_func || defined __stub___$ac_func -+choke me -+#endif -+ -+int -+main () -+{ -+return $ac_func (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ eval "$as_ac_var=yes" -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ eval "$as_ac_var=no" -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+ac_res=`eval echo '${'$as_ac_var'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+if test `eval echo '${'$as_ac_var'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF -+ -+fi -+done -+ -+ -+ -+for ac_func in kqueue -+do -+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -+{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+/* Define $ac_func to an innocuous variant, in case declares $ac_func. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define $ac_func innocuous_$ac_func -+ -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char $ac_func (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ -+ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ -+#undef $ac_func -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char $ac_func (); -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined __stub_$ac_func || defined __stub___$ac_func -+choke me -+#endif -+ -+int -+main () -+{ -+return $ac_func (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ eval "$as_ac_var=yes" -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ eval "$as_ac_var=no" -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+ac_res=`eval echo '${'$as_ac_var'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+if test `eval echo '${'$as_ac_var'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF -+ have_kqueue=yes -+fi -+done -+ -+if test "x$have_kqueue" = xyes; then -+ { echo "$as_me:$LINENO: checking whether EV_SET last argument is void *" >&5 -+echo $ECHO_N "checking whether EV_SET last argument is void *... $ECHO_C" >&6; } -+if test "${ac_cv_ev_set_udata_pointer+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+#include -+#include -+int -+main () -+{ -+struct kevent kev; EV_SET(&kev, 1, EVFILT_WRITE, EV_ADD, 0, 0, (void *) &kev); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_ev_set_udata_pointer=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_ev_set_udata_pointer=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_ev_set_udata_pointer" >&5 -+echo "${ECHO_T}$ac_cv_ev_set_udata_pointer" >&6; } -+ if test $ac_cv_ev_set_udata_pointer = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_EV_SET_UDATA_POINTER 1 -+_ACEOF -+ -+ fi -+fi -+ -+# Check whether --enable-dynamic-linking was given. -+if test "${enable_dynamic_linking+set}" = set; then -+ enableval=$enable_dynamic_linking; : -+else -+ enable_dynamic_linking=yes -+fi -+ -+ -+if test "x$enable_dynamic_linking" = xyes; then -+ -+ DL_LIBS= -+ -+for ac_header in dlfcn.h -+do -+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ { echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+fi -+ac_res=`eval echo '${'$as_ac_Header'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+else -+ # Is the header compilable? -+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+@%:@include <$ac_header> -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_header_compiler=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_compiler=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -+echo "${ECHO_T}$ac_header_compiler" >&6; } -+ -+# Is the header present? -+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+@%:@include <$ac_header> -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ ac_header_preproc=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_preproc=no -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -+echo "${ECHO_T}$ac_header_preproc" >&6; } -+ -+# So? What about this header? -+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in -+ yes:no: ) -+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -+ ac_header_preproc=yes -+ ;; -+ no:yes:* ) -+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -+ -+ ;; -+esac -+{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ eval "$as_ac_Header=\$ac_header_preproc" -+fi -+ac_res=`eval echo '${'$as_ac_Header'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+ -+fi -+if test `eval echo '${'$as_ac_Header'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF -+ ac_have_dlfcn_h=yes -+else -+ ac_have_dlfcn_h=no -+fi -+ -+done -+ -+ { echo "$as_me:$LINENO: checking for dlopen" >&5 -+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; } -+if test "${ac_cv_func_dlopen+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+/* Define dlopen to an innocuous variant, in case declares dlopen. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define dlopen innocuous_dlopen -+ -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char dlopen (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ -+ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ -+#undef dlopen -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char dlopen (); -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined __stub_dlopen || defined __stub___dlopen -+choke me -+#endif -+ -+int -+main () -+{ -+return dlopen (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ ac_cv_func_dlopen=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_func_dlopen=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 -+echo "${ECHO_T}$ac_cv_func_dlopen" >&6; } -+if test $ac_cv_func_dlopen = yes; then -+ ac_have_dlopen=yes -+else -+ { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } -+if test "${ac_cv_lib_dl_dlopen+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-ldl $LIBS" -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char dlopen (); -+int -+main () -+{ -+return dlopen (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ ac_cv_lib_dl_dlopen=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_lib_dl_dlopen=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } -+if test $ac_cv_lib_dl_dlopen = yes; then -+ ac_have_dlopen=yes; DL_LIBS="-ldl" -+else -+ ac_have_dlopen=no -+fi -+ -+fi -+ -+ if test "x$ac_have_dlopen" = xyes -a "x$ac_have_dlfcn_h" = xyes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_DYNAMIC_LINKING 1 -+_ACEOF -+ -+ ac_have_dynamic_linking=yes -+ fi -+ -+ -+ { echo "$as_me:$LINENO: checking compiler flags for building loadable modules" >&5 -+echo $ECHO_N "checking compiler flags for building loadable modules... $ECHO_C" >&6; } -+ LDMODULEFLAGS=-shared -+ if test "x$ac_have_dynamic_linking" = xyes; then -+ if echo "$ac_cv_target" | grep apple-darwin >/dev/null 2>&1; then -+ LDMODULEFLAGS='-bundle -flat_namespace -undefined suppress' -+ fi -+ fi -+ { echo "$as_me:$LINENO: result: $LDMODULEFLAGS" >&5 -+echo "${ECHO_T}$LDMODULEFLAGS" >&6; } -+ -+ -+ if test "$HOST_TOOLS" != host -a "$enable_tools" != no; then -+ -+ saver="CXX='$CXX' CXXCPP='$CXXCPP' ac_cv_header_dlfcn_h='$ac_cv_header_dlfcn_h' ac_cv_func_dlopen='$ac_cv_func_dlopen' ac_cv_lib_dl_dlopen='$ac_cv_lib_dl_dlopen'" -+ CXX="$BUILD_CXX"; CXXCPP="$BUILD_CXX -E" -+ unset ac_cv_header_dlfcn_h ac_cv_func_dlopen ac_cv_lib_dl_dlopen -+ BUILD_DL_LIBS= -+ -+for ac_header in dlfcn.h -+do -+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ { echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+fi -+ac_res=`eval echo '${'$as_ac_Header'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+else -+ # Is the header compilable? -+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+@%:@include <$ac_header> -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_header_compiler=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_compiler=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -+echo "${ECHO_T}$ac_header_compiler" >&6; } -+ -+# Is the header present? -+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+@%:@include <$ac_header> -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ ac_header_preproc=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_preproc=no -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -+echo "${ECHO_T}$ac_header_preproc" >&6; } -+ -+# So? What about this header? -+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in -+ yes:no: ) -+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -+ ac_header_preproc=yes -+ ;; -+ no:yes:* ) -+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -+ -+ ;; -+esac -+{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ eval "$as_ac_Header=\$ac_header_preproc" -+fi -+ac_res=`eval echo '${'$as_ac_Header'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+ -+fi -+if test `eval echo '${'$as_ac_Header'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF -+ ac_build_have_dlfcn_h=yes -+else -+ ac_build_have_dlfcn_h=no -+fi -+ -+done -+ -+ { echo "$as_me:$LINENO: checking for dlopen" >&5 -+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; } -+if test "${ac_cv_func_dlopen+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+/* Define dlopen to an innocuous variant, in case declares dlopen. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define dlopen innocuous_dlopen -+ -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char dlopen (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ -+ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ -+#undef dlopen -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char dlopen (); -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined __stub_dlopen || defined __stub___dlopen -+choke me -+#endif -+ -+int -+main () -+{ -+return dlopen (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ ac_cv_func_dlopen=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_func_dlopen=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 -+echo "${ECHO_T}$ac_cv_func_dlopen" >&6; } -+if test $ac_cv_func_dlopen = yes; then -+ ac_build_have_dlopen=yes -+else -+ { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; } -+if test "${ac_cv_lib_dl_dlopen+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-ldl $LIBS" -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char dlopen (); -+int -+main () -+{ -+return dlopen (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ ac_cv_lib_dl_dlopen=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_lib_dl_dlopen=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; } -+if test $ac_cv_lib_dl_dlopen = yes; then -+ ac_build_have_dlopen=yes; BUILD_DL_LIBS="-ldl" -+else -+ ac_have_dlopen=no -+fi -+ -+fi -+ -+ if test "x$ac_build_have_dlopen" = xyes -a "x$ac_build_have_dlfcn_h" = xyes; then -+ ac_build_have_dynamic_linking=yes -+ fi -+ if test "x$ac_build_have_dynamic_linking" != "x$ac_have_dynamic_linking"; then -+ { { echo "$as_me:$LINENO: error: -+========================================= -+ -+Build system and host system don't have the same dynamic linking state! -+ -+=========================================" >&5 -+echo "$as_me: error: -+========================================= -+ -+Build system and host system don't have the same dynamic linking state! -+ -+=========================================" >&2;} -+ { (exit 1); exit 1; }; } -+ fi -+ -+ eval "$saver" -+ -+ fi -+fi -+ -+ -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+SOCKET_LIBS= -+if test "$enable_userlevel" = yes; then -+ savelibs="$LIBS"; LIBS= -+ { echo "$as_me:$LINENO: checking for library containing gethostbyname" >&5 -+echo $ECHO_N "checking for library containing gethostbyname... $ECHO_C" >&6; } -+if test "${ac_cv_search_gethostbyname+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_func_search_save_LIBS=$LIBS -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char gethostbyname (); -+int -+main () -+{ -+return gethostbyname (); -+ ; -+ return 0; -+} -+_ACEOF -+for ac_lib in '' nsl; do -+ if test -z "$ac_lib"; then -+ ac_res="none required" -+ else -+ ac_res=-l$ac_lib -+ LIBS="-l$ac_lib $savelibs $ac_func_search_save_LIBS" -+ fi -+ rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ ac_cv_search_gethostbyname=$ac_res -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext -+ if test "${ac_cv_search_gethostbyname+set}" = set; then -+ break -+fi -+done -+if test "${ac_cv_search_gethostbyname+set}" = set; then -+ : -+else -+ ac_cv_search_gethostbyname=no -+fi -+rm conftest.$ac_ext -+LIBS=$ac_func_search_save_LIBS -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_search_gethostbyname" >&5 -+echo "${ECHO_T}$ac_cv_search_gethostbyname" >&6; } -+ac_res=$ac_cv_search_gethostbyname -+if test "$ac_res" != no; then -+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" -+ -+fi -+ -+ { echo "$as_me:$LINENO: checking for library containing connect" >&5 -+echo $ECHO_N "checking for library containing connect... $ECHO_C" >&6; } -+if test "${ac_cv_search_connect+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_func_search_save_LIBS=$LIBS -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char connect (); -+int -+main () -+{ -+return connect (); -+ ; -+ return 0; -+} -+_ACEOF -+for ac_lib in '' socket; do -+ if test -z "$ac_lib"; then -+ ac_res="none required" -+ else -+ ac_res=-l$ac_lib -+ LIBS="-l$ac_lib $savelibs $ac_func_search_save_LIBS" -+ fi -+ rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ ac_cv_search_connect=$ac_res -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext -+ if test "${ac_cv_search_connect+set}" = set; then -+ break -+fi -+done -+if test "${ac_cv_search_connect+set}" = set; then -+ : -+else -+ ac_cv_search_connect=no -+fi -+rm conftest.$ac_ext -+LIBS=$ac_func_search_save_LIBS -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_search_connect" >&5 -+echo "${ECHO_T}$ac_cv_search_connect" >&6; } -+ac_res=$ac_cv_search_connect -+if test "$ac_res" != no; then -+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" -+ -+fi -+ -+ SOCKET_LIBS="$LIBS"; LIBS="$savelibs" -+ -+ { echo "$as_me:$LINENO: checking whether accept() uses socklen_t" >&5 -+echo $ECHO_N "checking whether accept() uses socklen_t... $ECHO_C" >&6; } -+if test "${ac_cv_accept_socklen_t+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+#include -+ -+int -+main () -+{ -+socklen_t sl; (void) accept(0, (struct sockaddr *) 0, &sl); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_accept_socklen_t=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_accept_socklen_t=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_accept_socklen_t" >&5 -+echo "${ECHO_T}$ac_cv_accept_socklen_t" >&6; } -+ if test "$ac_cv_accept_socklen_t" = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_ACCEPT_SOCKLEN_T 1 -+_ACEOF -+ -+ fi -+fi -+ -+ac_ext=cpp -+ac_cpp='$CXXCPP $CPPFLAGS' -+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -+ -+ -+ -+ -+ -+ ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ { echo "$as_me:$LINENO: checking for large file support in C library" >&5 -+echo $ECHO_N "checking for large file support in C library... $ECHO_C" >&6; } -+if test "${ac_cv_large_file_support+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#define _LARGEFILE_SOURCE 1 -+#define _FILE_OFFSET_BITS 64 -+#include -+#include -+#include -+#include -+void h(off_t a) { -+ int fd = open("/tmp/whatever", 0); -+ lseek(fd, a, 0); -+} -+int -+main () -+{ -+h(15); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_large_file_support=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_large_file_support=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_large_file_support" >&5 -+echo "${ECHO_T}$ac_cv_large_file_support" >&6; } -+ if test "x$ac_cv_large_file_support" = xyes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_LARGE_FILE_SUPPORT 1 -+_ACEOF -+ -+ fi -+ -+ { echo "$as_me:$LINENO: checking for off_t" >&5 -+echo $ECHO_N "checking for off_t... $ECHO_C" >&6; } -+if test "${ac_cv_type_off_t+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#if HAVE_LARGE_FILE_SUPPORT && HAVE_INT64_TYPES -+# define _LARGEFILE_SOURCE 1 -+# define _FILE_OFFSET_BITS 64 -+#endif -+#include -+#include -+ -+typedef off_t ac__type_new_; -+int -+main () -+{ -+if ((ac__type_new_ *) 0) -+ return 0; -+if (sizeof (ac__type_new_)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_type_off_t=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_type_off_t=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 -+echo "${ECHO_T}$ac_cv_type_off_t" >&6; } -+ -+# The cast to long int works around a bug in the HP C Compiler -+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -+# This bug is HP SR number 8606223364. -+{ echo "$as_me:$LINENO: checking size of off_t" >&5 -+echo $ECHO_N "checking size of off_t... $ECHO_C" >&6; } -+if test "${ac_cv_sizeof_off_t+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test "$cross_compiling" = yes; then -+ # Depending upon the size, compute the lo and hi bounds. -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#if HAVE_LARGE_FILE_SUPPORT && HAVE_INT64_TYPES -+# define _LARGEFILE_SOURCE 1 -+# define _FILE_OFFSET_BITS 64 -+#endif -+#include -+#include -+ -+ typedef off_t ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_lo=0 ac_mid=0 -+ while :; do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#if HAVE_LARGE_FILE_SUPPORT && HAVE_INT64_TYPES -+# define _LARGEFILE_SOURCE 1 -+# define _FILE_OFFSET_BITS 64 -+#endif -+#include -+#include -+ -+ typedef off_t ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_hi=$ac_mid; break -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_lo=`expr $ac_mid + 1` -+ if test $ac_lo -le $ac_mid; then -+ ac_lo= ac_hi= -+ break -+ fi -+ ac_mid=`expr 2 '*' $ac_mid + 1` -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#if HAVE_LARGE_FILE_SUPPORT && HAVE_INT64_TYPES -+# define _LARGEFILE_SOURCE 1 -+# define _FILE_OFFSET_BITS 64 -+#endif -+#include -+#include -+ -+ typedef off_t ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_hi=-1 ac_mid=-1 -+ while :; do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#if HAVE_LARGE_FILE_SUPPORT && HAVE_INT64_TYPES -+# define _LARGEFILE_SOURCE 1 -+# define _FILE_OFFSET_BITS 64 -+#endif -+#include -+#include -+ -+ typedef off_t ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_lo=$ac_mid; break -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_hi=`expr '(' $ac_mid ')' - 1` -+ if test $ac_mid -le $ac_hi; then -+ ac_lo= ac_hi= -+ break -+ fi -+ ac_mid=`expr 2 '*' $ac_mid` -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_lo= ac_hi= -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+# Binary search between lo and hi bounds. -+while test "x$ac_lo" != "x$ac_hi"; do -+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#if HAVE_LARGE_FILE_SUPPORT && HAVE_INT64_TYPES -+# define _LARGEFILE_SOURCE 1 -+# define _FILE_OFFSET_BITS 64 -+#endif -+#include -+#include -+ -+ typedef off_t ac__type_sizeof_; -+int -+main () -+{ -+static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@; -+test_array @<:@0@:>@ = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_hi=$ac_mid -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_lo=`expr '(' $ac_mid ')' + 1` -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+done -+case $ac_lo in -+?*) ac_cv_sizeof_off_t=$ac_lo;; -+'') if test "$ac_cv_type_off_t" = yes; then -+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t) -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (off_t) -+See \`config.log' for more details." >&2;} -+ { (exit 77); exit 77; }; } -+ else -+ ac_cv_sizeof_off_t=0 -+ fi ;; -+esac -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#if HAVE_LARGE_FILE_SUPPORT && HAVE_INT64_TYPES -+# define _LARGEFILE_SOURCE 1 -+# define _FILE_OFFSET_BITS 64 -+#endif -+#include -+#include -+ -+ typedef off_t ac__type_sizeof_; -+static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); } -+static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); } -+@%:@include -+@%:@include -+int -+main () -+{ -+ -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ return 1; -+ if (((long int) (sizeof (ac__type_sizeof_))) < 0) -+ { -+ long int i = longval (); -+ if (i != ((long int) (sizeof (ac__type_sizeof_)))) -+ return 1; -+ fprintf (f, "%ld\n", i); -+ } -+ else -+ { -+ unsigned long int i = ulongval (); -+ if (i != ((long int) (sizeof (ac__type_sizeof_)))) -+ return 1; -+ fprintf (f, "%lu\n", i); -+ } -+ return ferror (f) || fclose (f) != 0; -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -+ { (case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_try") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_sizeof_off_t=`cat conftest.val` -+else -+ echo "$as_me: program exited with status $ac_status" >&5 -+echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+( exit $ac_status ) -+if test "$ac_cv_type_off_t" = yes; then -+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t) -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (off_t) -+See \`config.log' for more details." >&2;} -+ { (exit 77); exit 77; }; } -+ else -+ ac_cv_sizeof_off_t=0 -+ fi -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+rm -f conftest.val -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_off_t" >&5 -+echo "${ECHO_T}$ac_cv_sizeof_off_t" >&6; } -+ -+ -+ -+cat >>confdefs.h <<_ACEOF -+@%:@define SIZEOF_OFF_T $ac_cv_sizeof_off_t -+_ACEOF -+ -+ -+ -+ -+ -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ -+ -+for ac_header in sys/mman.h -+do -+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ { echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+fi -+ac_res=`eval echo '${'$as_ac_Header'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+else -+ # Is the header compilable? -+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+@%:@include <$ac_header> -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_header_compiler=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_compiler=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -+echo "${ECHO_T}$ac_header_compiler" >&6; } -+ -+# Is the header present? -+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+@%:@include <$ac_header> -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ ac_header_preproc=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_preproc=no -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -+echo "${ECHO_T}$ac_header_preproc" >&6; } -+ -+# So? What about this header? -+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -+ yes:no: ) -+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -+ ac_header_preproc=yes -+ ;; -+ no:yes:* ) -+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -+ -+ ;; -+esac -+{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ eval "$as_ac_Header=\$ac_header_preproc" -+fi -+ac_res=`eval echo '${'$as_ac_Header'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+ -+fi -+if test `eval echo '${'$as_ac_Header'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF -+ -+fi -+ -+done -+ -+ -+ -+for ac_header in stdlib.h unistd.h -+do -+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ { echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+fi -+ac_res=`eval echo '${'$as_ac_Header'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+else -+ # Is the header compilable? -+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+@%:@include <$ac_header> -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_header_compiler=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_compiler=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -+echo "${ECHO_T}$ac_header_compiler" >&6; } -+ -+# Is the header present? -+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+@%:@include <$ac_header> -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ ac_header_preproc=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_preproc=no -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -+echo "${ECHO_T}$ac_header_preproc" >&6; } -+ -+# So? What about this header? -+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -+ yes:no: ) -+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -+ ac_header_preproc=yes -+ ;; -+ no:yes:* ) -+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -+ -+ ;; -+esac -+{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ eval "$as_ac_Header=\$ac_header_preproc" -+fi -+ac_res=`eval echo '${'$as_ac_Header'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+ -+fi -+if test `eval echo '${'$as_ac_Header'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF -+ -+fi -+ -+done -+ -+ -+for ac_func in getpagesize -+do -+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -+{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+/* Define $ac_func to an innocuous variant, in case declares $ac_func. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define $ac_func innocuous_$ac_func -+ -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char $ac_func (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ -+ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ -+#undef $ac_func -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char $ac_func (); -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined __stub_$ac_func || defined __stub___$ac_func -+choke me -+#endif -+ -+int -+main () -+{ -+return $ac_func (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ eval "$as_ac_var=yes" -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ eval "$as_ac_var=no" -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+ac_res=`eval echo '${'$as_ac_var'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+if test `eval echo '${'$as_ac_var'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF -+ -+fi -+done -+ -+{ echo "$as_me:$LINENO: checking for working mmap" >&5 -+echo $ECHO_N "checking for working mmap... $ECHO_C" >&6; } -+if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test "$cross_compiling" = yes; then -+ ac_cv_func_mmap_fixed_mapped=no -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+/* malloc might have been renamed as rpl_malloc. */ -+#undef malloc -+ -+/* Thanks to Mike Haertel and Jim Avera for this test. -+ Here is a matrix of mmap possibilities: -+ mmap private not fixed -+ mmap private fixed at somewhere currently unmapped -+ mmap private fixed at somewhere already mapped -+ mmap shared not fixed -+ mmap shared fixed at somewhere currently unmapped -+ mmap shared fixed at somewhere already mapped -+ For private mappings, we should verify that changes cannot be read() -+ back from the file, nor mmap's back from the file at a different -+ address. (There have been systems where private was not correctly -+ implemented like the infamous i386 svr4.0, and systems where the -+ VM page cache was not coherent with the file system buffer cache -+ like early versions of FreeBSD and possibly contemporary NetBSD.) -+ For shared mappings, we should conversely verify that changes get -+ propagated back to all the places they're supposed to be. -+ -+ Grep wants private fixed already mapped. -+ The main things grep needs to know about mmap are: -+ * does it exist and is it safe to write into the mmap'd area -+ * how to use it (BSD variants) */ -+ -+#include -+#include -+ -+#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H -+char *malloc (); -+#endif -+ -+/* This mess was copied from the GNU getpagesize.h. */ -+#ifndef HAVE_GETPAGESIZE -+/* Assume that all systems that can run configure have sys/param.h. */ -+# ifndef HAVE_SYS_PARAM_H -+# define HAVE_SYS_PARAM_H 1 -+# endif -+ -+# ifdef _SC_PAGESIZE -+# define getpagesize() sysconf(_SC_PAGESIZE) -+# else /* no _SC_PAGESIZE */ -+# ifdef HAVE_SYS_PARAM_H -+# include -+# ifdef EXEC_PAGESIZE -+# define getpagesize() EXEC_PAGESIZE -+# else /* no EXEC_PAGESIZE */ -+# ifdef NBPG -+# define getpagesize() NBPG * CLSIZE -+# ifndef CLSIZE -+# define CLSIZE 1 -+# endif /* no CLSIZE */ -+# else /* no NBPG */ -+# ifdef NBPC -+# define getpagesize() NBPC -+# else /* no NBPC */ -+# ifdef PAGESIZE -+# define getpagesize() PAGESIZE -+# endif /* PAGESIZE */ -+# endif /* no NBPC */ -+# endif /* no NBPG */ -+# endif /* no EXEC_PAGESIZE */ -+# else /* no HAVE_SYS_PARAM_H */ -+# define getpagesize() 8192 /* punt totally */ -+# endif /* no HAVE_SYS_PARAM_H */ -+# endif /* no _SC_PAGESIZE */ -+ -+#endif /* no HAVE_GETPAGESIZE */ -+ -+int -+main () -+{ -+ char *data, *data2, *data3; -+ int i, pagesize; -+ int fd; -+ -+ pagesize = getpagesize (); -+ -+ /* First, make a file with some known garbage in it. */ -+ data = (char *) malloc (pagesize); -+ if (!data) -+ return 1; -+ for (i = 0; i < pagesize; ++i) -+ *(data + i) = rand (); -+ umask (0); -+ fd = creat ("conftest.mmap", 0600); -+ if (fd < 0) -+ return 1; -+ if (write (fd, data, pagesize) != pagesize) -+ return 1; -+ close (fd); -+ -+ /* Next, try to mmap the file at a fixed address which already has -+ something else allocated at it. If we can, also make sure that -+ we see the same garbage. */ -+ fd = open ("conftest.mmap", O_RDWR); -+ if (fd < 0) -+ return 1; -+ data2 = (char *) malloc (2 * pagesize); -+ if (!data2) -+ return 1; -+ data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1); -+ if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, -+ MAP_PRIVATE | MAP_FIXED, fd, 0L)) -+ return 1; -+ for (i = 0; i < pagesize; ++i) -+ if (*(data + i) != *(data2 + i)) -+ return 1; -+ -+ /* Finally, make sure that changes to the mapped area do not -+ percolate back to the file as seen by read(). (This is a bug on -+ some variants of i386 svr4.0.) */ -+ for (i = 0; i < pagesize; ++i) -+ *(data2 + i) = *(data2 + i) + 1; -+ data3 = (char *) malloc (pagesize); -+ if (!data3) -+ return 1; -+ if (read (fd, data3, pagesize) != pagesize) -+ return 1; -+ for (i = 0; i < pagesize; ++i) -+ if (*(data + i) != *(data3 + i)) -+ return 1; -+ close (fd); -+ return 0; -+} -+_ACEOF -+rm -f conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -+ { (case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_try") 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_func_mmap_fixed_mapped=yes -+else -+ echo "$as_me: program exited with status $ac_status" >&5 -+echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+( exit $ac_status ) -+ac_cv_func_mmap_fixed_mapped=no -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+ -+ -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 -+echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6; } -+if test $ac_cv_func_mmap_fixed_mapped = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_MMAP 1 -+_ACEOF -+ -+fi -+rm -f conftest.mmap -+ -+ac_ext=cpp -+ac_cpp='$CXXCPP $CPPFLAGS' -+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -+ -+ -+for ac_func in madvise -+do -+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -+{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+/* Define $ac_func to an innocuous variant, in case declares $ac_func. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define $ac_func innocuous_$ac_func -+ -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char $ac_func (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ -+ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ -+#undef $ac_func -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char $ac_func (); -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined __stub_$ac_func || defined __stub___$ac_func -+choke me -+#endif -+ -+int -+main () -+{ -+return $ac_func (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ eval "$as_ac_var=yes" -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ eval "$as_ac_var=no" -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+ac_res=`eval echo '${'$as_ac_var'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+if test `eval echo '${'$as_ac_var'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF -+ -+fi -+done -+ -+{ echo "$as_me:$LINENO: checking whether madvise is declared" >&5 -+echo $ECHO_N "checking whether madvise is declared... $ECHO_C" >&6; } -+if test "${ac_cv_have_decl_madvise+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#if HAVE_SYS_MMAN_H -+#include -+#include -+#endif -+ -+int -+main () -+{ -+#ifndef madvise -+ (void) madvise; -+#endif -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_have_decl_madvise=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_have_decl_madvise=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_madvise" >&5 -+echo "${ECHO_T}$ac_cv_have_decl_madvise" >&6; } -+if test $ac_cv_have_decl_madvise = yes; then -+ -+cat >>confdefs.h <<_ACEOF -+@%:@define HAVE_DECL_MADVISE 1 -+_ACEOF -+ -+ -+else -+ cat >>confdefs.h <<_ACEOF -+@%:@define HAVE_DECL_MADVISE 0 -+_ACEOF -+ -+ -+fi -+ -+ -+ -+ -+ -+EXTRA_DRIVER_OBJS= -+EXTRA_TOOL_OBJS= -+if test "x$enable_ip6" = xyes; then -+ EXTRA_DRIVER_OBJS="ip6address.o ip6flowid.o ip6table.o $EXTRA_DRIVER_OBJS" -+ EXTRA_TOOL_OBJS="ip6address.o $EXTRA_TOOL_OBJS" -+fi -+ -+ -+ -+ -+ -+if test $ac_have_linux_kernel = y; then -+ -+ -+if test "$linux_system_map" = NONE; then -+ linux_system_map=$linuxdir/System.map -+ if test "x$linux_system_map_boot" != xno -a ! -f "$linux_system_map"; then -+ linux_system_map=/boot/System.map-"$linux_system_map_boot" -+ fi -+fi -+ -+if test ! -f "$linux_system_map"; then -+ if test "x$enable_linuxmodule_default" = xyes; then -+ { echo "$as_me:$LINENO: WARNING: -+========================================= -+ -+Can't find Linux System.map file '$linux_system_map', -+so I won't compile the linuxmodule driver. -+(You may need the --with-linux=DIR and/or --with-linux-map=MAP options.) -+ -+=========================================" >&5 -+echo "$as_me: WARNING: -+========================================= -+ -+Can't find Linux System.map file '$linux_system_map', -+so I won't compile the linuxmodule driver. -+(You may need the --with-linux=DIR and/or --with-linux-map=MAP options.) -+ -+=========================================" >&2;} -+ ac_have_linux_kernel=no -+ else -+ { { echo "$as_me:$LINENO: error: -+========================================= -+ -+Can't find Linux System.map file '$linux_system_map'. -+(You may need the --with-linux=DIR and/or --with-linux-map=MAP options.) -+ -+=========================================" >&5 -+echo "$as_me: error: -+========================================= -+ -+Can't find Linux System.map file '$linux_system_map'. -+(You may need the --with-linux=DIR and/or --with-linux-map=MAP options.) -+ -+=========================================" >&2;} -+ { (exit 1); exit 1; }; } -+ fi -+fi -+ -+fi -+ -+ -+if test $ac_have_linux_kernel = y; then -+ -+{ echo "$as_me:$LINENO: checking for Linux 2.6" >&5 -+echo $ECHO_N "checking for Linux 2.6... $ECHO_C" >&6; } -+if test "${ac_cv_linux26+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if grep '^PATCHLEVEL *= *6' $linuxdir/Makefile >/dev/null 2>&1; then ac_cv_linux26=1; else ac_cv_linux26=0; fi -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_linux26" >&5 -+echo "${ECHO_T}$ac_cv_linux26" >&6; } -+LINUXMODULE_2_6=$ac_cv_linux26 -+ -+if test $LINUXMODULE_2_6 = 1; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_LINUXMODULE_2_6 1 -+_ACEOF -+ -+fi -+ -+{ echo "$as_me:$LINENO: checking for Click Linux kernel extensions" >&5 -+echo $ECHO_N "checking for Click Linux kernel extensions... $ECHO_C" >&6; } -+if test "${ac_cv_click_kernel+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if grep register_net_in $linux_system_map >/dev/null 2>&1; then -+ ac_cv_click_kernel=yes -+else ac_cv_click_kernel=no; fi -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_click_kernel" >&5 -+echo "${ECHO_T}$ac_cv_click_kernel" >&6; } -+if test $ac_cv_click_kernel = yes; then -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_CLICK_KERNEL 1 -+_ACEOF -+ -+fi -+ -+{ echo "$as_me:$LINENO: checking for Click Linux kernel extensions for transmit notification" >&5 -+echo $ECHO_N "checking for Click Linux kernel extensions for transmit notification... $ECHO_C" >&6; } -+if test "${ac_cv_click_kernel_tx_notify+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if grep register_net_tx $linux_system_map >/dev/null 2>&1; then -+ ac_cv_click_kernel_tx_notify=yes -+else ac_cv_click_kernel_tx_notify=no; fi -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_click_kernel_tx_notify" >&5 -+echo "${ECHO_T}$ac_cv_click_kernel_tx_notify" >&6; } -+if test $ac_cv_click_kernel_tx_notify = yes; then -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_CLICK_KERNEL_TX_NOTIFY 1 -+_ACEOF -+ -+fi -+ -+{ echo "$as_me:$LINENO: checking for read_net_skbcount kernel extension" >&5 -+echo $ECHO_N "checking for read_net_skbcount kernel extension... $ECHO_C" >&6; } -+if test "${ac_cv_linux_read_net_skbcount+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if grep read_net_skbcount $linux_system_map >/dev/null 2>&1; then -+ ac_cv_linux_read_net_skbcount=yes -+else ac_cv_linux_read_net_skbcount=no; fi -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_linux_read_net_skbcount" >&5 -+echo "${ECHO_T}$ac_cv_linux_read_net_skbcount" >&6; } -+if test $ac_cv_linux_read_net_skbcount = yes; then -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_LINUX_READ_NET_SKBCOUNT 1 -+_ACEOF -+ -+fi -+ -+{ echo "$as_me:$LINENO: checking for strlen kernel symbol" >&5 -+echo $ECHO_N "checking for strlen kernel symbol... $ECHO_C" >&6; } -+if test "${ac_cv_linux_strlen_exposed+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if grep ' strlen' $linux_system_map >/dev/null 2>&1; then -+ ac_cv_linux_strlen_exposed=yes -+else ac_cv_linux_strlen_exposed=no; fi -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_linux_strlen_exposed" >&5 -+echo "${ECHO_T}$ac_cv_linux_strlen_exposed" >&6; } -+if test $ac_cv_linux_strlen_exposed = yes; then -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_LINUX_STRLEN_EXPOSED 1 -+_ACEOF -+ -+fi -+ -+{ echo "$as_me:$LINENO: checking for tulip_interrupt_hook kernel symbol" >&5 -+echo $ECHO_N "checking for tulip_interrupt_hook kernel symbol... $ECHO_C" >&6; } -+if test "${ac_cv_linux_tulip_intr_hook+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if grep ' tulip_interrupt_hook' $linux_system_map >/dev/null 2>&1; then -+ ac_cv_linux_tulip_intr_hook=yes -+else ac_cv_linux_tulip_intr_hook=no; fi -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_linux_tulip_intr_hook" >&5 -+echo "${ECHO_T}$ac_cv_linux_tulip_intr_hook" >&6; } -+if test $ac_cv_linux_tulip_intr_hook = yes; then -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_LINUX_TULIP_INTERRUPT_HOOK 1 -+_ACEOF -+ -+fi -+ -+{ echo "$as_me:$LINENO: checking for device polling kernel extension" >&5 -+echo $ECHO_N "checking for device polling kernel extension... $ECHO_C" >&6; } -+if test "${ac_cv_linux_poll_extension+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if grep polling $linuxdir/include/linux/netdevice.h >/dev/null 2>&1; then -+ ac_cv_linux_poll_extension=yes -+else ac_cv_linux_poll_extension=no; fi -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_linux_poll_extension" >&5 -+echo "${ECHO_T}$ac_cv_linux_poll_extension" >&6; } -+if test $ac_cv_linux_poll_extension = yes; then -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_LINUX_POLLING 1 -+_ACEOF -+ -+fi -+ -+{ echo "$as_me:$LINENO: checking for atomic_set_mask" >&5 -+echo $ECHO_N "checking for atomic_set_mask... $ECHO_C" >&6; } -+if test "${ac_cv_linux_atomic_set_mask+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if grep atomic_set_mask $linuxdir/include/asm/atomic.h >/dev/null 2>&1; then -+ ac_cv_linux_atomic_set_mask=yes -+else ac_cv_linux_atomic_set_mask=no; fi -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_linux_atomic_set_mask" >&5 -+echo "${ECHO_T}$ac_cv_linux_atomic_set_mask" >&6; } -+if test $ac_cv_linux_atomic_set_mask = yes; then -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_LINUX_ATOMIC_SET_MASK 1 -+_ACEOF -+ -+fi -+ -+{ echo "$as_me:$LINENO: checking for SMP" >&5 -+echo $ECHO_N "checking for SMP... $ECHO_C" >&6; } -+if test "${ac_cv_smp+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if grep "#define CONFIG_SMP 1" $linuxdir/include/linux/autoconf.h >/dev/null 2>&1; then -+ ac_cv_smp=yes -+else ac_cv_smp=no; fi -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_smp" >&5 -+echo "${ECHO_T}$ac_cv_smp" >&6; } -+if test $ac_cv_smp = yes; then -+ cat >>confdefs.h <<\_ACEOF -+@%:@define __SMP__ 1 -+_ACEOF -+ -+ KERNEL_CXX="$KERNEL_CXX -D__SMP__" -+fi -+ -+{ echo "$as_me:$LINENO: checking for " >&5 -+echo $ECHO_N "checking for ... $ECHO_C" >&6; } -+if test "${ac_cv_linux_asm_alternative_h+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -r $linuxdir/include/asm/alternative.h >/dev/null 2>&1; then -+ ac_cv_linux_asm_alternative_h=yes -+else ac_cv_linux_asm_alternative_h=no; fi -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_linux_asm_alternative_h" >&5 -+echo "${ECHO_T}$ac_cv_linux_asm_alternative_h" >&6; } -+if test $ac_cv_linux_asm_alternative_h = yes; then -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_LINUX_ASM_ALTERNATIVE_H 1 -+_ACEOF -+ -+fi -+ -+fi -+ -+ -+ -+if test $ac_have_bsd_kernel = y; then -+ KERNEL_CXX="$KERNEL_CXX -fpermissive" -+ { echo "$as_me:$LINENO: checking FreeBSD version" >&5 -+echo $ECHO_N "checking FreeBSD version... $ECHO_C" >&6; } -+if test "${ac_cv_freebsd_version+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ -+ save_flags="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS -I$freebsd_includedir" -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+#if __FreeBSD_version < 500000 -+#include -+#endif -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_freebsd_version=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_freebsd_version=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ CPPFLAGS="$save_flags" -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_freebsd_version" >&5 -+echo "${ECHO_T}$ac_cv_freebsd_version" >&6; } -+ if test $ac_cv_freebsd_version = yes; then -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_CLICK_BSD_KERNEL 1 -+_ACEOF -+ -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_BSD_POLLING 1 -+_ACEOF -+ -+ else -+ { echo "$as_me:$LINENO: WARNING: -+========================================= -+ -+Your version of FreeBSD is old. Click works with FreeBSD 5.x and later. -+ -+=========================================" >&5 -+echo "$as_me: WARNING: -+========================================= -+ -+Your version of FreeBSD is old. Click works with FreeBSD 5.x and later. -+ -+=========================================" >&2;} -+ fi -+fi -+ -+ -+ -+# Check whether --enable-stride was given. -+if test "${enable_stride+set}" = set; then -+ enableval=$enable_stride; : -+else -+ enable_stride=yes -+fi -+ -+if test $enable_stride = yes; then -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_STRIDE_SCHED 1 -+_ACEOF -+ -+fi -+ -+# Check whether --enable-task-heap was given. -+if test "${enable_task_heap+set}" = set; then -+ enableval=$enable_task_heap; : -+else -+ enable_task_heap=no -+fi -+ -+if test $enable_task_heap = yes; then -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_TASK_HEAP 1 -+_ACEOF -+ -+fi -+ -+ -+ -+# Check whether --enable-dmalloc was given. -+if test "${enable_dmalloc+set}" = set; then -+ enableval=$enable_dmalloc; : -+else -+ enable_dmalloc=no -+fi -+ -+if test $enable_dmalloc = yes; then -+ cat >>confdefs.h <<\_ACEOF -+@%:@define CLICK_DMALLOC 1 -+_ACEOF -+ -+fi -+ -+ -+ -+# Check whether --enable-intel-cpu was given. -+if test "${enable_intel_cpu+set}" = set; then -+ enableval=$enable_intel_cpu; : -+else -+ enable_intel_cpu=no -+fi -+ -+if test $enable_intel_cpu = yes; then -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_INTEL_CPU 1 -+_ACEOF -+ -+fi -+ -+ -+ -+ -+ -+ -+ -+for ac_header in linux/if_tun.h net/if_tun.h net/if_tap.h net/bpf.h -+do -+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ { echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+fi -+ac_res=`eval echo '${'$as_ac_Header'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+else -+ # Is the header compilable? -+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+@%:@include <$ac_header> -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_header_compiler=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_compiler=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -+echo "${ECHO_T}$ac_header_compiler" >&6; } -+ -+# Is the header present? -+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+@%:@include <$ac_header> -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ ac_header_preproc=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_preproc=no -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -+echo "${ECHO_T}$ac_header_preproc" >&6; } -+ -+# So? What about this header? -+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in -+ yes:no: ) -+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -+ ac_header_preproc=yes -+ ;; -+ no:yes:* ) -+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -+ -+ ;; -+esac -+{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ eval "$as_ac_Header=\$ac_header_preproc" -+fi -+ac_res=`eval echo '${'$as_ac_Header'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+ -+fi -+if test `eval echo '${'$as_ac_Header'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF -+ -+fi -+ -+done -+ -+ -+ -+ -+POSSIBLE_DRIVERS= -+for i in bsdmodule exopc linuxmodule ns userlevel; do -+ test -f $srcdir/$i/Makefile.in && POSSIBLE_DRIVERS="$POSSIBLE_DRIVERS $i" -+done -+ -+ -+ -+ -+DRIVERS= -+ -+ -+HAVE_USERLEVEL_DRIVER=0 -+ -+HAVE_LINUXMODULE_DRIVER=0 -+ -+HAVE_BSDMODULE_DRIVER=0 -+ -+ -+OTHER_TARGETS= -+ -+ -+for i in click-align click-check click-combine click-devirtualize click-fastclassifier click-flatten click-ipopt click-mkmindriver click-pretty click-undead click-xform click2xml; do -+ test -d $srcdir/tools/$i && \ -+ TOOLDIRS="$TOOLDIRS $i" TOOL_TARGETS="$TOOL_TARGETS $i" -+done -+for i in click-install; do -+ test -d $srcdir/tools/$i && TOOLDIRS="$TOOLDIRS $i" -+done -+ -+ -+ -+ -+ -+if test "$enable_userlevel" = yes; then -+ -+ -+ -+ HAVE_PCAP=yes -+ if test "${PCAP_INCLUDES-NO}" = NO; then -+ { echo "$as_me:$LINENO: checking for pcap.h" >&5 -+echo $ECHO_N "checking for pcap.h... $ECHO_C" >&6; } -+if test "${ac_cv_pcap_header_path+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ ac_cv_pcap_header_path="found" -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_pcap_header_path='not found' -+ test -r /usr/local/include/pcap/pcap.h && \ -+ ac_cv_pcap_header_path='-I/usr/local/include/pcap' -+ test -r /usr/include/pcap/pcap.h && \ -+ ac_cv_pcap_header_path='-I/usr/include/pcap' -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_pcap_header_path" >&5 -+echo "${ECHO_T}$ac_cv_pcap_header_path" >&6; } -+ if test "$ac_cv_pcap_header_path" = 'not found'; then -+ HAVE_PCAP= -+ elif test "$ac_cv_pcap_header_path" != 'found'; then -+ PCAP_INCLUDES="$ac_cv_pcap_header_path" -+ fi -+ fi -+ -+ if test "$HAVE_PCAP" = yes; then -+ { echo "$as_me:$LINENO: checking whether pcap.h works" >&5 -+echo $ECHO_N "checking whether pcap.h works... $ECHO_C" >&6; } -+if test "${ac_cv_working_pcap_h+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ -+ saveflags="$CPPFLAGS" -+ CPPFLAGS="$saveflags $PCAP_INCLUDES" -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ ac_cv_working_pcap_h=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_working_pcap_h=no -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+ CPPFLAGS="$saveflags" -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_working_pcap_h" >&5 -+echo "${ECHO_T}$ac_cv_working_pcap_h" >&6; } -+ test "$ac_cv_working_pcap_h" != yes && HAVE_PCAP= -+ fi -+ -+ if test "$HAVE_PCAP" = yes; then -+ saveflags="$CPPFLAGS" -+ CPPFLAGS="$saveflags $PCAP_INCLUDES" -+ { echo "$as_me:$LINENO: checking for bpf_timeval in pcap.h" >&5 -+echo $ECHO_N "checking for bpf_timeval in pcap.h... $ECHO_C" >&6; } -+if test "${ac_cv_bpf_timeval+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+ -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "bpf_timeval" >/dev/null 2>&1; then -+ ac_cv_bpf_timeval=yes -+else -+ ac_cv_bpf_timeval=no -+fi -+rm -f conftest* -+ -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_bpf_timeval" >&5 -+echo "${ECHO_T}$ac_cv_bpf_timeval" >&6; } -+ if test "$ac_cv_bpf_timeval" = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_BPF_TIMEVAL 1 -+_ACEOF -+ -+ fi -+ { echo "$as_me:$LINENO: checking whether pcap_setnonblock is declared" >&5 -+echo $ECHO_N "checking whether pcap_setnonblock is declared... $ECHO_C" >&6; } -+if test "${ac_cv_have_decl_pcap_setnonblock+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+ -+int -+main () -+{ -+#ifndef pcap_setnonblock -+ (void) pcap_setnonblock; -+#endif -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_have_decl_pcap_setnonblock=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_have_decl_pcap_setnonblock=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_pcap_setnonblock" >&5 -+echo "${ECHO_T}$ac_cv_have_decl_pcap_setnonblock" >&6; } -+if test $ac_cv_have_decl_pcap_setnonblock = yes; then -+ -+cat >>confdefs.h <<_ACEOF -+@%:@define HAVE_DECL_PCAP_SETNONBLOCK 1 -+_ACEOF -+ -+ -+else -+ cat >>confdefs.h <<_ACEOF -+@%:@define HAVE_DECL_PCAP_SETNONBLOCK 0 -+_ACEOF -+ -+ -+fi -+ -+ -+ CPPFLAGS="$saveflags" -+ fi -+ -+ test "$HAVE_PCAP" != yes && PCAP_INCLUDES= -+ -+ -+ -+ -+ if test "$HAVE_PCAP" = yes; then -+ if test "${PCAP_LIBS-NO}" = NO; then -+ { echo "$as_me:$LINENO: checking for -lpcap" >&5 -+echo $ECHO_N "checking for -lpcap... $ECHO_C" >&6; } -+if test "${ac_cv_pcap_library_path+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ -+ saveflags="$LDFLAGS" -+ savelibs="$LIBS" -+ LIBS="$savelibs -lpcap $SOCKET_LIBS" -+ ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char pcap_open_live (); -+int -+main () -+{ -+return pcap_open_live (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ ac_cv_pcap_library_path="found" -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ LDFLAGS="$saveflags -L/usr/local/lib" -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char pcap_open_live (); -+int -+main () -+{ -+return pcap_open_live (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ ac_cv_pcap_library_path="-L/usr/local/lib" -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_pcap_library_path="not found" -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+ LDFLAGS="$saveflags" -+ LIBS="$savelibs" -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_pcap_library_path" >&5 -+echo "${ECHO_T}$ac_cv_pcap_library_path" >&6; } -+ else -+ { echo "$as_me:$LINENO: checking for -lpcap in \"$PCAP_LIBS\"" >&5 -+echo $ECHO_N "checking for -lpcap in \"$PCAP_LIBS\"... $ECHO_C" >&6; } -+if test "${ac_cv_pcap_library_path+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ -+ saveflags="$LDFLAGS" -+ LDFLAGS="$saveflags $PCAP_LIBS" -+ savelibs="$LIBS" -+ LIBS="$savelibs -lpcap $SOCKET_LIBS" -+ ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char pcap_open_live (); -+int -+main () -+{ -+return pcap_open_live (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ ac_cv_pcap_library_path="$PCAP_LIBS" -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_pcap_library_path="not found" -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+ LDFLAGS="$saveflags" -+ LIBS="$savelibs" -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_pcap_library_path" >&5 -+echo "${ECHO_T}$ac_cv_pcap_library_path" >&6; } -+ fi -+ if test "$ac_cv_pcap_library_path" = "found"; then -+ PCAP_LIBS='-lpcap' -+ elif test "$ac_cv_pcap_library_path" != "not found"; then -+ PCAP_LIBS="$ac_cv_pcap_library_path -lpcap" -+ else -+ HAVE_PCAP= -+ fi -+ fi -+ -+ test "$HAVE_PCAP" != yes && PCAP_LIBS= -+ -+ -+ if test "$HAVE_PCAP" = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_PCAP 1 -+_ACEOF -+ -+ -+ saveflags="$LDFLAGS" -+ LDFLAGS="$saveflags $PCAP_LIBS" -+ -+for ac_func in pcap_setnonblock -+do -+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -+{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+/* Define $ac_func to an innocuous variant, in case declares $ac_func. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define $ac_func innocuous_$ac_func -+ -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char $ac_func (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ -+ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ -+#undef $ac_func -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char $ac_func (); -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined __stub_$ac_func || defined __stub___$ac_func -+choke me -+#endif -+ -+int -+main () -+{ -+return $ac_func (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ eval "$as_ac_var=yes" -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ eval "$as_ac_var=no" -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+ac_res=`eval echo '${'$as_ac_var'}'` -+ { echo "$as_me:$LINENO: result: $ac_res" >&5 -+echo "${ECHO_T}$ac_res" >&6; } -+if test `eval echo '${'$as_ac_var'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF -+ -+fi -+done -+ -+ LDFLAGS="$saveflags" -+ fi -+ -+ if test "$HAVE_PCAP" != yes -a "$ac_cv_under_linux" != yes; then -+ { echo "$as_me:$LINENO: WARNING: -+========================================= -+ -+pcap.h and/or -lpcap not found; user-level driver can't steal packets. -+ -+=========================================" >&5 -+echo "$as_me: WARNING: -+========================================= -+ -+pcap.h and/or -lpcap not found; user-level driver can't steal packets. -+ -+=========================================" >&2;} -+ fi -+ DRIVERS="$DRIVERS userlevel" -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_USERLEVEL_DRIVER 1 -+_ACEOF -+ -+ HAVE_USERLEVEL_DRIVER=1 -+fi -+ -+ -+ -+{ echo "$as_me:$LINENO: checking whether struct if_data has ifi_datalen" >&5 -+echo $ECHO_N "checking whether struct if_data has ifi_datalen... $ECHO_C" >&6; } -+if test "${ac_cv_if_data_ifi_datalen+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+#include -+ -+int -+main () -+{ -+struct if_msghdr ifm; ifm.ifm_data.ifi_datalen = 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_if_data_ifi_datalen=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_if_data_ifi_datalen=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_if_data_ifi_datalen" >&5 -+echo "${ECHO_T}$ac_cv_if_data_ifi_datalen" >&6; } -+if test "x$ac_cv_if_data_ifi_datalen" = xyes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_IF_DATA_IFI_DATALEN 1 -+_ACEOF -+ -+fi -+ -+{ echo "$as_me:$LINENO: checking whether struct sockaddr_in has sin_len" >&5 -+echo $ECHO_N "checking whether struct sockaddr_in has sin_len... $ECHO_C" >&6; } -+if test "${ac_cv_sockaddr_in_sin_len+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+#include -+ -+int -+main () -+{ -+struct sockaddr_in sin; sin.sin_len = 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_sockaddr_in_sin_len=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_sockaddr_in_sin_len=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_sockaddr_in_sin_len" >&5 -+echo "${ECHO_T}$ac_cv_sockaddr_in_sin_len" >&6; } -+if test "x$ac_cv_sockaddr_in_sin_len" = xyes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_SOCKADDR_IN_SIN_LEN 1 -+_ACEOF -+ -+fi -+ -+ -+ -+explicit_proper=yes -+ -+# Check whether --with-proper was given. -+if test "${with_proper+set}" = set; then -+ withval=$with_proper; properprefix=$withval; if test -z "$withval" -o "$withval" = yes; then properprefix=; fi -+else -+ properprefix=no; explicit_proper=no -+fi -+ -+if test "$properprefix" != no; then -+ -+ saveflags="$CPPFLAGS"; test -n "$properprefix" && CPPFLAGS="$CPPFLAGS -I$properprefix/include" -+ if test "${ac_cv_header_prop_h+set}" = set; then -+ { echo "$as_me:$LINENO: checking for prop.h" >&5 -+echo $ECHO_N "checking for prop.h... $ECHO_C" >&6; } -+if test "${ac_cv_header_prop_h+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_header_prop_h" >&5 -+echo "${ECHO_T}$ac_cv_header_prop_h" >&6; } -+else -+ # Is the header compilable? -+{ echo "$as_me:$LINENO: checking prop.h usability" >&5 -+echo $ECHO_N "checking prop.h usability... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+@%:@include -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_header_compiler=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_compiler=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -+echo "${ECHO_T}$ac_header_compiler" >&6; } -+ -+# Is the header present? -+{ echo "$as_me:$LINENO: checking prop.h presence" >&5 -+echo $ECHO_N "checking prop.h presence... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+@%:@include -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ ac_header_preproc=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_preproc=no -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -+echo "${ECHO_T}$ac_header_preproc" >&6; } -+ -+# So? What about this header? -+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -+ yes:no: ) -+ { echo "$as_me:$LINENO: WARNING: prop.h: accepted by the compiler, rejected by the preprocessor!" >&5 -+echo "$as_me: WARNING: prop.h: accepted by the compiler, rejected by the preprocessor!" >&2;} -+ { echo "$as_me:$LINENO: WARNING: prop.h: proceeding with the compiler's result" >&5 -+echo "$as_me: WARNING: prop.h: proceeding with the compiler's result" >&2;} -+ ac_header_preproc=yes -+ ;; -+ no:yes:* ) -+ { echo "$as_me:$LINENO: WARNING: prop.h: present but cannot be compiled" >&5 -+echo "$as_me: WARNING: prop.h: present but cannot be compiled" >&2;} -+ { echo "$as_me:$LINENO: WARNING: prop.h: check for missing prerequisite headers?" >&5 -+echo "$as_me: WARNING: prop.h: check for missing prerequisite headers?" >&2;} -+ { echo "$as_me:$LINENO: WARNING: prop.h: see the Autoconf documentation" >&5 -+echo "$as_me: WARNING: prop.h: see the Autoconf documentation" >&2;} -+ { echo "$as_me:$LINENO: WARNING: prop.h: section \"Present But Cannot Be Compiled\"" >&5 -+echo "$as_me: WARNING: prop.h: section \"Present But Cannot Be Compiled\"" >&2;} -+ { echo "$as_me:$LINENO: WARNING: prop.h: proceeding with the preprocessor's result" >&5 -+echo "$as_me: WARNING: prop.h: proceeding with the preprocessor's result" >&2;} -+ { echo "$as_me:$LINENO: WARNING: prop.h: in the future, the compiler will take precedence" >&5 -+echo "$as_me: WARNING: prop.h: in the future, the compiler will take precedence" >&2;} -+ -+ ;; -+esac -+{ echo "$as_me:$LINENO: checking for prop.h" >&5 -+echo $ECHO_N "checking for prop.h... $ECHO_C" >&6; } -+if test "${ac_cv_header_prop_h+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_cv_header_prop_h=$ac_header_preproc -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_header_prop_h" >&5 -+echo "${ECHO_T}$ac_cv_header_prop_h" >&6; } -+ -+fi -+if test $ac_cv_header_prop_h = yes; then -+ have_prop_h=yes -+else -+ have_prop_h=no -+fi -+ -+ -+ CPPFLAGS="$saveflags" -+ -+ ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ saveflags="$LDFLAGS"; test -n "$properprefix" && LDFLAGS="$LDFLAGS -L$properprefix/lib" -+ { echo "$as_me:$LINENO: checking for prop_open in -lproper" >&5 -+echo $ECHO_N "checking for prop_open in -lproper... $ECHO_C" >&6; } -+if test "${ac_cv_lib_proper_prop_open+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-lproper $LIBS" -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char prop_open (); -+int -+main () -+{ -+return prop_open (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ ac_cv_lib_proper_prop_open=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_lib_proper_prop_open=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_lib_proper_prop_open" >&5 -+echo "${ECHO_T}$ac_cv_lib_proper_prop_open" >&6; } -+if test $ac_cv_lib_proper_prop_open = yes; then -+ have_libproper=yes -+else -+ have_libproper=no -+fi -+ -+ LDFLAGS="$saveflags" -+ ac_ext=cpp -+ac_cpp='$CXXCPP $CPPFLAGS' -+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -+ -+ -+ if test $have_prop_h = yes -a $have_libproper = yes; then -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_PROPER 1 -+_ACEOF -+ -+ test -n "$properprefix" && PROPER_INCLUDES="-I$properprefix/include" && PROPER_LIBS="-L$properprefix/lib" -+ PROPER_LIBS="$PROPER_LIBS -lproper" -+ elif test $explicit_proper = yes; then -+ PROPER_INCLUDES= PROPER_LIBS= -+ { { echo "$as_me:$LINENO: error: -+========================================= -+ -+You explicitly specified --with-proper, but I can't find the proper headers -+and/or libraries where you said they would be. Run again supplying -+--without-proper or --with-proper=PREFIX. -+ -+=========================================" >&5 -+echo "$as_me: error: -+========================================= -+ -+You explicitly specified --with-proper, but I can't find the proper headers -+and/or libraries where you said they would be. Run again supplying -+--without-proper or --with-proper=PREFIX. -+ -+=========================================" >&2;} -+ { (exit 1); exit 1; }; } -+ fi -+fi -+ -+ -+ -+ -+ -+explicit_expat=yes -+ -+# Check whether --with-expat was given. -+if test "${with_expat+set}" = set; then -+ withval=$with_expat; expatprefix=$withval; if test -z "$withval" -o "$withval" = yes; then expatprefix=; fi -+else -+ expatprefix=; explicit_expat=no -+fi -+ -+ -+XML2CLICK= -+if test "$expatprefix" != no; then -+ saveflags="$CPPFLAGS"; test -n "$expatprefix" && CPPFLAGS="$CPPFLAGS -I$expatprefix/include" -+ if test "${ac_cv_header_expat_h+set}" = set; then -+ { echo "$as_me:$LINENO: checking for expat.h" >&5 -+echo $ECHO_N "checking for expat.h... $ECHO_C" >&6; } -+if test "${ac_cv_header_expat_h+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_header_expat_h" >&5 -+echo "${ECHO_T}$ac_cv_header_expat_h" >&6; } -+else -+ # Is the header compilable? -+{ echo "$as_me:$LINENO: checking expat.h usability" >&5 -+echo $ECHO_N "checking expat.h usability... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+@%:@include -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_header_compiler=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_compiler=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -+echo "${ECHO_T}$ac_header_compiler" >&6; } -+ -+# Is the header present? -+{ echo "$as_me:$LINENO: checking expat.h presence" >&5 -+echo $ECHO_N "checking expat.h presence... $ECHO_C" >&6; } -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+@%:@include -+_ACEOF -+if { (ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null && { -+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ }; then -+ ac_header_preproc=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_preproc=no -+fi -+ -+rm -f conftest.err conftest.$ac_ext -+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -+echo "${ECHO_T}$ac_header_preproc" >&6; } -+ -+# So? What about this header? -+case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in -+ yes:no: ) -+ { echo "$as_me:$LINENO: WARNING: expat.h: accepted by the compiler, rejected by the preprocessor!" >&5 -+echo "$as_me: WARNING: expat.h: accepted by the compiler, rejected by the preprocessor!" >&2;} -+ { echo "$as_me:$LINENO: WARNING: expat.h: proceeding with the compiler's result" >&5 -+echo "$as_me: WARNING: expat.h: proceeding with the compiler's result" >&2;} -+ ac_header_preproc=yes -+ ;; -+ no:yes:* ) -+ { echo "$as_me:$LINENO: WARNING: expat.h: present but cannot be compiled" >&5 -+echo "$as_me: WARNING: expat.h: present but cannot be compiled" >&2;} -+ { echo "$as_me:$LINENO: WARNING: expat.h: check for missing prerequisite headers?" >&5 -+echo "$as_me: WARNING: expat.h: check for missing prerequisite headers?" >&2;} -+ { echo "$as_me:$LINENO: WARNING: expat.h: see the Autoconf documentation" >&5 -+echo "$as_me: WARNING: expat.h: see the Autoconf documentation" >&2;} -+ { echo "$as_me:$LINENO: WARNING: expat.h: section \"Present But Cannot Be Compiled\"" >&5 -+echo "$as_me: WARNING: expat.h: section \"Present But Cannot Be Compiled\"" >&2;} -+ { echo "$as_me:$LINENO: WARNING: expat.h: proceeding with the preprocessor's result" >&5 -+echo "$as_me: WARNING: expat.h: proceeding with the preprocessor's result" >&2;} -+ { echo "$as_me:$LINENO: WARNING: expat.h: in the future, the compiler will take precedence" >&5 -+echo "$as_me: WARNING: expat.h: in the future, the compiler will take precedence" >&2;} -+ -+ ;; -+esac -+{ echo "$as_me:$LINENO: checking for expat.h" >&5 -+echo $ECHO_N "checking for expat.h... $ECHO_C" >&6; } -+if test "${ac_cv_header_expat_h+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_cv_header_expat_h=$ac_header_preproc -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_header_expat_h" >&5 -+echo "${ECHO_T}$ac_cv_header_expat_h" >&6; } -+ -+fi -+if test $ac_cv_header_expat_h = yes; then -+ have_expat_h=yes -+else -+ have_expat_h=no -+fi -+ -+ -+ CPPFLAGS="$saveflags" -+ -+ ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ saveflags="$LDFLAGS"; test -n "$expatprefix" && LDFLAGS="$LDFLAGS -L$expatprefix/lib" -+ { echo "$as_me:$LINENO: checking for XML_ParserCreateNS in -lexpat" >&5 -+echo $ECHO_N "checking for XML_ParserCreateNS in -lexpat... $ECHO_C" >&6; } -+if test "${ac_cv_lib_expat_XML_ParserCreateNS+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-lexpat $LIBS" -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char XML_ParserCreateNS (); -+int -+main () -+{ -+return XML_ParserCreateNS (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ ac_cv_lib_expat_XML_ParserCreateNS=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_lib_expat_XML_ParserCreateNS=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_lib_expat_XML_ParserCreateNS" >&5 -+echo "${ECHO_T}$ac_cv_lib_expat_XML_ParserCreateNS" >&6; } -+if test $ac_cv_lib_expat_XML_ParserCreateNS = yes; then -+ have_libexpat=yes -+else -+ have_libexpat=no -+fi -+ -+ LDFLAGS="$saveflags" -+ -+ if test $have_expat_h = yes -a $have_libexpat = yes; then -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_EXPAT 1 -+_ACEOF -+ -+ XML2CLICK=xml2click -+ test -n "$expatprefix" && EXPAT_INCLUDES="-I$expatprefix/include" && EXPAT_LIBS="-L$expatprefix/lib" -+ EXPAT_LIBS="$EXPAT_LIBS -lexpat" -+ elif test $explicit_expat = yes; then -+ EXPAT_INCLUDES= EXPAT_LIBS= -+ { { echo "$as_me:$LINENO: error: -+========================================= -+ -+You explicitly specified --with-expat, but I can't find the expat headers -+and/or libraries where you said they would be. Run again supplying -+--without-expat or --with-expat=PREFIX. -+ -+=========================================" >&5 -+echo "$as_me: error: -+========================================= -+ -+You explicitly specified --with-expat, but I can't find the expat headers -+and/or libraries where you said they would be. Run again supplying -+--without-expat or --with-expat=PREFIX. -+ -+=========================================" >&2;} -+ { (exit 1); exit 1; }; } -+ fi -+fi -+ -+ -+ -+ -+ -+ -+if test $ac_have_linux_kernel = y; then -+ -+ if test $LINUXMODULE_2_6 = 1; then -+ { echo "$as_me:$LINENO: checking for Linux 2.6 compilation flags" >&5 -+echo $ECHO_N "checking for Linux 2.6 compilation flags... $ECHO_C" >&6; } -+ echo "include $linuxdir/Makefile -+fwablongie: -+ @echo \$(CFLAGS)" >conftest.mk -+ make -C "${linuxdir}" M="`pwd`" -f "`pwd`/conftest.mk" --no-print-directory fwablongie >conftest.dat -+ if test $? != 0; then -+ { echo "$as_me:$LINENO: result: not found" >&5 -+echo "${ECHO_T}not found" >&6; } -+ { { echo "$as_me:$LINENO: error: -+============================================== -+ -+Can't find Linux 2.6 compilation flags. -+ -+==============================================" >&5 -+echo "$as_me: error: -+============================================== -+ -+Can't find Linux 2.6 compilation flags. -+ -+==============================================" >&2;} -+ { (exit 1); exit 1; }; } -+ fi -+ LINUX_CFLAGS="`sed -e s,-Iinclude,-I$linuxdir/include,g \ -+ -e 's,-W^ *,,g' \ -+ -e 's,-Wno-pointer-sign,,g' \ -+ -e s,-fno-unit-at-a-time,,g \ -+ -e s,-Wstrict-prototypes,,g \ -+ -e s,-Wdeclaration-after-statement,,g \ -+ -e s,-fno-common,,g &5 -+echo "${ECHO_T}$LINUX_CFLAGS" >&6; } -+ else -+ LINUX_CFLAGS="" -+ fi -+ -+ -+ -+ SAVE_CXX="$CXX" -+ CXX="$KERNEL_CXX" -+ saveflags="$CPPFLAGS" -+ CPPFLAGS="$saveflags -D__KERNEL__ -I$linuxdir/include -I$linuxdir/include/asm/mach-default $LINUX_CFLAGS" -+ -+ # CLICK_LINUXMODULE_PROLOGUE() -+ -+ -+ -+ { echo "$as_me:$LINENO: checking for C++-includable kernel header files" >&5 -+echo $ECHO_N "checking for C++-includable kernel header files... $ECHO_C" >&6; } -+if test "${ac_cv_cxx_aware_system+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_ext=cpp -+ac_cpp='$CXXCPP $CPPFLAGS' -+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#if HAVE_LINUXMODULE_2_6 -+# define KBUILD_STR(s) #s -+# define KBUILD_BASENAME KBUILD_STR(click) -+# define KBUILD_MODNAME KBUILD_STR(click) -+#endif -+#define new xxx_new -+#define this xxx_this -+#define delete xxx_delete -+#define class xxx_class -+#define virtual xxx_virtual -+#define typename xxx_typename -+#define private xxx_private -+#define protected xxx_protected -+#define public xxx_public -+#define namespace xxx_namespace -+#include -+#include -+int -+main () -+{ -+return 0 -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_cxx_aware_system=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_cxx_aware_system=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_cxx_aware_system" >&5 -+echo "${ECHO_T}$ac_cv_cxx_aware_system" >&6; } -+ -+ -+ if test $ac_cv_cxx_aware_system = yes; then -+ -+ { echo "$as_me:$LINENO: checking whether -fpermissive is required" >&5 -+echo $ECHO_N "checking whether -fpermissive is required... $ECHO_C" >&6; } -+if test "${ac_cv_f_permissive+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_ext=cpp -+ac_cpp='$CXXCPP $CPPFLAGS' -+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#if HAVE_LINUXMODULE_2_6 -+# define KBUILD_STR(s) #s -+# define KBUILD_BASENAME KBUILD_STR(click) -+# define KBUILD_MODNAME KBUILD_STR(click) -+#endif -+#define new xxx_new -+#define this xxx_this -+#define delete xxx_delete -+#define class xxx_class -+#define virtual xxx_virtual -+#define typename xxx_typename -+#define private xxx_private -+#define protected xxx_protected -+#define public xxx_public -+#define namespace xxx_namespace -+#include -+#include -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ ac_cv_f_permissive=no -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_f_permissive=yes -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_f_permissive" >&5 -+echo "${ECHO_T}$ac_cv_f_permissive" >&6; } -+ -+ if test $ac_cv_f_permissive = yes; then -+ CXX="$KERNEL_CXX -fpermissive" -+ { echo "$as_me:$LINENO: checking whether -fpermissive is allowed" >&5 -+echo $ECHO_N "checking whether -fpermissive is allowed... $ECHO_C" >&6; } -+if test "${ac_cv_f_permissive_ok+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_ext=cpp -+ac_cpp='$CXXCPP $CPPFLAGS' -+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#if HAVE_LINUXMODULE_2_6 -+# define KBUILD_STR(s) #s -+# define KBUILD_BASENAME KBUILD_STR(click) -+# define KBUILD_MODNAME KBUILD_STR(click) -+#endif -+#define new xxx_new -+#define this xxx_this -+#define delete xxx_delete -+#define class xxx_class -+#define virtual xxx_virtual -+#define typename xxx_typename -+#define private xxx_private -+#define protected xxx_protected -+#define public xxx_public -+#define namespace xxx_namespace -+#include -+#include -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ ac_cv_f_permissive_ok=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_f_permissive_ok=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_f_permissive_ok" >&5 -+echo "${ECHO_T}$ac_cv_f_permissive_ok" >&6; } -+ -+ if test $ac_cv_f_permissive_ok = no; then -+ ac_cv_cxx_aware_system=no -+ else -+ KERNEL_CXX="$KERNEL_CXX -fpermissive" -+ fi -+ fi -+ fi -+ -+ -+ { echo "$as_me:$LINENO: checking whether long and int64_t are the same type in the Linux kernel" >&5 -+echo $ECHO_N "checking whether long and int64_t are the same type in the Linux kernel... $ECHO_C" >&6; } -+if test "${ac_cv_long_64_linuxmodule+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#if HAVE_LINUXMODULE_2_6 -+# define KBUILD_STR(s) #s -+# define KBUILD_BASENAME KBUILD_STR(click) -+# define KBUILD_MODNAME KBUILD_STR(click) -+#endif -+#define new xxx_new -+#define this xxx_this -+#define delete xxx_delete -+#define class xxx_class -+#define virtual xxx_virtual -+#define typename xxx_typename -+#define private xxx_private -+#define protected xxx_protected -+#define public xxx_public -+#define namespace xxx_namespace -+#include -+#include -+void f1(long) { -+} -+void f1(int64_t) { // will fail if long and int64_t are the same type -+} -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_long_64_linuxmodule=no -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_long_64_linuxmodule=yes -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_long_64_linuxmodule" >&5 -+echo "${ECHO_T}$ac_cv_long_64_linuxmodule" >&6; } -+ if test $ac_cv_long_64_linuxmodule = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_INT64_IS_LONG_LINUXMODULE 1 -+_ACEOF -+ -+ fi -+ -+ -+ { echo "$as_me:$LINENO: checking whether long long and int64_t are the same type in the Linux kernel" >&5 -+echo $ECHO_N "checking whether long long and int64_t are the same type in the Linux kernel... $ECHO_C" >&6; } -+if test "${ac_cv_long_long_64_linuxmodule+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#if HAVE_LINUXMODULE_2_6 -+# define KBUILD_STR(s) #s -+# define KBUILD_BASENAME KBUILD_STR(click) -+# define KBUILD_MODNAME KBUILD_STR(click) -+#endif -+#define new xxx_new -+#define this xxx_this -+#define delete xxx_delete -+#define class xxx_class -+#define virtual xxx_virtual -+#define typename xxx_typename -+#define private xxx_private -+#define protected xxx_protected -+#define public xxx_public -+#define namespace xxx_namespace -+#include -+#include -+void f1(long long) { -+} -+void f1(int64_t) { // will fail if long long and int64_t are the same type -+} -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_cxx_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_long_long_64_linuxmodule=no -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_long_long_64_linuxmodule=yes -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_long_long_64_linuxmodule" >&5 -+echo "${ECHO_T}$ac_cv_long_long_64_linuxmodule" >&6; } -+ if test $ac_cv_long_long_64_linuxmodule = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1 -+_ACEOF -+ -+ fi -+ -+ -+ { echo "$as_me:$LINENO: checking whether struct sk_buff has a security member" >&5 -+echo $ECHO_N "checking whether struct sk_buff has a security member... $ECHO_C" >&6; } -+if test "${ac_cv_linuxmodule_skbuff_security+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#if HAVE_LINUXMODULE_2_6 -+# define KBUILD_STR(s) #s -+# define KBUILD_BASENAME KBUILD_STR(click) -+# define KBUILD_MODNAME KBUILD_STR(click) -+#endif -+#define new xxx_new -+#define this xxx_this -+#define delete xxx_delete -+#define class xxx_class -+#define virtual xxx_virtual -+#define typename xxx_typename -+#define private xxx_private -+#define protected xxx_protected -+#define public xxx_public -+#define namespace xxx_namespace -+#include -+#include -+int -+main () -+{ -+extern struct sk_buff *s; s->security = 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_linuxmodule_skbuff_security=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_linuxmodule_skbuff_security=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_linuxmodule_skbuff_security" >&5 -+echo "${ECHO_T}$ac_cv_linuxmodule_skbuff_security" >&6; } -+ if test $ac_cv_linuxmodule_skbuff_security = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_LINUX_SKBUFF_SECURITY 1 -+_ACEOF -+ -+ fi -+ -+ { echo "$as_me:$LINENO: checking whether struct sk_buff has an fclone member" >&5 -+echo $ECHO_N "checking whether struct sk_buff has an fclone member... $ECHO_C" >&6; } -+if test "${ac_cv_linuxmodule_skbuff_fclone+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#if HAVE_LINUXMODULE_2_6 -+# define KBUILD_STR(s) #s -+# define KBUILD_BASENAME KBUILD_STR(click) -+# define KBUILD_MODNAME KBUILD_STR(click) -+#endif -+#define new xxx_new -+#define this xxx_this -+#define delete xxx_delete -+#define class xxx_class -+#define virtual xxx_virtual -+#define typename xxx_typename -+#define private xxx_private -+#define protected xxx_protected -+#define public xxx_public -+#define namespace xxx_namespace -+#include -+#include -+int -+main () -+{ -+extern struct sk_buff *s; s->fclone = 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_linuxmodule_skbuff_fclone=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_linuxmodule_skbuff_fclone=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_linuxmodule_skbuff_fclone" >&5 -+echo "${ECHO_T}$ac_cv_linuxmodule_skbuff_fclone" >&6; } -+ if test $ac_cv_linuxmodule_skbuff_fclone = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_LINUX_SKBUFF_FCLONE 1 -+_ACEOF -+ -+ fi -+ -+ { echo "$as_me:$LINENO: checking whether skb_shinfo has a tso_size member" >&5 -+echo $ECHO_N "checking whether skb_shinfo has a tso_size member... $ECHO_C" >&6; } -+if test "${ac_cv_linuxmodule_skb_shinfo_tso_size+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#if HAVE_LINUXMODULE_2_6 -+# define KBUILD_STR(s) #s -+# define KBUILD_BASENAME KBUILD_STR(click) -+# define KBUILD_MODNAME KBUILD_STR(click) -+#endif -+#define new xxx_new -+#define this xxx_this -+#define delete xxx_delete -+#define class xxx_class -+#define virtual xxx_virtual -+#define typename xxx_typename -+#define private xxx_private -+#define protected xxx_protected -+#define public xxx_public -+#define namespace xxx_namespace -+#include -+#include -+int -+main () -+{ -+extern struct sk_buff *s; skb_shinfo(s)->tso_size = 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_linuxmodule_skb_shinfo_tso_size=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_linuxmodule_skb_shinfo_tso_size=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_linuxmodule_skb_shinfo_tso_size" >&5 -+echo "${ECHO_T}$ac_cv_linuxmodule_skb_shinfo_tso_size" >&6; } -+ if test $ac_cv_linuxmodule_skb_shinfo_tso_size = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_LINUX_SKB_SHINFO_TSO_SIZE 1 -+_ACEOF -+ -+ fi -+ -+ { echo "$as_me:$LINENO: checking whether skb_shinfo has a gso_size member" >&5 -+echo $ECHO_N "checking whether skb_shinfo has a gso_size member... $ECHO_C" >&6; } -+if test "${ac_cv_linuxmodule_skb_shinfo_gso_size+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#if HAVE_LINUXMODULE_2_6 -+# define KBUILD_STR(s) #s -+# define KBUILD_BASENAME KBUILD_STR(click) -+# define KBUILD_MODNAME KBUILD_STR(click) -+#endif -+#define new xxx_new -+#define this xxx_this -+#define delete xxx_delete -+#define class xxx_class -+#define virtual xxx_virtual -+#define typename xxx_typename -+#define private xxx_private -+#define protected xxx_protected -+#define public xxx_public -+#define namespace xxx_namespace -+#include -+#include -+int -+main () -+{ -+extern struct sk_buff *s; skb_shinfo(s)->gso_size = 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_linuxmodule_skb_shinfo_gso_size=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_linuxmodule_skb_shinfo_gso_size=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_linuxmodule_skb_shinfo_gso_size" >&5 -+echo "${ECHO_T}$ac_cv_linuxmodule_skb_shinfo_gso_size" >&6; } -+ if test $ac_cv_linuxmodule_skb_shinfo_gso_size = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_LINUX_SKB_SHINFO_GSO_SIZE 1 -+_ACEOF -+ -+ fi -+ -+ { echo "$as_me:$LINENO: checking whether skb_shinfo has a ufo_size member" >&5 -+echo $ECHO_N "checking whether skb_shinfo has a ufo_size member... $ECHO_C" >&6; } -+if test "${ac_cv_linuxmodule_skb_shinfo_ufo_size+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#if HAVE_LINUXMODULE_2_6 -+# define KBUILD_STR(s) #s -+# define KBUILD_BASENAME KBUILD_STR(click) -+# define KBUILD_MODNAME KBUILD_STR(click) -+#endif -+#define new xxx_new -+#define this xxx_this -+#define delete xxx_delete -+#define class xxx_class -+#define virtual xxx_virtual -+#define typename xxx_typename -+#define private xxx_private -+#define protected xxx_protected -+#define public xxx_public -+#define namespace xxx_namespace -+#include -+#include -+int -+main () -+{ -+extern struct sk_buff *s; skb_shinfo(s)->ufo_size = 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_linuxmodule_skb_shinfo_ufo_size=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_linuxmodule_skb_shinfo_ufo_size=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_linuxmodule_skb_shinfo_ufo_size" >&5 -+echo "${ECHO_T}$ac_cv_linuxmodule_skb_shinfo_ufo_size" >&6; } -+ if test $ac_cv_linuxmodule_skb_shinfo_ufo_size = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_LINUX_SKB_SHINFO_UFO_SIZE 1 -+_ACEOF -+ -+ fi -+ -+ { echo "$as_me:$LINENO: checking whether skb_shinfo has an ip6_frag_id member" >&5 -+echo $ECHO_N "checking whether skb_shinfo has an ip6_frag_id member... $ECHO_C" >&6; } -+if test "${ac_cv_linuxmodule_skb_shinfo_ip6_frag_id+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#if HAVE_LINUXMODULE_2_6 -+# define KBUILD_STR(s) #s -+# define KBUILD_BASENAME KBUILD_STR(click) -+# define KBUILD_MODNAME KBUILD_STR(click) -+#endif -+#define new xxx_new -+#define this xxx_this -+#define delete xxx_delete -+#define class xxx_class -+#define virtual xxx_virtual -+#define typename xxx_typename -+#define private xxx_private -+#define protected xxx_protected -+#define public xxx_public -+#define namespace xxx_namespace -+#include -+#include -+int -+main () -+{ -+extern struct sk_buff *s; skb_shinfo(s)->ip6_frag_id = 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_linuxmodule_skb_shinfo_ip6_frag_id=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_linuxmodule_skb_shinfo_ip6_frag_id=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_linuxmodule_skb_shinfo_ip6_frag_id" >&5 -+echo "${ECHO_T}$ac_cv_linuxmodule_skb_shinfo_ip6_frag_id" >&6; } -+ if test $ac_cv_linuxmodule_skb_shinfo_ip6_frag_id = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_LINUX_SKB_SHINFO_IP6_FRAG_ID 1 -+_ACEOF -+ -+ fi -+ -+ ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ { echo "$as_me:$LINENO: checking whether net_enable_timestamp is declared" >&5 -+echo $ECHO_N "checking whether net_enable_timestamp is declared... $ECHO_C" >&6; } -+if test "${ac_cv_have_decl_net_enable_timestamp+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#if HAVE_LINUXMODULE_2_6 -+# define KBUILD_STR(s) #s -+# define KBUILD_BASENAME KBUILD_STR(click) -+# define KBUILD_MODNAME KBUILD_STR(click) -+#endif -+#define new xxx_new -+#define this xxx_this -+#define delete xxx_delete -+#define class xxx_class -+#define virtual xxx_virtual -+#define typename xxx_typename -+#define private xxx_private -+#define protected xxx_protected -+#define public xxx_public -+#define namespace xxx_namespace -+#include -+#include -+#include -+ -+int -+main () -+{ -+#ifndef net_enable_timestamp -+ (void) net_enable_timestamp; -+#endif -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_have_decl_net_enable_timestamp=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_have_decl_net_enable_timestamp=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_net_enable_timestamp" >&5 -+echo "${ECHO_T}$ac_cv_have_decl_net_enable_timestamp" >&6; } -+if test $ac_cv_have_decl_net_enable_timestamp = yes; then -+ ac_cv_net_enable_timestamp=yes -+else -+ ac_cv_net_enable_timestamp=no -+fi -+ -+ if test $ac_cv_net_enable_timestamp = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_NET_ENABLE_TIMESTAMP 1 -+_ACEOF -+ -+ fi -+ -+ { echo "$as_me:$LINENO: checking whether netif_tx_lock is declared" >&5 -+echo $ECHO_N "checking whether netif_tx_lock is declared... $ECHO_C" >&6; } -+if test "${ac_cv_have_decl_netif_tx_lock+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#if HAVE_LINUXMODULE_2_6 -+# define KBUILD_STR(s) #s -+# define KBUILD_BASENAME KBUILD_STR(click) -+# define KBUILD_MODNAME KBUILD_STR(click) -+#endif -+#define new xxx_new -+#define this xxx_this -+#define delete xxx_delete -+#define class xxx_class -+#define virtual xxx_virtual -+#define typename xxx_typename -+#define private xxx_private -+#define protected xxx_protected -+#define public xxx_public -+#define namespace xxx_namespace -+#include -+#include -+#include -+ -+int -+main () -+{ -+#ifndef netif_tx_lock -+ (void) netif_tx_lock; -+#endif -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_compile") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then -+ ac_cv_have_decl_netif_tx_lock=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_have_decl_netif_tx_lock=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_netif_tx_lock" >&5 -+echo "${ECHO_T}$ac_cv_have_decl_netif_tx_lock" >&6; } -+if test $ac_cv_have_decl_netif_tx_lock = yes; then -+ ac_cv_netif_tx_lock=yes -+else -+ ac_cv_netif_tx_lock=no -+fi -+ -+ if test $ac_cv_netif_tx_lock = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_NETIF_TX_LOCK 1 -+_ACEOF -+ -+ fi -+ -+ -+ CXX="$SAVE_CXX" -+ CPPFLAGS="$saveflags" -+ -+ if test $ac_cv_cxx_aware_system = yes; then -+ DRIVERS="$DRIVERS linuxmodule" -+ TOOL_TARGETS="$TOOL_TARGETS click-install" -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_LINUXMODULE_DRIVER 1 -+_ACEOF -+ -+ HAVE_LINUXMODULE_DRIVER=1 -+ elif test x$enable_linuxmodule_default = xyes; then -+ { echo "$as_me:$LINENO: WARNING: -+========================================= -+ -+Your Linux kernel header files cause errors when included by a C++ program, -+so I won't try to compile the linuxmodule driver. -+ -+There are two common reasons for this error: -+1. You have not applied the Linux kernel patch that comes with this -+ distribution. Apply the right patch and try again. See the INSTALL -+ file for more information. -+2. Your Linux configuration enables some functionality that is not yet -+ covered by our patches. Turn off this functionality and try again, -+ or fix the error and tell us how you did it. See the config.log file -+ for more detailed information on the error. -+ -+=========================================" >&5 -+echo "$as_me: WARNING: -+========================================= -+ -+Your Linux kernel header files cause errors when included by a C++ program, -+so I won't try to compile the linuxmodule driver. -+ -+There are two common reasons for this error: -+1. You have not applied the Linux kernel patch that comes with this -+ distribution. Apply the right patch and try again. See the INSTALL -+ file for more information. -+2. Your Linux configuration enables some functionality that is not yet -+ covered by our patches. Turn off this functionality and try again, -+ or fix the error and tell us how you did it. See the config.log file -+ for more detailed information on the error. -+ -+=========================================" >&2;} -+ else -+ { { echo "$as_me:$LINENO: error: -+========================================= -+ -+Your Linux kernel header files cause errors when included by a C++ program. -+ -+There are two common reasons for this error: -+1. You have not applied the Linux kernel patch that comes with this -+ distribution. Apply the right patch and try again. See the INSTALL -+ file for more information. -+2. Your Linux configuration enables some functionality that is not yet -+ covered by our patches. Turn off this functionality and try again, -+ or fix the error and tell us how you did it. See the config.log file -+ for more detailed information on the error. -+ -+=========================================" >&5 -+echo "$as_me: error: -+========================================= -+ -+Your Linux kernel header files cause errors when included by a C++ program. -+ -+There are two common reasons for this error: -+1. You have not applied the Linux kernel patch that comes with this -+ distribution. Apply the right patch and try again. See the INSTALL -+ file for more information. -+2. Your Linux configuration enables some functionality that is not yet -+ covered by our patches. Turn off this functionality and try again, -+ or fix the error and tell us how you did it. See the config.log file -+ for more detailed information on the error. -+ -+=========================================" >&2;} -+ { (exit 1); exit 1; }; } -+ fi -+fi -+ -+ -+ -+if test $ac_have_bsd_kernel = y; then -+ DRIVERS="$DRIVERS bsdmodule" -+ if echo "$DRIVERS" | grep linuxmodule >/dev/null 2>&1; then :; else -+ TOOL_TARGETS="$TOOL_TARGETS click-install" -+ fi -+ cat >>confdefs.h <<\_ACEOF -+@%:@define HAVE_BSDMODULE_DRIVER 1 -+_ACEOF -+ -+ HAVE_BSDMODULE_DRIVER=1 -+fi -+ -+ -+ -+if test "x$enable_nsclick" = xyes; then -+ DRIVERS="$DRIVERS ns" -+fi -+ -+ -+ -+if test "x$enable_tools" != xno; then -+ OTHER_TARGETS="$OTHER_TARGETS tools" -+fi -+ -+ -+ -+# Find a good install program. We prefer a C program (faster), -+# so one script is as good as another. But avoid the broken or -+# incompatible versions: -+# SysV /etc/install, /usr/sbin/install -+# SunOS /usr/etc/install -+# IRIX /sbin/install -+# AIX /bin/install -+# AmigaOS /C/install, which installs bootblocks on floppy discs -+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -+# AFS /usr/afsws/bin/install, which mishandles nonexistent args -+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -+# OS/2's system install, which has a completely different semantic -+# ./install, which can be erroneously created by make from ./install.sh. -+{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } -+if test -z "$INSTALL"; then -+if test "${ac_cv_path_install+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ # Account for people who put trailing slashes in PATH elements. -+case $as_dir/ in -+ ./ | .// | /cC/* | \ -+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ -+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ -+ /usr/ucb/* ) ;; -+ *) -+ # OSF1 and SCO ODT 3.0 have their own names for install. -+ # Don't use installbsd from OSF since it installs stuff as root -+ # by default. -+ for ac_prog in ginstall scoinst install; do -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then -+ if test $ac_prog = install && -+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then -+ # AIX install. It has an incompatible calling convention. -+ : -+ elif test $ac_prog = install && -+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then -+ # program-specific install script used by HP pwplus--don't use. -+ : -+ else -+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" -+ break 3 -+ fi -+ fi -+ done -+ done -+ ;; -+esac -+done -+IFS=$as_save_IFS -+ -+ -+fi -+ if test "${ac_cv_path_install+set}" = set; then -+ INSTALL=$ac_cv_path_install -+ else -+ # As a last resort, use the slow shell script. Don't cache a -+ # value for INSTALL within a source directory, because that will -+ # break other packages using the cache if that directory is -+ # removed, or if the value is a relative name. -+ INSTALL=$ac_install_sh -+ fi -+fi -+{ echo "$as_me:$LINENO: result: $INSTALL" >&5 -+echo "${ECHO_T}$INSTALL" >&6; } -+ -+# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -+# It thinks the first close brace ends the variable substitution. -+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' -+ -+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' -+ -+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -+ -+ -+ -+ { echo "$as_me:$LINENO: checking whether install accepts -C" >&5 -+echo $ECHO_N "checking whether install accepts -C... $ECHO_C" >&6; } -+ echo X > conftest.1 -+ if $INSTALL -C conftest.1 conftest.2 >/dev/null 2>&1; then -+ INSTALL_IF_CHANGED='$(INSTALL) -C' -+ { echo "$as_me:$LINENO: result: yes" >&5 -+echo "${ECHO_T}yes" >&6; } -+ else -+ INSTALL_IF_CHANGED='$(top_builddir)/installch' -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+ fi -+ rm -f conftest.1 conftest.2 -+ -+ CLICKINSTALL=`echo "$INSTALL" | sed 's|^\$(.*)/|\$(clickdatadir)/|'` -+ -+ -+ -+ if test "${GMAKE-NO}" = NO; then -+ { echo "$as_me:$LINENO: checking for GNU make" >&5 -+echo $ECHO_N "checking for GNU make... $ECHO_C" >&6; } -+if test "${ac_cv_gnu_make+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if /bin/sh -c 'make -f /dev/null -n --version | grep GNU' >/dev/null 2>&1; then -+ ac_cv_gnu_make='make' -+ elif /bin/sh -c 'gmake -f /dev/null -n --version | grep GNU' >/dev/null 2>&1; then -+ ac_cv_gnu_make='gmake' -+ else -+ ac_cv_gnu_make='not found' -+ fi -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_gnu_make" >&5 -+echo "${ECHO_T}$ac_cv_gnu_make" >&6; } -+ test "$ac_cv_gnu_make" != 'not found' && GMAKE="$ac_cv_gnu_make" -+ else -+ /bin/sh -c '$GMAKE -f /dev/null -n --version | grep GNU' >/dev/null 2>&1 || GMAKE='' -+ fi -+ -+ SUBMAKE='' -+ test -n "$GMAKE" -a "$GMAKE" != make && SUBMAKE="MAKE = $GMAKE" -+ -+ -+ -+ -+ { echo "$as_me:$LINENO: checking for working autoconf" >&5 -+echo $ECHO_N "checking for working autoconf... $ECHO_C" >&6; } -+ AUTOCONF="${AUTOCONF-autoconf}" -+ if ($AUTOCONF --version) < /dev/null > conftest.out 2>&1; then -+ if test `head -n 1 conftest.out | sed 's/.*2\.\([0-9]*\).*/\1/'` -ge 13 2>/dev/null; then -+ { echo "$as_me:$LINENO: result: found" >&5 -+echo "${ECHO_T}found" >&6; } -+ else -+ AUTOCONF='$(conf_auxdir)/missing autoconf' -+ { echo "$as_me:$LINENO: result: old" >&5 -+echo "${ECHO_T}old" >&6; } -+ fi -+ else -+ AUTOCONF='$(conf_auxdir)/missing autoconf' -+ { echo "$as_me:$LINENO: result: missing" >&5 -+echo "${ECHO_T}missing" >&6; } -+ fi -+ -+ -+ -+ ac_foo=`echo 'exit($A<5);' | tr A \135` -+ -+ if test "${PERL-NO}" = NO; then -+ for ac_prog in perl5 perl -+do -+ # Extract the first word of "$ac_prog", so it can be a program name with args. -+set dummy $ac_prog; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_perl5+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$perl5"; then -+ ac_cv_prog_perl5="$perl5" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_perl5="$ac_prog" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+perl5=$ac_cv_prog_perl5 -+if test -n "$perl5"; then -+ { echo "$as_me:$LINENO: result: $perl5" >&5 -+echo "${ECHO_T}$perl5" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+ test -n "$perl5" && break -+done -+test -n "$perl5" || perl5="missing" -+ -+ test "$perl5" != missing && $perl5 -e "$ac_foo" && perl5=missing -+ if test "$perl5" = missing; then -+ for ac_prog in perl5 perl -+do -+ # Extract the first word of "$ac_prog", so it can be a program name with args. -+set dummy $ac_prog; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_prog_localperl5+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$localperl5"; then -+ ac_cv_prog_localperl5="$localperl5" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in /usr/local/bin -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_localperl5="$ac_prog" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+fi -+fi -+localperl5=$ac_cv_prog_localperl5 -+if test -n "$localperl5"; then -+ { echo "$as_me:$LINENO: result: $localperl5" >&5 -+echo "${ECHO_T}$localperl5" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+ test -n "$localperl5" && break -+done -+test -n "$localperl5" || localperl5="missing" -+ -+ test "$localperl5" != missing && \ -+ perl5="/usr/local/bin/$localperl5" -+ fi -+ else -+ perl5="$PERL" -+ fi -+ -+ test "$perl5" != missing && $perl5 -e "$ac_foo" && perl5=missing -+ -+ if test "$perl5" = "missing"; then -+ PERL='$(conf_auxdir)/missing perl' -+ else -+ PERL="$perl5" -+ fi -+ -+ -+ -+if test -z "$GMAKE"; then -+ { { echo "$as_me:$LINENO: error: -+============================================== -+ -+Can't find GNU make. Either put 'gmake' on your PATH and -+rerun './configure', or set the GMAKE environment variable to -+GNU make's pathname. -+ -+==============================================" >&5 -+echo "$as_me: error: -+============================================== -+ -+Can't find GNU make. Either put 'gmake' on your PATH and -+rerun './configure', or set the GMAKE environment variable to -+GNU make's pathname. -+ -+==============================================" >&2;} -+ { (exit 1); exit 1; }; } -+fi -+ -+ -+ -+{ echo "$as_me:$LINENO: checking for working makeinfo" >&5 -+echo $ECHO_N "checking for working makeinfo... $ECHO_C" >&6; } -+MAKEINFO=${MAKEINFO-makeinfo} -+if ($MAKEINFO --version) < /dev/null > conftest.out 2>&1; then -+ if test `head -n 1 conftest.out | sed 's/^.* \([0-9][0-9]*\).*$/\1/'` -ge 4; then -+ { echo "$as_me:$LINENO: result: found" >&5 -+echo "${ECHO_T}found" >&6; } -+ else -+ MAKEINFO='$(conf_auxdir)/missing makeinfo' -+ { echo "$as_me:$LINENO: result: old" >&5 -+echo "${ECHO_T}old" >&6; } -+ fi -+else -+ MAKEINFO='$(conf_auxdir)/missing makeinfo' -+ { echo "$as_me:$LINENO: result: missing" >&5 -+echo "${ECHO_T}missing" >&6; } -+fi -+ -+{ echo "$as_me:$LINENO: checking for working texi2dvi" >&5 -+echo $ECHO_N "checking for working texi2dvi... $ECHO_C" >&6; } -+TEXI2DVI=${TEXI2DVI-texi2dvi} -+if ($TEXI2DVI --version) < /dev/null > conftest.out 2>&1; then -+ if test `head -n 1 conftest.out | sed 's/.*Texinfo \([0-9][0-9]*\).*/\1/'` -ge 4; then -+ { echo "$as_me:$LINENO: result: found" >&5 -+echo "${ECHO_T}found" >&6; } -+ else -+ TEXI2DVI='$(conf_auxdir)/missing texi2dvi' -+ { echo "$as_me:$LINENO: result: old" >&5 -+echo "${ECHO_T}old" >&6; } -+ fi -+else -+ TEXI2DVI='$(conf_auxdir)/missing texi2dvi' -+ { echo "$as_me:$LINENO: result: missing" >&5 -+echo "${ECHO_T}missing" >&6; } -+fi -+ -+if test ${INSTALL_INFO-xxx} = xxx; then -+ # Extract the first word of "install-info", so it can be a program name with args. -+set dummy install-info; ac_word=$2 -+{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -+if test "${ac_cv_path_INSTALL_INFO+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ case $INSTALL_INFO in -+ [\\/]* | ?:[\\/]*) -+ ac_cv_path_INSTALL_INFO="$INSTALL_INFO" # Let the user override the test with a path. -+ ;; -+ *) -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+as_dummy="$PATH:/sbin:/usr/sbin:/usr/local/sbin" -+for as_dir in $as_dummy -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_path_INSTALL_INFO="$as_dir/$ac_word$ac_exec_ext" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+IFS=$as_save_IFS -+ -+ test -z "$ac_cv_path_INSTALL_INFO" && ac_cv_path_INSTALL_INFO="'$(conf_auxdir)/missing install-info'" -+ ;; -+esac -+fi -+INSTALL_INFO=$ac_cv_path_INSTALL_INFO -+if test -n "$INSTALL_INFO"; then -+ { echo "$as_me:$LINENO: result: $INSTALL_INFO" >&5 -+echo "${ECHO_T}$INSTALL_INFO" >&6; } -+else -+ { echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6; } -+fi -+ -+ -+fi -+{ echo "$as_me:$LINENO: checking for working install-info" >&5 -+echo $ECHO_N "checking for working install-info... $ECHO_C" >&6; } -+if ($INSTALL_INFO --version) < /dev/null > conftest.out 2>&1; then -+ { echo "$as_me:$LINENO: result: found" >&5 -+echo "${ECHO_T}found" >&6; } -+else -+ INSTALL_INFO='$(conf_auxdir)/missing install-info' -+ { echo "$as_me:$LINENO: result: missing" >&5 -+echo "${ECHO_T}missing" >&6; } -+fi -+ -+{ echo "$as_me:$LINENO: checking for working pod2man" >&5 -+echo $ECHO_N "checking for working pod2man... $ECHO_C" >&6; } -+POD2MAN=${POD2MAN-pod2man} -+if ($POD2MAN --help) < /dev/null > conftest.out 2>&1 && grep pod2man conftest.out >/dev/null 2>&1; then -+ { echo "$as_me:$LINENO: result: found" >&5 -+echo "${ECHO_T}found" >&6; } -+else -+ POD2MAN='$(conf_auxdir)/missing pod2man' -+ { echo "$as_me:$LINENO: result: missing" >&5 -+echo "${ECHO_T}missing" >&6; } -+fi -+ -+ -+ -+ -+ -+ -+ -+ -+ -+shell_expand () { -+ val=`eval echo '$'"$1"` -+ while echo "x$val" | fgrep '$' >/dev/null 2>&1; do val=`eval echo "$val"`; done -+ eval "$1='$val'" -+} -+ -+test "x$prefix" = xNONE && prefix=$ac_default_prefix -+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -+ -+if test x$infodir = 'x${prefix}/info'; then -+ test ! -d ${prefix}/info && test -d ${prefix}/share/info && infodir='${prefix}/share/info' -+fi -+ -+shell_expand bindir -+shell_expand sbindir -+shell_expand libdir -+shell_expand datarootdir -+shell_expand datadir -+shell_expand includedir -+ -+clickdatadir="$datadir/click" -+ -+ -+cat >>confdefs.h <<_ACEOF -+@%:@define CLICK_BINDIR "$bindir" -+_ACEOF -+ -+cat >>confdefs.h <<_ACEOF -+@%:@define CLICK_LIBDIR "$libdir" -+_ACEOF -+ -+cat >>confdefs.h <<_ACEOF -+@%:@define CLICK_DATADIR "$clickdatadir" -+_ACEOF -+ -+ -+ -+ -+provisions="$target_cpu" -+case "$target_cpu" in -+ i386) :;; -+ i486|i586) provisions="$provisions i386";; -+ i686|i786) provisions="$provisions i386 i586";; -+esac -+ -+if test "x$enable_analysis" = xyes; then -+ provisions="$provisions analysis" -+fi -+ -+if test "x$enable_experimental" = xyes; then -+ provisions="$provisions experimental" -+fi -+ -+if test "x$have_int64_types" = xyes; then -+ provisions="$provisions int64" -+fi -+ -+if test "x$enable_ip6" = xyes; then -+ provisions="$provisions ip6" -+fi -+ -+if test "x$ac_cv_under_linux" = xyes; then -+ provisions="$provisions linux" -+fi -+ -+if test $ac_have_linux_kernel = y; then -+ ac_linux_version_code=`grep LINUX_VERSION_CODE $linuxdir/include/linux/version.h | sed 's/^.*CODE //'` -+ if test $ac_linux_version_code -ge 131584 -a $ac_linux_version_code -lt 131840; then -+ provisions="$provisions linux_2_2" -+ elif test $ac_linux_version_code -ge 132096 -a $ac_linux_version_code -lt 132352; then -+ provisions="$provisions linux_2_4" -+ elif test $ac_linux_version_code -ge 132608 -a $ac_linux_version_code -lt 132864; then -+ provisions="$provisions linux_2_6" -+ fi -+fi -+ -+if test "x$HAVE_PCAP" = xyes; then -+ provisions="$provisions pcap" -+fi -+ -+if test "$enable_multithread" -gt 1; then -+ provisions="$provisions smpclick" -+fi -+ -+if test "x$enable_user_multithread" = xyes; then -+ provisions="$provisions umultithread" -+fi -+ -+if test "x$enable_wifi" = xyes; then -+ provisions="$provisions wifi" -+fi -+ -+ -+ -+ -+config_files="Makefile click-buildtool click-compile config.mk installch tools/Makefile tools/lib/Makefile doc/Makefile etc/libclick/Makefile etc/pkg-config.mk" -+for ac_dir in $POSSIBLE_DRIVERS; do -+ config_files="$config_files $ac_dir/Makefile" -+done -+for ac_dir in $TOOLDIRS; do -+ config_files="$config_files tools/$ac_dir/Makefile" -+done -+for ac_dir in etc include; do -+ test ! -d "$ac_dir" && mkdir "$ac_dir" -+done -+ -+ac_config_commands="$ac_config_commands default-1" -+ -+ac_config_files="$ac_config_files $config_files" -+ -+cat >confcache <<\_ACEOF -+# This file is a shell script that caches the results of configure -+# tests run on this system so they can be shared between configure -+# scripts and configure runs, see configure's option --config-cache. -+# It is not useful on other systems. If it contains results you don't -+# want to keep, you may remove or edit it. -+# -+# config.status only pays attention to the cache file if you give it -+# the --recheck option to rerun configure. -+# -+# `ac_cv_env_foo' variables (set or unset) will be overridden when -+# loading this file, other *unset* `ac_cv_foo' will be assigned the -+# following values. -+ -+_ACEOF -+ -+# The following way of writing the cache mishandles newlines in values, -+# but we know of no workaround that is simple, portable, and efficient. -+# So, we kill variables containing newlines. -+# Ultrix sh set writes to stderr and can't be redirected directly, -+# and sets the high bit in the cache file unless we assign to the vars. -+( -+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do -+ eval ac_val=\$$ac_var -+ case $ac_val in #( -+ *${as_nl}*) -+ case $ac_var in #( -+ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; -+ esac -+ case $ac_var in #( -+ _ | IFS | as_nl) ;; #( -+ *) $as_unset $ac_var ;; -+ esac ;; -+ esac -+ done -+ -+ (set) 2>&1 | -+ case $as_nl`(ac_space=' '; set) 2>&1` in #( -+ *${as_nl}ac_space=\ *) -+ # `set' does not quote correctly, so add quotes (double-quote -+ # substitution turns \\\\ into \\, and sed turns \\ into \). -+ sed -n \ -+ "s/'/'\\\\''/g; -+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" -+ ;; #( -+ *) -+ # `set' quotes correctly as required by POSIX, so do not add quotes. -+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" -+ ;; -+ esac | -+ sort -+) | -+ sed ' -+ /^ac_cv_env_/b end -+ t clear -+ :clear -+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ -+ t end -+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ -+ :end' >>confcache -+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else -+ if test -w "$cache_file"; then -+ test "x$cache_file" != "x/dev/null" && -+ { echo "$as_me:$LINENO: updating cache $cache_file" >&5 -+echo "$as_me: updating cache $cache_file" >&6;} -+ cat confcache >$cache_file -+ else -+ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 -+echo "$as_me: not updating unwritable cache $cache_file" >&6;} -+ fi -+fi -+rm -f confcache -+ -+test "x$prefix" = xNONE && prefix=$ac_default_prefix -+# Let make expand exec_prefix. -+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -+ -+DEFS=-DHAVE_CONFIG_H -+ -+ac_libobjs= -+ac_ltlibobjs= -+for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue -+ # 1. Remove the extension, and $U if already installed. -+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' -+ ac_i=`echo "$ac_i" | sed "$ac_script"` -+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR -+ # will be set to the directory where LIBOBJS objects are built. -+ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" -+ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' -+done -+LIB@&t@OBJS=$ac_libobjs -+ -+LTLIBOBJS=$ac_ltlibobjs -+ -+ -+ -+: ${CONFIG_STATUS=./config.status} -+ac_clean_files_save=$ac_clean_files -+ac_clean_files="$ac_clean_files $CONFIG_STATUS" -+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -+echo "$as_me: creating $CONFIG_STATUS" >&6;} -+cat >$CONFIG_STATUS <<_ACEOF -+#! $SHELL -+# Generated by $as_me. -+# Run this file to recreate the current configuration. -+# Compiler output produced by configure, useful for debugging -+# configure, is in config.log if it exists. -+ -+debug=false -+ac_cs_recheck=false -+ac_cs_silent=false -+SHELL=\${CONFIG_SHELL-$SHELL} -+_ACEOF -+ -+cat >>$CONFIG_STATUS <<\_ACEOF -+## --------------------- ## -+## M4sh Initialization. ## -+## --------------------- ## -+ -+# Be more Bourne compatible -+DUALCASE=1; export DUALCASE # for MKS sh -+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then -+ emulate sh -+ NULLCMD=: -+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '${1+"$@"}'='"$@"' -+ setopt NO_GLOB_SUBST -+else -+ case `(set -o) 2>/dev/null` in -+ *posix*) set -o posix ;; -+esac -+ -+fi -+ -+ -+ -+ -+# PATH needs CR -+# Avoid depending upon Character Ranges. -+as_cr_letters='abcdefghijklmnopqrstuvwxyz' -+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -+as_cr_Letters=$as_cr_letters$as_cr_LETTERS -+as_cr_digits='0123456789' -+as_cr_alnum=$as_cr_Letters$as_cr_digits -+ -+# The user is always right. -+if test "${PATH_SEPARATOR+set}" != set; then -+ echo "#! /bin/sh" >conf$$.sh -+ echo "exit 0" >>conf$$.sh -+ chmod +x conf$$.sh -+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then -+ PATH_SEPARATOR=';' -+ else -+ PATH_SEPARATOR=: -+ fi -+ rm -f conf$$.sh -+fi -+ -+# Support unset when possible. -+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then -+ as_unset=unset -+else -+ as_unset=false -+fi -+ -+ -+# IFS -+# We need space, tab and new line, in precisely that order. Quoting is -+# there to prevent editors from complaining about space-tab. -+# (If _AS_PATH_WALK were called with IFS unset, it would disable word -+# splitting by setting IFS to empty value.) -+as_nl=' -+' -+IFS=" "" $as_nl" -+ -+# Find who we are. Look in the path if we contain no directory separator. -+case $0 in -+ *[\\/]* ) as_myself=$0 ;; -+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -+done -+IFS=$as_save_IFS -+ -+ ;; -+esac -+# We did not find ourselves, most probably we were run as `sh COMMAND' -+# in which case we are not to be found in the path. -+if test "x$as_myself" = x; then -+ as_myself=$0 -+fi -+if test ! -f "$as_myself"; then -+ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 -+ { (exit 1); exit 1; } -+fi -+ -+# Work around bugs in pre-3.0 UWIN ksh. -+for as_var in ENV MAIL MAILPATH -+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -+done -+PS1='$ ' -+PS2='> ' -+PS4='+ ' -+ -+# NLS nuisances. -+for as_var in \ -+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ -+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ -+ LC_TELEPHONE LC_TIME -+do -+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then -+ eval $as_var=C; export $as_var -+ else -+ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -+ fi -+done -+ -+# Required to use basename. -+if expr a : '\(a\)' >/dev/null 2>&1 && -+ test "X`expr 00001 : '.*\(...\)'`" = X001; then -+ as_expr=expr -+else -+ as_expr=false -+fi -+ -+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then -+ as_basename=basename -+else -+ as_basename=false -+fi -+ -+ -+# Name of the executable. -+as_me=`$as_basename -- "$0" || -+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ -+ X"$0" : 'X\(//\)$' \| \ -+ X"$0" : 'X\(/\)' \| . 2>/dev/null || -+echo X/"$0" | -+ sed '/^.*\/\([^/][^/]*\)\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\/\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\/\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ -+# CDPATH. -+$as_unset CDPATH -+ -+ -+ -+ as_lineno_1=$LINENO -+ as_lineno_2=$LINENO -+ test "x$as_lineno_1" != "x$as_lineno_2" && -+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { -+ -+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO -+ # uniformly replaced by the line number. The first 'sed' inserts a -+ # line-number line after each line using $LINENO; the second 'sed' -+ # does the real work. The second script uses 'N' to pair each -+ # line-number line with the line containing $LINENO, and appends -+ # trailing '-' during substitution so that $LINENO is not a special -+ # case at line end. -+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the -+ # scripts with optimization help from Paolo Bonzini. Blame Lee -+ # E. McMahon (1931-1989) for sed's syntax. :-) -+ sed -n ' -+ p -+ /[$]LINENO/= -+ ' <$as_myself | -+ sed ' -+ s/[$]LINENO.*/&-/ -+ t lineno -+ b -+ :lineno -+ N -+ :loop -+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ -+ t loop -+ s/-\n.*// -+ ' >$as_me.lineno && -+ chmod +x "$as_me.lineno" || -+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 -+ { (exit 1); exit 1; }; } -+ -+ # Don't try to exec as it changes $[0], causing all sort of problems -+ # (the dirname of $[0] is not the place where we might find the -+ # original and so on. Autoconf is especially sensitive to this). -+ . "./$as_me.lineno" -+ # Exit status is that of the last command. -+ exit -+} -+ -+ -+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then -+ as_dirname=dirname -+else -+ as_dirname=false -+fi -+ -+ECHO_C= ECHO_N= ECHO_T= -+case `echo -n x` in -+-n*) -+ case `echo 'x\c'` in -+ *c*) ECHO_T=' ';; # ECHO_T is single tab character. -+ *) ECHO_C='\c';; -+ esac;; -+*) -+ ECHO_N='-n';; -+esac -+ -+if expr a : '\(a\)' >/dev/null 2>&1 && -+ test "X`expr 00001 : '.*\(...\)'`" = X001; then -+ as_expr=expr -+else -+ as_expr=false -+fi -+ -+rm -f conf$$ conf$$.exe conf$$.file -+if test -d conf$$.dir; then -+ rm -f conf$$.dir/conf$$.file -+else -+ rm -f conf$$.dir -+ mkdir conf$$.dir -+fi -+echo >conf$$.file -+if ln -s conf$$.file conf$$ 2>/dev/null; then -+ as_ln_s='ln -s' -+ # ... but there are two gotchas: -+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. -+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. -+ # In both cases, we have to default to `cp -p'. -+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || -+ as_ln_s='cp -p' -+elif ln conf$$.file conf$$ 2>/dev/null; then -+ as_ln_s=ln -+else -+ as_ln_s='cp -p' -+fi -+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -+rmdir conf$$.dir 2>/dev/null -+ -+if mkdir -p . 2>/dev/null; then -+ as_mkdir_p=: -+else -+ test -d ./-p && rmdir ./-p -+ as_mkdir_p=false -+fi -+ -+if test -x / >/dev/null 2>&1; then -+ as_test_x='test -x' -+else -+ if ls -dL / >/dev/null 2>&1; then -+ as_ls_L_option=L -+ else -+ as_ls_L_option= -+ fi -+ as_test_x=' -+ eval sh -c '\'' -+ if test -d "$1"; then -+ test -d "$1/."; -+ else -+ case $1 in -+ -*)set "./$1";; -+ esac; -+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in -+ ???[sx]*):;;*)false;;esac;fi -+ '\'' sh -+ ' -+fi -+as_executable_p=$as_test_x -+ -+# Sed expression to map a string onto a valid CPP name. -+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" -+ -+# Sed expression to map a string onto a valid variable name. -+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -+ -+ -+exec 6>&1 -+ -+# Save the log message, to keep $[0] and so on meaningful, and to -+# report actual input values of CONFIG_FILES etc. instead of their -+# values after options handling. -+ac_log=" -+This file was extended by click $as_me 1.6.0, which was -+generated by GNU Autoconf 2.61. Invocation command line was -+ -+ CONFIG_FILES = $CONFIG_FILES -+ CONFIG_HEADERS = $CONFIG_HEADERS -+ CONFIG_LINKS = $CONFIG_LINKS -+ CONFIG_COMMANDS = $CONFIG_COMMANDS -+ $ $0 $@ -+ -+on `(hostname || uname -n) 2>/dev/null | sed 1q` -+" -+ -+_ACEOF -+ -+cat >>$CONFIG_STATUS <<_ACEOF -+# Files that config.status was made for. -+config_files="$ac_config_files" -+config_headers="$ac_config_headers" -+config_commands="$ac_config_commands" -+ -+_ACEOF -+ -+cat >>$CONFIG_STATUS <<\_ACEOF -+ac_cs_usage="\ -+\`$as_me' instantiates files from templates according to the -+current configuration. -+ -+Usage: $0 [OPTIONS] [FILE]... -+ -+ -h, --help print this help, then exit -+ -V, --version print version number and configuration settings, then exit -+ -q, --quiet do not print progress messages -+ -d, --debug don't remove temporary files -+ --recheck update $as_me by reconfiguring in the same conditions -+ --file=FILE[:TEMPLATE] -+ instantiate the configuration file FILE -+ --header=FILE[:TEMPLATE] -+ instantiate the configuration header FILE -+ -+Configuration files: -+$config_files -+ -+Configuration headers: -+$config_headers -+ -+Configuration commands: -+$config_commands -+ -+Report bugs to ." -+ -+_ACEOF -+cat >>$CONFIG_STATUS <<_ACEOF -+ac_cs_version="\\ -+click config.status 1.6.0 -+configured by $0, generated by GNU Autoconf 2.61, -+ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" -+ -+Copyright (C) 2006 Free Software Foundation, Inc. -+This config.status script is free software; the Free Software Foundation -+gives unlimited permission to copy, distribute and modify it." -+ -+ac_pwd='$ac_pwd' -+srcdir='$srcdir' -+INSTALL='$INSTALL' -+_ACEOF -+ -+cat >>$CONFIG_STATUS <<\_ACEOF -+# If no file are specified by the user, then we need to provide default -+# value. By we need to know if files were specified by the user. -+ac_need_defaults=: -+while test $# != 0 -+do -+ case $1 in -+ --*=*) -+ ac_option=`expr "X$1" : 'X\([^=]*\)='` -+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` -+ ac_shift=: -+ ;; -+ *) -+ ac_option=$1 -+ ac_optarg=$2 -+ ac_shift=shift -+ ;; -+ esac -+ -+ case $ac_option in -+ # Handling of the options. -+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) -+ ac_cs_recheck=: ;; -+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) -+ echo "$ac_cs_version"; exit ;; -+ --debug | --debu | --deb | --de | --d | -d ) -+ debug=: ;; -+ --file | --fil | --fi | --f ) -+ $ac_shift -+ CONFIG_FILES="$CONFIG_FILES $ac_optarg" -+ ac_need_defaults=false;; -+ --header | --heade | --head | --hea ) -+ $ac_shift -+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" -+ ac_need_defaults=false;; -+ --he | --h) -+ # Conflict between --help and --header -+ { echo "$as_me: error: ambiguous option: $1 -+Try \`$0 --help' for more information." >&2 -+ { (exit 1); exit 1; }; };; -+ --help | --hel | -h ) -+ echo "$ac_cs_usage"; exit ;; -+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ -+ | -silent | --silent | --silen | --sile | --sil | --si | --s) -+ ac_cs_silent=: ;; -+ -+ # This is an error. -+ -*) { echo "$as_me: error: unrecognized option: $1 -+Try \`$0 --help' for more information." >&2 -+ { (exit 1); exit 1; }; } ;; -+ -+ *) ac_config_targets="$ac_config_targets $1" -+ ac_need_defaults=false ;; -+ -+ esac -+ shift -+done -+ -+ac_configure_extra_args= -+ -+if $ac_cs_silent; then -+ exec 6>/dev/null -+ ac_configure_extra_args="$ac_configure_extra_args --silent" -+fi -+ -+_ACEOF -+cat >>$CONFIG_STATUS <<_ACEOF -+if \$ac_cs_recheck; then -+ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 -+ CONFIG_SHELL=$SHELL -+ export CONFIG_SHELL -+ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion -+fi -+ -+_ACEOF -+cat >>$CONFIG_STATUS <<\_ACEOF -+exec 5>>config.log -+{ -+ echo -+ sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX -+@%:@@%:@ Running $as_me. @%:@@%:@ -+_ASBOX -+ echo "$ac_log" -+} >&5 -+ -+_ACEOF -+cat >>$CONFIG_STATUS <<_ACEOF -+# -+# INIT-COMMANDS -+# -+ -+ -+_ACEOF -+ -+cat >>$CONFIG_STATUS <<\_ACEOF -+ -+# Handling of arguments. -+for ac_config_target in $ac_config_targets -+do -+ case $ac_config_target in -+ "include/click/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/config.h:config.h.in" ;; -+ "include/click/pathvars.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/pathvars.h:pathvars.h.in" ;; -+ "include/click/config-bsdmodule.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/config-bsdmodule.h:config-bsdmodule.h.in" ;; -+ "include/click/config-linuxmodule.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/config-linuxmodule.h:config-linuxmodule.h.in" ;; -+ "include/click/config-ns.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/config-ns.h:config-ns.h.in" ;; -+ "include/click/config-userlevel.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/config-userlevel.h:config-userlevel.h.in" ;; -+ "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; -+ "$config_files") CONFIG_FILES="$CONFIG_FILES $config_files" ;; -+ -+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -+echo "$as_me: error: invalid argument: $ac_config_target" >&2;} -+ { (exit 1); exit 1; }; };; -+ esac -+done -+ -+ -+# If the user did not use the arguments to specify the items to instantiate, -+# then the envvar interface is used. Set only those that are not. -+# We use the long form for the default assignment because of an extremely -+# bizarre bug on SunOS 4.1.3. -+if $ac_need_defaults; then -+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files -+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers -+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -+fi -+ -+# Have a temporary directory for convenience. Make it in the build tree -+# simply because there is no reason against having it here, and in addition, -+# creating and moving files from /tmp can sometimes cause problems. -+# Hook for its removal unless debugging. -+# Note that there is a small window in which the directory will not be cleaned: -+# after its creation but before its name has been assigned to `$tmp'. -+$debug || -+{ -+ tmp= -+ trap 'exit_status=$? -+ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status -+' 0 -+ trap '{ (exit 1); exit 1; }' 1 2 13 15 -+} -+# Create a (secure) tmp directory for tmp files. -+ -+{ -+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && -+ test -n "$tmp" && test -d "$tmp" -+} || -+{ -+ tmp=./conf$$-$RANDOM -+ (umask 077 && mkdir "$tmp") -+} || -+{ -+ echo "$me: cannot create a temporary directory in ." >&2 -+ { (exit 1); exit 1; } -+} -+ -+# -+# Set up the sed scripts for CONFIG_FILES section. -+# -+ -+# No need to generate the scripts if there are no CONFIG_FILES. -+# This happens for instance when ./config.status config.h -+if test -n "$CONFIG_FILES"; then -+ -+_ACEOF -+ -+ -+ -+ac_delim='%!_!# ' -+for ac_last_try in false false false false false :; do -+ cat >conf$$subs.sed <<_ACEOF -+SHELL!$SHELL$ac_delim -+PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim -+PACKAGE_NAME!$PACKAGE_NAME$ac_delim -+PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim -+PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim -+PACKAGE_STRING!$PACKAGE_STRING$ac_delim -+PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim -+exec_prefix!$exec_prefix$ac_delim -+prefix!$prefix$ac_delim -+program_transform_name!$program_transform_name$ac_delim -+bindir!$bindir$ac_delim -+sbindir!$sbindir$ac_delim -+libexecdir!$libexecdir$ac_delim -+datarootdir!$datarootdir$ac_delim -+datadir!$datadir$ac_delim -+sysconfdir!$sysconfdir$ac_delim -+sharedstatedir!$sharedstatedir$ac_delim -+localstatedir!$localstatedir$ac_delim -+includedir!$includedir$ac_delim -+oldincludedir!$oldincludedir$ac_delim -+docdir!$docdir$ac_delim -+infodir!$infodir$ac_delim -+htmldir!$htmldir$ac_delim -+dvidir!$dvidir$ac_delim -+pdfdir!$pdfdir$ac_delim -+psdir!$psdir$ac_delim -+libdir!$libdir$ac_delim -+localedir!$localedir$ac_delim -+mandir!$mandir$ac_delim -+DEFS!$DEFS$ac_delim -+ECHO_C!$ECHO_C$ac_delim -+ECHO_N!$ECHO_N$ac_delim -+ECHO_T!$ECHO_T$ac_delim -+LIBS!$LIBS$ac_delim -+build_alias!$build_alias$ac_delim -+host_alias!$host_alias$ac_delim -+target_alias!$target_alias$ac_delim -+ac_configure_args!$ac_configure_args$ac_delim -+CLICK_VERSION!$CLICK_VERSION$ac_delim -+conf_auxdir!$conf_auxdir$ac_delim -+build!$build$ac_delim -+build_cpu!$build_cpu$ac_delim -+build_vendor!$build_vendor$ac_delim -+build_os!$build_os$ac_delim -+host!$host$ac_delim -+host_cpu!$host_cpu$ac_delim -+host_vendor!$host_vendor$ac_delim -+host_os!$host_os$ac_delim -+target!$target$ac_delim -+target_cpu!$target_cpu$ac_delim -+target_vendor!$target_vendor$ac_delim -+target_os!$target_os$ac_delim -+CC!$CC$ac_delim -+CXX!$CXX$ac_delim -+CFLAGS!$CFLAGS$ac_delim -+LDFLAGS!$LDFLAGS$ac_delim -+CPPFLAGS!$CPPFLAGS$ac_delim -+ac_ct_CC!$ac_ct_CC$ac_delim -+EXEEXT!$EXEEXT$ac_delim -+OBJEXT!$OBJEXT$ac_delim -+DEPCFLAGS!$DEPCFLAGS$ac_delim -+CFLAGS_NDEBUG!$CFLAGS_NDEBUG$ac_delim -+CPP!$CPP$ac_delim -+CXXFLAGS!$CXXFLAGS$ac_delim -+ac_ct_CXX!$ac_ct_CXX$ac_delim -+CXXFLAGS_NDEBUG!$CXXFLAGS_NDEBUG$ac_delim -+CXXCPP!$CXXCPP$ac_delim -+KERNEL_CC!$KERNEL_CC$ac_delim -+KERNEL_CXX!$KERNEL_CXX$ac_delim -+AR!$AR$ac_delim -+LD!$LD$ac_delim -+RANLIB!$RANLIB$ac_delim -+STRIP!$STRIP$ac_delim -+AR_CREATEFLAGS!$AR_CREATEFLAGS$ac_delim -+linuxdir!$linuxdir$ac_delim -+element_groups!$element_groups$ac_delim -+freebsd_srcdir!$freebsd_srcdir$ac_delim -+freebsd_includedir!$freebsd_includedir$ac_delim -+LIB@&t@OBJS!$LIB@&t@OBJS$ac_delim -+GREP!$GREP$ac_delim -+EGREP!$EGREP$ac_delim -+BUILD_CC!$BUILD_CC$ac_delim -+BUILD_CXX!$BUILD_CXX$ac_delim -+BUILD_AR!$BUILD_AR$ac_delim -+BUILD_RANLIB!$BUILD_RANLIB$ac_delim -+HOST_TOOLS!$HOST_TOOLS$ac_delim -+DL_LIBS!$DL_LIBS$ac_delim -+LDMODULEFLAGS!$LDMODULEFLAGS$ac_delim -+BUILD_DL_LIBS!$BUILD_DL_LIBS$ac_delim -+SOCKET_LIBS!$SOCKET_LIBS$ac_delim -+EXTRA_DRIVER_OBJS!$EXTRA_DRIVER_OBJS$ac_delim -+EXTRA_TOOL_OBJS!$EXTRA_TOOL_OBJS$ac_delim -+LINUXMODULE_2_6!$LINUXMODULE_2_6$ac_delim -+POSSIBLE_DRIVERS!$POSSIBLE_DRIVERS$ac_delim -+DRIVERS!$DRIVERS$ac_delim -+HAVE_USERLEVEL_DRIVER!$HAVE_USERLEVEL_DRIVER$ac_delim -+HAVE_LINUXMODULE_DRIVER!$HAVE_LINUXMODULE_DRIVER$ac_delim -+_ACEOF -+ -+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then -+ break -+ elif $ac_last_try; then -+ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -+echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} -+ { (exit 1); exit 1; }; } -+ else -+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " -+ fi -+done -+ -+ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -+if test -n "$ac_eof"; then -+ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` -+ ac_eof=`expr $ac_eof + 1` -+fi -+ -+cat >>$CONFIG_STATUS <<_ACEOF -+cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof -+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -+_ACEOF -+sed ' -+s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -+s/^/s,@/; s/!/@,|#_!!_#|/ -+:n -+t n -+s/'"$ac_delim"'$/,g/; t -+s/$/\\/; p -+N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -+' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -+CEOF$ac_eof -+_ACEOF -+ -+ -+ac_delim='%!_!# ' -+for ac_last_try in false false false false false :; do -+ cat >conf$$subs.sed <<_ACEOF -+HAVE_BSDMODULE_DRIVER!$HAVE_BSDMODULE_DRIVER$ac_delim -+OTHER_TARGETS!$OTHER_TARGETS$ac_delim -+TOOLDIRS!$TOOLDIRS$ac_delim -+TOOL_TARGETS!$TOOL_TARGETS$ac_delim -+PCAP_INCLUDES!$PCAP_INCLUDES$ac_delim -+PCAP_LIBS!$PCAP_LIBS$ac_delim -+PROPER_INCLUDES!$PROPER_INCLUDES$ac_delim -+PROPER_LIBS!$PROPER_LIBS$ac_delim -+XML2CLICK!$XML2CLICK$ac_delim -+EXPAT_INCLUDES!$EXPAT_INCLUDES$ac_delim -+EXPAT_LIBS!$EXPAT_LIBS$ac_delim -+LINUX_CFLAGS!$LINUX_CFLAGS$ac_delim -+INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim -+INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim -+INSTALL_DATA!$INSTALL_DATA$ac_delim -+INSTALL_IF_CHANGED!$INSTALL_IF_CHANGED$ac_delim -+CLICKINSTALL!$CLICKINSTALL$ac_delim -+SUBMAKE!$SUBMAKE$ac_delim -+GMAKE!$GMAKE$ac_delim -+AUTOCONF!$AUTOCONF$ac_delim -+perl5!$perl5$ac_delim -+localperl5!$localperl5$ac_delim -+PERL!$PERL$ac_delim -+INSTALL_INFO!$INSTALL_INFO$ac_delim -+MAKEINFO!$MAKEINFO$ac_delim -+TEXI2DVI!$TEXI2DVI$ac_delim -+POD2MAN!$POD2MAN$ac_delim -+clickdatadir!$clickdatadir$ac_delim -+provisions!$provisions$ac_delim -+LTLIBOBJS!$LTLIBOBJS$ac_delim -+_ACEOF -+ -+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 30; then -+ break -+ elif $ac_last_try; then -+ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -+echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} -+ { (exit 1); exit 1; }; } -+ else -+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " -+ fi -+done -+ -+ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -+if test -n "$ac_eof"; then -+ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` -+ ac_eof=`expr $ac_eof + 1` -+fi -+ -+cat >>$CONFIG_STATUS <<_ACEOF -+cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof -+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end -+_ACEOF -+sed ' -+s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -+s/^/s,@/; s/!/@,|#_!!_#|/ -+:n -+t n -+s/'"$ac_delim"'$/,g/; t -+s/$/\\/; p -+N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -+' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -+:end -+s/|#_!!_#|//g -+CEOF$ac_eof -+_ACEOF -+ -+ -+# VPATH may cause trouble with some makes, so we remove $(srcdir), -+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -+# trailing colons and then remove the whole line if VPATH becomes empty -+# (actually we leave an empty line to preserve line numbers). -+if test "x$srcdir" = x.; then -+ ac_vpsub='/^[ ]*VPATH[ ]*=/{ -+s/:*\$(srcdir):*/:/ -+s/:*\${srcdir}:*/:/ -+s/:*@srcdir@:*/:/ -+s/^\([^=]*=[ ]*\):*/\1/ -+s/:*$// -+s/^[^=]*=[ ]*$// -+}' -+fi -+ -+cat >>$CONFIG_STATUS <<\_ACEOF -+fi # test -n "$CONFIG_FILES" -+ -+ -+for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS -+do -+ case $ac_tag in -+ :[FHLC]) ac_mode=$ac_tag; continue;; -+ esac -+ case $ac_mode$ac_tag in -+ :[FHL]*:*);; -+ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 -+echo "$as_me: error: Invalid tag $ac_tag." >&2;} -+ { (exit 1); exit 1; }; };; -+ :[FH]-) ac_tag=-:-;; -+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; -+ esac -+ ac_save_IFS=$IFS -+ IFS=: -+ set x $ac_tag -+ IFS=$ac_save_IFS -+ shift -+ ac_file=$1 -+ shift -+ -+ case $ac_mode in -+ :L) ac_source=$1;; -+ :[FH]) -+ ac_file_inputs= -+ for ac_f -+ do -+ case $ac_f in -+ -) ac_f="$tmp/stdin";; -+ *) # Look for the file first in the build tree, then in the source tree -+ # (if the path is not absolute). The absolute path cannot be DOS-style, -+ # because $ac_f cannot contain `:'. -+ test -f "$ac_f" || -+ case $ac_f in -+ [\\/$]*) false;; -+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; -+ esac || -+ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 -+echo "$as_me: error: cannot find input file: $ac_f" >&2;} -+ { (exit 1); exit 1; }; };; -+ esac -+ ac_file_inputs="$ac_file_inputs $ac_f" -+ done -+ -+ # Let's still pretend it is `configure' which instantiates (i.e., don't -+ # use $as_me), people would be surprised to read: -+ # /* config.h. Generated by config.status. */ -+ configure_input="Generated from "`IFS=: -+ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." -+ if test x"$ac_file" != x-; then -+ configure_input="$ac_file. $configure_input" -+ { echo "$as_me:$LINENO: creating $ac_file" >&5 -+echo "$as_me: creating $ac_file" >&6;} -+ fi -+ -+ case $ac_tag in -+ *:-:* | *:-) cat >"$tmp/stdin";; -+ esac -+ ;; -+ esac -+ -+ ac_dir=`$as_dirname -- "$ac_file" || -+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$ac_file" : 'X\(//\)[^/]' \| \ -+ X"$ac_file" : 'X\(//\)$' \| \ -+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -+echo X"$ac_file" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)[^/].*/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ { as_dir="$ac_dir" -+ case $as_dir in #( -+ -*) as_dir=./$as_dir;; -+ esac -+ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { -+ as_dirs= -+ while :; do -+ case $as_dir in #( -+ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( -+ *) as_qdir=$as_dir;; -+ esac -+ as_dirs="'$as_qdir' $as_dirs" -+ as_dir=`$as_dirname -- "$as_dir" || -+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$as_dir" : 'X\(//\)[^/]' \| \ -+ X"$as_dir" : 'X\(//\)$' \| \ -+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -+echo X"$as_dir" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)[^/].*/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ test -d "$as_dir" && break -+ done -+ test -z "$as_dirs" || eval "mkdir $as_dirs" -+ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -+echo "$as_me: error: cannot create directory $as_dir" >&2;} -+ { (exit 1); exit 1; }; }; } -+ ac_builddir=. -+ -+case "$ac_dir" in -+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -+*) -+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` -+ # A ".." for each directory in $ac_dir_suffix. -+ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` -+ case $ac_top_builddir_sub in -+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; -+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; -+ esac ;; -+esac -+ac_abs_top_builddir=$ac_pwd -+ac_abs_builddir=$ac_pwd$ac_dir_suffix -+# for backward compatibility: -+ac_top_builddir=$ac_top_build_prefix -+ -+case $srcdir in -+ .) # We are building in place. -+ ac_srcdir=. -+ ac_top_srcdir=$ac_top_builddir_sub -+ ac_abs_top_srcdir=$ac_pwd ;; -+ [\\/]* | ?:[\\/]* ) # Absolute name. -+ ac_srcdir=$srcdir$ac_dir_suffix; -+ ac_top_srcdir=$srcdir -+ ac_abs_top_srcdir=$srcdir ;; -+ *) # Relative name. -+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix -+ ac_top_srcdir=$ac_top_build_prefix$srcdir -+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -+esac -+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix -+ -+ -+ case $ac_mode in -+ :F) -+ # -+ # CONFIG_FILE -+ # -+ -+ case $INSTALL in -+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; -+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; -+ esac -+_ACEOF -+ -+cat >>$CONFIG_STATUS <<\_ACEOF -+# If the template does not know about datarootdir, expand it. -+# FIXME: This hack should be removed a few years after 2.60. -+ac_datarootdir_hack=; ac_datarootdir_seen= -+ -+case `sed -n '/datarootdir/ { -+ p -+ q -+} -+/@datadir@/p -+/@docdir@/p -+/@infodir@/p -+/@localedir@/p -+/@mandir@/p -+' $ac_file_inputs` in -+*datarootdir*) ac_datarootdir_seen=yes;; -+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) -+ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -+echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -+_ACEOF -+cat >>$CONFIG_STATUS <<_ACEOF -+ ac_datarootdir_hack=' -+ s&@datadir@&$datadir&g -+ s&@docdir@&$docdir&g -+ s&@infodir@&$infodir&g -+ s&@localedir@&$localedir&g -+ s&@mandir@&$mandir&g -+ s&\\\${datarootdir}&$datarootdir&g' ;; -+esac -+_ACEOF -+ -+# Neutralize VPATH when `$srcdir' = `.'. -+# Shell code in configure.ac might set extrasub. -+# FIXME: do we really want to maintain this feature? -+cat >>$CONFIG_STATUS <<_ACEOF -+ sed "$ac_vpsub -+$extrasub -+_ACEOF -+cat >>$CONFIG_STATUS <<\_ACEOF -+:t -+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -+s&@configure_input@&$configure_input&;t t -+s&@top_builddir@&$ac_top_builddir_sub&;t t -+s&@srcdir@&$ac_srcdir&;t t -+s&@abs_srcdir@&$ac_abs_srcdir&;t t -+s&@top_srcdir@&$ac_top_srcdir&;t t -+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -+s&@builddir@&$ac_builddir&;t t -+s&@abs_builddir@&$ac_abs_builddir&;t t -+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -+s&@INSTALL@&$ac_INSTALL&;t t -+$ac_datarootdir_hack -+" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out -+ -+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && -+ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && -+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && -+ { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' -+which seems to be undefined. Please make sure it is defined." >&5 -+echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -+which seems to be undefined. Please make sure it is defined." >&2;} -+ -+ rm -f "$tmp/stdin" -+ case $ac_file in -+ -) cat "$tmp/out"; rm -f "$tmp/out";; -+ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; -+ esac -+ ;; -+ :H) -+ # -+ # CONFIG_HEADER -+ # -+_ACEOF -+ -+# Transform confdefs.h into a sed script `conftest.defines', that -+# substitutes the proper values into config.h.in to produce config.h. -+rm -f conftest.defines conftest.tail -+# First, append a space to every undef/define line, to ease matching. -+echo 's/$/ /' >conftest.defines -+# Then, protect against being on the right side of a sed subst, or in -+# an unquoted here document, in config.status. If some macros were -+# called several times there might be several #defines for the same -+# symbol, which is useless. But do not sort them, since the last -+# AC_DEFINE must be honored. -+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -+# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where -+# NAME is the cpp macro being defined, VALUE is the value it is being given. -+# PARAMS is the parameter list in the macro definition--in most cases, it's -+# just an empty string. -+ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' -+ac_dB='\\)[ (].*,\\1define\\2' -+ac_dC=' ' -+ac_dD=' ,' -+ -+uniq confdefs.h | -+ sed -n ' -+ t rset -+ :rset -+ s/^[ ]*#[ ]*define[ ][ ]*// -+ t ok -+ d -+ :ok -+ s/[\\&,]/\\&/g -+ s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p -+ s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p -+ ' >>conftest.defines -+ -+# Remove the space that was appended to ease matching. -+# Then replace #undef with comments. This is necessary, for -+# example, in the case of _POSIX_SOURCE, which is predefined and required -+# on some systems where configure will not decide to define it. -+# (The regexp can be short, since the line contains either #define or #undef.) -+echo 's/ $// -+s,^[ #]*u.*,/* & */,' >>conftest.defines -+ -+# Break up conftest.defines: -+ac_max_sed_lines=50 -+ -+# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" -+# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" -+# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" -+# et cetera. -+ac_in='$ac_file_inputs' -+ac_out='"$tmp/out1"' -+ac_nxt='"$tmp/out2"' -+ -+while : -+do -+ # Write a here document: -+ cat >>$CONFIG_STATUS <<_ACEOF -+ # First, check the format of the line: -+ cat >"\$tmp/defines.sed" <<\\CEOF -+/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def -+/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def -+b -+:def -+_ACEOF -+ sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS -+ echo 'CEOF -+ sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS -+ ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in -+ sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail -+ grep . conftest.tail >/dev/null || break -+ rm -f conftest.defines -+ mv conftest.tail conftest.defines -+done -+rm -f conftest.defines conftest.tail -+ -+echo "ac_result=$ac_in" >>$CONFIG_STATUS -+cat >>$CONFIG_STATUS <<\_ACEOF -+ if test x"$ac_file" != x-; then -+ echo "/* $configure_input */" >"$tmp/config.h" -+ cat "$ac_result" >>"$tmp/config.h" -+ if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then -+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -+echo "$as_me: $ac_file is unchanged" >&6;} -+ else -+ rm -f $ac_file -+ mv "$tmp/config.h" $ac_file -+ fi -+ else -+ echo "/* $configure_input */" -+ cat "$ac_result" -+ fi -+ rm -f "$tmp/out12" -+ ;; -+ -+ :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 -+echo "$as_me: executing $ac_file commands" >&6;} -+ ;; -+ esac -+ -+ -+ case $ac_file$ac_mode in -+ "default-1":C) for ac_file in $CONFIG_HEADERS; do -+ test $ac_file = include/click/config.h:config.h.in && echo > stamp-h -+done -+for ac_file in $CONFIG_FILES; do -+ test $ac_file = click-buildtool && chmod +x click-buildtool -+ test $ac_file = click-compile && chmod +x click-compile -+ test $ac_file = installch && chmod +x installch -+done ;; -+ -+ esac -+done # for ac_tag -+ -+ -+{ (exit 0); exit 0; } -+_ACEOF -+chmod +x $CONFIG_STATUS -+ac_clean_files=$ac_clean_files_save -+ -+ -+# configure is writing to config.log, and then calls config.status. -+# config.status does its own redirection, appending to config.log. -+# Unfortunately, on DOS this fails, as config.log is still kept open -+# by configure, so config.status won't be able to write to it; its -+# output is simply discarded. So we exec the FD to /dev/null, -+# effectively closing config.log, so it can be properly (re)opened and -+# appended to by config.status. When coming back to configure, we -+# need to make the FD available again. -+if test "$no_create" != yes; then -+ ac_cs_success=: -+ ac_config_status_args= -+ test "$silent" = yes && -+ ac_config_status_args="$ac_config_status_args --quiet" -+ exec 5>/dev/null -+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false -+ exec 5>>config.log -+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which -+ # would make configure fail if this is the last instruction. -+ $ac_cs_success || { (exit 1); exit 1; } -+fi -+ -diff -Nurb click-1.6.0/autom4te.cache/requests click-1.6.0-27/autom4te.cache/requests ---- click-1.6.0/autom4te.cache/requests 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/autom4te.cache/requests 2009-01-28 16:06:37.000000000 -0500 -@@ -0,0 +1,64 @@ -+# This file was generated. -+# It contains the lists of macros which have been traced. -+# It can be safely removed. -+ -+@request = ( -+ bless( [ -+ '0', -+ 1, -+ [ -+ '/usr/share/autoconf' -+ ], -+ [ -+ '/usr/share/autoconf/autoconf/autoconf.m4f', -+ 'aclocal.m4', -+ 'configure.in' -+ ], -+ { -+ '_LT_AC_TAGCONFIG' => 1, -+ 'AM_PROG_F77_C_O' => 1, -+ 'AC_INIT' => 1, -+ 'm4_pattern_forbid' => 1, -+ 'AC_CANONICAL_TARGET' => 1, -+ 'AC_SUBST' => 1, -+ 'AC_CONFIG_LIBOBJ_DIR' => 1, -+ 'AC_FC_SRCEXT' => 1, -+ 'AC_CANONICAL_HOST' => 1, -+ 'AC_PROG_LIBTOOL' => 1, -+ 'AM_INIT_AUTOMAKE' => 1, -+ 'AC_CONFIG_SUBDIRS' => 1, -+ 'AM_AUTOMAKE_VERSION' => 1, -+ 'LT_CONFIG_LTDL_DIR' => 1, -+ 'AC_REQUIRE_AUX_FILE' => 1, -+ 'AC_CONFIG_LINKS' => 1, -+ 'm4_sinclude' => 1, -+ 'LT_SUPPORTED_TAG' => 1, -+ 'AM_MAINTAINER_MODE' => 1, -+ 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, -+ '_m4_warn' => 1, -+ 'AM_PROG_CXX_C_O' => 1, -+ 'AM_ENABLE_MULTILIB' => 1, -+ 'AC_CONFIG_FILES' => 1, -+ 'include' => 1, -+ 'LT_INIT' => 1, -+ 'AM_GNU_GETTEXT' => 1, -+ 'AC_LIBSOURCE' => 1, -+ 'AM_PROG_FC_C_O' => 1, -+ 'AC_CANONICAL_BUILD' => 1, -+ 'AC_FC_FREEFORM' => 1, -+ 'AH_OUTPUT' => 1, -+ '_AM_SUBST_NOTMAKE' => 1, -+ 'AC_CONFIG_AUX_DIR' => 1, -+ 'sinclude' => 1, -+ 'm4_pattern_allow' => 1, -+ 'AM_PROG_CC_C_O' => 1, -+ 'AC_CANONICAL_SYSTEM' => 1, -+ 'AM_CONDITIONAL' => 1, -+ 'AC_CONFIG_HEADERS' => 1, -+ 'AC_DEFINE_TRACE_LITERAL' => 1, -+ 'm4_include' => 1, -+ 'AC_SUBST_TRACE' => 1 -+ } -+ ], 'Autom4te::Request' ) -+ ); -+ -diff -Nurb click-1.6.0/autom4te.cache/traces.0 click-1.6.0-27/autom4te.cache/traces.0 ---- click-1.6.0/autom4te.cache/traces.0 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/autom4te.cache/traces.0 2009-01-27 12:14:43.000000000 -0500 -@@ -0,0 +1,984 @@ -+m4trace:aclocal.m4:14: -1- m4_include([m4/click.m4]) -+m4trace:configure.in:14: -1- AC_INIT([click], [1.6.0]) -+m4trace:configure.in:14: -1- m4_pattern_forbid([^_?A[CHUM]_]) -+m4trace:configure.in:14: -1- m4_pattern_forbid([_AC_]) -+m4trace:configure.in:14: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) -+m4trace:configure.in:14: -1- m4_pattern_allow([^AS_FLAGS$]) -+m4trace:configure.in:14: -1- m4_pattern_forbid([^_?m4_]) -+m4trace:configure.in:14: -1- m4_pattern_forbid([^dnl$]) -+m4trace:configure.in:14: -1- m4_pattern_forbid([^_?AS_]) -+m4trace:configure.in:14: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}]) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([SHELL]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^SHELL$]) -+m4trace:configure.in:14: -1- AC_SUBST([PATH_SEPARATOR]) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^PATH_SEPARATOR$]) -+m4trace:configure.in:14: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([PACKAGE_NAME]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE_NAME$]) -+m4trace:configure.in:14: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) -+m4trace:configure.in:14: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE_VERSION$]) -+m4trace:configure.in:14: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([PACKAGE_STRING]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE_STRING$]) -+m4trace:configure.in:14: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) -+m4trace:configure.in:14: -1- AC_SUBST([exec_prefix], [NONE]) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([exec_prefix]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^exec_prefix$]) -+m4trace:configure.in:14: -1- AC_SUBST([prefix], [NONE]) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([prefix]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^prefix$]) -+m4trace:configure.in:14: -1- AC_SUBST([program_transform_name], [s,x,x,]) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([program_transform_name]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^program_transform_name$]) -+m4trace:configure.in:14: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([bindir]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^bindir$]) -+m4trace:configure.in:14: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([sbindir]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^sbindir$]) -+m4trace:configure.in:14: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([libexecdir]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^libexecdir$]) -+m4trace:configure.in:14: -1- AC_SUBST([datarootdir], ['${prefix}/share']) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([datarootdir]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^datarootdir$]) -+m4trace:configure.in:14: -1- AC_SUBST([datadir], ['${datarootdir}']) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([datadir]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^datadir$]) -+m4trace:configure.in:14: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([sysconfdir]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^sysconfdir$]) -+m4trace:configure.in:14: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([sharedstatedir]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^sharedstatedir$]) -+m4trace:configure.in:14: -1- AC_SUBST([localstatedir], ['${prefix}/var']) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([localstatedir]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^localstatedir$]) -+m4trace:configure.in:14: -1- AC_SUBST([includedir], ['${prefix}/include']) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([includedir]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^includedir$]) -+m4trace:configure.in:14: -1- AC_SUBST([oldincludedir], ['/usr/include']) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([oldincludedir]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^oldincludedir$]) -+m4trace:configure.in:14: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], -+ ['${datarootdir}/doc/${PACKAGE_TARNAME}'], -+ ['${datarootdir}/doc/${PACKAGE}'])]) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([docdir]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^docdir$]) -+m4trace:configure.in:14: -1- AC_SUBST([infodir], ['${datarootdir}/info']) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([infodir]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^infodir$]) -+m4trace:configure.in:14: -1- AC_SUBST([htmldir], ['${docdir}']) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([htmldir]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^htmldir$]) -+m4trace:configure.in:14: -1- AC_SUBST([dvidir], ['${docdir}']) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([dvidir]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^dvidir$]) -+m4trace:configure.in:14: -1- AC_SUBST([pdfdir], ['${docdir}']) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([pdfdir]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^pdfdir$]) -+m4trace:configure.in:14: -1- AC_SUBST([psdir], ['${docdir}']) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([psdir]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^psdir$]) -+m4trace:configure.in:14: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([libdir]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^libdir$]) -+m4trace:configure.in:14: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([localedir]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^localedir$]) -+m4trace:configure.in:14: -1- AC_SUBST([mandir], ['${datarootdir}/man']) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([mandir]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^mandir$]) -+m4trace:configure.in:14: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE_NAME$]) -+m4trace:configure.in:14: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ -+#undef PACKAGE_NAME]) -+m4trace:configure.in:14: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) -+m4trace:configure.in:14: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ -+#undef PACKAGE_TARNAME]) -+m4trace:configure.in:14: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE_VERSION$]) -+m4trace:configure.in:14: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ -+#undef PACKAGE_VERSION]) -+m4trace:configure.in:14: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE_STRING$]) -+m4trace:configure.in:14: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ -+#undef PACKAGE_STRING]) -+m4trace:configure.in:14: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) -+m4trace:configure.in:14: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ -+#undef PACKAGE_BUGREPORT]) -+m4trace:configure.in:14: -1- AC_SUBST([DEFS]) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([DEFS]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^DEFS$]) -+m4trace:configure.in:14: -1- AC_SUBST([ECHO_C]) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([ECHO_C]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^ECHO_C$]) -+m4trace:configure.in:14: -1- AC_SUBST([ECHO_N]) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([ECHO_N]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^ECHO_N$]) -+m4trace:configure.in:14: -1- AC_SUBST([ECHO_T]) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([ECHO_T]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^ECHO_T$]) -+m4trace:configure.in:14: -1- AC_SUBST([LIBS]) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([LIBS]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^LIBS$]) -+m4trace:configure.in:14: -1- AC_SUBST([build_alias]) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([build_alias]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^build_alias$]) -+m4trace:configure.in:14: -1- AC_SUBST([host_alias]) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([host_alias]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^host_alias$]) -+m4trace:configure.in:14: -1- AC_SUBST([target_alias]) -+m4trace:configure.in:14: -1- AC_SUBST_TRACE([target_alias]) -+m4trace:configure.in:14: -1- m4_pattern_allow([^target_alias$]) -+m4trace:configure.in:17: -1- AC_CONFIG_HEADERS([include/click/config.h:config.h.in include/click/pathvars.h:pathvars.h.in include/click/config-bsdmodule.h:config-bsdmodule.h.in include/click/config-linuxmodule.h:config-linuxmodule.h.in include/click/config-ns.h:config-ns.h.in include/click/config-userlevel.h:config-userlevel.h.in]) -+m4trace:configure.in:21: -1- AC_SUBST([ac_configure_args]) -+m4trace:configure.in:21: -1- AC_SUBST_TRACE([ac_configure_args]) -+m4trace:configure.in:21: -1- m4_pattern_allow([^ac_configure_args$]) -+m4trace:configure.in:22: -1- AC_DEFINE_TRACE_LITERAL([CLICK_VERSION]) -+m4trace:configure.in:22: -1- m4_pattern_allow([^CLICK_VERSION$]) -+m4trace:configure.in:23: -1- AC_SUBST([CLICK_VERSION]) -+m4trace:configure.in:23: -1- AC_SUBST_TRACE([CLICK_VERSION]) -+m4trace:configure.in:23: -1- m4_pattern_allow([^CLICK_VERSION$]) -+m4trace:configure.in:25: -1- AC_SUBST([conf_auxdir]) -+m4trace:configure.in:25: -1- AC_SUBST_TRACE([conf_auxdir]) -+m4trace:configure.in:25: -1- m4_pattern_allow([^conf_auxdir$]) -+m4trace:configure.in:28: -1- AC_CANONICAL_SYSTEM -+m4trace:configure.in:28: -1- _m4_warn([obsolete], [The macro `AC_CANONICAL_SYSTEM' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/general.m4:1747: AC_CANONICAL_SYSTEM is expanded from... -+configure.in:28: the top level]) -+m4trace:configure.in:28: -1- AC_CANONICAL_TARGET -+m4trace:configure.in:28: -1- AC_CANONICAL_HOST -+m4trace:configure.in:28: -1- AC_CANONICAL_BUILD -+m4trace:configure.in:28: -1- AC_REQUIRE_AUX_FILE([config.sub]) -+m4trace:configure.in:28: -1- AC_REQUIRE_AUX_FILE([config.guess]) -+m4trace:configure.in:28: -1- AC_SUBST([build], [$ac_cv_build]) -+m4trace:configure.in:28: -1- AC_SUBST_TRACE([build]) -+m4trace:configure.in:28: -1- m4_pattern_allow([^build$]) -+m4trace:configure.in:28: -1- AC_SUBST([build_cpu], [$[1]]) -+m4trace:configure.in:28: -1- AC_SUBST_TRACE([build_cpu]) -+m4trace:configure.in:28: -1- m4_pattern_allow([^build_cpu$]) -+m4trace:configure.in:28: -1- AC_SUBST([build_vendor], [$[2]]) -+m4trace:configure.in:28: -1- AC_SUBST_TRACE([build_vendor]) -+m4trace:configure.in:28: -1- m4_pattern_allow([^build_vendor$]) -+m4trace:configure.in:28: -1- AC_SUBST([build_os]) -+m4trace:configure.in:28: -1- AC_SUBST_TRACE([build_os]) -+m4trace:configure.in:28: -1- m4_pattern_allow([^build_os$]) -+m4trace:configure.in:28: -1- AC_SUBST([host], [$ac_cv_host]) -+m4trace:configure.in:28: -1- AC_SUBST_TRACE([host]) -+m4trace:configure.in:28: -1- m4_pattern_allow([^host$]) -+m4trace:configure.in:28: -1- AC_SUBST([host_cpu], [$[1]]) -+m4trace:configure.in:28: -1- AC_SUBST_TRACE([host_cpu]) -+m4trace:configure.in:28: -1- m4_pattern_allow([^host_cpu$]) -+m4trace:configure.in:28: -1- AC_SUBST([host_vendor], [$[2]]) -+m4trace:configure.in:28: -1- AC_SUBST_TRACE([host_vendor]) -+m4trace:configure.in:28: -1- m4_pattern_allow([^host_vendor$]) -+m4trace:configure.in:28: -1- AC_SUBST([host_os]) -+m4trace:configure.in:28: -1- AC_SUBST_TRACE([host_os]) -+m4trace:configure.in:28: -1- m4_pattern_allow([^host_os$]) -+m4trace:configure.in:28: -1- AC_SUBST([target], [$ac_cv_target]) -+m4trace:configure.in:28: -1- AC_SUBST_TRACE([target]) -+m4trace:configure.in:28: -1- m4_pattern_allow([^target$]) -+m4trace:configure.in:28: -1- AC_SUBST([target_cpu], [$[1]]) -+m4trace:configure.in:28: -1- AC_SUBST_TRACE([target_cpu]) -+m4trace:configure.in:28: -1- m4_pattern_allow([^target_cpu$]) -+m4trace:configure.in:28: -1- AC_SUBST([target_vendor], [$[2]]) -+m4trace:configure.in:28: -1- AC_SUBST_TRACE([target_vendor]) -+m4trace:configure.in:28: -1- m4_pattern_allow([^target_vendor$]) -+m4trace:configure.in:28: -1- AC_SUBST([target_os]) -+m4trace:configure.in:28: -1- AC_SUBST_TRACE([target_os]) -+m4trace:configure.in:28: -1- m4_pattern_allow([^target_os$]) -+m4trace:configure.in:31: -1- AC_SUBST([CC]) -+m4trace:configure.in:31: -1- AC_SUBST_TRACE([CC]) -+m4trace:configure.in:31: -1- m4_pattern_allow([^CC$]) -+m4trace:configure.in:32: -1- AC_SUBST([CXX]) -+m4trace:configure.in:32: -1- AC_SUBST_TRACE([CXX]) -+m4trace:configure.in:32: -1- m4_pattern_allow([^CXX$]) -+m4trace:configure.in:34: -1- AC_SUBST([CC]) -+m4trace:configure.in:34: -1- AC_SUBST_TRACE([CC]) -+m4trace:configure.in:34: -1- m4_pattern_allow([^CC$]) -+m4trace:configure.in:34: -1- AC_SUBST([CFLAGS]) -+m4trace:configure.in:34: -1- AC_SUBST_TRACE([CFLAGS]) -+m4trace:configure.in:34: -1- m4_pattern_allow([^CFLAGS$]) -+m4trace:configure.in:34: -1- AC_SUBST([LDFLAGS]) -+m4trace:configure.in:34: -1- AC_SUBST_TRACE([LDFLAGS]) -+m4trace:configure.in:34: -1- m4_pattern_allow([^LDFLAGS$]) -+m4trace:configure.in:34: -1- AC_SUBST([LIBS]) -+m4trace:configure.in:34: -1- AC_SUBST_TRACE([LIBS]) -+m4trace:configure.in:34: -1- m4_pattern_allow([^LIBS$]) -+m4trace:configure.in:34: -1- AC_SUBST([CPPFLAGS]) -+m4trace:configure.in:34: -1- AC_SUBST_TRACE([CPPFLAGS]) -+m4trace:configure.in:34: -1- m4_pattern_allow([^CPPFLAGS$]) -+m4trace:configure.in:34: -1- AC_SUBST([CC]) -+m4trace:configure.in:34: -1- AC_SUBST_TRACE([CC]) -+m4trace:configure.in:34: -1- m4_pattern_allow([^CC$]) -+m4trace:configure.in:34: -1- AC_SUBST([CC]) -+m4trace:configure.in:34: -1- AC_SUBST_TRACE([CC]) -+m4trace:configure.in:34: -1- m4_pattern_allow([^CC$]) -+m4trace:configure.in:34: -1- AC_SUBST([CC]) -+m4trace:configure.in:34: -1- AC_SUBST_TRACE([CC]) -+m4trace:configure.in:34: -1- m4_pattern_allow([^CC$]) -+m4trace:configure.in:34: -1- AC_SUBST([CC]) -+m4trace:configure.in:34: -1- AC_SUBST_TRACE([CC]) -+m4trace:configure.in:34: -1- m4_pattern_allow([^CC$]) -+m4trace:configure.in:34: -1- AC_SUBST([ac_ct_CC]) -+m4trace:configure.in:34: -1- AC_SUBST_TRACE([ac_ct_CC]) -+m4trace:configure.in:34: -1- m4_pattern_allow([^ac_ct_CC$]) -+m4trace:configure.in:34: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) -+m4trace:configure.in:34: -1- AC_SUBST_TRACE([EXEEXT]) -+m4trace:configure.in:34: -1- m4_pattern_allow([^EXEEXT$]) -+m4trace:configure.in:34: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) -+m4trace:configure.in:34: -1- AC_SUBST_TRACE([OBJEXT]) -+m4trace:configure.in:34: -1- m4_pattern_allow([^OBJEXT$]) -+m4trace:configure.in:34: -1- AC_SUBST([DEPCFLAGS]) -+m4trace:configure.in:34: -1- AC_SUBST_TRACE([DEPCFLAGS]) -+m4trace:configure.in:34: -1- m4_pattern_allow([^DEPCFLAGS$]) -+m4trace:configure.in:34: -1- AC_SUBST([CFLAGS_NDEBUG]) -+m4trace:configure.in:34: -1- AC_SUBST_TRACE([CFLAGS_NDEBUG]) -+m4trace:configure.in:34: -1- m4_pattern_allow([^CFLAGS_NDEBUG$]) -+m4trace:configure.in:35: -1- AC_SUBST([CPP]) -+m4trace:configure.in:35: -1- AC_SUBST_TRACE([CPP]) -+m4trace:configure.in:35: -1- m4_pattern_allow([^CPP$]) -+m4trace:configure.in:35: -1- AC_SUBST([CPPFLAGS]) -+m4trace:configure.in:35: -1- AC_SUBST_TRACE([CPPFLAGS]) -+m4trace:configure.in:35: -1- m4_pattern_allow([^CPPFLAGS$]) -+m4trace:configure.in:35: -1- AC_SUBST([CPP]) -+m4trace:configure.in:35: -1- AC_SUBST_TRACE([CPP]) -+m4trace:configure.in:35: -1- m4_pattern_allow([^CPP$]) -+m4trace:configure.in:36: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler -+ calls it, or to nothing if \'inline\' is not supported under any name. */ -+#ifndef __cplusplus -+#undef inline -+#endif]) -+m4trace:configure.in:38: -1- AC_SUBST([CXX]) -+m4trace:configure.in:38: -1- AC_SUBST_TRACE([CXX]) -+m4trace:configure.in:38: -1- m4_pattern_allow([^CXX$]) -+m4trace:configure.in:38: -1- AC_SUBST([CXXFLAGS]) -+m4trace:configure.in:38: -1- AC_SUBST_TRACE([CXXFLAGS]) -+m4trace:configure.in:38: -1- m4_pattern_allow([^CXXFLAGS$]) -+m4trace:configure.in:38: -1- AC_SUBST([LDFLAGS]) -+m4trace:configure.in:38: -1- AC_SUBST_TRACE([LDFLAGS]) -+m4trace:configure.in:38: -1- m4_pattern_allow([^LDFLAGS$]) -+m4trace:configure.in:38: -1- AC_SUBST([LIBS]) -+m4trace:configure.in:38: -1- AC_SUBST_TRACE([LIBS]) -+m4trace:configure.in:38: -1- m4_pattern_allow([^LIBS$]) -+m4trace:configure.in:38: -1- AC_SUBST([CPPFLAGS]) -+m4trace:configure.in:38: -1- AC_SUBST_TRACE([CPPFLAGS]) -+m4trace:configure.in:38: -1- m4_pattern_allow([^CPPFLAGS$]) -+m4trace:configure.in:38: -1- AC_SUBST([CXX]) -+m4trace:configure.in:38: -1- AC_SUBST_TRACE([CXX]) -+m4trace:configure.in:38: -1- m4_pattern_allow([^CXX$]) -+m4trace:configure.in:38: -1- AC_SUBST([ac_ct_CXX]) -+m4trace:configure.in:38: -1- AC_SUBST_TRACE([ac_ct_CXX]) -+m4trace:configure.in:38: -1- m4_pattern_allow([^ac_ct_CXX$]) -+m4trace:configure.in:38: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:105: AC_LANG_CPLUSPLUS is expanded from... -+m4/click.m4:140: CLICK_PROG_CXX is expanded from... -+configure.in:38: the top level]) -+m4trace:configure.in:38: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NEW_HDR]) -+m4trace:configure.in:38: -1- m4_pattern_allow([^HAVE_NEW_HDR$]) -+m4trace:configure.in:38: -1- AH_OUTPUT([HAVE_NEW_HDR], [/* Define if exists and works. */ -+#undef HAVE_NEW_HDR]) -+m4trace:configure.in:38: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NEW_H]) -+m4trace:configure.in:38: -1- m4_pattern_allow([^HAVE_NEW_H$]) -+m4trace:configure.in:38: -1- AH_OUTPUT([HAVE_NEW_H], [/* Define if exists and works. */ -+#undef HAVE_NEW_H]) -+m4trace:configure.in:38: -1- AC_SUBST([CXXFLAGS_NDEBUG]) -+m4trace:configure.in:38: -1- AC_SUBST_TRACE([CXXFLAGS_NDEBUG]) -+m4trace:configure.in:38: -1- m4_pattern_allow([^CXXFLAGS_NDEBUG$]) -+m4trace:configure.in:39: -1- AC_SUBST([CXXCPP]) -+m4trace:configure.in:39: -1- AC_SUBST_TRACE([CXXCPP]) -+m4trace:configure.in:39: -1- m4_pattern_allow([^CXXCPP$]) -+m4trace:configure.in:39: -1- AC_SUBST([CPPFLAGS]) -+m4trace:configure.in:39: -1- AC_SUBST_TRACE([CPPFLAGS]) -+m4trace:configure.in:39: -1- m4_pattern_allow([^CPPFLAGS$]) -+m4trace:configure.in:39: -1- AC_SUBST([CXXCPP]) -+m4trace:configure.in:39: -1- AC_SUBST_TRACE([CXXCPP]) -+m4trace:configure.in:39: -1- m4_pattern_allow([^CXXCPP$]) -+m4trace:configure.in:41: -1- AC_SUBST([KERNEL_CC]) -+m4trace:configure.in:41: -1- AC_SUBST_TRACE([KERNEL_CC]) -+m4trace:configure.in:41: -1- m4_pattern_allow([^KERNEL_CC$]) -+m4trace:configure.in:42: -1- AC_SUBST([KERNEL_CXX]) -+m4trace:configure.in:42: -1- AC_SUBST_TRACE([KERNEL_CXX]) -+m4trace:configure.in:42: -1- m4_pattern_allow([^KERNEL_CXX$]) -+m4trace:configure.in:45: -1- AC_SUBST([AR]) -+m4trace:configure.in:45: -1- AC_SUBST_TRACE([AR]) -+m4trace:configure.in:45: -1- m4_pattern_allow([^AR$]) -+m4trace:configure.in:46: -1- AC_SUBST([LD]) -+m4trace:configure.in:46: -1- AC_SUBST_TRACE([LD]) -+m4trace:configure.in:46: -1- m4_pattern_allow([^LD$]) -+m4trace:configure.in:47: -1- AC_SUBST([RANLIB]) -+m4trace:configure.in:47: -1- AC_SUBST_TRACE([RANLIB]) -+m4trace:configure.in:47: -1- m4_pattern_allow([^RANLIB$]) -+m4trace:configure.in:48: -1- AC_SUBST([STRIP]) -+m4trace:configure.in:48: -1- AC_SUBST_TRACE([STRIP]) -+m4trace:configure.in:48: -1- m4_pattern_allow([^STRIP$]) -+m4trace:configure.in:51: -1- AC_SUBST([conf_auxdir]) -+m4trace:configure.in:51: -1- AC_SUBST_TRACE([conf_auxdir]) -+m4trace:configure.in:51: -1- m4_pattern_allow([^conf_auxdir$]) -+m4trace:configure.in:54: -1- AC_SUBST([AR_CREATEFLAGS]) -+m4trace:configure.in:54: -1- AC_SUBST_TRACE([AR_CREATEFLAGS]) -+m4trace:configure.in:54: -1- m4_pattern_allow([^AR_CREATEFLAGS$]) -+m4trace:configure.in:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_USER_MULTITHREAD]) -+m4trace:configure.in:67: -1- m4_pattern_allow([^HAVE_USER_MULTITHREAD$]) -+m4trace:configure.in:82: -1- AC_DEFINE_TRACE_LITERAL([NUM_CLICK_CPUS]) -+m4trace:configure.in:82: -1- m4_pattern_allow([^NUM_CLICK_CPUS$]) -+m4trace:configure.in:83: -1- AC_DEFINE_TRACE_LITERAL([__MTCLICK__]) -+m4trace:configure.in:83: -1- m4_pattern_allow([^__MTCLICK__$]) -+m4trace:configure.in:87: -1- AC_DEFINE_TRACE_LITERAL([NUM_CLICK_CPUS]) -+m4trace:configure.in:87: -1- m4_pattern_allow([^NUM_CLICK_CPUS$]) -+m4trace:configure.in:92: -1- AC_DEFINE_TRACE_LITERAL([CLICK_WARP9]) -+m4trace:configure.in:92: -1- m4_pattern_allow([^CLICK_WARP9$]) -+m4trace:configure.in:95: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CLICKFS]) -+m4trace:configure.in:95: -1- m4_pattern_allow([^HAVE_CLICKFS$]) -+m4trace:configure.in:99: -1- AC_DEFINE_TRACE_LITERAL([HAVE_KERNEL_ASSERT]) -+m4trace:configure.in:99: -1- m4_pattern_allow([^HAVE_KERNEL_ASSERT$]) -+m4trace:configure.in:105: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ADAPTIVE_SCHEDULER]) -+m4trace:configure.in:105: -1- m4_pattern_allow([^HAVE_ADAPTIVE_SCHEDULER$]) -+m4trace:configure.in:177: -1- AC_SUBST([linuxdir]) -+m4trace:configure.in:177: -1- AC_SUBST_TRACE([linuxdir]) -+m4trace:configure.in:177: -1- m4_pattern_allow([^linuxdir$]) -+m4trace:configure.in:178: -1- AC_DEFINE_TRACE_LITERAL([LINUX_SRCDIR]) -+m4trace:configure.in:178: -1- m4_pattern_allow([^LINUX_SRCDIR$]) -+m4trace:configure.in:190: -1- AC_SUBST([element_groups]) -+m4trace:configure.in:190: -1- AC_SUBST_TRACE([element_groups]) -+m4trace:configure.in:190: -1- m4_pattern_allow([^element_groups$]) -+m4trace:configure.in:208: -2- AC_DEFINE_TRACE_LITERAL([HAVE_IP6]) -+m4trace:configure.in:208: -2- m4_pattern_allow([^HAVE_IP6$]) -+m4trace:configure.in:209: -2- AC_DEFINE_TRACE_LITERAL([HAVE_IPSEC]) -+m4trace:configure.in:209: -2- m4_pattern_allow([^HAVE_IPSEC$]) -+m4trace:configure.in:278: -1- AC_SUBST([freebsd_srcdir]) -+m4trace:configure.in:278: -1- AC_SUBST_TRACE([freebsd_srcdir]) -+m4trace:configure.in:278: -1- m4_pattern_allow([^freebsd_srcdir$]) -+m4trace:configure.in:279: -1- AC_SUBST([freebsd_includedir]) -+m4trace:configure.in:279: -1- AC_SUBST_TRACE([freebsd_includedir]) -+m4trace:configure.in:279: -1- m4_pattern_allow([^freebsd_includedir$]) -+m4trace:configure.in:280: -1- AC_DEFINE_TRACE_LITERAL([FREEBSD_INCLUDEDIR]) -+m4trace:configure.in:280: -1- m4_pattern_allow([^FREEBSD_INCLUDEDIR$]) -+m4trace:configure.in:298: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from... -+configure.in:298: the top level]) -+m4trace:configure.in:299: -1- AC_LIBSOURCE([strerror.c]) -+m4trace:configure.in:299: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the `strerror\' function. */ -+#undef HAVE_STRERROR]) -+m4trace:configure.in:299: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS $ac_func.$ac_objext"]) -+m4trace:configure.in:299: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) -+m4trace:configure.in:299: -1- m4_pattern_allow([^LIB@&t@OBJS$]) -+m4trace:configure.in:300: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */ -+#undef HAVE_SNPRINTF]) -+m4trace:configure.in:300: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */ -+#undef HAVE_STRTOUL]) -+m4trace:configure.in:300: -1- AH_OUTPUT([HAVE_TCGETPGRP], [/* Define to 1 if you have the `tcgetpgrp\' function. */ -+#undef HAVE_TCGETPGRP]) -+m4trace:configure.in:300: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define to 1 if you have the `vsnprintf\' function. */ -+#undef HAVE_VSNPRINTF]) -+m4trace:configure.in:301: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:105: AC_LANG_CPLUSPLUS is expanded from... -+configure.in:301: the top level]) -+m4trace:configure.in:310: -1- AC_SUBST([GREP]) -+m4trace:configure.in:310: -1- AC_SUBST_TRACE([GREP]) -+m4trace:configure.in:310: -1- m4_pattern_allow([^GREP$]) -+m4trace:configure.in:310: -1- AC_SUBST([GREP]) -+m4trace:configure.in:310: -1- AC_SUBST_TRACE([GREP]) -+m4trace:configure.in:310: -1- m4_pattern_allow([^GREP$]) -+m4trace:configure.in:310: -1- AC_SUBST([EGREP]) -+m4trace:configure.in:310: -1- AC_SUBST_TRACE([EGREP]) -+m4trace:configure.in:310: -1- m4_pattern_allow([^EGREP$]) -+m4trace:configure.in:310: -1- AC_SUBST([EGREP]) -+m4trace:configure.in:310: -1- AC_SUBST_TRACE([EGREP]) -+m4trace:configure.in:310: -1- m4_pattern_allow([^EGREP$]) -+m4trace:configure.in:310: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) -+m4trace:configure.in:310: -1- m4_pattern_allow([^STDC_HEADERS$]) -+m4trace:configure.in:310: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ -+#undef STDC_HEADERS]) -+m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_SYS_TYPES_H]) -+m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_SYS_STAT_H]) -+m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_STDLIB_H]) -+m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_STRING_H]) -+m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_MEMORY_H]) -+m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_STRINGS_H]) -+m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_INTTYPES_H]) -+m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_STDINT_H]) -+m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_UNISTD_H]) -+m4trace:configure.in:310: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INT]) -+m4trace:configure.in:310: -1- m4_pattern_allow([^SIZEOF_INT$]) -+m4trace:configure.in:310: -1- AH_OUTPUT([SIZEOF_INT], [/* The size of `int\', as computed by sizeof. */ -+#undef SIZEOF_INT]) -+m4trace:configure.in:311: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG]) -+m4trace:configure.in:311: -1- m4_pattern_allow([^SIZEOF_LONG$]) -+m4trace:configure.in:311: -1- AH_OUTPUT([SIZEOF_LONG], [/* The size of `long\', as computed by sizeof. */ -+#undef SIZEOF_LONG]) -+m4trace:configure.in:312: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_INTTYPES_H]) -+m4trace:configure.in:312: -1- AC_DEFINE_TRACE_LITERAL([HAVE_U_INT_TYPES]) -+m4trace:configure.in:312: -1- m4_pattern_allow([^HAVE_U_INT_TYPES$]) -+m4trace:configure.in:312: -1- AH_OUTPUT([HAVE_U_INT_TYPES], [/* Define if you have u_intXX_t types but not uintXX_t types. */ -+#undef HAVE_U_INT_TYPES]) -+m4trace:configure.in:313: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INDIFFERENT_ALIGNMENT]) -+m4trace:configure.in:313: -1- m4_pattern_allow([^HAVE_INDIFFERENT_ALIGNMENT$]) -+m4trace:configure.in:313: -1- AH_OUTPUT([HAVE_INDIFFERENT_ALIGNMENT], [/* Define if the machine is indifferent to alignment. */ -+#undef HAVE_INDIFFERENT_ALIGNMENT]) -+m4trace:configure.in:315: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG_LONG]) -+m4trace:configure.in:315: -1- m4_pattern_allow([^SIZEOF_LONG_LONG$]) -+m4trace:configure.in:315: -1- AH_OUTPUT([SIZEOF_LONG_LONG], [/* The size of `long long\', as computed by sizeof. */ -+#undef SIZEOF_LONG_LONG]) -+m4trace:configure.in:316: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG]) -+m4trace:configure.in:316: -1- m4_pattern_allow([^HAVE_LONG_LONG$]) -+m4trace:configure.in:316: -1- AH_OUTPUT([HAVE_LONG_LONG], [/* Define to 1 if the system has the type `long long\'. */ -+#undef HAVE_LONG_LONG]) -+m4trace:configure.in:316: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INT64_TYPES]) -+m4trace:configure.in:316: -1- m4_pattern_allow([^HAVE_INT64_TYPES$]) -+m4trace:configure.in:316: -1- AH_OUTPUT([HAVE_INT64_TYPES], [/* Define if 64-bit integer types are enabled. */ -+#undef HAVE_INT64_TYPES]) -+m4trace:configure.in:316: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:105: AC_LANG_CPLUSPLUS is expanded from... -+../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from... -+../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from... -+../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from... -+m4/click.m4:580: CLICK_CHECK_INT64_TYPES is expanded from... -+configure.in:316: the top level]) -+m4trace:configure.in:316: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INT64_IS_LONG_USERLEVEL]) -+m4trace:configure.in:316: -1- m4_pattern_allow([^HAVE_INT64_IS_LONG_USERLEVEL$]) -+m4trace:configure.in:316: -1- AH_OUTPUT([HAVE_INT64_IS_LONG_USERLEVEL], [/* Define if \'int64_t\' is typedefed to \'long\' at user level. */ -+#undef HAVE_INT64_IS_LONG_USERLEVEL]) -+m4trace:configure.in:316: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:105: AC_LANG_CPLUSPLUS is expanded from... -+../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from... -+../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from... -+../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from... -+m4/click.m4:580: CLICK_CHECK_INT64_TYPES is expanded from... -+configure.in:316: the top level]) -+m4trace:configure.in:316: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INT64_IS_LONG_LONG_USERLEVEL]) -+m4trace:configure.in:316: -1- m4_pattern_allow([^HAVE_INT64_IS_LONG_LONG_USERLEVEL$]) -+m4trace:configure.in:316: -1- AH_OUTPUT([HAVE_INT64_IS_LONG_LONG_USERLEVEL], [/* Define if \'int64_t\' is typedefed to \'long long\' at user level. */ -+#undef HAVE_INT64_IS_LONG_LONG_USERLEVEL]) -+m4trace:configure.in:318: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_STRUCT_TIMEVAL]) -+m4trace:configure.in:318: -1- m4_pattern_allow([^SIZEOF_STRUCT_TIMEVAL$]) -+m4trace:configure.in:318: -1- AH_OUTPUT([SIZEOF_STRUCT_TIMEVAL], [/* The size of `struct timeval\', as computed by sizeof. */ -+#undef SIZEOF_STRUCT_TIMEVAL]) -+m4trace:configure.in:319: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMESPEC]) -+m4trace:configure.in:319: -1- m4_pattern_allow([^HAVE_STRUCT_TIMESPEC$]) -+m4trace:configure.in:319: -1- AH_OUTPUT([HAVE_STRUCT_TIMESPEC], [/* Define to 1 if the system has the type `struct timespec\'. */ -+#undef HAVE_STRUCT_TIMESPEC]) -+m4trace:configure.in:321: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_STRUCT_TIMESPEC]) -+m4trace:configure.in:321: -1- m4_pattern_allow([^SIZEOF_STRUCT_TIMESPEC$]) -+m4trace:configure.in:321: -1- AH_OUTPUT([SIZEOF_STRUCT_TIMESPEC], [/* The size of `struct timespec\', as computed by sizeof. */ -+#undef SIZEOF_STRUCT_TIMESPEC]) -+m4trace:configure.in:323: -1- AH_OUTPUT([HAVE_ENDIAN_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_ENDIAN_H]) -+m4trace:configure.in:323: -1- AH_OUTPUT([HAVE_MACHINE_ENDIAN_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_MACHINE_ENDIAN_H]) -+m4trace:configure.in:323: -1- AC_DEFINE_TRACE_LITERAL([CLICK_BYTE_ORDER]) -+m4trace:configure.in:323: -1- m4_pattern_allow([^CLICK_BYTE_ORDER$]) -+m4trace:configure.in:323: -1- AH_OUTPUT([CLICK_BYTE_ORDER], [/* Define to byte order of target machine. */ -+#undef CLICK_BYTE_ORDER]) -+m4trace:configure.in:323: -1- AH_OUTPUT([HAVE_BYTESWAP_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_BYTESWAP_H]) -+m4trace:configure.in:324: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ARITHMETIC_RIGHT_SHIFT]) -+m4trace:configure.in:324: -1- m4_pattern_allow([^HAVE_ARITHMETIC_RIGHT_SHIFT$]) -+m4trace:configure.in:324: -1- AH_OUTPUT([HAVE_ARITHMETIC_RIGHT_SHIFT], [/* Define if right shift of signed integers acts by sign extension. */ -+#undef HAVE_ARITHMETIC_RIGHT_SHIFT]) -+m4trace:configure.in:325: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:105: AC_LANG_CPLUSPLUS is expanded from... -+m4/click.m4:725: CLICK_CHECK_ADDRESSABLE_VA_LIST is expanded from... -+configure.in:325: the top level]) -+m4trace:configure.in:325: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ADDRESSABLE_VA_LIST]) -+m4trace:configure.in:325: -1- m4_pattern_allow([^HAVE_ADDRESSABLE_VA_LIST$]) -+m4trace:configure.in:325: -1- AH_OUTPUT([HAVE_ADDRESSABLE_VA_LIST], [/* Define if the va_list type is addressable. */ -+#undef HAVE_ADDRESSABLE_VA_LIST]) -+m4trace:configure.in:326: -1- AC_DEFINE_TRACE_LITERAL([HAVE___BUILTIN_CLZ]) -+m4trace:configure.in:326: -1- m4_pattern_allow([^HAVE___BUILTIN_CLZ$]) -+m4trace:configure.in:326: -1- AH_OUTPUT([HAVE___BUILTIN_CLZ], [/* Define if you have the __builtin_clz function. */ -+#undef HAVE___BUILTIN_CLZ]) -+m4trace:configure.in:326: -1- AC_DEFINE_TRACE_LITERAL([HAVE___BUILTIN_CLZL]) -+m4trace:configure.in:326: -1- m4_pattern_allow([^HAVE___BUILTIN_CLZL$]) -+m4trace:configure.in:326: -1- AH_OUTPUT([HAVE___BUILTIN_CLZL], [/* Define if you have the __builtin_clzl function. */ -+#undef HAVE___BUILTIN_CLZL]) -+m4trace:configure.in:326: -1- AC_DEFINE_TRACE_LITERAL([HAVE___BUILTIN_CLZLL]) -+m4trace:configure.in:326: -1- m4_pattern_allow([^HAVE___BUILTIN_CLZLL$]) -+m4trace:configure.in:326: -1- AH_OUTPUT([HAVE___BUILTIN_CLZLL], [/* Define if you have the __builtin_clzll function. */ -+#undef HAVE___BUILTIN_CLZLL]) -+m4trace:configure.in:326: -1- AC_DEFINE_TRACE_LITERAL([HAVE___BUILTIN_FFS]) -+m4trace:configure.in:326: -1- m4_pattern_allow([^HAVE___BUILTIN_FFS$]) -+m4trace:configure.in:326: -1- AH_OUTPUT([HAVE___BUILTIN_FFS], [/* Define if you have the __builtin_ffs function. */ -+#undef HAVE___BUILTIN_FFS]) -+m4trace:configure.in:326: -1- AC_DEFINE_TRACE_LITERAL([HAVE___BUILTIN_FFSL]) -+m4trace:configure.in:326: -1- m4_pattern_allow([^HAVE___BUILTIN_FFSL$]) -+m4trace:configure.in:326: -1- AH_OUTPUT([HAVE___BUILTIN_FFSL], [/* Define if you have the __builtin_ffsl function. */ -+#undef HAVE___BUILTIN_FFSL]) -+m4trace:configure.in:326: -1- AC_DEFINE_TRACE_LITERAL([HAVE___BUILTIN_FFSLL]) -+m4trace:configure.in:326: -1- m4_pattern_allow([^HAVE___BUILTIN_FFSLL$]) -+m4trace:configure.in:326: -1- AH_OUTPUT([HAVE___BUILTIN_FFSLL], [/* Define if you have the __builtin_ffsll function. */ -+#undef HAVE___BUILTIN_FFSLL]) -+m4trace:configure.in:326: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_STRINGS_H]) -+m4trace:configure.in:326: -1- AH_OUTPUT([HAVE_FFS], [/* Define to 1 if you have the `ffs\' function. */ -+#undef HAVE_FFS]) -+m4trace:configure.in:326: -1- AH_OUTPUT([HAVE_FFSL], [/* Define to 1 if you have the `ffsl\' function. */ -+#undef HAVE_FFSL]) -+m4trace:configure.in:326: -1- AH_OUTPUT([HAVE_FFSLL], [/* Define to 1 if you have the `ffsll\' function. */ -+#undef HAVE_FFSLL]) -+m4trace:configure.in:335: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NANOTIMESTAMP_ENABLED]) -+m4trace:configure.in:335: -1- m4_pattern_allow([^HAVE_NANOTIMESTAMP_ENABLED$]) -+m4trace:configure.in:360: -1- AC_SUBST([BUILD_CC]) -+m4trace:configure.in:360: -1- AC_SUBST_TRACE([BUILD_CC]) -+m4trace:configure.in:360: -1- m4_pattern_allow([^BUILD_CC$]) -+m4trace:configure.in:361: -1- AC_SUBST([BUILD_CXX]) -+m4trace:configure.in:361: -1- AC_SUBST_TRACE([BUILD_CXX]) -+m4trace:configure.in:361: -1- m4_pattern_allow([^BUILD_CXX$]) -+m4trace:configure.in:363: -1- AC_SUBST([BUILD_AR]) -+m4trace:configure.in:363: -1- AC_SUBST_TRACE([BUILD_AR]) -+m4trace:configure.in:363: -1- m4_pattern_allow([^BUILD_AR$]) -+m4trace:configure.in:364: -1- AC_SUBST([BUILD_RANLIB]) -+m4trace:configure.in:364: -1- AC_SUBST_TRACE([BUILD_RANLIB]) -+m4trace:configure.in:364: -1- m4_pattern_allow([^BUILD_RANLIB$]) -+m4trace:configure.in:367: -1- AC_SUBST([HOST_TOOLS]) -+m4trace:configure.in:367: -1- AC_SUBST_TRACE([HOST_TOOLS]) -+m4trace:configure.in:367: -1- m4_pattern_allow([^HOST_TOOLS$]) -+m4trace:configure.in:374: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_UNISTD_H]) -+m4trace:configure.in:374: -1- AH_OUTPUT([HAVE_TERMIO_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_TERMIO_H]) -+m4trace:configure.in:374: -1- AH_OUTPUT([HAVE_NETDB_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_NETDB_H]) -+m4trace:configure.in:374: -1- AH_OUTPUT([HAVE_SYS_EVENT_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_SYS_EVENT_H]) -+m4trace:configure.in:374: -1- AH_OUTPUT([HAVE_PWD_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_PWD_H]) -+m4trace:configure.in:374: -1- AH_OUTPUT([HAVE_GRP_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_GRP_H]) -+m4trace:configure.in:375: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POLL_H]) -+m4trace:configure.in:375: -1- m4_pattern_allow([^HAVE_POLL_H$]) -+m4trace:configure.in:375: -1- AH_OUTPUT([HAVE_POLL_H], [/* Define if you have a non-emulated header file. */ -+#undef HAVE_POLL_H]) -+m4trace:configure.in:376: -1- AH_OUTPUT([HAVE_SIGACTION], [/* Define to 1 if you have the `sigaction\' function. */ -+#undef HAVE_SIGACTION]) -+m4trace:configure.in:378: -1- AH_OUTPUT([HAVE_KQUEUE], [/* Define to 1 if you have the `kqueue\' function. */ -+#undef HAVE_KQUEUE]) -+m4trace:configure.in:385: -1- AC_DEFINE_TRACE_LITERAL([HAVE_EV_SET_UDATA_POINTER]) -+m4trace:configure.in:385: -1- m4_pattern_allow([^HAVE_EV_SET_UDATA_POINTER$]) -+m4trace:configure.in:385: -1- AH_OUTPUT([HAVE_EV_SET_UDATA_POINTER], [/* Define if the last argument to EV_SET has pointer type. */ -+#undef HAVE_EV_SET_UDATA_POINTER]) -+m4trace:configure.in:392: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_DLFCN_H]) -+m4trace:configure.in:392: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DYNAMIC_LINKING]) -+m4trace:configure.in:392: -1- m4_pattern_allow([^HAVE_DYNAMIC_LINKING$]) -+m4trace:configure.in:392: -1- AH_OUTPUT([HAVE_DYNAMIC_LINKING], [/* Define if dynamic linking is possible. */ -+#undef HAVE_DYNAMIC_LINKING]) -+m4trace:configure.in:392: -1- AC_SUBST([DL_LIBS]) -+m4trace:configure.in:392: -1- AC_SUBST_TRACE([DL_LIBS]) -+m4trace:configure.in:392: -1- m4_pattern_allow([^DL_LIBS$]) -+m4trace:configure.in:392: -1- AC_SUBST([LDMODULEFLAGS]) -+m4trace:configure.in:392: -1- AC_SUBST_TRACE([LDMODULEFLAGS]) -+m4trace:configure.in:392: -1- m4_pattern_allow([^LDMODULEFLAGS$]) -+m4trace:configure.in:394: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_DLFCN_H]) -+m4trace:configure.in:394: -1- AC_SUBST([BUILD_DL_LIBS]) -+m4trace:configure.in:394: -1- AC_SUBST_TRACE([BUILD_DL_LIBS]) -+m4trace:configure.in:394: -1- m4_pattern_allow([^BUILD_DL_LIBS$]) -+m4trace:configure.in:403: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from... -+configure.in:403: the top level]) -+m4trace:configure.in:417: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ACCEPT_SOCKLEN_T]) -+m4trace:configure.in:417: -1- m4_pattern_allow([^HAVE_ACCEPT_SOCKLEN_T$]) -+m4trace:configure.in:417: -1- AH_OUTPUT([HAVE_ACCEPT_SOCKLEN_T], [/* Define if accept() uses socklen_t. */ -+#undef HAVE_ACCEPT_SOCKLEN_T]) -+m4trace:configure.in:420: -1- AC_SUBST([SOCKET_LIBS]) -+m4trace:configure.in:420: -1- AC_SUBST_TRACE([SOCKET_LIBS]) -+m4trace:configure.in:420: -1- m4_pattern_allow([^SOCKET_LIBS$]) -+m4trace:configure.in:421: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:105: AC_LANG_CPLUSPLUS is expanded from... -+configure.in:421: the top level]) -+m4trace:configure.in:428: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from... -+m4/click.m4:758: CLICK_CHECK_LARGE_FILE_SUPPORT is expanded from... -+configure.in:428: the top level]) -+m4trace:configure.in:428: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LARGE_FILE_SUPPORT]) -+m4trace:configure.in:428: -1- m4_pattern_allow([^HAVE_LARGE_FILE_SUPPORT$]) -+m4trace:configure.in:428: -1- AH_OUTPUT([HAVE_LARGE_FILE_SUPPORT], [/* Define if your C library contains large file support. */ -+#undef HAVE_LARGE_FILE_SUPPORT]) -+m4trace:configure.in:428: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_OFF_T]) -+m4trace:configure.in:428: -1- m4_pattern_allow([^SIZEOF_OFF_T$]) -+m4trace:configure.in:428: -1- AH_OUTPUT([SIZEOF_OFF_T], [/* The size of `off_t\', as computed by sizeof. */ -+#undef SIZEOF_OFF_T]) -+m4trace:configure.in:435: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from... -+configure.in:435: the top level]) -+m4trace:configure.in:436: -1- AH_OUTPUT([HAVE_SYS_MMAN_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_SYS_MMAN_H]) -+m4trace:configure.in:437: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_STDLIB_H]) -+m4trace:configure.in:437: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_UNISTD_H]) -+m4trace:configure.in:437: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */ -+#undef HAVE_GETPAGESIZE]) -+m4trace:configure.in:437: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP]) -+m4trace:configure.in:437: -1- m4_pattern_allow([^HAVE_MMAP$]) -+m4trace:configure.in:437: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working `mmap\' system call. */ -+#undef HAVE_MMAP]) -+m4trace:configure.in:438: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:105: AC_LANG_CPLUSPLUS is expanded from... -+configure.in:438: the top level]) -+m4trace:configure.in:439: -1- AH_OUTPUT([HAVE_MADVISE], [/* Define to 1 if you have the `madvise\' function. */ -+#undef HAVE_MADVISE]) -+m4trace:configure.in:443: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_MADVISE]) -+m4trace:configure.in:443: -1- m4_pattern_allow([^HAVE_DECL_MADVISE$]) -+m4trace:configure.in:443: -1- AH_OUTPUT([HAVE_DECL_MADVISE], [/* Define to 1 if you have the declaration of `madvise\', and to 0 if you -+ don\'t. */ -+#undef HAVE_DECL_MADVISE]) -+m4trace:configure.in:443: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_MADVISE]) -+m4trace:configure.in:443: -1- m4_pattern_allow([^HAVE_DECL_MADVISE$]) -+m4trace:configure.in:456: -1- AC_SUBST([EXTRA_DRIVER_OBJS]) -+m4trace:configure.in:456: -1- AC_SUBST_TRACE([EXTRA_DRIVER_OBJS]) -+m4trace:configure.in:456: -1- m4_pattern_allow([^EXTRA_DRIVER_OBJS$]) -+m4trace:configure.in:457: -1- AC_SUBST([EXTRA_TOOL_OBJS]) -+m4trace:configure.in:457: -1- AC_SUBST_TRACE([EXTRA_TOOL_OBJS]) -+m4trace:configure.in:457: -1- m4_pattern_allow([^EXTRA_TOOL_OBJS$]) -+m4trace:configure.in:506: -1- AC_SUBST([LINUXMODULE_2_6]) -+m4trace:configure.in:506: -1- AC_SUBST_TRACE([LINUXMODULE_2_6]) -+m4trace:configure.in:506: -1- m4_pattern_allow([^LINUXMODULE_2_6$]) -+m4trace:configure.in:508: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUXMODULE_2_6]) -+m4trace:configure.in:508: -1- m4_pattern_allow([^HAVE_LINUXMODULE_2_6$]) -+m4trace:configure.in:508: -1- AH_OUTPUT([HAVE_LINUXMODULE_2_6], [/* Define if the Click linuxmodule is compiled for a 2.6 kernel. */ -+#undef HAVE_LINUXMODULE_2_6]) -+m4trace:configure.in:516: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CLICK_KERNEL]) -+m4trace:configure.in:516: -1- m4_pattern_allow([^HAVE_CLICK_KERNEL$]) -+m4trace:configure.in:524: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CLICK_KERNEL_TX_NOTIFY]) -+m4trace:configure.in:524: -1- m4_pattern_allow([^HAVE_CLICK_KERNEL_TX_NOTIFY$]) -+m4trace:configure.in:532: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_READ_NET_SKBCOUNT]) -+m4trace:configure.in:532: -1- m4_pattern_allow([^HAVE_LINUX_READ_NET_SKBCOUNT$]) -+m4trace:configure.in:540: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_STRLEN_EXPOSED]) -+m4trace:configure.in:540: -1- m4_pattern_allow([^HAVE_LINUX_STRLEN_EXPOSED$]) -+m4trace:configure.in:548: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_TULIP_INTERRUPT_HOOK]) -+m4trace:configure.in:548: -1- m4_pattern_allow([^HAVE_LINUX_TULIP_INTERRUPT_HOOK$]) -+m4trace:configure.in:556: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_POLLING]) -+m4trace:configure.in:556: -1- m4_pattern_allow([^HAVE_LINUX_POLLING$]) -+m4trace:configure.in:564: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_ATOMIC_SET_MASK]) -+m4trace:configure.in:564: -1- m4_pattern_allow([^HAVE_LINUX_ATOMIC_SET_MASK$]) -+m4trace:configure.in:572: -1- AC_DEFINE_TRACE_LITERAL([__SMP__]) -+m4trace:configure.in:572: -1- m4_pattern_allow([^__SMP__$]) -+m4trace:configure.in:581: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_ASM_ALTERNATIVE_H]) -+m4trace:configure.in:581: -1- m4_pattern_allow([^HAVE_LINUX_ASM_ALTERNATIVE_H$]) -+m4trace:configure.in:602: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CLICK_BSD_KERNEL]) -+m4trace:configure.in:602: -1- m4_pattern_allow([^HAVE_CLICK_BSD_KERNEL$]) -+m4trace:configure.in:603: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BSD_POLLING]) -+m4trace:configure.in:603: -1- m4_pattern_allow([^HAVE_BSD_POLLING$]) -+m4trace:configure.in:621: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRIDE_SCHED]) -+m4trace:configure.in:621: -1- m4_pattern_allow([^HAVE_STRIDE_SCHED$]) -+m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TASK_HEAP]) -+m4trace:configure.in:626: -1- m4_pattern_allow([^HAVE_TASK_HEAP$]) -+m4trace:configure.in:636: -1- AC_DEFINE_TRACE_LITERAL([CLICK_DMALLOC]) -+m4trace:configure.in:636: -1- m4_pattern_allow([^CLICK_DMALLOC$]) -+m4trace:configure.in:646: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTEL_CPU]) -+m4trace:configure.in:646: -1- m4_pattern_allow([^HAVE_INTEL_CPU$]) -+m4trace:configure.in:654: -1- AH_OUTPUT([HAVE_LINUX_IF_TUN_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_LINUX_IF_TUN_H]) -+m4trace:configure.in:654: -1- AH_OUTPUT([HAVE_NET_IF_TUN_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_NET_IF_TUN_H]) -+m4trace:configure.in:654: -1- AH_OUTPUT([HAVE_NET_IF_TAP_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_NET_IF_TAP_H]) -+m4trace:configure.in:654: -1- AH_OUTPUT([HAVE_NET_BPF_H], [/* Define to 1 if you have the header file. */ -+#undef HAVE_NET_BPF_H]) -+m4trace:configure.in:665: -1- AC_SUBST([POSSIBLE_DRIVERS]) -+m4trace:configure.in:665: -1- AC_SUBST_TRACE([POSSIBLE_DRIVERS]) -+m4trace:configure.in:665: -1- m4_pattern_allow([^POSSIBLE_DRIVERS$]) -+m4trace:configure.in:673: -1- AC_SUBST([DRIVERS]) -+m4trace:configure.in:673: -1- AC_SUBST_TRACE([DRIVERS]) -+m4trace:configure.in:673: -1- m4_pattern_allow([^DRIVERS$]) -+m4trace:configure.in:676: -1- AC_SUBST([HAVE_USERLEVEL_DRIVER]) -+m4trace:configure.in:676: -1- AC_SUBST_TRACE([HAVE_USERLEVEL_DRIVER]) -+m4trace:configure.in:676: -1- m4_pattern_allow([^HAVE_USERLEVEL_DRIVER$]) -+m4trace:configure.in:678: -1- AC_SUBST([HAVE_LINUXMODULE_DRIVER]) -+m4trace:configure.in:678: -1- AC_SUBST_TRACE([HAVE_LINUXMODULE_DRIVER]) -+m4trace:configure.in:678: -1- m4_pattern_allow([^HAVE_LINUXMODULE_DRIVER$]) -+m4trace:configure.in:680: -1- AC_SUBST([HAVE_BSDMODULE_DRIVER]) -+m4trace:configure.in:680: -1- AC_SUBST_TRACE([HAVE_BSDMODULE_DRIVER]) -+m4trace:configure.in:680: -1- m4_pattern_allow([^HAVE_BSDMODULE_DRIVER$]) -+m4trace:configure.in:683: -1- AC_SUBST([OTHER_TARGETS]) -+m4trace:configure.in:683: -1- AC_SUBST_TRACE([OTHER_TARGETS]) -+m4trace:configure.in:683: -1- m4_pattern_allow([^OTHER_TARGETS$]) -+m4trace:configure.in:692: -1- AC_SUBST([TOOLDIRS]) -+m4trace:configure.in:692: -1- AC_SUBST_TRACE([TOOLDIRS]) -+m4trace:configure.in:692: -1- m4_pattern_allow([^TOOLDIRS$]) -+m4trace:configure.in:693: -1- AC_SUBST([TOOL_TARGETS]) -+m4trace:configure.in:693: -1- AC_SUBST_TRACE([TOOL_TARGETS]) -+m4trace:configure.in:693: -1- m4_pattern_allow([^TOOL_TARGETS$]) -+m4trace:configure.in:700: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BPF_TIMEVAL]) -+m4trace:configure.in:700: -1- m4_pattern_allow([^HAVE_BPF_TIMEVAL$]) -+m4trace:configure.in:700: -1- AH_OUTPUT([HAVE_BPF_TIMEVAL], [/* Define if uses bpf_timeval. */ -+#undef HAVE_BPF_TIMEVAL]) -+m4trace:configure.in:700: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PCAP_SETNONBLOCK]) -+m4trace:configure.in:700: -1- m4_pattern_allow([^HAVE_DECL_PCAP_SETNONBLOCK$]) -+m4trace:configure.in:700: -1- AH_OUTPUT([HAVE_DECL_PCAP_SETNONBLOCK], [/* Define to 1 if you have the declaration of `pcap_setnonblock\', and to 0 if -+ you don\'t. */ -+#undef HAVE_DECL_PCAP_SETNONBLOCK]) -+m4trace:configure.in:700: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PCAP_SETNONBLOCK]) -+m4trace:configure.in:700: -1- m4_pattern_allow([^HAVE_DECL_PCAP_SETNONBLOCK$]) -+m4trace:configure.in:700: -1- AC_SUBST([PCAP_INCLUDES]) -+m4trace:configure.in:700: -1- AC_SUBST_TRACE([PCAP_INCLUDES]) -+m4trace:configure.in:700: -1- m4_pattern_allow([^PCAP_INCLUDES$]) -+m4trace:configure.in:700: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from... -+../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from... -+../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from... -+../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from... -+m4/click.m4:343: CLICK_CHECK_LIBPCAP is expanded from... -+configure.in:700: the top level]) -+m4trace:configure.in:700: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from... -+../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from... -+../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from... -+../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from... -+m4/click.m4:343: CLICK_CHECK_LIBPCAP is expanded from... -+configure.in:700: the top level]) -+m4trace:configure.in:700: -1- AC_SUBST([PCAP_LIBS]) -+m4trace:configure.in:700: -1- AC_SUBST_TRACE([PCAP_LIBS]) -+m4trace:configure.in:700: -1- m4_pattern_allow([^PCAP_LIBS$]) -+m4trace:configure.in:700: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PCAP]) -+m4trace:configure.in:700: -1- m4_pattern_allow([^HAVE_PCAP$]) -+m4trace:configure.in:700: -1- AH_OUTPUT([HAVE_PCAP], [/* Define if you have -lpcap and pcap.h. */ -+#undef HAVE_PCAP]) -+m4trace:configure.in:700: -1- AH_OUTPUT([HAVE_PCAP_SETNONBLOCK], [/* Define to 1 if you have the `pcap_setnonblock\' function. */ -+#undef HAVE_PCAP_SETNONBLOCK]) -+m4trace:configure.in:710: -1- AC_DEFINE_TRACE_LITERAL([HAVE_USERLEVEL_DRIVER]) -+m4trace:configure.in:710: -1- m4_pattern_allow([^HAVE_USERLEVEL_DRIVER$]) -+m4trace:configure.in:722: -1- AC_DEFINE_TRACE_LITERAL([HAVE_IF_DATA_IFI_DATALEN]) -+m4trace:configure.in:722: -1- m4_pattern_allow([^HAVE_IF_DATA_IFI_DATALEN$]) -+m4trace:configure.in:722: -1- AH_OUTPUT([HAVE_IF_DATA_IFI_DATALEN], [/* Define if \'struct if_data\' has an \'ifi_datalen\' member. */ -+#undef HAVE_IF_DATA_IFI_DATALEN]) -+m4trace:configure.in:730: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKADDR_IN_SIN_LEN]) -+m4trace:configure.in:730: -1- m4_pattern_allow([^HAVE_SOCKADDR_IN_SIN_LEN$]) -+m4trace:configure.in:730: -1- AH_OUTPUT([HAVE_SOCKADDR_IN_SIN_LEN], [/* Define if \'struct sockaddr_in\' has a \'sin_len\' member. */ -+#undef HAVE_SOCKADDR_IN_SIN_LEN]) -+m4trace:configure.in:749: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from... -+configure.in:749: the top level]) -+m4trace:configure.in:753: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:105: AC_LANG_CPLUSPLUS is expanded from... -+configure.in:753: the top level]) -+m4trace:configure.in:756: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PROPER]) -+m4trace:configure.in:756: -1- m4_pattern_allow([^HAVE_PROPER$]) -+m4trace:configure.in:771: -1- AC_SUBST([PROPER_INCLUDES]) -+m4trace:configure.in:771: -1- AC_SUBST_TRACE([PROPER_INCLUDES]) -+m4trace:configure.in:771: -1- m4_pattern_allow([^PROPER_INCLUDES$]) -+m4trace:configure.in:772: -1- AC_SUBST([PROPER_LIBS]) -+m4trace:configure.in:772: -1- AC_SUBST_TRACE([PROPER_LIBS]) -+m4trace:configure.in:772: -1- m4_pattern_allow([^PROPER_LIBS$]) -+m4trace:configure.in:788: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from... -+configure.in:788: the top level]) -+m4trace:configure.in:794: -1- AC_DEFINE_TRACE_LITERAL([HAVE_EXPAT]) -+m4trace:configure.in:794: -1- m4_pattern_allow([^HAVE_EXPAT$]) -+m4trace:configure.in:810: -1- AC_SUBST([XML2CLICK]) -+m4trace:configure.in:810: -1- AC_SUBST_TRACE([XML2CLICK]) -+m4trace:configure.in:810: -1- m4_pattern_allow([^XML2CLICK$]) -+m4trace:configure.in:811: -1- AC_SUBST([EXPAT_INCLUDES]) -+m4trace:configure.in:811: -1- AC_SUBST_TRACE([EXPAT_INCLUDES]) -+m4trace:configure.in:811: -1- m4_pattern_allow([^EXPAT_INCLUDES$]) -+m4trace:configure.in:812: -1- AC_SUBST([EXPAT_LIBS]) -+m4trace:configure.in:812: -1- AC_SUBST_TRACE([EXPAT_LIBS]) -+m4trace:configure.in:812: -1- m4_pattern_allow([^EXPAT_LIBS$]) -+m4trace:configure.in:846: -1- AC_SUBST([LINUX_CFLAGS]) -+m4trace:configure.in:846: -1- AC_SUBST_TRACE([LINUX_CFLAGS]) -+m4trace:configure.in:846: -1- m4_pattern_allow([^LINUX_CFLAGS$]) -+m4trace:configure.in:877: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:105: AC_LANG_CPLUSPLUS is expanded from... -+../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from... -+../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from... -+../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from... -+configure.in:877: the top level]) -+m4trace:configure.in:886: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:105: AC_LANG_CPLUSPLUS is expanded from... -+../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from... -+../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from... -+../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from... -+configure.in:886: the top level]) -+m4trace:configure.in:893: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:105: AC_LANG_CPLUSPLUS is expanded from... -+../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from... -+../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from... -+../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from... -+configure.in:893: the top level]) -+m4trace:configure.in:912: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INT64_IS_LONG_LINUXMODULE]) -+m4trace:configure.in:912: -1- m4_pattern_allow([^HAVE_INT64_IS_LONG_LINUXMODULE$]) -+m4trace:configure.in:912: -1- AH_OUTPUT([HAVE_INT64_IS_LONG_LINUXMODULE], [/* Define if \'int64_t\' is typedefed to \'long\' in linuxmodule. */ -+#undef HAVE_INT64_IS_LONG_LINUXMODULE]) -+m4trace:configure.in:924: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INT64_IS_LONG_LONG_LINUXMODULE]) -+m4trace:configure.in:924: -1- m4_pattern_allow([^HAVE_INT64_IS_LONG_LONG_LINUXMODULE$]) -+m4trace:configure.in:924: -1- AH_OUTPUT([HAVE_INT64_IS_LONG_LONG_LINUXMODULE], [/* Define if \'int64_t\' is typedefed to \'long long\' in linuxmodule. */ -+#undef HAVE_INT64_IS_LONG_LONG_LINUXMODULE]) -+m4trace:configure.in:933: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from... -+../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from... -+../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from... -+../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from... -+configure.in:933: the top level]) -+m4trace:configure.in:935: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_SKBUFF_SECURITY]) -+m4trace:configure.in:935: -1- m4_pattern_allow([^HAVE_LINUX_SKBUFF_SECURITY$]) -+m4trace:configure.in:935: -1- AH_OUTPUT([HAVE_LINUX_SKBUFF_SECURITY], [/* Define if \'struct sk_buff\' has a \'security\' member. */ -+#undef HAVE_LINUX_SKBUFF_SECURITY]) -+m4trace:configure.in:943: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from... -+../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from... -+../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from... -+../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from... -+configure.in:943: the top level]) -+m4trace:configure.in:945: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_SKBUFF_FCLONE]) -+m4trace:configure.in:945: -1- m4_pattern_allow([^HAVE_LINUX_SKBUFF_FCLONE$]) -+m4trace:configure.in:945: -1- AH_OUTPUT([HAVE_LINUX_SKBUFF_FCLONE], [/* Define if \'struct sk_buff\' has an \'fclone\' member. */ -+#undef HAVE_LINUX_SKBUFF_FCLONE]) -+m4trace:configure.in:953: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from... -+../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from... -+../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from... -+../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from... -+configure.in:953: the top level]) -+m4trace:configure.in:955: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_SKB_SHINFO_TSO_SIZE]) -+m4trace:configure.in:955: -1- m4_pattern_allow([^HAVE_LINUX_SKB_SHINFO_TSO_SIZE$]) -+m4trace:configure.in:955: -1- AH_OUTPUT([HAVE_LINUX_SKB_SHINFO_TSO_SIZE], [/* Define if \'struct skb_shared_info\' has a \'tso_size\' member. */ -+#undef HAVE_LINUX_SKB_SHINFO_TSO_SIZE]) -+m4trace:configure.in:963: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from... -+../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from... -+../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from... -+../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from... -+configure.in:963: the top level]) -+m4trace:configure.in:965: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_SKB_SHINFO_GSO_SIZE]) -+m4trace:configure.in:965: -1- m4_pattern_allow([^HAVE_LINUX_SKB_SHINFO_GSO_SIZE$]) -+m4trace:configure.in:965: -1- AH_OUTPUT([HAVE_LINUX_SKB_SHINFO_GSO_SIZE], [/* Define if \'struct skb_shared_info\' has a \'gso_size\' member. */ -+#undef HAVE_LINUX_SKB_SHINFO_GSO_SIZE]) -+m4trace:configure.in:973: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from... -+../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from... -+../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from... -+../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from... -+configure.in:973: the top level]) -+m4trace:configure.in:975: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_SKB_SHINFO_UFO_SIZE]) -+m4trace:configure.in:975: -1- m4_pattern_allow([^HAVE_LINUX_SKB_SHINFO_UFO_SIZE$]) -+m4trace:configure.in:975: -1- AH_OUTPUT([HAVE_LINUX_SKB_SHINFO_UFO_SIZE], [/* Define if \'struct skb_shared_info\' has a \'ufo_size\' member. */ -+#undef HAVE_LINUX_SKB_SHINFO_UFO_SIZE]) -+m4trace:configure.in:983: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from... -+../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from... -+../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from... -+../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from... -+configure.in:983: the top level]) -+m4trace:configure.in:985: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_SKB_SHINFO_IP6_FRAG_ID]) -+m4trace:configure.in:985: -1- m4_pattern_allow([^HAVE_LINUX_SKB_SHINFO_IP6_FRAG_ID$]) -+m4trace:configure.in:985: -1- AH_OUTPUT([HAVE_LINUX_SKB_SHINFO_IP6_FRAG_ID], [/* Define if \'struct skb_shared_info\' has an \'ip6_frag_id\' member. */ -+#undef HAVE_LINUX_SKB_SHINFO_IP6_FRAG_ID]) -+m4trace:configure.in:988: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from... -+configure.in:988: the top level]) -+m4trace:configure.in:993: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NET_ENABLE_TIMESTAMP]) -+m4trace:configure.in:993: -1- m4_pattern_allow([^HAVE_NET_ENABLE_TIMESTAMP$]) -+m4trace:configure.in:993: -1- AH_OUTPUT([HAVE_NET_ENABLE_TIMESTAMP], [/* Define if you have the \'net_enable_timestamp\' function. */ -+#undef HAVE_NET_ENABLE_TIMESTAMP]) -+m4trace:configure.in:1000: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NETIF_TX_LOCK]) -+m4trace:configure.in:1000: -1- m4_pattern_allow([^HAVE_NETIF_TX_LOCK$]) -+m4trace:configure.in:1000: -1- AH_OUTPUT([HAVE_NETIF_TX_LOCK], [/* Define if you have the \'netif_tx_lock\' function. */ -+#undef HAVE_NETIF_TX_LOCK]) -+m4trace:configure.in:1010: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUXMODULE_DRIVER]) -+m4trace:configure.in:1010: -1- m4_pattern_allow([^HAVE_LINUXMODULE_DRIVER$]) -+m4trace:configure.in:1056: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BSDMODULE_DRIVER]) -+m4trace:configure.in:1056: -1- m4_pattern_allow([^HAVE_BSDMODULE_DRIVER$]) -+m4trace:configure.in:1079: -1- AC_REQUIRE_AUX_FILE([install-sh]) -+m4trace:configure.in:1079: -1- AC_SUBST([INSTALL_PROGRAM]) -+m4trace:configure.in:1079: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) -+m4trace:configure.in:1079: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) -+m4trace:configure.in:1079: -1- AC_SUBST([INSTALL_SCRIPT]) -+m4trace:configure.in:1079: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) -+m4trace:configure.in:1079: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) -+m4trace:configure.in:1079: -1- AC_SUBST([INSTALL_DATA]) -+m4trace:configure.in:1079: -1- AC_SUBST_TRACE([INSTALL_DATA]) -+m4trace:configure.in:1079: -1- m4_pattern_allow([^INSTALL_DATA$]) -+m4trace:configure.in:1079: -1- AC_SUBST([INSTALL_IF_CHANGED]) -+m4trace:configure.in:1079: -1- AC_SUBST_TRACE([INSTALL_IF_CHANGED]) -+m4trace:configure.in:1079: -1- m4_pattern_allow([^INSTALL_IF_CHANGED$]) -+m4trace:configure.in:1079: -1- AC_SUBST([CLICKINSTALL]) -+m4trace:configure.in:1079: -1- AC_SUBST_TRACE([CLICKINSTALL]) -+m4trace:configure.in:1079: -1- m4_pattern_allow([^CLICKINSTALL$]) -+m4trace:configure.in:1080: -1- AC_SUBST([SUBMAKE]) -+m4trace:configure.in:1080: -1- AC_SUBST_TRACE([SUBMAKE]) -+m4trace:configure.in:1080: -1- m4_pattern_allow([^SUBMAKE$]) -+m4trace:configure.in:1080: -1- AC_SUBST([GMAKE]) -+m4trace:configure.in:1080: -1- AC_SUBST_TRACE([GMAKE]) -+m4trace:configure.in:1080: -1- m4_pattern_allow([^GMAKE$]) -+m4trace:configure.in:1081: -1- AC_SUBST([AUTOCONF]) -+m4trace:configure.in:1081: -1- AC_SUBST_TRACE([AUTOCONF]) -+m4trace:configure.in:1081: -1- m4_pattern_allow([^AUTOCONF$]) -+m4trace:configure.in:1082: -1- AC_SUBST([perl5]) -+m4trace:configure.in:1082: -1- AC_SUBST_TRACE([perl5]) -+m4trace:configure.in:1082: -1- m4_pattern_allow([^perl5$]) -+m4trace:configure.in:1082: -1- AC_SUBST([localperl5]) -+m4trace:configure.in:1082: -1- AC_SUBST_TRACE([localperl5]) -+m4trace:configure.in:1082: -1- m4_pattern_allow([^localperl5$]) -+m4trace:configure.in:1082: -1- AC_SUBST([PERL]) -+m4trace:configure.in:1082: -1- AC_SUBST_TRACE([PERL]) -+m4trace:configure.in:1082: -1- m4_pattern_allow([^PERL$]) -+m4trace:configure.in:1132: -1- AC_SUBST([INSTALL_INFO]) -+m4trace:configure.in:1132: -1- AC_SUBST_TRACE([INSTALL_INFO]) -+m4trace:configure.in:1132: -1- m4_pattern_allow([^INSTALL_INFO$]) -+m4trace:configure.in:1152: -1- AC_SUBST([MAKEINFO]) -+m4trace:configure.in:1152: -1- AC_SUBST_TRACE([MAKEINFO]) -+m4trace:configure.in:1152: -1- m4_pattern_allow([^MAKEINFO$]) -+m4trace:configure.in:1153: -1- AC_SUBST([TEXI2DVI]) -+m4trace:configure.in:1153: -1- AC_SUBST_TRACE([TEXI2DVI]) -+m4trace:configure.in:1153: -1- m4_pattern_allow([^TEXI2DVI$]) -+m4trace:configure.in:1154: -1- AC_SUBST([INSTALL_INFO]) -+m4trace:configure.in:1154: -1- AC_SUBST_TRACE([INSTALL_INFO]) -+m4trace:configure.in:1154: -1- m4_pattern_allow([^INSTALL_INFO$]) -+m4trace:configure.in:1155: -1- AC_SUBST([POD2MAN]) -+m4trace:configure.in:1155: -1- AC_SUBST_TRACE([POD2MAN]) -+m4trace:configure.in:1155: -1- m4_pattern_allow([^POD2MAN$]) -+m4trace:configure.in:1185: -1- AC_SUBST([clickdatadir]) -+m4trace:configure.in:1185: -1- AC_SUBST_TRACE([clickdatadir]) -+m4trace:configure.in:1185: -1- m4_pattern_allow([^clickdatadir$]) -+m4trace:configure.in:1187: -1- AC_DEFINE_TRACE_LITERAL([CLICK_BINDIR]) -+m4trace:configure.in:1187: -1- m4_pattern_allow([^CLICK_BINDIR$]) -+m4trace:configure.in:1188: -1- AC_DEFINE_TRACE_LITERAL([CLICK_LIBDIR]) -+m4trace:configure.in:1188: -1- m4_pattern_allow([^CLICK_LIBDIR$]) -+m4trace:configure.in:1189: -1- AC_DEFINE_TRACE_LITERAL([CLICK_DATADIR]) -+m4trace:configure.in:1189: -1- m4_pattern_allow([^CLICK_DATADIR$]) -+m4trace:configure.in:1261: -1- AC_SUBST([provisions]) -+m4trace:configure.in:1261: -1- AC_SUBST_TRACE([provisions]) -+m4trace:configure.in:1261: -1- m4_pattern_allow([^provisions$]) -+m4trace:configure.in:1285: -1- _m4_warn([obsolete], [The macro `AC_OUTPUT_COMMANDS' is obsolete. -+You should run autoupdate.], [../../lib/autoconf/status.m4:853: AC_OUTPUT_COMMANDS is expanded from... -+configure.in:1285: the top level]) -+m4trace:configure.in:1286: -1- AC_CONFIG_FILES([$config_files]) -+m4trace:configure.in:1286: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments. -+You should run autoupdate.], []) -+m4trace:configure.in:1286: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) -+m4trace:configure.in:1286: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) -+m4trace:configure.in:1286: -1- m4_pattern_allow([^LIB@&t@OBJS$]) -+m4trace:configure.in:1286: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) -+m4trace:configure.in:1286: -1- AC_SUBST_TRACE([LTLIBOBJS]) -+m4trace:configure.in:1286: -1- m4_pattern_allow([^LTLIBOBJS$]) -+m4trace:configure.in:1286: -1- AC_SUBST_TRACE([top_builddir]) -+m4trace:configure.in:1286: -1- AC_SUBST_TRACE([srcdir]) -+m4trace:configure.in:1286: -1- AC_SUBST_TRACE([abs_srcdir]) -+m4trace:configure.in:1286: -1- AC_SUBST_TRACE([top_srcdir]) -+m4trace:configure.in:1286: -1- AC_SUBST_TRACE([abs_top_srcdir]) -+m4trace:configure.in:1286: -1- AC_SUBST_TRACE([builddir]) -+m4trace:configure.in:1286: -1- AC_SUBST_TRACE([abs_builddir]) -+m4trace:configure.in:1286: -1- AC_SUBST_TRACE([abs_top_builddir]) -+m4trace:configure.in:1286: -1- AC_SUBST_TRACE([INSTALL]) -diff -Nurb click-1.6.0/bsdmodule/Makefile click-1.6.0-27/bsdmodule/Makefile ---- click-1.6.0/bsdmodule/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/bsdmodule/Makefile 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,152 @@ -+## Click bsdmodule driver Makefile ## -+SHELL = /bin/sh -+ -+srcdir := . -+top_srcdir := .. -+top_builddir := .. -+subdir := bsdmodule -+ -+prefix = /d/click/click-1.6.0-27/inst -+exec_prefix = /d/click/click-1.6.0-27/inst -+bindir = /d/click/click-1.6.0-27/inst/bin -+sbindir = /d/click/click-1.6.0-27/inst/sbin -+libdir = /d/click/click-1.6.0-27/inst/lib -+freebsd_includedir = /usr/include -+freebsd_srcdir = NONE -+ -+VPATH = .:$(top_srcdir)/lib:$(top_srcdir)/$(subdir) -+ -+CC = gcc -W -Wall -+CPP = gcc -W -Wall -E -+CXX = g++ -w -W -Wall -fno-exceptions -fno-rtti -D__SMP__ -+CXXCPP = g++ -W -Wall -E -+LD = ld -+STRIP = strip -+PERL = perl -+INSTALL = /usr/bin/install -c -+INSTALL_DATA = /usr/bin/install -c -m 644 -+mkinstalldirs = ../mkinstalldirs -+ -+ifeq ($(V),1) -+ccompile = $(COMPILE) $(1) -+cxxcompile = $(CXXCOMPILE) $(1) -+else -+ccompile = @/bin/echo ' ' $(2) $< && $(COMPILE) $(1) -+cxxcompile = @/bin/echo ' ' $(2) $< && $(CXXCOMPILE) $(1) -+endif -+ -+quiet_cmd_cxxcompile = CXX $(quiet_modtag) $(subst $(obj)/,,$@) -+cmd_cxxcompile = $(CXXCOMPILE) -c -o $@ $< -+ -+quiet_cmd_ccompile = CC $(quiet_modtag) $(subst $(obj)/,,$@) -+cmd_ccompile = $(COMPILE) -c -o $@ $< -+ -+.SUFFIXES: -+.SUFFIXES: .S .c .cc .o .s .ii -+ -+.c.o: -+ $(COMPILE) -c $< -+.s.o: -+ $(COMPILE) -c $< -+.S.o: -+ $(COMPILE) -c $< -+.cc.o: -+ $(CXXCOMPILE) -c $< -+.cc.s: -+ $(CXXCOMPILE) -S $< -+.cc.ii: -+ $(CXXCOMPILE) -E $< > $@ -+ -+ -+ifndef INSTALLOBJS -+INSTALLOBJS = click.ko -+endif -+ -+GENERIC_OBJS = string.o straccum.o nameinfo.o \ -+ bitvector.o vectorv.o templatei.o bighashmap_arena.o \ -+ ipaddress.o ipflowid.o etheraddress.o \ -+ packet.o in_cksum.o \ -+ error.o timestamp.o glue.o task.o timer.o atomic.o gaprate.o \ -+ element.o \ -+ confparse.o variableenv.o lexer.o elemfilter.o \ -+ routerthread.o router.o master.o handlercall.o notifier.o \ -+ integers.o crc32.o iptable.o \ -+ driver.o \ -+ $(EXTRA_DRIVER_OBJS) -+ -+BSDMODULE_OBJS = config.o sched.o module.o module_c.o \ -+ clickfs.o clickfs_vnops.o clickfs_tree.o clickfs_element.o -+ -+EXTRA_DRIVER_OBJS = -+ -+OBJS = $(GENERIC_OBJS) $(ELEMENT_OBJS) $(BSDMODULE_OBJS) elements.o -+ -+CPPFLAGS = -DCLICK_BSDMODULE -DBSD_NETISRSCHED -+CFLAGS = -O2 -g -+CXXFLAGS = -O2 -g -+ -+DEFS = -DHAVE_CONFIG_H -+INCLUDES = -nostdinc -I$(top_builddir)/include -I$(top_srcdir)/include \ -+ -I$(srcdir) -I$(top_srcdir) -I. -I$(freebsd_includedir) -+LDFLAGS = -+LIBS = -+ -+CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) -+CXXLD = $(CXX) -+CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ -+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) -+CCLD = $(CC) -+LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@ -+ -+all: $(INSTALLOBJS) -+ -+ifneq ($(MAKECMDGOALS),clean) -+-include elements.mk -+endif -+ -+click.ko: Makefile vnode_if.h vnode_if_newproto.h vnode_if_typedef.h $(OBJS) -+ $(LD) -Bshareable -o click.ko $(OBJS) -+ -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status -+ -+elemlist: -+ @/bin/rm -f elements.conf -+ @$(MAKE) elements.conf -+elements.conf: $(top_builddir)/config.status $(top_builddir)/click-buildtool -+ echo "bsdmodule app aqm ethernet icmp ip standard tcpudp" | $(top_builddir)/click-buildtool findelem -r bsdmodule -p $(top_srcdir) > elements.conf -+elements.mk: elements.conf $(top_builddir)/click-buildtool -+ $(top_builddir)/click-buildtool elem2make < elements.conf > elements.mk -+elements.cc: elements.conf $(top_builddir)/click-buildtool -+ $(top_builddir)/click-buildtool elem2export < elements.conf > elements.cc -+ @rm -f elements.d -+ -+vnode_if.h: $(freebsd_srcdir)/kern/vnode_if.src -+ /usr/bin/awk -f $(freebsd_srcdir)/tools/vnode_if.awk $(freebsd_srcdir)/kern/vnode_if.src -h -+vnode_if_newproto.h: $(freebsd_srcdir)/kern/vnode_if.src -+ /usr/bin/awk -f $(freebsd_srcdir)/tools/vnode_if.awk $(freebsd_srcdir)/kern/vnode_if.src -p -+vnode_if_typedef.h: $(freebsd_srcdir)/kern/vnode_if.src -+ /usr/bin/awk -f $(freebsd_srcdir)/tools/vnode_if.awk $(freebsd_srcdir)/kern/vnode_if.src -q -+ -+ -+DEPFILES := $(wildcard *.d) -+ifneq ($(DEPFILES),) -+include $(DEPFILES) -+endif -+ -+install: $(INSTALLOBJS) -+ $(mkinstalldirs) $(DESTDIR)$(libdir) -+ for i in $(INSTALLOBJS); do $(INSTALL_DATA) $$i $(DESTDIR)$(libdir)/$$i; done -+install-man: -+ : -+uninstall: -+ for i in $(INSTALLOBJS); do /bin/rm -f $(DESTDIR)$(libdir)/$$i; done -+ -+clean: -+ -rm -f *.d *.o click.ko elements.mk elements.cc elements.conf \ -+ vnode_if.h vnode_if_newproto.h vnode_if_typedef.h -+distclean: clean -+ -rm -f Makefile -+ -+.PHONY: all clean distclean elemlist install uninstall -diff -Nurb click-1.6.0/click-buildtool click-1.6.0-27/click-buildtool ---- click-1.6.0/click-buildtool 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/click-buildtool 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,1326 @@ -+#! /bin/sh -+ -+# click-buildtool -- build tools for Click -+# Eddie Kohler -+# -+# Copyright (c) 2000-2001 Massachusetts Institute of Technology -+# Copyright (c) 2000-2006 Mazu Networks, Inc. -+# Copyright (c) 2001-2003 International Computer Science Institute -+# Copyright (c) 2004-2007 Regents of the University of California -+# -+# Permission is hereby granted, free of charge, to any person obtaining a -+# copy of this software and associated documentation files (the "Software"), -+# to deal in the Software without restriction, subject to the conditions -+# listed in the Click LICENSE file. These conditions include: you must -+# preserve this copyright notice, and you cannot mention the copyright -+# holders in advertising related to the Software without their permission. -+# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+# notice is a summary of the Click LICENSE file; the license in that file is -+# legally binding. -+ -+prefix=/d/click/click-1.6.0-27/inst -+exec_prefix=/d/click/click-1.6.0-27/inst -+bindir=/d/click/click-1.6.0-27/inst/bin -+datarootdir=/d/click/click-1.6.0-27/inst/share -+datadir=/d/click/click-1.6.0-27/inst/share -+clickdatadir=/d/click/click-1.6.0-27/inst/share/click -+LINUXMODULE_2_6=1 -+gmake=make -+ -+verbose="" -+elem2="" -+default_provisions="i686 i386 i586 int64 linux linux_2_6 pcap" -+driver_provisions=" userlevel linuxmodule" -+ -+trap "exit 1" HUP -+ -+# find a good version of awk -+if test -x /usr/bin/gawk; then -+ awk=gawk -+elif test -x /usr/bin/nawk; then -+ awk=nawk -+else -+ awk=awk -+fi -+ -+echo_n () { -+ # suns can't echo -n, and Mac OS X can't echo "x\c" -+ echo "$@" | tr -d ' -+' -+} -+ -+ -+############ -+# FINDELEM # -+############ -+ -+findelem_usage () { -+ echo "Usage: click-buildtool findelem [-a] [-V] [-p PREFIX] < [FILES AND DIRECTORIES] -+Try 'click-buildtool findelem --help' for more information." 1>&2 -+ exit 1 -+} -+ -+elementmap_provisions () { -+ elementmap="$1" -+ grep "^&2 -+'Click-buildtool findelem' locates valid Click element source code. It starts -+with a collection of source code, then eliminates files whose requirements -+are not available until reaching a stable set of sources. It expects a list of -+files and directories on standard input. Directories are searched for .cc/.c -+source files. Only files containing EXPORT_ELEMENT() or ELEMENT_PROVIDES() are -+considered. The initial list of available requirements is the list of -+requirements specified with '-r', plus the list of EXPORT_ELEMENT() and -+ELEMENT_PROVIDES() keywords. -+ -+Usage: click-buildtool findelem [OPTIONS] < [FILES AND DIRECTORIES] -+ -+Options: -+ -a, --all Include all subdirectories of 'elements' rather -+ than reading standard input, and pretend all -+ requirements are available (except for '-x'). -+ -V, --verbose Print more information about dependency checking. -+ -p, --prefix PREFIX Prepend PREFIX to every file and/or directory. -+ -r, --provide REQ Provide requirement(s) in REQ. -+ -e, --elementmap EMAP Provide requirement(s) from EMAP. -+ -P, --package Provide requirement(s) from default elementmap. -+ -S, --standards Mark standard elements as available. -+ -x, --unprovide REQ Mark requirement(s) REQ as unavailable. -+ -f, --filenames Output filenames only. -+ -F, --filename-pairs Output "sourcefile:headerfile" pairs for elements. -+ -h, --help Print this message and exit. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ *) -+ findelem_usage;; -+ esac -+ done -+ -+ if test -n "$verbose" -a -n "$pfx"; then -+ echo "Prefix: $pfx" 1>&2 -+ fi -+ -+ # add defaults to provisions -+ provisions="$provisions $default_provisions" -+ -+ # add standards to provisions if necessary -+ if test "x$standards" != x; then -+ provisions="$provisions AddressInfo AlignmentInfo ErrorElement PortInfo ScheduleInfo Storage" -+ fi -+ -+ # expand provisions and unprovisions: require one per line -+ provisions=`echo "$provisions" | tr -s ' \011\015\014\013' '\012'` -+ unprovisions=`echo "$unprovisions" | tr -s ' \011\015\014\013' '\012'` -+ if test -n "$verbose" -a -n "$provisions"; then -+ echo 1>&2 -+ echo "Provisions: $provisions" 1>&2 -+ fi -+ if test -n "$verbose" -a -n "$unprovisions"; then -+ echo 1>&2 -+ echo "Unprovisions: $unprovisions" 1>&2 -+ fi -+ -+ # expand list of files -+ if test -n "$all"; then -+ fdir=${pfx} -+ test -d ${pfx}elements && fdir=${pfx}elements -+ first_files=`cd $fdir >/dev/null && ls` -+ bad_first_files=`echo "$first_files -+$unprovisions" | sort | uniq -d` -+ first_files=`echo "$first_files -+$bad_first_files" | sort | uniq -u` -+ else -+ first_files=`cat` -+ fi -+ -+ files="" -+ for i in $first_files; do -+ ppfx="$pfx" -+ if test -d "${pfx}elements/$i" && echo "$i" | grep -v '^\.' >/dev/null; then -+ ppfx="${pfx}elements/" -+ fi -+ if test -d "${ppfx}$i"; then -+ files="$files -+"`find ${ppfx}$i -follow \( -name \*.cc -o -name \*.c \) -print | grep -v '/[.,][^/]*$'` -+ elif test -r "${ppfx}$i"; then -+ files="$files -+${ppfx}$i" -+ fi -+ done -+ files=`echo "$files" | sort | uniq | grep .` -+ -+ # die if no files -+ if test -z "$files"; then -+ echo "no files found" 1>&2 -+ exit 1 -+ fi -+ -+ # if '$all', then accept all dependencies except the unprovisions -+ dep_test='<=' -+ if test -n "$all"; then -+ dep_test='<' -+ fi -+ -+ # check dependencies: generate a list of bad files, then remove those files -+ # from the list of good files -+ -+ # first remove files that provide an unprovision -+ awk_exports=`echo "$unprovisions" | sed 's/\(..*\)/dep["\1"]=-1;/'` -+ bad_files=`egrep '^EXPORT_ELEMENT|^ELEMENT_PROVIDES' $files | sed 's/EXPORT_ELEMENT[ ]*(\(.*\)).*/\1/ -+s/ELEMENT_PROVIDES[ ]*(\(.*\)).*/\1/' | $awk -F: 'BEGIN {OFS="";'"$awk_exports"'} -+{ -+ split($2, deps, / +/); -+ for (j in deps) { -+ if (dep[deps[j]] < 0) { -+ print $1; -+ break; -+ } -+ } -+}' | sort | uniq` -+ if test -n "$verbose" -a -n "$bad_files"; then -+ echo 1>&2 -+ echo "Files: $files" 1>&2 -+ echo 1>&2 -+ echo "Bad files: $bad_files" 1>&2 -+ fi -+ if test -n "$bad_files"; then -+ files=`echo "$files -+$bad_files" | sort | uniq -u` -+ fi -+ -+ # then cycle, removing files that require something not provided -+ while true; do -+ provides=`egrep '^EXPORT_ELEMENT|^ELEMENT_PROVIDES' $files | sed 's/.*(\(.*\)).*/\1/' | tr ' \011' '\012'` -+ awk_exports=`echo "$provides"' -+'"$provisions" | sed 's/\(..*\)/dep["\1"]=1;/'`" -+"`echo "$unprovisions" | sed 's/\(..*\)/dep["\1"]=-1;/'` -+ new_bad_files=`grep '^ELEMENT_REQUIRES' $files | sed 's/ELEMENT_REQUIRES[ ]*(\(.*\)).*/\1/' | $awk -F: 'BEGIN {OFS="";'"$awk_exports"'dep["true"]=1; dep["1"]=1;} -+{ -+ split($2, deps, / +/); -+ for (j in deps) { -+ i = deps[j] -+ if (dep[i] <= 0) { -+ bad = 1; -+ split(i, or_deps, /\|+/); -+ for (k in or_deps) { -+ if (!(dep[or_deps[k]] '"$dep_test"' 0)) -+ bad = 0; -+ } -+ if (bad) { -+ print $1; -+ break; -+ } -+ } -+ } -+}' | sort | uniq` -+ if test -n "$verbose"; then -+ echo 1>&2 -+ echo "Files: $files" 1>&2 -+ echo 1>&2 -+ echo "Bad files: $new_bad_files" 1>&2 -+ fi -+ if test -z "$new_bad_files"; then -+ break -+ else -+ files=`echo "$files -+$new_bad_files" | sort | uniq -u` -+ bad_files="$new_bad_files -+$bad_files" -+ fi -+ done -+ -+ header_files=`echo "$files" | sed 's/\.cc/\.hh/'` -+ -+ # generate output -+ if test "$filenames" = f; then -+ outscriptlet=i -+ elif test "$filenames" = F; then -+ outscriptlet='i, ":", header[i]' -+ else -+ echo "# Generated by 'click-buildtool findelem' on" `date` -+ outscriptlet='i, "\t", header[i], "\t", ex' -+ fi -+ -+ egrep '^ELEMENT_PROVIDES|^EXPORT_ELEMENT|^ELEMENT_HEADER|^ELEMENT_LIBS|^class|^[ ]*const *char *\* *class_name|^[ ]*static *void *static_[ic]|^}' $files $header_files /dev/null 2>/dev/null | $awk -F: 'BEGIN { -+ OFS = ""; cur_class = ""; line_warned = 0; nexports = 0 -+} -+/:class[ ]/ { -+ sub(/^class[ ]*/, "", $2); -+ sub(/[ ]*$/, "", $2); -+ cur_class = $2; -+ next -+} -+/:}/ { -+ cur_class = ""; -+ next -+} -+/:EXPORT_ELEMENT/ { -+ sub(/.*EXPORT_ELEMENT[ ]*\([ ]*/, "", $2); -+ sub(/[ ]*\).*/, "", $2); -+ if (exports[$1] != "") { -+ exports[$1] = exports[$1] " " $2 -+ } else { -+ exports[$1] = $2; nexports++ -+ } -+ next -+} -+/:ELEMENT_PROVIDES/ { -+ if (!($1 in exports)) { -+ exports[$1] = ""; nexports++ -+ } -+ next -+} -+/:ELEMENT_HEADER/ { -+ sub(/.*ELEMENT_HEADER[ ]*\(/, "", $2) -+ sub(/\).*/, "", $2) -+ header[$1] = $2 -+ next -+} -+/:ELEMENT_LIBS/ { -+ sub(/.*ELEMENT_LIBS[ ]*\(\(?/, "", $2) -+ sub(/\)?\).*/, "", $2) -+ gsub(/[ ][ ]*/, ";", $2) -+ gsub(/-L;/, "-L", $2) -+ libs[$1] = $2 -+ next -+} -+/class_name.*return[ ]"/ { -+ sub(/.*return[ ]*"/, "", $0); -+ sub(/".*/, "", $0); -+ class_name[cur_class] = $0 -+ next -+} -+/class_name/ { -+ print $1, ": ", cur_class, "::class_name method malformed" | "cat 1>&2" -+ if (++line_warned == 1) -+ print " (class_name methods must be written on a single line.)" | "cat 1>&2" -+} -+/static_initialize/ { -+ static_initialize[cur_class] = 1 -+ next -+} -+/static_cleanup/ { -+ static_cleanup[cur_class] = 1 -+ next -+} -+END { -+ if (nexports == 0) -+ print "click-buildtool: No elements found" | "cat 1>&2" -+ if (line_warned || nexports == 0) -+ system("kill -HUP '$$'") -+ for (i in exports) { -+ ex = exports[i] -+ if (ex == "") { -+ print i -+ } else { -+ if (header[i] == "") { -+ header[i] = "\"" i "\""; sub(/\.cc/, ".hh", header[i]) -+ } -+ split(ex, exes, / /); ex = "" -+ for (j in exes) { -+ dash = index(exes[j], "-") -+ if (dash == 0) { -+ dash = length(exes[j]); -+ if (class_name[exes[j]] == "") -+ exes[j] = exes[j] "-" exes[j]; -+ else -+ exes[j] = exes[j] "-" class_name[exes[j]]; -+ } -+ ex = ex exes[j] " "; -+ klass = substr(exes[j], 1, dash) -+ if (static_initialize[klass]) { -+ ex = ex klass "-!si "; -+ static_initialize[klass] = 0 -+ } -+ if (static_cleanup[klass]) { -+ ex = ex klass "-!sc "; -+ static_cleanup[klass] = 0 -+ } -+ } -+ if (libs[i]) -+ ex = ex "-!lib" libs[i] " "; -+ print '"$outscriptlet"' -+ } -+ } -+}' | sort -+ -+ exit $? -+} -+ -+ -+ -+########################## -+# ELEM2MAKE/ELEM2PACKAGE # -+########################## -+ -+elem2xxx_usage () { -+ echo_n "Usage: click-buildtool elem2$elem2 [-p PREFIX] [-V]" 1>&2 -+ if test "$elem2" = package; then echo_n " PKGNAME" 1>&2; fi -+ echo " < elements.conf -+Try 'click-buildtool elem2$elem2 --help' for more information." 1>&2 -+ exit 1 -+} -+ -+elem2make () { -+ driver="" -+ makevar="" -+ date=`date` -+ linux26=x -+ while [ x"$1" != x ]; do -+ case $1 in -+ -t|--d|--dr|--dri|--driv|--drive|--driver) -+ if test $# -lt 2; then elem2xxx_usage; fi -+ shift 1; driver="$1"; shift 1;; -+ -t*) -+ driver=`echo "$1" | sed 's/^-D//'`; shift 1;; -+ --d=*|--dr=*|--dri=*|--driv=*|--drive=*|--driver=*) -+ driver=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;; -+ --t|--ta|--tar|--targ|--targe|--target) -+ if test $# -lt 2; then elem2xxx_usage; fi -+ shift 1; driver="$1"; shift 1;; -+ --t=*|--ta=*|--tar=*|--targ=*|--targe=*|--target=*) -+ driver=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;; -+ -v|--m|--ma|--mak|--make|--make-|--make-v|--make-va|--make-var|--make-vari|--make-varia|--make-variab|--make-variabl|--make-variable) -+ if test $# -lt 2; then elem2xxx_usage; fi -+ shift 1; makevar="$1"; shift 1;; -+ -v*) -+ makevar=`echo "$1" | sed 's/^-v//'`; shift 1;; -+ --m=*|--ma=*|--mak=*|--make=*|--make-=*|--make-v=*|--make-va=*|--make-var=*|--make-vari=*|--make-varia=*|--make-variab=*|--make-variabl=*|--make-variable=*) -+ makevar=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;; -+ -x|--e|--ex|--exc|--excl|--exclu|--exclud|--exclude) -+ if test $# -lt 2; then elem2xxx_usage; fi -+ shift 1 -+ for i in $1; do excludes=";/^$i"' \\$'"/d$excludes"; done -+ shift 1;; -+ -x*) -+ this_exclude=`echo "$1" | sed 's/^-p//'` -+ for i in $this_exclude; do excludes=";/^$i"' \\$'"/d$excludes"; done -+ shift 1;; -+ --e=*|--ex=*|--exc=*|--excl=*|--exclu=*|--exclud=*|--exclude=*) -+ this_exclude=`echo "$1" | sed 's/^[^=]*=//'` -+ for i in $this_exclude; do excludes=";/^$i"' \\$'"/d$excludes"; done -+ shift 1;; -+ --l|--li|--lin|--linu|--linux|--linux2|--linux26) -+ linux26=1; shift 1;; -+ --no-l|--no-li|--no-lin|--no-linu|--no-linux|--no-linux2|--no-linux26) -+ linux26=0; shift 1;; -+ -V|--verb|--verbo|--verbos|--verbose) -+ verbose=1; shift 1;; -+ -h|--h|--he|--hel|--help) -+ cat <<'EOF' 1>&2 -+'Click-buildtool elem2make' reads an 'elements.conf' file generated by -+'click-buildtool findelem' on the standard input, and writes a Makefile -+fragment defining the ELEMENT_OBJS variable to the standard output. -+ -+Usage: click-buildtool elem2make [-t DRIVER] [-V] < elements.conf -+ -+Options: -+ -t, --driver DRIVER Set target driver to DRIVER ('userlevel', -+ 'linuxmodule', 'bsdmodule', 'ns', or 'tool'). -+ -v, --make-variable N Use make variable N. -+ --linux26 Generate Linux 2.6-style makefile fragment. -+ -x, --exclude FILE Do not include FILE. -+ -V, --verbose Print more information. -+ -h, --help Print this message and exit. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ *) -+ elem2xxx_usage;; -+ esac -+ done -+ -+ L= -+ defmakevar="ELEMENT_OBJS" -+ if test -n "$driver"; then -+ if test "$driver" = 'user' -o "$driver" = 'userlevel'; then -+ L=u -+ elif test "$driver" = 'kernel' -o "$driver" = 'linuxmodule'; then -+ L=k -+ test "$linux26" = x && linux26="$LINUXMODULE_2_6" -+ elif test "$driver" = 'bsdmodule'; then -+ L=b -+ elif test "$driver" = 'ns' -o "$driver" = 'nsmodule'; then -+ L=n -+ elif test "$driver" = 'tool'; then -+ L=t -+ else -+ echo "Unknown driver $driver" 1>&2 -+ exit 1 -+ fi -+ fi -+ osuffix=".${L}o" -+ if test -z "$makevar"; then -+ makevar=$defmakevar -+ fi -+ -+ # expand list of files -+ elemconf=`cat` -+ files=`echo "$elemconf" | grep -v '^#' | sed 's/[ ].*//'` -+ -+ # find libraries -+ libs=`echo "$elemconf" | sed '/-!lib/!d;s/^.*-!lib//g;s/;/ /g' | grep .` -+ if test -n "$libs"; then -+ libs=`echo "$libs" | sed 's/^\([^ ][^ ]*\) *$/\1 \1/'` -+ while echo "$libs" | grep ' [^ ].* [^ ]' >/dev/null; do -+ libs=`echo "$libs" | sed '/ [^ ].* [^ ]/s/^\([^ ][^ ]*\) *\([^ ][^ ]*\) /\1 \2\\ -+\2 /'` -+ done -+ fi -+ test -n "$libs" && libs=`echo "$libs" | tsort` -+ -+ # massage awk script based on Linux 2.6 or not -+ if test "$linux26" = 1; then -+ set_subdir_scriptlet=' -+ if (dir != "" && substr(dir, 1, 1) == "/") -+ subdirs[dirid] = dir; -+ else -+ subdirs[dirid] = "$(obj)/" dir; -+ ' -+ pattern_scriptlet='$(addprefix $(obj)/,$('"$makevar"'__", i, ")): $(obj)/%'"$osuffix" -+ ccaction=' $(call if_changed_dep,cxxcompile)' -+ caction=' $(call if_changed_dep,ccompile)' -+ else -+ set_subdir_scriptlet='subdirs[dirid] = dir;' -+ pattern_scriptlet='$('"$makevar"'__", i, "): %'"$osuffix" -+ ccaction=' $(call cxxcompile,-c $< -o $@,CXX)' -+ caction=' $(call ccompile,-c $< -o $@,CC)' -+ if test -n "$L"; then -+ ccaction="$ccaction"'\n $(FIXDEP)' -+ caction="$caction"'\n $(FIXDEP)' -+ fi -+ fi -+ -+ # output -+ echo "# Generated by 'click-buildtool elem2make' on" `date` -+ echo "$files" | $awk ' -+BEGIN { OFS = "" -+ action["c"] = "'"$caction"'"; -+ action["cc"] = "'"$ccaction"'"; -+} -+{ filetype = ($0 ~ /\.c$/ ? "c" : "cc"); -+ sub(/\.cc*$/, "'"$osuffix"'"); -+ i = match($0, /\/[^\/]*$/); -+ if (i == 0) { -+ dir = ""; -+ file = $0; -+ } else { -+ dir = substr($0, 1, RSTART); -+ file = substr($0, RSTART + 1); -+ } -+ decdir = filetype dir; -+ if (decdir in subdirid) -+ dirid = subdirid[decdir]; -+ else { -+ dirid = nsubdirs++; -+ subdirid[decdir] = dirid; -+ subdirtype[dirid] = filetype; -+ '"$set_subdir_scriptlet"' -+ } -+ elements[dirid] = elements[dirid] file " \\\n"; -+} -+END { -+ for (i = 0; i < nsubdirs; i++) { -+ print "'"$makevar"'__", i, " = \\\n", elements[i]; -+ allsubdirs = allsubdirs "$('"$makevar"'__" i ") \\\n"; -+ } -+ print "'"$makevar"' = \\\n", allsubdirs; -+ for (i = 0; i < nsubdirs; i++) { -+ print "'"$pattern_scriptlet"': ", subdirs[i], "%.", subdirtype[i]; -+ print action[subdirtype[i]]; -+ } -+}' | sed "$excludes" -+ echo -+ -+ if test -n "$libs"; then -+ libvar=`echo $makevar | sed 's/OBJS$/LIBS/'` -+ echo $libvar = $libs -+ fi -+} -+ -+elem2xxx () { -+ package="" -+ date=`date` -+ standards='' -+ includes='' -+ while [ x"$1" != x ]; do -+ case $1 in -+ -S|--s|--st|--sta|--stan|--stand|--standa|--standar|--standard|--standards) -+ standards=1; shift 1;; -+ -V|--verb|--verbo|--verbos|--verbose) -+ verbose=1; shift 1;; -+ -i|--i|--in|--inc|--incl|--inclu|--includ|--include) -+ if test $# -lt 2; then elem2xxx_usage; fi -+ includes="$includes print '#include $2';"; shift 2;; -+ -i*) -+ this_include=`echo "$1" | sed 's/^-i//'` -+ includes="$includes print '#include $this_include';"; shift 1;; -+ --i=*|--in=*|--inc=*|--incl=*|--inclu=*|--includ=*|--include=*) -+ this_include=`echo "$1" | sed 's/^[^=]*=//'` -+ includes="$includes print '#include $this_include';"; shift 1;; -+ -h|--h|--he|--hel|--help) -+ if test "$elem2" = export; then -+ cat <<'EOF' 1>&2 -+'Click-buildtool elem2export' reads an 'elements.conf' file generated by -+'click-buildtool findelem' on the standard input, examines those files for -+exported elements, and writes a C++ source file defining the -+click_export_elements() function to the standard output. -+ -+Usage: click-buildtool elem2export [-V] < elements.conf -+EOF -+ elif test "$elem2" = package; then -+ cat <<'EOF' 1>&2 -+'Click-buildtool elem2package' reads an 'elements.conf' file generated by -+'click-buildtool findelem' on the standard input, examines those files for -+exported elements, and writes a C++ source file suitable for creating a -+dynamically linked package with those elements to the standard output. PKGNAME -+is the name of the package. -+ -+Usage: click-buildtool elem2package [-p PREFIX] [-V] PKGNAME < elements.conf -+EOF -+ fi -+ cat <<'EOF' 1>&2 -+ -+Options: -+ -S, --standards Export standard required elements as well. -+ -i, --include HDR Emit "#include HDR" at top of file. -+ -V, --verbose Print more information. -+ -h, --help Print this message and exit. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ -*) -+ elem2xxx_usage;; -+ *) -+ if test -z "$package" -a "$elem2" = package; then package="$1"; shift 1; else elem2xxx_usage; fi;; -+ esac -+ done -+ -+ # set up awk program -+ if test -n "$package"; then -+ includes=" $includes "'print "#define WANT_MOD_USE_COUNT 1\n#include \n#include \n#include "; -+ for (file in INCLUDES) { -+ if (file != "-") print "#include ", file; -+ }' -+ awk_program='BEGIN { -+ OFS = ""; nrebecca = 0; packname="'"$package"'"; -+} -+/^#/ { next; } -+{ -+ if (NF == 1) -+ next; -+ INCLUDES[$2] = 1; -+ for (i = 3; i <= NF; i++) { -+ split($i, ans, /-/); -+ if (ans[2] == "!si") -+ B = B " " ans[1] "::static_initialize();\n"; -+ else if (ans[2] == "!sc") -+ C = C " " ans[1] "::static_cleanup();\n"; -+ else if (ans[2] !~ /^!/) { -+ B = B " hatred_of_rebecca[" nrebecca "] = click_add_element_type(\"" ans[2] "\", beetlemonkey, " nrebecca ");\n" -+ C = C " click_remove_element_type(hatred_of_rebecca[" nrebecca "]);\n"; -+ D = D " case " nrebecca ": return new " ans[1] ";\n"; -+ nrebecca++; -+ } -+ } -+} -+END { -+ print "/* Generated by \"click-buildtool elem2package\" on '"$date"' */"; -+ print "/* Package name: ", packname, " */\n"; -+'"$includes"' -+ print "\nCLICK_USING_DECLS"; -+ print "static int hatred_of_rebecca[", nrebecca, "];"; -+ print "static Element *\nbeetlemonkey(uintptr_t heywood)\n{\n switch (heywood) {\n", D, " default: return 0;\n }\n}\n"; -+ print "#ifdef CLICK_LINUXMODULE\n#define click_add_element_type(n, f, t) click_add_element_type((n), (f), (t), THIS_MODULE)\n#endif"; -+ print "#ifdef CLICK_BSDMODULE\nstatic int\nmodevent(module_t, int t, void *)\n{\n if (t == MOD_LOAD) {\n#else\nextern \"C\" int\ninit_module()\n{\n#endif"; -+ print " click_provide(\"", packname, "\");\n", B, " CLICK_DMALLOC_REG(\"nXXX\");\n return 0;"; -+ print "#ifdef CLICK_BSDMODULE\n } else if (t == MOD_UNLOAD) {\n#else\n}\nextern \"C\" void\ncleanup_module()\n{\n#endif"; -+ print C, " click_unprovide(\"", packname, "\");"; -+ print "#ifdef CLICK_BSDMODULE\n return 0;\n } else\n return 0;\n}\nstatic moduledata_t modinfo = {\n \"", packname, "\", modevent, 0\n};\nDECLARE_MODULE(", packname, ", modinfo, SI_SUB_PSEUDO, SI_ORDER_ANY);\n#else\n}\n#endif"; -+} -+' -+ -+ else -+ includes="$includes"' print "#include \n#include "; -+ for (file in INCLUDES) { -+ if (file != "-") print "#include ", file; -+ }' -+ awk_program='BEGIN { -+ OFS = ""; nrebecca = 0; -+} -+/^#/ { next; } -+{ -+ if (NF == 1) -+ next; -+ INCLUDES[$2] = 1; -+ for (i = 3; i <= NF; i++) { -+ split($i, ans, /-/); -+ if (ans[2] == "!si") -+ B = B " " ans[1] "::static_initialize();\n"; -+ else if (ans[2] == "!sc") -+ C = C " " ans[1] "::static_cleanup();\n"; -+ else if (ans[2] !~ /^!/) { -+ B = B " (void) click_add_element_type(\"" ans[2] "\", beetlemonkey, " nrebecca ");\n"; -+ D = D " case " nrebecca ": return new " ans[1] ";\n"; -+ } -+ nrebecca++; -+ } -+} -+END { -+ print "/* Generated by \"click-buildtool elem2export\" on '"$date"' */\n"; -+'"$includes"' -+ print "CLICK_USING_DECLS"; -+ print "static Element *\nbeetlemonkey(uintptr_t heywood)\n{\n switch (heywood) {\n", D, " default: return 0;\n }\n}\n"; -+ print "#ifdef CLICK_LINUXMODULE\n#define click_add_element_type(n, f, t) click_add_element_type((n), (f), (t), 0)\n#endif"; -+ print "void\nclick_export_elements()\n{\n", B, " CLICK_DMALLOC_REG(\"nXXX\");\n}\n"; -+ print "void\nclick_unexport_elements()\n{\n", C, "}"; -+} -+' -+ fi -+ -+ # Actually generate the command! -+ if test -z "$standards"; then -+ $awk "$awk_program" -+ else -+ cat </tmp/click-buildtool-standards.$$ -+- AddressInfo-AddressInfo -+- AlignmentInfo-AlignmentInfo -+- ErrorElement-ErrorElement -+- PortInfo-PortInfo -+- ScheduleInfo-ScheduleInfo -+EOF -+ cat - /tmp/click-buildtool-standards.$$ | $awk "$awk_program" -+ /bin/rm -f /tmp/click-buildtool-standards.$$ -+ fi -+} -+ -+ -+ -+############ -+# PROVIDES # -+############ -+ -+provides_usage () { -+ echo "Usage: click-buildtool provides [REQS]" 1>&2 -+ echo "Try 'click-buildtool provides --help' for more information." 1>&2 -+ exit 1 -+} -+ -+provides () { -+ provisions="$default_provisions -+$driver_provisions -+"`elementmap_provisions ${clickdatadir}/elementmap.xml` -+ requirements="" -+ stdin=n; query=n; print=n -+ while [ x"$1" != x ]; do -+ case $1 in -+ -q|--q|--qu|--que|--quer|--query) -+ query=y; shift 1;; -+ -l|--pri|--prin|--print) -+ print=y; shift 1;; -+ -r|--pro|--prov|--provi|--provid|--provide) -+ if test $# -lt 2; then provides_usage; fi -+ shift 1; provisions="$1 -+$provisions"; shift 1;; -+ -r*) -+ provisions=`echo "$1" | sed 's/^-r//'`" -+$provisions"; shift 1;; -+ --p=*|--pr=*|--pro=*|--prov=*|--provi=*|--provid=*|--provide=*) -+ provisions=`echo "$1" | sed 's/^[^=]*=//'`" -+$provisions"; shift 1;; -+ -e|--e|--el|--ele|--elem|--eleme|--elemen|--element|--elementm|--elementma|--elementmap) -+ if test $# -lt 2; then provides_usage; fi -+ shift 1; provisions=`elementmap_provisions $1`" -+$provisions"; shift 1;; -+ -e*) -+ emap=`echo "$1" | sed 's/^-e//'` -+ provisions=`elementmap_provisions $emap`" -+$provisions"; shift 1;; -+ --e=*|--el=*|--ele=*|--elem=*|--eleme=*|--elemen=*|--element=*|--elementm=*|--elementma=*|--elementmap=*) -+ emap=`echo "$1" | sed 's/^[^=]*=//'` -+ provisions=`elementmap_provisions $emap`" -+$provisions"; shift 1;; -+ -h|--h|--he|--hel|--help) -+ cat <<'EOF' 1>&2 -+'Click-buildtool provides' exits with status 0 if the Click installation -+provides all requirement(s) in REQ arguments, and status 1 otherwise. -+ -+Usage: click-buildtool provides [OPTIONS] [REQ...] -+ -+Options: -+ -q, --query Print provisions to standard output. -+ -r, --provide REQ Provide requirement(s) in REQ. -+ -e, --elementmap EMAP Provide requirement(s) from EMAP. -+ -l, --print Print 0 (REQs not provided) or 1 (REQs provided). -+ -h, --help Print this message and exit. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ -) -+ stdin=y; shift 1;; -+ -*) -+ provides_usage;; -+ *) -+ requirements="$1 -+$requirements"; shift 1;; -+ esac -+ done -+ -+ [ $stdin = y ] && requirements="`cat` $requirements" -+ provisions="`echo "$provisions" | tr -s ' \011\015\014\013' '\012' | grep . | sort | uniq`" -+ [ $query = y ] && echo "$provisions" -+ requirements="`echo "$requirements" | tr -s ' \011\015\014\013' '\012' | grep . | sort | uniq`" -+ awk_provisions="`echo "$provisions" | sed 's/\(..*\)/dep["\1"]=1;/'`" -+ echo "$requirements" | $awk -F: 'BEGIN { -+'"$awk_provisions"' -+} -+/./ { if (!dep[$1]) exit 1; }' >/dev/null 2>&1 -+ status=$? -+ [ $print = y ] && expr 1 - $status -+ exit $status -+} -+ -+ -+############# -+# QUIETLINK # -+############# -+ -+quietlink_usage () { -+ echo "Usage: click-buildtool quietlink" 1>&2 -+ echo "Try 'click-buildtool quietlink --help' for more information." 1>&2 -+ exit 1 -+} -+ -+quietlink () { -+ while [ x"$1" != x ]; do -+ case $1 in -+ -h|--h|--he|--hel|--help) -+ cat <<'EOF' 1>&2 -+'Click-buildtool quietlink' quiets the GNU linker when linking an element -+package. Specifically, it removes undefined reference complaints. -+ -+Usage: ld ... 2>&1 | click-buildtool quietlink -+ -+Options: -+ -h, --help Print this message and exit. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ *) -+ quietlink_usage;; -+ esac -+ done -+ -+ $awk -F: 'BEGIN { -+ context = "" -+} -+/: In function/ { -+ context = $0 -+ next -+} -+/: undefined reference to/ { -+ next -+} -+/: more undefined references to/ { -+ next -+} -+{ -+ if (context != "") { -+ print context -+ context = "" -+ } -+ print $0 -+}' 1>&2 -+} -+ -+ -+ -+########## -+# PREFIX # -+########## -+ -+prefix_usage () { -+ echo "Usage: click-buildtool prefix" 1>&2 -+ echo "Try 'click-buildtool prefix --help' for more information." 1>&2 -+ exit 1 -+} -+ -+prefix () { -+ while [ x"$1" != x ]; do -+ case $1 in -+ -h|--h|--he|--hel|--help) -+ cat <<'EOF' 1>&2 -+'Click-buildtool prefix' prints the Click prefix directory. -+ -+Usage: click-buildtool prefix -+ -+Options: -+ -h, --help Print this message and exit. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ *) -+ prefix_usage;; -+ esac -+ done -+ echo $prefix -+} -+ -+ -+ -+############ -+# KVERSION # -+############ -+ -+kversion_usage () { -+ echo_n "Usage: click-buildtool kversion [--gpl] > kversion.c" 1>&2 -+ echo "Try 'click-buildtool kversion --help' for more information." 1>&2 -+ exit 1 -+} -+ -+kversion () { -+ gpl=0 -+ linux26=$LINUXMODULE_2_6 -+ while [ x"$1" != x ]; do -+ case $1 in -+ --g|--gp|--gpl) -+ gpl=1; shift 1;; -+ -h|--h|--he|--hel|--help) -+ cat <<'EOF' 1>&2 -+'Click-buildtool kversion' writes a kversion.c file, to be used for building -+a Click kernel package, on the standard output. -+ -+Usage: click-buildtool kversion [--gpl] > kversion.c -+ -+Options: -+ --gpl The package is dual-licensed BSD/GPL (otherwise -+ no license). -+ -h, --help Print this message and exit. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ *) -+ kversion_usage;; -+ esac -+ done -+ -+ cat < -+#include -+#include -+ -+/* a new version of EXPORT_NO_SYMBOLS that works */ -+const int __ksymtab_nothing[0] __attribute__((section("__ksymtab"))) = { }; -+EOF -+ test $gpl = 1 && cat < Kbuild" 1>&2 -+ echo "Try 'click-buildtool kbuild --help' for more information." 1>&2 -+ exit 1 -+} -+ -+kbuild () { -+ while [ x"$1" != x ]; do -+ case $1 in -+ -h|--h|--he|--hel|--help) -+ cat <<'EOF' 1>&2 -+'Click-buildtool kbuild' writes a Kbuild file, to be used for building -+a Click kernel package for Linux 2.6 kernels, on the standard output. -+ -+Usage: click-buildtool kbuild > Kbuild -+ -+Options: -+ -h, --help Print this message and exit. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ *) -+ kversion_usage;; -+ esac -+ done -+ -+ echo "include ${clickdatadir}/pkg-linuxmodule-26.mk" -+} -+ -+ -+ -+############### -+# MAKEPACKAGE # -+############### -+ -+makepackage_usage () { -+ echo "Usage: click-buildtool makepackage [-t DRIVER] PACKAGENAME SRCFILES..." 1>&2 -+ echo "Try 'click-buildtool makepackage for more information." 1>&2 -+ exit 1 -+} -+ -+makepackage () { -+ driver="" -+ date=`date` -+ dir= -+ pkg= -+ srcs= -+ quiet= -+ cflags= -+ while [ x"$1" != x ]; do -+ case $1 in -+ -t|--d|--dr|--dri|--driv|--drive|--driver) -+ test $# -lt 2 && makepackage_usage -+ shift 1; driver="$1"; shift 1;; -+ -t*) -+ driver=`echo "$1" | sed 's/^-D//'`; shift 1;; -+ --dr=*|--dri=*|--driv=*|--drive=*|--driver=*) -+ driver=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;; -+ --t|--ta|--tar|--targ|--targe|--target) -+ test $# -lt 2 && makepackage_usage -+ shift 1; driver="$1"; shift 1;; -+ --t=*|--ta=*|--tar=*|--targ=*|--targe=*|--target=*) -+ driver=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;; -+ -C|--di|--dir|--dire|--direc|--direct|--directo|--director|--directory) -+ test $# -lt 2 && makepackage_usage -+ shift 1; dir="$1"; shift 1;; -+ -C*) -+ dir="`echo "$1" | sed 's/^-C//'`"/; shift 1;; -+ --di=*|--dir=*|--dire=*|--direc=*|--direct=*|--directo=*|--director=*|--directory=*) -+ dir="`echo "$1" | sed 's/^[^=]*=//'`"/; shift 1;; -+ -q|--q|--qu|--qui|--quie|--quiet) -+ quiet="-s"; shift 1;; -+ -h|--h|--he|--hel|--help) -+ cat <<'EOF' 1>&2 -+'Click-buildtool makepackage' builds a Click package for the specified -+driver from sources listed on the command line. -+ -+Usage: click-buildtool makepackage [-t DRIVER] PACKAGENAME SRCFILES... -+ -+Options: -+ -t, --driver DRIVER Set target driver to DRIVER ('userlevel', -+ 'linuxmodule', 'bsdmodule', 'ns', or 'tool'). -+ -q, --quiet Build quietly (may be ignored). -+ -C, --directory DIR Switch to DIR directory before building. -+ -h, --help Print this message and exit. -+ -[other options] Passed to the C/C++ compiler. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ -*) -+ cflags="$cflags $1"; shift 1;; -+ *) -+ if test -z "$pkg"; then -+ pkg="$1"; shift 1 -+ else -+ srcs="$srcs -+$1"; shift 1 -+ fi;; -+ esac -+ done -+ -+ test -z "$srcs" && makepackage_usage -+ -+ objs= -+ objsvar=OBJS -+ if test -z "$driver" -o "$driver" = 'user' -o "$driver" = 'userlevel'; then -+ L=u -+ elif test "$driver" = 'kernel' -o "$driver" = 'linuxmodule'; then -+ L=k -+ elif test "$driver" = 'bsdmodule'; then -+ L=b -+ elif test "$driver" = 'ns' -o "$driver" = 'nsmodule'; then -+ L=n -+ elif test "$driver" = 'tool'; then -+ L=t -+ else -+ echo "Unknown driver $driver" 1>&2 -+ exit 1 -+ fi -+ osuffix=".${L}o" -+ -+ if test -n "$dir"; then cd "$dir"; fi -+ echo > ${L}elements.conf -+ echo "$srcs" | grep . | elem2make -t $driver > ${L}elements.mk -+ echo "PACKAGE_OBJS :=" >> ${L}elements.mk -+ -+ echo "package = $pkg -+ -+srcdir = . -+top_srcdir = . -+builddir = . -+top_builddir = . -+PACKAGE_CFLAGS = $cflags -+PACKAGE_CXXFLAGS = $cflags -+ -+include ${clickdatadir}/config.mk -+include ${clickdatadir}/pkg-Makefile" > Makefile -+ -+ test -z "$quiet" && echo "+" $gmake $pkg$osuffix -+ $gmake $quiet $pkg$osuffix -+} -+ -+ -+ -+######### -+# KSYMS # -+######### -+ -+ksyms_usage () { -+ echo "Usage: click-buildtool ksyms OBJ... > KSYMS" 1>&2 -+ echo "Try 'click-buildtool ksyms --help' for more information." 1>&2 -+ exit 1 -+} -+ -+ksyms () { -+ driver="" -+ date=`date` -+ dir= -+ objs= -+ exclude= -+ while [ x"$1" != x ]; do -+ case $1 in -+ -C|--di|--dir|--dire|--direc|--direct|--directo|--director|--directory) -+ test $# -lt 2 && ksyms_usage -+ shift 1; dir="$1"; shift 1;; -+ -C*) -+ dir="`echo "$1" | sed 's/^-C//'`"/; shift 1;; -+ --di=*|--dir=*|--dire=*|--direc=*|--direct=*|--directo=*|--director=*|--directory=*) -+ dir="`echo "$1" | sed 's/^[^=]*=//'`"/; shift 1;; -+ -x|--e|--ex|--exc|--excl|--exclu|--exclud|--exclude) -+ test $# -lt 2 && ksyms_usage -+ shift 1; exclude="$exclude -+$1"; shift 1;; -+ -x*) -+ exclude="$exclude -+`echo "$1" | sed 's/^-x//'`"; shift 1;; -+ --e=*|--ex=*|--exc=*|--excl=*|--exclu=*|--exclud=*|--exclude=*) -+ exclude="$exclude -+`echo "$1" | sed 's/^[^=]*=//'`"; shift 1;; -+ -h|--h|--he|--hel|--help) -+ cat <<'EOF' 1>&2 -+'Click-buildtool ksyms' creates a C file that exports all symbols for the -+Click objects listed on the command line. -+ -+Usage: click-buildtool ksyms OBJ... > KSYMS -+ -+Options: -+ -x, --exclude=FILE Ignore OBJ even if it is supplied as an argument. -+ -C, --directory DIR Switch to DIR directory before running. -+ -h, --help Print this message and exit. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ *) -+ objs="$objs -+$1"; shift 1;; -+ esac -+ done -+ -+ test -z "$objs" && ksyms_usage -+ objs=`echo "$objs" | sort | uniq` -+ test -n "$exclude" && objs=`echo "$objs -+$exclude" | sort | uniq -u` -+ -+ if test -n "$dir"; then cd "$dir"; fi -+ echo "// Created by 'click-buildtool ksyms' on $date" -+ echo "#include " -+ echo "#include " -+ echo "#include " -+ nm -g $objs | $awk ' -+BEGIN { -+ printed["init_module"] = printed["cleanup_module"] = 1; -+} -+/^[ ]/ { -+ next -+} -+/........[ ][ABCDGRSTVW]/ { -+ x = $3; -+ if (x ~ /^[_A-Za-z][_A-Za-z0-9]*$/ && !printed[x]) { -+ printed[x] = 1; -+ if (x != "click_assert_failed") -+ print "extern char " x "[];"; -+ print "EXPORT_SYMBOL(" x ");"; -+ } -+}' -+} -+ -+ -+ -+################ -+# MAIN PROGRAM # -+################ -+ -+if test $# = 0; then -+ # force usage message -+ set crapfunc -+fi -+ -+while [ x"$1" != x ]; do -+case $1 in -+ --vers|--versi|--versio|--version) -+ cat <<'EOF' -+click-buildtool (Click) 1.6.0 -+Copyright (c) 2000-2001 Massachusetts Institute of Technology -+Copyright (c) 2000-2004 Mazu Networks, Inc. -+Copyright (c) 2001-2003 International Computer Science Institute -+Copyright (c) 2004-2007 Regents of the University of California -+This is free software; see the source for copying conditions. -+There is NO warranty, not even for merchantability or fitness for a -+particular purpose. -+EOF -+ exit 0;; -+ -V|--verb|--verbo|--verbos|--verbose) -+ verbose=1; shift 1;; -+ -h|--h|--he|--hel|--help) -+ cat <<'EOF' 1>&2 -+'Click-buildtool' is a set of tools used when building Click. For information -+on a particular tool, run 'click-buildtool TOOLNAME --help'. -+ -+Usage: click-buildtool elem2make [-V] [-p PREFIX] < [ELEMENTS] -+ or: click-buildtool elem2export [-V] [-p PREFIX] < [ELEMENTS] -+ or: click-buildtool elem2package [-V] [-p PREFIX] PACKAGENAME < [ELEMENTS] -+ or: click-buildtool findelem [-a] [-V] [-p PREFIX] < [FILES AND DIRECTORIES] -+ or: click-buildtool makepackage [-t DRIVER] PACKAGENAME SRCFILES... -+ or: click-buildtool prefix -+ or: click-buildtool provides [REQS] -+ or: click-buildtool quietlink -+ or: click-buildtool kbuild -+ or: click-buildtool kversion [--gpl] -+ or: click-buildtool ksyms OBJS > KSYMSFILE -+ -+Options: -+ -V, --verbose Print more information. -+ -h, --help Print this message and exit. -+ --version Print version number and exit. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ findelem) -+ shift 1; findelem "$@"; exit 0;; -+ elem2make) -+ elem2="make"; shift 1; elem2make "$@"; exit 0;; -+ elem2export) -+ elem2="export"; shift 1; elem2xxx "$@"; exit 0;; -+ elem2package) -+ elem2="package"; shift 1; elem2xxx "$@"; exit 0;; -+ makepackage) -+ shift 1; makepackage "$@"; exit 0;; -+ prefix) -+ shift 1; prefix "$@"; exit 0;; -+ provides) -+ shift 1; provides "$@"; exit 0;; -+ quietlink) -+ shift 1; quietlink "$@"; exit 0;; -+ kversion) -+ shift 1; kversion "$@"; exit 0;; -+ kbuild) -+ shift 1; kbuild "$@"; exit 0;; -+ ksyms) -+ shift 1; ksyms "$@"; exit 0;; -+ *) -+ echo "Usage: click-buildtool TOOLNAME [ARGUMENTS] -+Try 'click-buildtool --help' for more information." 1>&2 -+ exit 1;; -+esac -+done -diff -Nurb click-1.6.0/click-compile click-1.6.0-27/click-compile ---- click-1.6.0/click-compile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/click-compile 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,302 @@ -+#! /bin/sh -+ -+# click-compile.in -- script compiles Click elements -+# Eddie Kohler -+# -+# Copyright (c) 1999 Massachusetts Institute of Technology -+# Copyright (c) 2001 International Computer Science Institute -+# Copyright (c) 2005 Regents of the University of California -+# -+# Permission is hereby granted, free of charge, to any person obtaining a -+# copy of this software and associated documentation files (the "Software"), -+# to deal in the Software without restriction, subject to the conditions -+# listed in the Click LICENSE file. These conditions include: you must -+# preserve this copyright notice, and you cannot mention the copyright -+# holders in advertising related to the Software without their permission. -+# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+# notice is a summary of the Click LICENSE file; the license in that file is -+# legally binding. -+ -+prefix=/d/click/click-1.6.0-27/inst -+exec_prefix=/d/click/click-1.6.0-27/inst -+includedir=/d/click/click-1.6.0-27/inst/include -+libdir=/d/click/click-1.6.0-27/inst/lib -+datarootdir=/d/click/click-1.6.0-27/inst/share -+datadir=/d/click/click-1.6.0-27/inst/share -+srcdir=${datadir}/click/src -+linuxdir=/d/kernels/linux-2.6.27.10-clickport -+freebsd_includedir=/usr/include -+CLICK_VERSION=1.6.0 -+ -+# determine mode -+directory=. -+driver= -+package=NONE -+cflags= -+compileflag=-c -+quiet= -+gpl=y -+while true; do -+ bad=x -+ case $1 in -+ -t|--dr|--dri|--driv|--drive|--driver) -+ driver=$2; shift 2;; -+ -t*) -+ driver=`echo "$1" | sed 's/^-t//'`; shift 1;; -+ --dr=*|--dri=*|--driv=*|--drive=*|--driver=*) -+ driver=`echo "$1" | sed 's/[-a-z]*=//'`; shift 1;; -+ --c|--cf|--cfl|--cfla|--cflag|--cflags|--de|--def|--defs) -+ echo -I$includedir -+ exit 0;; -+ --l|--li|--lib|--libs) -+ echo -L$libdir -lclick -lpcap -ldl -+ exit 0;; -+ --toolc|--toolcf|--toolcfl|--toolcfla|--toolcflag|--toolcflags) -+ echo -DCLICK_TOOL -I$includedir -+ exit 0;; -+ --tooll|--toolli|--toollib|--toollibs) -+ echo -L$libdir -lclicktool -ldl -+ exit 0;; -+ --o|--ot|--oth|--othe|--other|--otherl|--otherli|--otherlib|--otherlibs) -+ echo -lpcap -ldl -+ exit 0;; -+ -d|--di|--dir|--dire|--direc|--direct|--directo|--director|--directory) -+ directory=$2; shift 2;; -+ -d*) -+ directory=`echo "$1" | sed 's/^-d//'`; shift 1;; -+ --di=*|--dir=*|--dire=*|--direc=*|--direct=*|--directo=*|--director=*|--directory=*) -+ directory=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;; -+ --t|--ta|--tar|--targ|--targe|--target) -+ echo "click-compile: '--target' is obsolete; change your script to use '--driver'" 1>&2 -+ driver=$2; shift 2;; -+ --t=*|--ta=*|--tar=*|--targ=*|--targe=*|--target=*) -+ echo "click-compile: '--target' is obsolete; change your script to use '--driver'" 1>&2 -+ driver=`echo "$1" | sed 's/[-a-z]*=//'`; shift 1;; -+ -p|--p|--pa|--pac|--pack|--packa|--packag|--package) -+ package=$2; shift 2;; -+ -p*) -+ package=`echo "$1" | sed 's/^-p//'`; shift 1;; -+ --p=*|--pa=*|--pac=*|--pack=*|--packa=*|--packag=*|--package=*) -+ package=`echo "$1" | sed 's/[-a-z]*=//'`; shift 1;; -+ -q|--q|--qu|--qui|--quie|--quiet) -+ quiet=y; shift 1;; -+ --no-g|--no-gp|--no-gpl) -+ gpl=n; shift 1;; -+ -h|--h|--he|--hel|--help) -+ cat <<'EOF' -+'Click-compile' compiles a Click source file, or outputs any compiler options -+relevant for userlevel Click drivers. -+ -+Usage: click-compile -t DRIVER [OPTIONS] SOURCEFILE... -+ -+Options: -+ --defs Outputs preprocessor options for userlevel drivers. -+ --libs Outputs link options for userlevel drivers. -+ --otherlibs Like '--libs' minus the Click library. -+ --toolcflags Outputs C/C++ flags options for tools. -+ --toollibs Outputs link options for tools. -+ -t, --driver DRIVER Sets target driver to 'bsdmodule', 'linuxmodule', -+ 'userlevel', 'ns', or 'tool'. -+ -p, --package PACKAGE Build a dynamically loadable package named PACKAGE. -+ -d, --directory DIR Change to directory DIR. -+ -q, --quiet Be quiet (don't echo commands or print warnings). -+ --no-gpl Omit "BSD/GPL" declaration from kernel package. -+ -h, --help Print this message and exit. -+ -v, --version Print version number and exit. -+ Other options are passed to the compiler unchanged. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version) -+ echo click-compile '(Click)' $CLICK_VERSION -+ cat <<"EOF" -+Copyright (C) 1999-2001 Massachusetts Institute of Technology -+Copyright (C) 2002 International Computer Science Institute -+Copyright (C) 2004 Regents of the University of California -+This is free software; see the source for copying conditions. -+There is NO warranty, not even for merchantability or fitness for any -+particular purpose. -+EOF -+ exit 0;; -+ -*) -+ if test "$1" = -E -o "$1" = -c -o "$1" = -S; then -+ compileflag=$1 -+ else -+ cflags="$cflags '$1'" -+ fi -+ shift 1;; -+ *) -+ bad=;; -+ esac -+ if test -z "$bad"; then break; fi -+done -+ -+cd $directory -+ -+# test directory function -+test_dir () { -+ test -d "$1" -a -d "$1/elements" -a -d "$1/lib" -+} -+ -+# analyze CLICKPATH to find sources -+path=${CLICKPATH-:} -+tried_defaults= -+include_source= -+while true; do -+ case $path in -+ :*) -+ if test -z "$tried_defaults" && test_dir "$srcdir"; then -+ include_source="-I$srcdir" -+ else -+ tried_defaults=y -+ fi -+ path=`echo "$path" | sed 's/://'` -+ ;; -+ *:*) -+ dir=`echo "$path" | sed 's/:.*//'` -+ if test_dir "$dir"; then include_source="-I$dir"; fi -+ path=`echo "$path" | sed 's/[^:]*://'` -+ ;; -+ *:) -+ dir=`echo "$path" | sed 's/:.*//'` -+ if test_dir "$dir"; then include_source="-I$dir"; fi -+ path=":" -+ ;; -+ *) -+ if test_dir "$path"; then include_source="-I$path"; fi -+ path="" -+ ;; -+ esac -+ if test -z "$path" -o -n "$include_source"; then break; fi -+done -+ -+if test ! -d "$includedir"; then -+ echo "click-compile: Cannot find Click include directory!" 1>&2 -+ echo " (Have you installed Click yet?)" 1>&2 -+ exit 1 -+elif test -z "$include_source"; then -+ if test -z "$quiet"; then -+ echo "click-compile: warning: cannot find full Click source" 1>&2 -+ fi -+fi -+ -+ -+case $driver in -+ u|us|use|user|userl|userle|userlev|userleve|userlevel) -+ idefs="-DHAVE_CONFIG_H -DCLICK_USERLEVEL" -+ iincludes="${include_source} -I${includedir}" -+ icppflags="" -+ icxxflags="-fPIC -g -O2 -MD" -+ icflags="-fPIC -g -O2 -MD" -+ command="${CXX-g++ -W -Wall } ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CXXFLAGS-$icxxflags} $cflags $compileflag" -+ c_command="${CC-gcc -W -Wall} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CFLAGS-$icflags} $cflags $compileflag" -+ driver=userlevel;; -+ k|ke|ker|kern|kerne|kernel|l|li|lin|linu|linux|linuxm|linuxmo|linuxmod|linuxmodu|linuxmodul|linuxmodule) -+ idefs="-DHAVE_CONFIG_H -DCLICK_LINUXMODULE" -+ iincludes="${include_source} -I${includedir} -I${linuxdir}/include" -+ icppflags="" -+ icxxflags=" -O2 -MD" -+ icflags=" -O2 -MD" -+ command="${CXX-g++ -w -W -Wall -fno-exceptions -fno-rtti -D__SMP__} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CXXFLAGS-$icxxflags} $cflags $compileflag" -+ c_command="${CC-gcc -W -Wall} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CFLAGS-$icflags} $cflags $compileflag" -+ driver=linuxmodule;; -+ b|bs|bsd|bsdm|bsdmo|bsdmod|bsdmodu|bsdmodul|bsdmodule) -+ idefs="-DHAVE_CONFIG_H -DCLICK_BSDMODULE" -+ iincludes="-nostdinc ${include_source} -I${includedir}" -+ icppflags="" -+ icxxflags=" -O2 -MD" -+ icflags=" -O2 -MD" -+ command="${CXX-g++ -w -W -Wall -fno-exceptions -fno-rtti -D__SMP__} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CXXFLAGS-$icxxflags} $cflags $compileflag" -+ c_command="${CC-gcc -W -Wall} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CFLAGS-$icflags} $cflags $compileflag" -+ driver=bsdmodule;; -+ ns|nsm|nsmo|nsmod|nsmodu|nsmodul|nsmodule) -+ idefs="-DHAVE_CONFIG_H -DCLICK_NS" -+ iincludes="${include_source} -I${includedir}" -+ icppflags="" -+ icxxflags="-fPIC -g -O2 -MD" -+ icflags="-fPIC -g -O2 -MD" -+ command="${CXX-g++ -W -Wall } ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CXXFLAGS-$icxxflags} $cflags $compileflag" -+ c_command="${CC-gcc -W -Wall} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CFLAGS-$icflags} $cflags $compileflag" -+ driver=ns;; -+ t|to|too|tool) -+ idefs="-DHAVE_CONFIG_H -DCLICK_TOOL" -+ iincludes="${include_source} -I${includedir}" -+ icppflags="" -+ icxxflags="-fPIC -g -O2 -MD" -+ icflags="-fPIC -g -O2 -MD" -+ command="${CXX-g++ -W -Wall } ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CXXFLAGS-$icxxflags} $cflags $compileflag" -+ c_command="${CC-gcc -W -Wall} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CFLAGS-$icflags} $cflags $compileflag" -+ driver=tool;; -+ "") -+ echo "click-compile: you must specify a driver" 1>&2; exit 1;; -+ *) -+ echo "click-compile: acceptable drivers are 'userlevel', 'linuxmodule'," 1>&2 -+ echo "click-compile: 'bsdmodule', and 'tool'" 1>&2; exit 1;; -+esac -+ -+exec_command () { -+ if test -z "$quiet"; then -+ echo "$@" 1>&2 -+ fi -+ eval "$@" || exit 1 -+} -+ -+compile_file () { -+ option= -+ source="$1"; shift -+ if test -r "$source"; then -+ option=`head -n 5 $source | grep '^/\*\* click-compile:' | sed -e 's/\/\*\* click-compile://g' -e 's/\*\///g'` -+ fi -+ exec_command $command $option $source "$@" -+} -+ -+# do stuff -+if test "x$package" != "xNONE"; then -+ command="$command -DCLICK_PACKAGE" -+ files=; rmfiles= -+ trap 'rm -f $rmfiles' 0 -+ trap 'rm -f $rmfiles; exit 1' 1 2 15 -+ for file; do -+ if echo "$file" | grep '\.cc*$' >/dev/null 2>&1; then -+ objfile=`echo "$file" | sed 's/\.c*$/'"$$"'\.o/;s/^.*\///'` -+ compile_file $file -o $objfile -+ rmfiles="$rmfiles $objfile "`echo $objfile | sed 's/\.o/\.d/'` -+ else -+ objfile="$file" -+ fi -+ files="$files $objfile" -+ done -+ if test $driver = linuxmodule; then -+ vfile=kernelversion$$ -+ test -f $vfile.c && echo "click-compile: A file '$vfile.c' already exists in this directory!" 1>&2 && echo "click-compile: You must remove it, or run me somewhere else." 1>&2 && exit 1 -+ files="$files $vfile.o" -+ rmfiles="$rmfiles $vfile.o $vfile.c $vfile.d" -+ cat > $vfile.c < -+#include -+/* a new version of EXPORT_NO_SYMBOLS that works */ -+const int __ksymtab_nothing[0] __attribute__((section("__ksymtab"))) = { }; -+EOF -+ if test $gpl = y; then -+ cat >> $vfile.c < --#endif - #include - typedef ptrdiff_t intptr_t; --typedef unsigned long uintptr_t; /* XXX? */ -+//typedef unsigned long uintptr_t; /* XXX? */ - - /* Define HAVE_INT64_IS_LONG based on HAVE_INT64_IS_LONG_LINUXMODULE. */ - #ifdef HAVE_INT64_IS_LONG_LINUXMODULE -diff -Nurb click-1.6.0/config-linuxmodule.h.in.orig click-1.6.0-27/config-linuxmodule.h.in.orig ---- click-1.6.0/config-linuxmodule.h.in.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/config-linuxmodule.h.in.orig 2007-09-18 16:24:46.000000000 -0400 -@@ -0,0 +1,154 @@ -+/* Process this file with configure to produce config-linuxmodule.h. -*- mode: c -*- */ -+#ifndef CLICK_CONFIG_LINUXMODULE_H -+#define CLICK_CONFIG_LINUXMODULE_H -+ -+/* Define stuff under a Linux module. */ -+#ifndef __linux__ -+# error "I must be compiled on a Linux machine" -+#endif -+#define __KERNEL__ 1 -+#define MODULE 1 -+ -+/* Define if your Linux kernel is running in SMP mode. */ -+#undef __SMP__ -+ -+/* Define if Click should use an adaptive scheduler to share the CPU(s) more -+ fairly with the kernel. */ -+#undef HAVE_ADAPTIVE_SCHEDULER -+ -+/* Define if your Linux kernel has Click extensions. */ -+#undef HAVE_CLICK_KERNEL -+ -+/* Define if your Linux kernel has Click transmit notification extensions. */ -+#undef HAVE_CLICK_KERNEL_TX_NOTIFY -+ -+/* Define if fast checksum functions available. */ -+#define HAVE_FAST_CHECKSUM 1 -+ -+/* Define if 'int64_t' is typedefed to 'long' in linuxmodule. */ -+#undef HAVE_INT64_IS_LONG_LINUXMODULE -+ -+/* Define if 'int64_t' is typedefed to 'long long' in linuxmodule. */ -+#undef HAVE_INT64_IS_LONG_LONG_LINUXMODULE -+ -+/* Define to enable assertion checking. Failed assertions will print a message -+ and optionally stop the router. */ -+#undef HAVE_KERNEL_ASSERT -+ -+/* Define if you have the header file. */ -+#undef HAVE_LINUX_ASM_ALTERNATIVE_H -+ -+/* Define if your Linux kernel architecture defines atomic_set_mask. */ -+#undef HAVE_LINUX_ATOMIC_SET_MASK -+ -+/* Define if your Linux kernel has polling extensions. */ -+#undef HAVE_LINUX_POLLING -+ -+/* Define if your Linux kernel has read_net_skbcount. */ -+#undef HAVE_LINUX_READ_NET_SKBCOUNT -+ -+/* Define if 'struct skb_shared_info' has a 'gso_size' member. */ -+#undef HAVE_LINUX_SKB_SHINFO_GSO_SIZE -+ -+/* Define if 'struct skb_shared_info' has an 'ip6_frag_id' member. */ -+#undef HAVE_LINUX_SKB_SHINFO_IP6_FRAG_ID -+ -+/* Define if 'struct skb_shared_info' has a 'tso_size' member. */ -+#undef HAVE_LINUX_SKB_SHINFO_TSO_SIZE -+ -+/* Define if 'struct skb_shared_info' has a 'ufo_size' member. */ -+#undef HAVE_LINUX_SKB_SHINFO_UFO_SIZE -+ -+/* Define if 'struct sk_buff' has an 'fclone' member. */ -+#undef HAVE_LINUX_SKBUFF_FCLONE -+ -+/* Define if 'struct sk_buff' has a 'security' member. */ -+#undef HAVE_LINUX_SKBUFF_SECURITY -+ -+/* Define if your Linux kernel exposes strlen. */ -+#undef HAVE_LINUX_STRLEN_EXPOSED -+ -+/* Define if your Linux kernel has tulip_interrupt_hook. */ -+#undef HAVE_LINUX_TULIP_INTERRUPT_HOOK -+ -+/* Define if the Click linuxmodule is compiled for a 2.6 kernel. */ -+#undef HAVE_LINUXMODULE_2_6 -+ -+/* Define if you have the net_enable_timestamp function. */ -+#undef HAVE_NET_ENABLE_TIMESTAMP -+ -+/* Define if you have the netif_tx_lock function. */ -+#undef HAVE_NETIF_TX_LOCK -+ -+/* Define if fast checksum functions require correct alignment. */ -+#ifndef __i386__ -+# define FAST_CHECKSUM_ALIGNED 1 -+#endif -+ -+/* Include integer type definitions. */ -+#if !HAVE_LINUXMODULE_2_6 -+# include -+#endif -+#include -+typedef ptrdiff_t intptr_t; -+typedef unsigned long uintptr_t; /* XXX? */ -+ -+/* Define HAVE_INT64_IS_LONG based on HAVE_INT64_IS_LONG_LINUXMODULE. */ -+#ifdef HAVE_INT64_IS_LONG_LINUXMODULE -+# define HAVE_INT64_IS_LONG HAVE_INT64_IS_LONG_LINUXMODULE -+#endif -+ -+/* Define HAVE_INT64_IS_LONG_LONG based on HAVE_INT64_IS_LONG_LONG_LINUXMODULE. */ -+#if HAVE_LONG_LONG && defined(HAVE_INT64_IS_LONG_LONG_LINUXMODULE) -+# define HAVE_INT64_IS_LONG_LONG HAVE_INT64_IS_LONG_LONG_LINUXMODULE -+#endif -+ -+/* Define KBUILD symbols. */ -+#if !defined(KBUILD_STR) && HAVE_LINUXMODULE_2_6 -+# define KBUILD_STR(s) #s -+# define KBUILD_BASENAME KBUILD_STR(click) -+# define KBUILD_MODNAME KBUILD_STR(click) -+#endif -+ -+#ifdef __cplusplus -+ -+/* Declare operator new. */ -+void *operator new(size_t) throw (); -+void *operator new[](size_t) throw (); -+ -+/* Provide placement new. */ -+inline void *operator new(size_t, void *v) { return v; } -+#define HAVE_PLACEMENT_NEW 1 -+ -+/* Define macros that surround Click declarations. */ -+#define CLICK_DECLS /* */ -+#define CLICK_ENDDECLS /* */ -+#define CLICK_USING_DECLS /* */ -+#define CLICK_NAME(name) ::name -+ -+/* Fix incompatibilities between some Linux versions and Click/C++. */ -+#include -+ -+#endif /* __cplusplus */ -+ -+/* Define assert macro. */ -+# ifdef __cplusplus -+extern "C" { -+# endif -+void click_assert_failed(const char *file, int line, const char *problem_text); -+# ifdef __cplusplus -+} -+# endif -+ -+#ifdef HAVE_KERNEL_ASSERT -+# define assert(x) ((x) ? (void)0 : click_assert_failed(__FILE__, __LINE__, #x)) -+#else -+# define assert(x) /* nada */ -+#endif -+ -+/* Some architectures do not have builtin integer functions in kernel. */ -+#if defined(__MIPSEL__) || defined(__MIPSEB__) -+# define HAVE_NO_INTEGER_BUILTINS 1 -+#endif -+ -+#endif /* CLICK_CONFIG_LINUXMODULE_H */ -diff -Nurb click-1.6.0/config.log click-1.6.0-27/config.log ---- click-1.6.0/config.log 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/config.log 2009-01-28 16:15:44.000000000 -0500 -@@ -0,0 +1,7069 @@ -+This file contains any messages produced by compilers while -+running configure, to aid debugging if configure makes a mistake. -+ -+It was created by click configure 1.6.0, which was -+generated by GNU Autoconf 2.61. Invocation command line was -+ -+ $ ./configure --prefix=/d/click/click-1.6.0-27/inst --exec-prefix=/d/click/click-1.6.0-27/inst --with-linux=/d/kernels/linux-2.6.27.10-clickport --with-linux-map=/d/uml/trelclickSystem.map -+ -+## --------- ## -+## Platform. ## -+## --------- ## -+ -+hostname = joyce -+uname -m = i686 -+uname -r = 2.6.22.19 -+uname -s = Linux -+uname -v = #1 SMP Sat Jan 10 15:48:51 EST 2009 -+ -+/usr/bin/uname -p = Intel(R) Core(TM)2 CPU 6400 @ 2.13GHz -+/bin/uname -X = unknown -+ -+/bin/arch = i686 -+/usr/bin/arch -k = unknown -+/usr/convex/getsysinfo = unknown -+/usr/bin/hostinfo = unknown -+/bin/machine = unknown -+/usr/bin/oslevel = unknown -+/bin/universe = unknown -+ -+PATH: /usr/local/bin -+PATH: /usr/bin -+PATH: /bin -+PATH: /opt/bin -+PATH: /usr/i686-pc-linux-gnu/gcc-bin/4.1.1 -+PATH: /usr/i486-pc-linux-gnu/gcc-bin/4.1.1 -+PATH: /usr/kde/3.5/bin -+PATH: /usr/qt/3/bin -+PATH: /usr/games/bin -+PATH: /home/sapan/downloads/google_appengine -+ -+ -+## ----------- ## -+## Core tests. ## -+## ----------- ## -+ -+configure:1888: checking build system type -+configure:1906: result: i686-pc-linux-gnu -+configure:1928: checking host system type -+configure:1943: result: i686-pc-linux-gnu -+configure:1965: checking target system type -+configure:1980: result: i686-pc-linux-gnu -+configure:2052: checking for gcc -+configure:2068: found /usr/bin/gcc -+configure:2079: result: gcc -+configure:2148: checking for g++ -+configure:2164: found /usr/bin/g++ -+configure:2175: result: g++ -+configure:2250: checking for gcc -+configure:2277: result: gcc -+configure:2515: checking for C compiler version -+configure:2522: gcc --version >&5 -+gcc (GCC) 4.1.1 (Gentoo 4.1.1-r3) -+Copyright (C) 2006 Free Software Foundation, Inc. -+This is free software; see the source for copying conditions. There is NO -+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -+ -+configure:2525: $? = 0 -+configure:2532: gcc -v >&5 -+Using built-in specs. -+Target: i686-pc-linux-gnu -+Configured with: /var/tmp/portage/sys-devel/gcc-4.1.1-r3/work/gcc-4.1.1/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.1.1 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --disable-libunwind-exceptions --disable-multilib --disable-libmudflap --disable-libssp --disable-libgcj --enable-languages=c,c++,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu -+Thread model: posix -+gcc version 4.1.1 (Gentoo 4.1.1-r3) -+configure:2535: $? = 0 -+configure:2542: gcc -V >&5 -+gcc: '-V' option must have argument -+configure:2545: $? = 1 -+configure:2568: checking for C compiler default output file name -+configure:2595: gcc conftest.c >&5 -+configure:2598: $? = 0 -+configure:2636: result: a.out -+configure:2653: checking whether the C compiler works -+configure:2663: ./a.out -+configure:2666: $? = 0 -+configure:2683: result: yes -+configure:2690: checking whether we are cross compiling -+configure:2692: result: no -+configure:2695: checking for suffix of executables -+configure:2702: gcc -o conftest conftest.c >&5 -+configure:2705: $? = 0 -+configure:2729: result: -+configure:2735: checking for suffix of object files -+configure:2761: gcc -c conftest.c >&5 -+configure:2764: $? = 0 -+configure:2787: result: o -+configure:2791: checking whether we are using the GNU C compiler -+configure:2820: gcc -c conftest.c >&5 -+configure:2826: $? = 0 -+configure:2843: result: yes -+configure:2848: checking whether gcc accepts -g -+configure:2878: gcc -c -g conftest.c >&5 -+configure:2884: $? = 0 -+configure:2983: result: yes -+configure:3000: checking for gcc option to accept ISO C89 -+configure:3074: gcc -c -g -O2 conftest.c >&5 -+configure:3080: $? = 0 -+configure:3103: result: none needed -+configure:3140: checking how to run the C preprocessor -+configure:3180: gcc -W -Wall -E conftest.c -+configure:3186: $? = 0 -+configure:3217: gcc -W -Wall -E conftest.c -+conftest.c:9:28: error: ac_nonexistent.h: No such file or directory -+configure:3223: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| /* end confdefs.h. */ -+| #include -+configure:3256: result: gcc -W -Wall -E -+configure:3285: gcc -W -Wall -E conftest.c -+configure:3291: $? = 0 -+configure:3322: gcc -W -Wall -E conftest.c -+conftest.c:9:28: error: ac_nonexistent.h: No such file or directory -+configure:3328: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| /* end confdefs.h. */ -+| #include -+configure:3366: checking for inline -+configure:3392: gcc -W -Wall -c -g -O2 conftest.c >&5 -+configure:3398: $? = 0 -+configure:3416: result: inline -+configure:3552: checking for C++ compiler version -+configure:3559: g++ --version >&5 -+g++ (GCC) 4.1.1 (Gentoo 4.1.1-r3) -+Copyright (C) 2006 Free Software Foundation, Inc. -+This is free software; see the source for copying conditions. There is NO -+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -+ -+configure:3562: $? = 0 -+configure:3569: g++ -v >&5 -+Using built-in specs. -+Target: i686-pc-linux-gnu -+Configured with: /var/tmp/portage/sys-devel/gcc-4.1.1-r3/work/gcc-4.1.1/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.1.1 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --enable-secureplt --disable-libunwind-exceptions --disable-multilib --disable-libmudflap --disable-libssp --disable-libgcj --enable-languages=c,c++,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu -+Thread model: posix -+gcc version 4.1.1 (Gentoo 4.1.1-r3) -+configure:3572: $? = 0 -+configure:3579: g++ -V >&5 -+g++: '-V' option must have argument -+configure:3582: $? = 1 -+configure:3585: checking whether we are using the GNU C++ compiler -+configure:3614: g++ -c conftest.cpp >&5 -+configure:3620: $? = 0 -+configure:3637: result: yes -+configure:3642: checking whether g++ accepts -g -+configure:3672: g++ -c -g conftest.cpp >&5 -+configure:3678: $? = 0 -+configure:3777: result: yes -+configure:3865: checking whether works -+configure:3896: g++ -o conftest -g -O2 conftest.cpp >&5 -+configure:3902: $? = 0 -+configure:3919: result: yes -+configure:4014: checking how to run the C++ preprocessor -+configure:4050: g++ -W -Wall -E conftest.cpp -+configure:4056: $? = 0 -+configure:4087: g++ -W -Wall -E conftest.cpp -+conftest.cpp:10:28: error: ac_nonexistent.h: No such file or directory -+configure:4093: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| /* end confdefs.h. */ -+| #include -+configure:4126: result: g++ -W -Wall -E -+configure:4155: g++ -W -Wall -E conftest.cpp -+configure:4161: $? = 0 -+configure:4192: g++ -W -Wall -E conftest.cpp -+conftest.cpp:10:28: error: ac_nonexistent.h: No such file or directory -+configure:4198: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| /* end confdefs.h. */ -+| #include -+configure:4297: checking for ar -+configure:4313: found /usr/bin/ar -+configure:4324: result: ar -+configure:4393: checking for ld -+configure:4409: found /usr/bin/ld -+configure:4420: result: ld -+configure:4489: checking for ranlib -+configure:4505: found /usr/bin/ranlib -+configure:4516: result: ranlib -+configure:4585: checking for strip -+configure:4601: found /usr/bin/strip -+configure:4612: result: strip -+configure:5178: checking whether we are compiling for Linux -+configure:5207: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:5213: $? = 0 -+configure:5228: result: yes -+configure:5243: checking for strerror -+configure:5299: gcc -W -Wall -o conftest -g -O2 conftest.c >&5 -+configure:5305: $? = 0 -+configure:5323: result: yes -+configure:5348: checking for snprintf -+configure:5404: gcc -W -Wall -o conftest -g -O2 conftest.c >&5 -+conftest.c:38: warning: conflicting types for built-in function 'snprintf' -+configure:5410: $? = 0 -+configure:5428: result: yes -+configure:5348: checking for strtoul -+configure:5404: gcc -W -Wall -o conftest -g -O2 conftest.c >&5 -+configure:5410: $? = 0 -+configure:5428: result: yes -+configure:5348: checking for tcgetpgrp -+configure:5404: gcc -W -Wall -o conftest -g -O2 conftest.c >&5 -+configure:5410: $? = 0 -+configure:5428: result: yes -+configure:5348: checking for vsnprintf -+configure:5404: gcc -W -Wall -o conftest -g -O2 conftest.c >&5 -+conftest.c:41: warning: conflicting types for built-in function 'vsnprintf' -+configure:5410: $? = 0 -+configure:5428: result: yes -+configure:5456: checking for grep that handles long lines and -e -+configure:5530: result: /bin/grep -+configure:5535: checking for egrep -+configure:5613: result: /bin/grep -E -+configure:5618: checking for ANSI C header files -+configure:5648: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:5654: $? = 0 -+configure:5753: g++ -W -Wall -o conftest -g -O2 conftest.cpp >&5 -+configure:5756: $? = 0 -+configure:5762: ./conftest -+configure:5765: $? = 0 -+configure:5782: result: yes -+configure:5806: checking for sys/types.h -+configure:5827: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:5833: $? = 0 -+configure:5849: result: yes -+configure:5806: checking for sys/stat.h -+configure:5827: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:5833: $? = 0 -+configure:5849: result: yes -+configure:5806: checking for stdlib.h -+configure:5827: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:5833: $? = 0 -+configure:5849: result: yes -+configure:5806: checking for string.h -+configure:5827: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:5833: $? = 0 -+configure:5849: result: yes -+configure:5806: checking for memory.h -+configure:5827: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:5833: $? = 0 -+configure:5849: result: yes -+configure:5806: checking for strings.h -+configure:5827: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:5833: $? = 0 -+configure:5849: result: yes -+configure:5806: checking for inttypes.h -+configure:5827: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:5833: $? = 0 -+configure:5849: result: yes -+configure:5806: checking for stdint.h -+configure:5827: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:5833: $? = 0 -+configure:5849: result: yes -+configure:5806: checking for unistd.h -+configure:5827: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:5833: $? = 0 -+configure:5849: result: yes -+configure:5861: checking for int -+configure:5891: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:5897: $? = 0 -+configure:5912: result: yes -+configure:5919: checking size of int -+configure:6221: g++ -W -Wall -o conftest -g -O2 conftest.cpp >&5 -+configure:6224: $? = 0 -+configure:6230: ./conftest -+configure:6233: $? = 0 -+configure:6256: result: 4 -+configure:6266: checking for long -+configure:6296: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:6302: $? = 0 -+configure:6317: result: yes -+configure:6324: checking size of long -+configure:6626: g++ -W -Wall -o conftest -g -O2 conftest.cpp >&5 -+configure:6629: $? = 0 -+configure:6635: ./conftest -+configure:6638: $? = 0 -+configure:6661: result: 4 -+configure:6677: checking for inttypes.h -+configure:6683: result: yes -+configure:6892: checking whether machine is indifferent to alignment -+configure:6935: g++ -W -Wall -o conftest -g -O2 conftest.cpp >&5 -+conftest.cpp:40: warning: unused parameter 'argc' -+conftest.cpp:40: warning: unused parameter 'argv' -+configure:6938: $? = 0 -+configure:6944: ./conftest -+configure:6947: $? = 0 -+configure:6963: result: yes -+configure:6973: checking for long long -+configure:7003: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:7009: $? = 0 -+configure:7024: result: yes -+configure:7031: checking size of long long -+configure:7333: g++ -W -Wall -o conftest -g -O2 conftest.cpp >&5 -+configure:7336: $? = 0 -+configure:7342: ./conftest -+configure:7345: $? = 0 -+configure:7368: result: 8 -+configure:7385: checking for long long -+configure:7436: result: yes -+configure:7447: checking for int64_t typedef -+configure:7470: result: yes -+configure:7472: checking for uint64_t typedef -+configure:7495: result: yes -+configure:7523: checking whether long and int64_t are the same type -+configure:7559: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:7565: $? = 0 -+configure:7580: result: no -+configure:7590: checking whether long long and int64_t are the same type -+configure:7626: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+conftest.cpp: In function 'void f1(int64_t)': -+conftest.cpp:39: error: redefinition of 'void f1(int64_t)' -+conftest.cpp:37: error: 'void f1(long long int)' previously defined here -+configure:7632: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| /* end confdefs.h. */ -+| #include -+| void f1(long long) { -+| } -+| void f1(int64_t) { // will fail if long long and int64_t are the same type -+| } -+| int -+| main () -+| { -+| -+| ; -+| return 0; -+| } -+configure:7647: result: yes -+configure:7658: checking for struct timeval -+configure:7688: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:7694: $? = 0 -+configure:7709: result: yes -+configure:7716: checking size of struct timeval -+configure:8018: g++ -W -Wall -o conftest -g -O2 conftest.cpp >&5 -+configure:8021: $? = 0 -+configure:8027: ./conftest -+configure:8030: $? = 0 -+configure:8053: result: 8 -+configure:8063: checking for struct timespec -+configure:8093: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:8099: $? = 0 -+configure:8114: result: yes -+configure:8128: checking for struct timespec -+configure:8179: result: yes -+configure:8186: checking size of struct timespec -+configure:8488: g++ -W -Wall -o conftest -g -O2 conftest.cpp >&5 -+configure:8491: $? = 0 -+configure:8497: ./conftest -+configure:8500: $? = 0 -+configure:8523: result: 8 -+configure:8551: checking endian.h usability -+configure:8568: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:8574: $? = 0 -+configure:8588: result: yes -+configure:8592: checking endian.h presence -+configure:8607: g++ -W -Wall -E conftest.cpp -+configure:8613: $? = 0 -+configure:8627: result: yes -+configure:8655: checking for endian.h -+configure:8663: result: yes -+configure:8684: checking endianness -+configure:8704: g++ -W -Wall -E conftest.cpp >conftest.result 2>conftest.out -+configure:8707: $? = 0 -+configure:8720: result: 1234 -+configure:8808: checking byteswap.h usability -+configure:8825: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:8831: $? = 0 -+configure:8845: result: yes -+configure:8849: checking byteswap.h presence -+configure:8864: g++ -W -Wall -E conftest.cpp -+configure:8870: $? = 0 -+configure:8884: result: yes -+configure:8912: checking for byteswap.h -+configure:8920: result: yes -+configure:8935: checking whether signed right shift is arithmetic -+configure:8961: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+conftest.cpp:43: error: size of array 'x' is negative -+configure:8967: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+| #define SIZEOF_STRUCT_TIMEVAL 8 -+| #define HAVE_STRUCT_TIMESPEC 1 -+| #define SIZEOF_STRUCT_TIMESPEC 8 -+| #define HAVE_ENDIAN_H 1 -+| #define CLICK_BYTE_ORDER 1234 -+| #define HAVE_BYTESWAP_H 1 -+| /* end confdefs.h. */ -+| int f(int x[((int) -1) >> 15]) { return x[0]; } -+| int -+| main () -+| { -+| -+| ; -+| return 0; -+| } -+configure:8982: result: yes -+configure:8998: checking for addressable va_list type -+configure:9035: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:9041: $? = 0 -+configure:9056: result: yes -+configure:9067: checking for __builtin_clz -+configure:9093: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+conftest.cpp: In function 'int main()': -+conftest.cpp:49: warning: unused variable 'y' -+configure:9099: $? = 0 -+configure:9114: result: yes -+configure:9123: checking for __builtin_clzl -+configure:9149: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+conftest.cpp: In function 'int main()': -+conftest.cpp:50: warning: unused variable 'y' -+configure:9155: $? = 0 -+configure:9170: result: yes -+configure:9179: checking for __builtin_clzll -+configure:9205: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+conftest.cpp: In function 'int main()': -+conftest.cpp:51: warning: unused variable 'y' -+configure:9211: $? = 0 -+configure:9226: result: yes -+configure:9236: checking for __builtin_ffs -+configure:9262: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+conftest.cpp: In function 'int main()': -+conftest.cpp:52: warning: unused variable 'y' -+configure:9268: $? = 0 -+configure:9283: result: yes -+configure:9292: checking for __builtin_ffsl -+configure:9318: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+conftest.cpp: In function 'int main()': -+conftest.cpp:53: warning: unused variable 'y' -+configure:9324: $? = 0 -+configure:9339: result: yes -+configure:9348: checking for __builtin_ffsll -+configure:9374: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+conftest.cpp: In function 'int main()': -+conftest.cpp:54: warning: unused variable 'y' -+configure:9380: $? = 0 -+configure:9395: result: yes -+configure:9410: checking for strings.h -+configure:9416: result: yes -+configure:9551: checking for ffs -+configure:9607: g++ -W -Wall -o conftest -g -O2 conftest.cpp >&5 -+configure:9613: $? = 0 -+configure:9631: result: yes -+configure:9551: checking for ffsl -+configure:9607: g++ -W -Wall -o conftest -g -O2 conftest.cpp >&5 -+configure:9613: $? = 0 -+configure:9631: result: yes -+configure:9551: checking for ffsll -+configure:9607: g++ -W -Wall -o conftest -g -O2 conftest.cpp >&5 -+configure:9613: $? = 0 -+configure:9631: result: yes -+configure:9876: checking for unistd.h -+configure:9882: result: yes -+configure:9886: checking termio.h usability -+configure:9903: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:9909: $? = 0 -+configure:9923: result: yes -+configure:9927: checking termio.h presence -+configure:9942: g++ -W -Wall -E conftest.cpp -+configure:9948: $? = 0 -+configure:9962: result: yes -+configure:9990: checking for termio.h -+configure:9998: result: yes -+configure:9886: checking netdb.h usability -+configure:9903: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:9909: $? = 0 -+configure:9923: result: yes -+configure:9927: checking netdb.h presence -+configure:9942: g++ -W -Wall -E conftest.cpp -+configure:9948: $? = 0 -+configure:9962: result: yes -+configure:9990: checking for netdb.h -+configure:9998: result: yes -+configure:9886: checking sys/event.h usability -+configure:9903: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+conftest.cpp:91:23: error: sys/event.h: No such file or directory -+configure:9909: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+| #define SIZEOF_STRUCT_TIMEVAL 8 -+| #define HAVE_STRUCT_TIMESPEC 1 -+| #define SIZEOF_STRUCT_TIMESPEC 8 -+| #define HAVE_ENDIAN_H 1 -+| #define CLICK_BYTE_ORDER 1234 -+| #define HAVE_BYTESWAP_H 1 -+| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+| #define HAVE_ADDRESSABLE_VA_LIST 1 -+| #define HAVE___BUILTIN_CLZ 1 -+| #define HAVE___BUILTIN_CLZL 1 -+| #define HAVE___BUILTIN_CLZLL 1 -+| #define HAVE___BUILTIN_FFS 1 -+| #define HAVE___BUILTIN_FFSL 1 -+| #define HAVE___BUILTIN_FFSLL 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_FFS 1 -+| #define HAVE_FFSL 1 -+| #define HAVE_FFSLL 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_TERMIO_H 1 -+| #define HAVE_NETDB_H 1 -+| /* end confdefs.h. */ -+| #include -+| #ifdef HAVE_SYS_TYPES_H -+| # include -+| #endif -+| #ifdef HAVE_SYS_STAT_H -+| # include -+| #endif -+| #ifdef STDC_HEADERS -+| # include -+| # include -+| #else -+| # ifdef HAVE_STDLIB_H -+| # include -+| # endif -+| #endif -+| #ifdef HAVE_STRING_H -+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -+| # include -+| # endif -+| # include -+| #endif -+| #ifdef HAVE_STRINGS_H -+| # include -+| #endif -+| #ifdef HAVE_INTTYPES_H -+| # include -+| #endif -+| #ifdef HAVE_STDINT_H -+| # include -+| #endif -+| #ifdef HAVE_UNISTD_H -+| # include -+| #endif -+| #include -+configure:9923: result: no -+configure:9927: checking sys/event.h presence -+configure:9942: g++ -W -Wall -E conftest.cpp -+conftest.cpp:58:23: error: sys/event.h: No such file or directory -+configure:9948: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+| #define SIZEOF_STRUCT_TIMEVAL 8 -+| #define HAVE_STRUCT_TIMESPEC 1 -+| #define SIZEOF_STRUCT_TIMESPEC 8 -+| #define HAVE_ENDIAN_H 1 -+| #define CLICK_BYTE_ORDER 1234 -+| #define HAVE_BYTESWAP_H 1 -+| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+| #define HAVE_ADDRESSABLE_VA_LIST 1 -+| #define HAVE___BUILTIN_CLZ 1 -+| #define HAVE___BUILTIN_CLZL 1 -+| #define HAVE___BUILTIN_CLZLL 1 -+| #define HAVE___BUILTIN_FFS 1 -+| #define HAVE___BUILTIN_FFSL 1 -+| #define HAVE___BUILTIN_FFSLL 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_FFS 1 -+| #define HAVE_FFSL 1 -+| #define HAVE_FFSLL 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_TERMIO_H 1 -+| #define HAVE_NETDB_H 1 -+| /* end confdefs.h. */ -+| #include -+configure:9962: result: no -+configure:9990: checking for sys/event.h -+configure:9998: result: no -+configure:9886: checking pwd.h usability -+configure:9903: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:9909: $? = 0 -+configure:9923: result: yes -+configure:9927: checking pwd.h presence -+configure:9942: g++ -W -Wall -E conftest.cpp -+configure:9948: $? = 0 -+configure:9962: result: yes -+configure:9990: checking for pwd.h -+configure:9998: result: yes -+configure:9886: checking grp.h usability -+configure:9903: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:9909: $? = 0 -+configure:9923: result: yes -+configure:9927: checking grp.h presence -+configure:9942: g++ -W -Wall -E conftest.cpp -+configure:9948: $? = 0 -+configure:9962: result: yes -+configure:9990: checking for grp.h -+configure:9998: result: yes -+configure:10022: checking poll.h usability -+configure:10039: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:10045: $? = 0 -+configure:10059: result: yes -+configure:10063: checking poll.h presence -+configure:10078: g++ -W -Wall -E conftest.cpp -+configure:10084: $? = 0 -+configure:10098: result: yes -+configure:10126: checking for poll.h -+configure:10133: result: yes -+configure:10145: checking whether is emulated -+configure:10175: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:10181: $? = 0 -+configure:10196: result: no -+configure:10211: checking for sigaction -+configure:10267: g++ -W -Wall -o conftest -g -O2 conftest.cpp >&5 -+configure:10273: $? = 0 -+configure:10291: result: yes -+configure:10306: checking for kqueue -+configure:10362: g++ -W -Wall -o conftest -g -O2 conftest.cpp >&5 -+/tmp/ccy7SvnE.o: In function `main': -+/d/click/click-1.6.0-27/conftest.cpp:96: undefined reference to `kqueue' -+collect2: ld returned 1 exit status -+configure:10368: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+| #define SIZEOF_STRUCT_TIMEVAL 8 -+| #define HAVE_STRUCT_TIMESPEC 1 -+| #define SIZEOF_STRUCT_TIMESPEC 8 -+| #define HAVE_ENDIAN_H 1 -+| #define CLICK_BYTE_ORDER 1234 -+| #define HAVE_BYTESWAP_H 1 -+| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+| #define HAVE_ADDRESSABLE_VA_LIST 1 -+| #define HAVE___BUILTIN_CLZ 1 -+| #define HAVE___BUILTIN_CLZL 1 -+| #define HAVE___BUILTIN_CLZLL 1 -+| #define HAVE___BUILTIN_FFS 1 -+| #define HAVE___BUILTIN_FFSL 1 -+| #define HAVE___BUILTIN_FFSLL 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_FFS 1 -+| #define HAVE_FFSL 1 -+| #define HAVE_FFSLL 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_TERMIO_H 1 -+| #define HAVE_NETDB_H 1 -+| #define HAVE_PWD_H 1 -+| #define HAVE_GRP_H 1 -+| #define HAVE_POLL_H 1 -+| #define HAVE_SIGACTION 1 -+| /* end confdefs.h. */ -+| /* Define kqueue to an innocuous variant, in case declares kqueue. -+| For example, HP-UX 11i declares gettimeofday. */ -+| #define kqueue innocuous_kqueue -+| -+| /* System header to define __stub macros and hopefully few prototypes, -+| which can conflict with char kqueue (); below. -+| Prefer to if __STDC__ is defined, since -+| exists even on freestanding compilers. */ -+| -+| #ifdef __STDC__ -+| # include -+| #else -+| # include -+| #endif -+| -+| #undef kqueue -+| -+| /* Override any GCC internal prototype to avoid an error. -+| Use char because int might match the return type of a GCC -+| builtin and then its argument prototype would still apply. */ -+| #ifdef __cplusplus -+| extern "C" -+| #endif -+| char kqueue (); -+| /* The GNU C library defines this for functions which it implements -+| to always fail with ENOSYS. Some functions are actually named -+| something starting with __ and the normal name is an alias. */ -+| #if defined __stub_kqueue || defined __stub___kqueue -+| choke me -+| #endif -+| -+| int -+| main () -+| { -+| return kqueue (); -+| ; -+| return 0; -+| } -+configure:10386: result: no -+configure:10483: checking dlfcn.h usability -+configure:10500: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:10506: $? = 0 -+configure:10520: result: yes -+configure:10524: checking dlfcn.h presence -+configure:10539: g++ -W -Wall -E conftest.cpp -+configure:10545: $? = 0 -+configure:10559: result: yes -+configure:10587: checking for dlfcn.h -+configure:10595: result: yes -+configure:10610: checking for dlopen -+configure:10666: g++ -W -Wall -o conftest -g -O2 conftest.cpp >&5 -+/tmp/ccq7wPI0.o: In function `main': -+/d/click/click-1.6.0-27/conftest.cpp:97: undefined reference to `dlopen' -+collect2: ld returned 1 exit status -+configure:10672: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+| #define SIZEOF_STRUCT_TIMEVAL 8 -+| #define HAVE_STRUCT_TIMESPEC 1 -+| #define SIZEOF_STRUCT_TIMESPEC 8 -+| #define HAVE_ENDIAN_H 1 -+| #define CLICK_BYTE_ORDER 1234 -+| #define HAVE_BYTESWAP_H 1 -+| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+| #define HAVE_ADDRESSABLE_VA_LIST 1 -+| #define HAVE___BUILTIN_CLZ 1 -+| #define HAVE___BUILTIN_CLZL 1 -+| #define HAVE___BUILTIN_CLZLL 1 -+| #define HAVE___BUILTIN_FFS 1 -+| #define HAVE___BUILTIN_FFSL 1 -+| #define HAVE___BUILTIN_FFSLL 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_FFS 1 -+| #define HAVE_FFSL 1 -+| #define HAVE_FFSLL 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_TERMIO_H 1 -+| #define HAVE_NETDB_H 1 -+| #define HAVE_PWD_H 1 -+| #define HAVE_GRP_H 1 -+| #define HAVE_POLL_H 1 -+| #define HAVE_SIGACTION 1 -+| #define HAVE_DLFCN_H 1 -+| /* end confdefs.h. */ -+| /* Define dlopen to an innocuous variant, in case declares dlopen. -+| For example, HP-UX 11i declares gettimeofday. */ -+| #define dlopen innocuous_dlopen -+| -+| /* System header to define __stub macros and hopefully few prototypes, -+| which can conflict with char dlopen (); below. -+| Prefer to if __STDC__ is defined, since -+| exists even on freestanding compilers. */ -+| -+| #ifdef __STDC__ -+| # include -+| #else -+| # include -+| #endif -+| -+| #undef dlopen -+| -+| /* Override any GCC internal prototype to avoid an error. -+| Use char because int might match the return type of a GCC -+| builtin and then its argument prototype would still apply. */ -+| #ifdef __cplusplus -+| extern "C" -+| #endif -+| char dlopen (); -+| /* The GNU C library defines this for functions which it implements -+| to always fail with ENOSYS. Some functions are actually named -+| something starting with __ and the normal name is an alias. */ -+| #if defined __stub_dlopen || defined __stub___dlopen -+| choke me -+| #endif -+| -+| int -+| main () -+| { -+| return dlopen (); -+| ; -+| return 0; -+| } -+configure:10689: result: no -+configure:10694: checking for dlopen in -ldl -+configure:10729: g++ -W -Wall -o conftest -g -O2 conftest.cpp -ldl >&5 -+configure:10735: $? = 0 -+configure:10753: result: yes -+configure:10773: checking compiler flags for building loadable modules -+configure:10781: result: -shared -+configure:11121: checking for library containing gethostbyname -+configure:11162: gcc -W -Wall -o conftest -g -O2 conftest.c >&5 -+configure:11168: $? = 0 -+configure:11196: result: none required -+configure:11204: checking for library containing connect -+configure:11245: gcc -W -Wall -o conftest -g -O2 conftest.c >&5 -+configure:11251: $? = 0 -+configure:11279: result: none required -+configure:11289: checking whether accept() uses socklen_t -+configure:11317: gcc -W -Wall -c -g -O2 conftest.c >&5 -+configure:11323: $? = 0 -+configure:11338: result: yes -+configure:11365: checking for large file support in C library -+configure:11400: gcc -W -Wall -c -g -O2 conftest.c >&5 -+configure:11406: $? = 0 -+configure:11421: result: yes -+configure:11431: checking for off_t -+configure:11467: gcc -W -Wall -c -g -O2 conftest.c >&5 -+configure:11473: $? = 0 -+configure:11488: result: yes -+configure:11495: checking size of off_t -+configure:11833: gcc -W -Wall -o conftest -g -O2 conftest.c >&5 -+configure:11836: $? = 0 -+configure:11842: ./conftest -+configure:11845: $? = 0 -+configure:11868: result: 8 -+configure:11904: checking sys/mman.h usability -+configure:11921: gcc -W -Wall -c -g -O2 conftest.c >&5 -+configure:11927: $? = 0 -+configure:11941: result: yes -+configure:11945: checking sys/mman.h presence -+configure:11960: gcc -W -Wall -E conftest.c -+configure:11966: $? = 0 -+configure:11980: result: yes -+configure:12008: checking for sys/mman.h -+configure:12016: result: yes -+configure:12035: checking for stdlib.h -+configure:12041: result: yes -+configure:12035: checking for unistd.h -+configure:12041: result: yes -+configure:12174: checking for getpagesize -+configure:12230: gcc -W -Wall -o conftest -g -O2 conftest.c >&5 -+configure:12236: $? = 0 -+configure:12254: result: yes -+configure:12264: checking for working mmap -+configure:12411: gcc -W -Wall -o conftest -g -O2 conftest.c >&5 -+configure:12414: $? = 0 -+configure:12420: ./conftest -+configure:12423: $? = 0 -+configure:12439: result: yes -+configure:12460: checking for madvise -+configure:12516: g++ -W -Wall -o conftest -g -O2 conftest.cpp >&5 -+configure:12522: $? = 0 -+configure:12540: result: yes -+configure:12550: checking whether madvise is declared -+configure:12583: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:12589: $? = 0 -+configure:12604: result: yes -+configure:12689: checking for Linux 2.6 -+configure:12696: result: 1 -+configure:12708: checking for Click Linux kernel extensions -+configure:12717: result: yes -+configure:12726: checking for Click Linux kernel extensions for transmit notification -+configure:12735: result: no -+configure:12744: checking for read_net_skbcount kernel extension -+configure:12753: result: no -+configure:12762: checking for strlen kernel symbol -+configure:12771: result: yes -+configure:12780: checking for tulip_interrupt_hook kernel symbol -+configure:12789: result: no -+configure:12798: checking for device polling kernel extension -+configure:12807: result: yes -+configure:12816: checking for atomic_set_mask -+configure:12825: result: no -+configure:12834: checking for SMP -+configure:12843: result: yes -+configure:12853: checking for -+configure:12862: result: yes -+configure:13033: checking linux/if_tun.h usability -+configure:13050: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:13056: $? = 0 -+configure:13070: result: yes -+configure:13074: checking linux/if_tun.h presence -+configure:13089: g++ -W -Wall -E conftest.cpp -+configure:13095: $? = 0 -+configure:13109: result: yes -+configure:13137: checking for linux/if_tun.h -+configure:13145: result: yes -+configure:13033: checking net/if_tun.h usability -+configure:13050: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+conftest.cpp:115:24: error: net/if_tun.h: No such file or directory -+configure:13056: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+| #define SIZEOF_STRUCT_TIMEVAL 8 -+| #define HAVE_STRUCT_TIMESPEC 1 -+| #define SIZEOF_STRUCT_TIMESPEC 8 -+| #define HAVE_ENDIAN_H 1 -+| #define CLICK_BYTE_ORDER 1234 -+| #define HAVE_BYTESWAP_H 1 -+| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+| #define HAVE_ADDRESSABLE_VA_LIST 1 -+| #define HAVE___BUILTIN_CLZ 1 -+| #define HAVE___BUILTIN_CLZL 1 -+| #define HAVE___BUILTIN_CLZLL 1 -+| #define HAVE___BUILTIN_FFS 1 -+| #define HAVE___BUILTIN_FFSL 1 -+| #define HAVE___BUILTIN_FFSLL 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_FFS 1 -+| #define HAVE_FFSL 1 -+| #define HAVE_FFSLL 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_TERMIO_H 1 -+| #define HAVE_NETDB_H 1 -+| #define HAVE_PWD_H 1 -+| #define HAVE_GRP_H 1 -+| #define HAVE_POLL_H 1 -+| #define HAVE_SIGACTION 1 -+| #define HAVE_DLFCN_H 1 -+| #define HAVE_DYNAMIC_LINKING 1 -+| #define HAVE_ACCEPT_SOCKLEN_T 1 -+| #define HAVE_LARGE_FILE_SUPPORT 1 -+| #define SIZEOF_OFF_T 8 -+| #define HAVE_SYS_MMAN_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_GETPAGESIZE 1 -+| #define HAVE_MMAP 1 -+| #define HAVE_MADVISE 1 -+| #define HAVE_DECL_MADVISE 1 -+| #define HAVE_LINUXMODULE_2_6 1 -+| #define HAVE_CLICK_KERNEL 1 -+| #define HAVE_LINUX_STRLEN_EXPOSED 1 -+| #define HAVE_LINUX_POLLING 1 -+| #define __SMP__ 1 -+| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1 -+| #define HAVE_STRIDE_SCHED 1 -+| #define HAVE_LINUX_IF_TUN_H 1 -+| /* end confdefs.h. */ -+| #include -+| #ifdef HAVE_SYS_TYPES_H -+| # include -+| #endif -+| #ifdef HAVE_SYS_STAT_H -+| # include -+| #endif -+| #ifdef STDC_HEADERS -+| # include -+| # include -+| #else -+| # ifdef HAVE_STDLIB_H -+| # include -+| # endif -+| #endif -+| #ifdef HAVE_STRING_H -+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -+| # include -+| # endif -+| # include -+| #endif -+| #ifdef HAVE_STRINGS_H -+| # include -+| #endif -+| #ifdef HAVE_INTTYPES_H -+| # include -+| #endif -+| #ifdef HAVE_STDINT_H -+| # include -+| #endif -+| #ifdef HAVE_UNISTD_H -+| # include -+| #endif -+| #include -+configure:13070: result: no -+configure:13074: checking net/if_tun.h presence -+configure:13089: g++ -W -Wall -E conftest.cpp -+conftest.cpp:82:24: error: net/if_tun.h: No such file or directory -+configure:13095: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+| #define SIZEOF_STRUCT_TIMEVAL 8 -+| #define HAVE_STRUCT_TIMESPEC 1 -+| #define SIZEOF_STRUCT_TIMESPEC 8 -+| #define HAVE_ENDIAN_H 1 -+| #define CLICK_BYTE_ORDER 1234 -+| #define HAVE_BYTESWAP_H 1 -+| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+| #define HAVE_ADDRESSABLE_VA_LIST 1 -+| #define HAVE___BUILTIN_CLZ 1 -+| #define HAVE___BUILTIN_CLZL 1 -+| #define HAVE___BUILTIN_CLZLL 1 -+| #define HAVE___BUILTIN_FFS 1 -+| #define HAVE___BUILTIN_FFSL 1 -+| #define HAVE___BUILTIN_FFSLL 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_FFS 1 -+| #define HAVE_FFSL 1 -+| #define HAVE_FFSLL 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_TERMIO_H 1 -+| #define HAVE_NETDB_H 1 -+| #define HAVE_PWD_H 1 -+| #define HAVE_GRP_H 1 -+| #define HAVE_POLL_H 1 -+| #define HAVE_SIGACTION 1 -+| #define HAVE_DLFCN_H 1 -+| #define HAVE_DYNAMIC_LINKING 1 -+| #define HAVE_ACCEPT_SOCKLEN_T 1 -+| #define HAVE_LARGE_FILE_SUPPORT 1 -+| #define SIZEOF_OFF_T 8 -+| #define HAVE_SYS_MMAN_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_GETPAGESIZE 1 -+| #define HAVE_MMAP 1 -+| #define HAVE_MADVISE 1 -+| #define HAVE_DECL_MADVISE 1 -+| #define HAVE_LINUXMODULE_2_6 1 -+| #define HAVE_CLICK_KERNEL 1 -+| #define HAVE_LINUX_STRLEN_EXPOSED 1 -+| #define HAVE_LINUX_POLLING 1 -+| #define __SMP__ 1 -+| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1 -+| #define HAVE_STRIDE_SCHED 1 -+| #define HAVE_LINUX_IF_TUN_H 1 -+| /* end confdefs.h. */ -+| #include -+configure:13109: result: no -+configure:13137: checking for net/if_tun.h -+configure:13145: result: no -+configure:13033: checking net/if_tap.h usability -+configure:13050: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+conftest.cpp:115:24: error: net/if_tap.h: No such file or directory -+configure:13056: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+| #define SIZEOF_STRUCT_TIMEVAL 8 -+| #define HAVE_STRUCT_TIMESPEC 1 -+| #define SIZEOF_STRUCT_TIMESPEC 8 -+| #define HAVE_ENDIAN_H 1 -+| #define CLICK_BYTE_ORDER 1234 -+| #define HAVE_BYTESWAP_H 1 -+| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+| #define HAVE_ADDRESSABLE_VA_LIST 1 -+| #define HAVE___BUILTIN_CLZ 1 -+| #define HAVE___BUILTIN_CLZL 1 -+| #define HAVE___BUILTIN_CLZLL 1 -+| #define HAVE___BUILTIN_FFS 1 -+| #define HAVE___BUILTIN_FFSL 1 -+| #define HAVE___BUILTIN_FFSLL 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_FFS 1 -+| #define HAVE_FFSL 1 -+| #define HAVE_FFSLL 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_TERMIO_H 1 -+| #define HAVE_NETDB_H 1 -+| #define HAVE_PWD_H 1 -+| #define HAVE_GRP_H 1 -+| #define HAVE_POLL_H 1 -+| #define HAVE_SIGACTION 1 -+| #define HAVE_DLFCN_H 1 -+| #define HAVE_DYNAMIC_LINKING 1 -+| #define HAVE_ACCEPT_SOCKLEN_T 1 -+| #define HAVE_LARGE_FILE_SUPPORT 1 -+| #define SIZEOF_OFF_T 8 -+| #define HAVE_SYS_MMAN_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_GETPAGESIZE 1 -+| #define HAVE_MMAP 1 -+| #define HAVE_MADVISE 1 -+| #define HAVE_DECL_MADVISE 1 -+| #define HAVE_LINUXMODULE_2_6 1 -+| #define HAVE_CLICK_KERNEL 1 -+| #define HAVE_LINUX_STRLEN_EXPOSED 1 -+| #define HAVE_LINUX_POLLING 1 -+| #define __SMP__ 1 -+| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1 -+| #define HAVE_STRIDE_SCHED 1 -+| #define HAVE_LINUX_IF_TUN_H 1 -+| /* end confdefs.h. */ -+| #include -+| #ifdef HAVE_SYS_TYPES_H -+| # include -+| #endif -+| #ifdef HAVE_SYS_STAT_H -+| # include -+| #endif -+| #ifdef STDC_HEADERS -+| # include -+| # include -+| #else -+| # ifdef HAVE_STDLIB_H -+| # include -+| # endif -+| #endif -+| #ifdef HAVE_STRING_H -+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -+| # include -+| # endif -+| # include -+| #endif -+| #ifdef HAVE_STRINGS_H -+| # include -+| #endif -+| #ifdef HAVE_INTTYPES_H -+| # include -+| #endif -+| #ifdef HAVE_STDINT_H -+| # include -+| #endif -+| #ifdef HAVE_UNISTD_H -+| # include -+| #endif -+| #include -+configure:13070: result: no -+configure:13074: checking net/if_tap.h presence -+configure:13089: g++ -W -Wall -E conftest.cpp -+conftest.cpp:82:24: error: net/if_tap.h: No such file or directory -+configure:13095: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+| #define SIZEOF_STRUCT_TIMEVAL 8 -+| #define HAVE_STRUCT_TIMESPEC 1 -+| #define SIZEOF_STRUCT_TIMESPEC 8 -+| #define HAVE_ENDIAN_H 1 -+| #define CLICK_BYTE_ORDER 1234 -+| #define HAVE_BYTESWAP_H 1 -+| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+| #define HAVE_ADDRESSABLE_VA_LIST 1 -+| #define HAVE___BUILTIN_CLZ 1 -+| #define HAVE___BUILTIN_CLZL 1 -+| #define HAVE___BUILTIN_CLZLL 1 -+| #define HAVE___BUILTIN_FFS 1 -+| #define HAVE___BUILTIN_FFSL 1 -+| #define HAVE___BUILTIN_FFSLL 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_FFS 1 -+| #define HAVE_FFSL 1 -+| #define HAVE_FFSLL 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_TERMIO_H 1 -+| #define HAVE_NETDB_H 1 -+| #define HAVE_PWD_H 1 -+| #define HAVE_GRP_H 1 -+| #define HAVE_POLL_H 1 -+| #define HAVE_SIGACTION 1 -+| #define HAVE_DLFCN_H 1 -+| #define HAVE_DYNAMIC_LINKING 1 -+| #define HAVE_ACCEPT_SOCKLEN_T 1 -+| #define HAVE_LARGE_FILE_SUPPORT 1 -+| #define SIZEOF_OFF_T 8 -+| #define HAVE_SYS_MMAN_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_GETPAGESIZE 1 -+| #define HAVE_MMAP 1 -+| #define HAVE_MADVISE 1 -+| #define HAVE_DECL_MADVISE 1 -+| #define HAVE_LINUXMODULE_2_6 1 -+| #define HAVE_CLICK_KERNEL 1 -+| #define HAVE_LINUX_STRLEN_EXPOSED 1 -+| #define HAVE_LINUX_POLLING 1 -+| #define __SMP__ 1 -+| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1 -+| #define HAVE_STRIDE_SCHED 1 -+| #define HAVE_LINUX_IF_TUN_H 1 -+| /* end confdefs.h. */ -+| #include -+configure:13109: result: no -+configure:13137: checking for net/if_tap.h -+configure:13145: result: no -+configure:13033: checking net/bpf.h usability -+configure:13050: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+conftest.cpp:115:21: error: net/bpf.h: No such file or directory -+configure:13056: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+| #define SIZEOF_STRUCT_TIMEVAL 8 -+| #define HAVE_STRUCT_TIMESPEC 1 -+| #define SIZEOF_STRUCT_TIMESPEC 8 -+| #define HAVE_ENDIAN_H 1 -+| #define CLICK_BYTE_ORDER 1234 -+| #define HAVE_BYTESWAP_H 1 -+| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+| #define HAVE_ADDRESSABLE_VA_LIST 1 -+| #define HAVE___BUILTIN_CLZ 1 -+| #define HAVE___BUILTIN_CLZL 1 -+| #define HAVE___BUILTIN_CLZLL 1 -+| #define HAVE___BUILTIN_FFS 1 -+| #define HAVE___BUILTIN_FFSL 1 -+| #define HAVE___BUILTIN_FFSLL 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_FFS 1 -+| #define HAVE_FFSL 1 -+| #define HAVE_FFSLL 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_TERMIO_H 1 -+| #define HAVE_NETDB_H 1 -+| #define HAVE_PWD_H 1 -+| #define HAVE_GRP_H 1 -+| #define HAVE_POLL_H 1 -+| #define HAVE_SIGACTION 1 -+| #define HAVE_DLFCN_H 1 -+| #define HAVE_DYNAMIC_LINKING 1 -+| #define HAVE_ACCEPT_SOCKLEN_T 1 -+| #define HAVE_LARGE_FILE_SUPPORT 1 -+| #define SIZEOF_OFF_T 8 -+| #define HAVE_SYS_MMAN_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_GETPAGESIZE 1 -+| #define HAVE_MMAP 1 -+| #define HAVE_MADVISE 1 -+| #define HAVE_DECL_MADVISE 1 -+| #define HAVE_LINUXMODULE_2_6 1 -+| #define HAVE_CLICK_KERNEL 1 -+| #define HAVE_LINUX_STRLEN_EXPOSED 1 -+| #define HAVE_LINUX_POLLING 1 -+| #define __SMP__ 1 -+| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1 -+| #define HAVE_STRIDE_SCHED 1 -+| #define HAVE_LINUX_IF_TUN_H 1 -+| /* end confdefs.h. */ -+| #include -+| #ifdef HAVE_SYS_TYPES_H -+| # include -+| #endif -+| #ifdef HAVE_SYS_STAT_H -+| # include -+| #endif -+| #ifdef STDC_HEADERS -+| # include -+| # include -+| #else -+| # ifdef HAVE_STDLIB_H -+| # include -+| # endif -+| #endif -+| #ifdef HAVE_STRING_H -+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H -+| # include -+| # endif -+| # include -+| #endif -+| #ifdef HAVE_STRINGS_H -+| # include -+| #endif -+| #ifdef HAVE_INTTYPES_H -+| # include -+| #endif -+| #ifdef HAVE_STDINT_H -+| # include -+| #endif -+| #ifdef HAVE_UNISTD_H -+| # include -+| #endif -+| #include -+configure:13070: result: no -+configure:13074: checking net/bpf.h presence -+configure:13089: g++ -W -Wall -E conftest.cpp -+conftest.cpp:82:21: error: net/bpf.h: No such file or directory -+configure:13095: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+| #define SIZEOF_STRUCT_TIMEVAL 8 -+| #define HAVE_STRUCT_TIMESPEC 1 -+| #define SIZEOF_STRUCT_TIMESPEC 8 -+| #define HAVE_ENDIAN_H 1 -+| #define CLICK_BYTE_ORDER 1234 -+| #define HAVE_BYTESWAP_H 1 -+| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+| #define HAVE_ADDRESSABLE_VA_LIST 1 -+| #define HAVE___BUILTIN_CLZ 1 -+| #define HAVE___BUILTIN_CLZL 1 -+| #define HAVE___BUILTIN_CLZLL 1 -+| #define HAVE___BUILTIN_FFS 1 -+| #define HAVE___BUILTIN_FFSL 1 -+| #define HAVE___BUILTIN_FFSLL 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_FFS 1 -+| #define HAVE_FFSL 1 -+| #define HAVE_FFSLL 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_TERMIO_H 1 -+| #define HAVE_NETDB_H 1 -+| #define HAVE_PWD_H 1 -+| #define HAVE_GRP_H 1 -+| #define HAVE_POLL_H 1 -+| #define HAVE_SIGACTION 1 -+| #define HAVE_DLFCN_H 1 -+| #define HAVE_DYNAMIC_LINKING 1 -+| #define HAVE_ACCEPT_SOCKLEN_T 1 -+| #define HAVE_LARGE_FILE_SUPPORT 1 -+| #define SIZEOF_OFF_T 8 -+| #define HAVE_SYS_MMAN_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_GETPAGESIZE 1 -+| #define HAVE_MMAP 1 -+| #define HAVE_MADVISE 1 -+| #define HAVE_DECL_MADVISE 1 -+| #define HAVE_LINUXMODULE_2_6 1 -+| #define HAVE_CLICK_KERNEL 1 -+| #define HAVE_LINUX_STRLEN_EXPOSED 1 -+| #define HAVE_LINUX_POLLING 1 -+| #define __SMP__ 1 -+| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1 -+| #define HAVE_STRIDE_SCHED 1 -+| #define HAVE_LINUX_IF_TUN_H 1 -+| /* end confdefs.h. */ -+| #include -+configure:13109: result: no -+configure:13137: checking for net/bpf.h -+configure:13145: result: no -+configure:13200: checking for pcap.h -+configure:13219: g++ -W -Wall -E conftest.cpp -+configure:13225: $? = 0 -+configure:13244: result: found -+configure:13254: checking whether pcap.h works -+configure:13275: g++ -W -Wall -E conftest.cpp -+configure:13281: $? = 0 -+configure:13297: result: yes -+configure:13305: checking for bpf_timeval in pcap.h -+configure:13328: result: no -+configure:13337: checking whether pcap_setnonblock is declared -+configure:13367: g++ -W -Wall -c -g -O2 conftest.cpp >&5 -+configure:13373: $? = 0 -+configure:13388: result: yes -+configure:13416: checking for -lpcap -+configure:13459: gcc -W -Wall -o conftest -g -O2 conftest.c -lpcap >&5 -+configure:13465: $? = 0 -+configure:13534: result: found -+configure:13634: checking for pcap_setnonblock -+configure:13690: gcc -W -Wall -o conftest -g -O2 -lpcap conftest.c >&5 -+configure:13696: $? = 0 -+configure:13714: result: yes -+configure:13751: checking whether struct if_data has ifi_datalen -+configure:13779: gcc -W -Wall -c -g -O2 conftest.c >&5 -+conftest.c:87:24: error: net/if_var.h: No such file or directory -+conftest.c: In function 'main': -+conftest.c:92: error: storage size of 'ifm' isn't known -+conftest.c:92: warning: unused variable 'ifm' -+configure:13785: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+| #define SIZEOF_STRUCT_TIMEVAL 8 -+| #define HAVE_STRUCT_TIMESPEC 1 -+| #define SIZEOF_STRUCT_TIMESPEC 8 -+| #define HAVE_ENDIAN_H 1 -+| #define CLICK_BYTE_ORDER 1234 -+| #define HAVE_BYTESWAP_H 1 -+| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+| #define HAVE_ADDRESSABLE_VA_LIST 1 -+| #define HAVE___BUILTIN_CLZ 1 -+| #define HAVE___BUILTIN_CLZL 1 -+| #define HAVE___BUILTIN_CLZLL 1 -+| #define HAVE___BUILTIN_FFS 1 -+| #define HAVE___BUILTIN_FFSL 1 -+| #define HAVE___BUILTIN_FFSLL 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_FFS 1 -+| #define HAVE_FFSL 1 -+| #define HAVE_FFSLL 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_TERMIO_H 1 -+| #define HAVE_NETDB_H 1 -+| #define HAVE_PWD_H 1 -+| #define HAVE_GRP_H 1 -+| #define HAVE_POLL_H 1 -+| #define HAVE_SIGACTION 1 -+| #define HAVE_DLFCN_H 1 -+| #define HAVE_DYNAMIC_LINKING 1 -+| #define HAVE_ACCEPT_SOCKLEN_T 1 -+| #define HAVE_LARGE_FILE_SUPPORT 1 -+| #define SIZEOF_OFF_T 8 -+| #define HAVE_SYS_MMAN_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_GETPAGESIZE 1 -+| #define HAVE_MMAP 1 -+| #define HAVE_MADVISE 1 -+| #define HAVE_DECL_MADVISE 1 -+| #define HAVE_LINUXMODULE_2_6 1 -+| #define HAVE_CLICK_KERNEL 1 -+| #define HAVE_LINUX_STRLEN_EXPOSED 1 -+| #define HAVE_LINUX_POLLING 1 -+| #define __SMP__ 1 -+| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1 -+| #define HAVE_STRIDE_SCHED 1 -+| #define HAVE_LINUX_IF_TUN_H 1 -+| #define HAVE_DECL_PCAP_SETNONBLOCK 1 -+| #define HAVE_PCAP 1 -+| #define HAVE_PCAP_SETNONBLOCK 1 -+| #define HAVE_USERLEVEL_DRIVER 1 -+| /* end confdefs.h. */ -+| #include -+| #include -+| -+| int -+| main () -+| { -+| struct if_msghdr ifm; ifm.ifm_data.ifi_datalen = 0; -+| ; -+| return 0; -+| } -+configure:13800: result: no -+configure:13810: checking whether struct sockaddr_in has sin_len -+configure:13838: gcc -W -Wall -c -g -O2 conftest.c >&5 -+conftest.c: In function 'main': -+conftest.c:92: error: 'struct sockaddr_in' has no member named 'sin_len' -+configure:13844: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+| #define SIZEOF_STRUCT_TIMEVAL 8 -+| #define HAVE_STRUCT_TIMESPEC 1 -+| #define SIZEOF_STRUCT_TIMESPEC 8 -+| #define HAVE_ENDIAN_H 1 -+| #define CLICK_BYTE_ORDER 1234 -+| #define HAVE_BYTESWAP_H 1 -+| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+| #define HAVE_ADDRESSABLE_VA_LIST 1 -+| #define HAVE___BUILTIN_CLZ 1 -+| #define HAVE___BUILTIN_CLZL 1 -+| #define HAVE___BUILTIN_CLZLL 1 -+| #define HAVE___BUILTIN_FFS 1 -+| #define HAVE___BUILTIN_FFSL 1 -+| #define HAVE___BUILTIN_FFSLL 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_FFS 1 -+| #define HAVE_FFSL 1 -+| #define HAVE_FFSLL 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_TERMIO_H 1 -+| #define HAVE_NETDB_H 1 -+| #define HAVE_PWD_H 1 -+| #define HAVE_GRP_H 1 -+| #define HAVE_POLL_H 1 -+| #define HAVE_SIGACTION 1 -+| #define HAVE_DLFCN_H 1 -+| #define HAVE_DYNAMIC_LINKING 1 -+| #define HAVE_ACCEPT_SOCKLEN_T 1 -+| #define HAVE_LARGE_FILE_SUPPORT 1 -+| #define SIZEOF_OFF_T 8 -+| #define HAVE_SYS_MMAN_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_GETPAGESIZE 1 -+| #define HAVE_MMAP 1 -+| #define HAVE_MADVISE 1 -+| #define HAVE_DECL_MADVISE 1 -+| #define HAVE_LINUXMODULE_2_6 1 -+| #define HAVE_CLICK_KERNEL 1 -+| #define HAVE_LINUX_STRLEN_EXPOSED 1 -+| #define HAVE_LINUX_POLLING 1 -+| #define __SMP__ 1 -+| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1 -+| #define HAVE_STRIDE_SCHED 1 -+| #define HAVE_LINUX_IF_TUN_H 1 -+| #define HAVE_DECL_PCAP_SETNONBLOCK 1 -+| #define HAVE_PCAP 1 -+| #define HAVE_PCAP_SETNONBLOCK 1 -+| #define HAVE_USERLEVEL_DRIVER 1 -+| /* end confdefs.h. */ -+| #include -+| #include -+| -+| int -+| main () -+| { -+| struct sockaddr_in sin; sin.sin_len = 0; -+| ; -+| return 0; -+| } -+configure:13859: result: no -+configure:14155: checking expat.h usability -+configure:14172: gcc -W -Wall -c -g -O2 conftest.c >&5 -+configure:14178: $? = 0 -+configure:14192: result: yes -+configure:14196: checking expat.h presence -+configure:14211: gcc -W -Wall -E conftest.c -+configure:14217: $? = 0 -+configure:14231: result: yes -+configure:14259: checking for expat.h -+configure:14266: result: yes -+configure:14286: checking for XML_ParserCreateNS in -lexpat -+configure:14321: gcc -W -Wall -o conftest -g -O2 conftest.c -lexpat >&5 -+configure:14327: $? = 0 -+configure:14345: result: yes -+configure:14393: checking for Linux 2.6 compilation flags -+configure:14423: result: -+configure:14440: checking for C++-includable kernel header files -+configure:14488: g++ -w -W -Wall -fno-exceptions -fno-rtti -D__SMP__ -c -g -O2 -D__KERNEL__ -I/d/kernels/linux-2.6.27.10-clickport/include -I/d/kernels/linux-2.6.27.10-clickport/include/asm/mach-default conftest.cpp >&5 -+configure:14494: $? = 0 -+configure:14510: result: yes -+configure:14516: checking whether -fpermissive is required -+configure:14564: g++ -w -W -Wall -fno-exceptions -fno-rtti -D__SMP__ -o conftest -g -O2 -D__KERNEL__ -I/d/kernels/linux-2.6.27.10-clickport/include -I/d/kernels/linux-2.6.27.10-clickport/include/asm/mach-default conftest.cpp >&5 -+configure:14570: $? = 0 -+configure:14587: result: no -+configure:14675: checking whether long and int64_t are the same type in the Linux kernel -+configure:14721: g++ -w -W -Wall -fno-exceptions -fno-rtti -D__SMP__ -c -g -O2 -D__KERNEL__ -I/d/kernels/linux-2.6.27.10-clickport/include -I/d/kernels/linux-2.6.27.10-clickport/include/asm/mach-default conftest.cpp >&5 -+configure:14727: $? = 0 -+configure:14742: result: no -+configure:14753: checking whether long long and int64_t are the same type in the Linux kernel -+configure:14799: g++ -w -W -Wall -fno-exceptions -fno-rtti -D__SMP__ -c -g -O2 -D__KERNEL__ -I/d/kernels/linux-2.6.27.10-clickport/include -I/d/kernels/linux-2.6.27.10-clickport/include/asm/mach-default conftest.cpp >&5 -+conftest.cpp: In function 'void f1(int64_t)': -+conftest.cpp:106: error: redefinition of 'void f1(int64_t)' -+conftest.cpp:104: error: 'void f1(long long int)' previously defined here -+configure:14805: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+| #define SIZEOF_STRUCT_TIMEVAL 8 -+| #define HAVE_STRUCT_TIMESPEC 1 -+| #define SIZEOF_STRUCT_TIMESPEC 8 -+| #define HAVE_ENDIAN_H 1 -+| #define CLICK_BYTE_ORDER 1234 -+| #define HAVE_BYTESWAP_H 1 -+| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+| #define HAVE_ADDRESSABLE_VA_LIST 1 -+| #define HAVE___BUILTIN_CLZ 1 -+| #define HAVE___BUILTIN_CLZL 1 -+| #define HAVE___BUILTIN_CLZLL 1 -+| #define HAVE___BUILTIN_FFS 1 -+| #define HAVE___BUILTIN_FFSL 1 -+| #define HAVE___BUILTIN_FFSLL 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_FFS 1 -+| #define HAVE_FFSL 1 -+| #define HAVE_FFSLL 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_TERMIO_H 1 -+| #define HAVE_NETDB_H 1 -+| #define HAVE_PWD_H 1 -+| #define HAVE_GRP_H 1 -+| #define HAVE_POLL_H 1 -+| #define HAVE_SIGACTION 1 -+| #define HAVE_DLFCN_H 1 -+| #define HAVE_DYNAMIC_LINKING 1 -+| #define HAVE_ACCEPT_SOCKLEN_T 1 -+| #define HAVE_LARGE_FILE_SUPPORT 1 -+| #define SIZEOF_OFF_T 8 -+| #define HAVE_SYS_MMAN_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_GETPAGESIZE 1 -+| #define HAVE_MMAP 1 -+| #define HAVE_MADVISE 1 -+| #define HAVE_DECL_MADVISE 1 -+| #define HAVE_LINUXMODULE_2_6 1 -+| #define HAVE_CLICK_KERNEL 1 -+| #define HAVE_LINUX_STRLEN_EXPOSED 1 -+| #define HAVE_LINUX_POLLING 1 -+| #define __SMP__ 1 -+| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1 -+| #define HAVE_STRIDE_SCHED 1 -+| #define HAVE_LINUX_IF_TUN_H 1 -+| #define HAVE_DECL_PCAP_SETNONBLOCK 1 -+| #define HAVE_PCAP 1 -+| #define HAVE_PCAP_SETNONBLOCK 1 -+| #define HAVE_USERLEVEL_DRIVER 1 -+| #define HAVE_EXPAT 1 -+| /* end confdefs.h. */ -+| #if HAVE_LINUXMODULE_2_6 -+| # define KBUILD_STR(s) #s -+| # define KBUILD_BASENAME KBUILD_STR(click) -+| # define KBUILD_MODNAME KBUILD_STR(click) -+| #endif -+| #define new xxx_new -+| #define this xxx_this -+| #define delete xxx_delete -+| #define class xxx_class -+| #define virtual xxx_virtual -+| #define typename xxx_typename -+| #define private xxx_private -+| #define protected xxx_protected -+| #define public xxx_public -+| #define namespace xxx_namespace -+| #include -+| #include -+| void f1(long long) { -+| } -+| void f1(int64_t) { // will fail if long long and int64_t are the same type -+| } -+| int -+| main () -+| { -+| -+| ; -+| return 0; -+| } -+configure:14820: result: yes -+configure:14831: checking whether struct sk_buff has a security member -+configure:14879: gcc -W -Wall -c -g -O2 -D__KERNEL__ -I/d/kernels/linux-2.6.27.10-clickport/include -I/d/kernels/linux-2.6.27.10-clickport/include/asm/mach-default conftest.c >&5 -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:17, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h: In function 'ratelimit': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: missing initializer -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: (near initialization for 'rs.printed') -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'clear_user_page': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:71: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:72: warning: unused parameter 'pg' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'copy_user_page': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:77: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:78: warning: unused parameter 'topage' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_none': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:25: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_bad': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:26: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:27: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:28: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pud_offset': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:38: warning: unused parameter 'address' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_none': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:29: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_bad': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:30: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:31: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:32: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_offset': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:43: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_free': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'pmd' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:158, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h: In function 'set_pte_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg.h:2, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/system.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h:17, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h: In function '__set_64bit_var': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:81, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h: In function 'print_irqtrace_events': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h:398: warning: unused parameter 'curr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/net.h:58, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:25, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h: In function '__remove_wait_queue': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h:138: warning: unused parameter 'head' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:16, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:413: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_set_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_clear_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'num_node_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:426: warning: unused parameter 'state' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h: In function '__down_write_nested': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h:144: warning: unused parameter 'subclass' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_lock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'p' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'f' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_unlock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'p' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'f' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_init': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:167: warning: unused parameter 'pgdat' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqbegin': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:169: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqretry': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'iv' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writelock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:177: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writeunlock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:178: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_seqlock_init': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:179: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'register_page_bootmem_info_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:188: warning: unused parameter 'pgdat' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'is_mem_section_removable': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:207: warning: unused parameter 'pfn' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:208: warning: unused parameter 'nr_pages' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'memory_present': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'nid' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'start' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'end' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'is_dma32': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:645: warning: unused parameter 'zone' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h:28, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h:5, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h:28, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:33, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h: In function 'acpi_fake_nodes': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:170: warning: unused parameter 'fake_nodes' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:171: warning: unused parameter 'num_nodes' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function '_node_to_cpumask_ptr': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:189: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_cpumask': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:193: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_first_cpu': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:197: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'arch_fix_phys_package_id': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'num' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'slot' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'get_mp_bus_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:249: warning: unused parameter 'busnum' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'set_mp_bus_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'busnum' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'zonelist_node_idx': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:735: warning: unused parameter 'zoneref' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'node_zonelist': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:164: warning: unused parameter 'nid' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_free_page': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'order' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_alloc_page': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'order' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h:89, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h: In function 'pack_gate': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h:61: warning: unused parameter 'flags' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h: In function 'elf_coredump_extra_notes_write': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:400: warning: unused parameter 'file' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:401: warning: unused parameter 'foffset' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function 'marker_update_probe_range': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:88: warning: unused parameter 'begin' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:89: warning: unused parameter 'end' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function '___mark_check_format': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:125: warning: unused parameter 'fmt' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h:5, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/local.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:19, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmalloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:200: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function '__kmalloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:205: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmem_cache_alloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:213: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:24, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'dev_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:429: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'set_dev_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function '__debug_show_held_locks': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:53: warning: unused parameter 'task' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_show_held_locks': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:57: warning: unused parameter 'task' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_freed': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'from' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'len' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_held': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:67: warning: unused parameter 'task' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:98, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_set_pte_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:29: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:30: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_pte_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:43: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:44: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h: In function 'pud_large': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:117: warning: unused parameter 'pud' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h: In function 'native_set_pte_at': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:220, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: (Each undeclared identifier is reported only once -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: for each function it appears in.) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'SetPagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'ClearPagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PageUncached': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:219: warning: unused parameter 'page' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'zone_to_nid': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:513: warning: unused parameter 'zone' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pud_alloc': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:883: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pmd_alloc': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:893: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'kernel_map_pages': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'numpages' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'enable' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h: In function 'dma_mark_clean': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'size' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'get_dma_ops': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:62: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_mapping_error': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dma_addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_cache_sync': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'size' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:238: warning: unused parameter 'dir' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:30, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h: In function 'destroy_hrtimer_on_stack': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h:291: warning: unused parameter 'timer' -+In file included from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h: In function 'skb_can_coalesce': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:1361: warning: comparison between signed and unsigned -+conftest.c: In function 'main': -+conftest.c:108: error: 'struct sk_buff' has no member named 'security' -+configure:14885: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+| #define SIZEOF_STRUCT_TIMEVAL 8 -+| #define HAVE_STRUCT_TIMESPEC 1 -+| #define SIZEOF_STRUCT_TIMESPEC 8 -+| #define HAVE_ENDIAN_H 1 -+| #define CLICK_BYTE_ORDER 1234 -+| #define HAVE_BYTESWAP_H 1 -+| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+| #define HAVE_ADDRESSABLE_VA_LIST 1 -+| #define HAVE___BUILTIN_CLZ 1 -+| #define HAVE___BUILTIN_CLZL 1 -+| #define HAVE___BUILTIN_CLZLL 1 -+| #define HAVE___BUILTIN_FFS 1 -+| #define HAVE___BUILTIN_FFSL 1 -+| #define HAVE___BUILTIN_FFSLL 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_FFS 1 -+| #define HAVE_FFSL 1 -+| #define HAVE_FFSLL 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_TERMIO_H 1 -+| #define HAVE_NETDB_H 1 -+| #define HAVE_PWD_H 1 -+| #define HAVE_GRP_H 1 -+| #define HAVE_POLL_H 1 -+| #define HAVE_SIGACTION 1 -+| #define HAVE_DLFCN_H 1 -+| #define HAVE_DYNAMIC_LINKING 1 -+| #define HAVE_ACCEPT_SOCKLEN_T 1 -+| #define HAVE_LARGE_FILE_SUPPORT 1 -+| #define SIZEOF_OFF_T 8 -+| #define HAVE_SYS_MMAN_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_GETPAGESIZE 1 -+| #define HAVE_MMAP 1 -+| #define HAVE_MADVISE 1 -+| #define HAVE_DECL_MADVISE 1 -+| #define HAVE_LINUXMODULE_2_6 1 -+| #define HAVE_CLICK_KERNEL 1 -+| #define HAVE_LINUX_STRLEN_EXPOSED 1 -+| #define HAVE_LINUX_POLLING 1 -+| #define __SMP__ 1 -+| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1 -+| #define HAVE_STRIDE_SCHED 1 -+| #define HAVE_LINUX_IF_TUN_H 1 -+| #define HAVE_DECL_PCAP_SETNONBLOCK 1 -+| #define HAVE_PCAP 1 -+| #define HAVE_PCAP_SETNONBLOCK 1 -+| #define HAVE_USERLEVEL_DRIVER 1 -+| #define HAVE_EXPAT 1 -+| #define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1 -+| /* end confdefs.h. */ -+| #if HAVE_LINUXMODULE_2_6 -+| # define KBUILD_STR(s) #s -+| # define KBUILD_BASENAME KBUILD_STR(click) -+| # define KBUILD_MODNAME KBUILD_STR(click) -+| #endif -+| #define new xxx_new -+| #define this xxx_this -+| #define delete xxx_delete -+| #define class xxx_class -+| #define virtual xxx_virtual -+| #define typename xxx_typename -+| #define private xxx_private -+| #define protected xxx_protected -+| #define public xxx_public -+| #define namespace xxx_namespace -+| #include -+| #include -+| int -+| main () -+| { -+| extern struct sk_buff *s; s->security = 0; -+| ; -+| return 0; -+| } -+configure:14900: result: no -+configure:14910: checking whether struct sk_buff has an fclone member -+configure:14958: gcc -W -Wall -c -g -O2 -D__KERNEL__ -I/d/kernels/linux-2.6.27.10-clickport/include -I/d/kernels/linux-2.6.27.10-clickport/include/asm/mach-default conftest.c >&5 -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:17, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h: In function 'ratelimit': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: missing initializer -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: (near initialization for 'rs.printed') -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'clear_user_page': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:71: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:72: warning: unused parameter 'pg' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'copy_user_page': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:77: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:78: warning: unused parameter 'topage' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_none': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:25: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_bad': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:26: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:27: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:28: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pud_offset': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:38: warning: unused parameter 'address' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_none': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:29: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_bad': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:30: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:31: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:32: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_offset': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:43: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_free': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'pmd' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:158, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h: In function 'set_pte_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg.h:2, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/system.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h:17, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h: In function '__set_64bit_var': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:81, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h: In function 'print_irqtrace_events': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h:398: warning: unused parameter 'curr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/net.h:58, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:25, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h: In function '__remove_wait_queue': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h:138: warning: unused parameter 'head' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:16, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:413: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_set_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_clear_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'num_node_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:426: warning: unused parameter 'state' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h: In function '__down_write_nested': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h:144: warning: unused parameter 'subclass' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_lock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'p' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'f' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_unlock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'p' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'f' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_init': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:167: warning: unused parameter 'pgdat' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqbegin': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:169: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqretry': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'iv' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writelock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:177: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writeunlock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:178: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_seqlock_init': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:179: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'register_page_bootmem_info_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:188: warning: unused parameter 'pgdat' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'is_mem_section_removable': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:207: warning: unused parameter 'pfn' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:208: warning: unused parameter 'nr_pages' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'memory_present': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'nid' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'start' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'end' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'is_dma32': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:645: warning: unused parameter 'zone' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h:28, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h:5, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h:28, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:33, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h: In function 'acpi_fake_nodes': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:170: warning: unused parameter 'fake_nodes' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:171: warning: unused parameter 'num_nodes' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function '_node_to_cpumask_ptr': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:189: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_cpumask': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:193: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_first_cpu': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:197: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'arch_fix_phys_package_id': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'num' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'slot' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'get_mp_bus_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:249: warning: unused parameter 'busnum' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'set_mp_bus_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'busnum' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'zonelist_node_idx': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:735: warning: unused parameter 'zoneref' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'node_zonelist': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:164: warning: unused parameter 'nid' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_free_page': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'order' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_alloc_page': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'order' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h:89, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h: In function 'pack_gate': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h:61: warning: unused parameter 'flags' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h: In function 'elf_coredump_extra_notes_write': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:400: warning: unused parameter 'file' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:401: warning: unused parameter 'foffset' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function 'marker_update_probe_range': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:88: warning: unused parameter 'begin' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:89: warning: unused parameter 'end' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function '___mark_check_format': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:125: warning: unused parameter 'fmt' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h:5, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/local.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:19, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmalloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:200: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function '__kmalloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:205: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmem_cache_alloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:213: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:24, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'dev_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:429: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'set_dev_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function '__debug_show_held_locks': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:53: warning: unused parameter 'task' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_show_held_locks': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:57: warning: unused parameter 'task' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_freed': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'from' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'len' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_held': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:67: warning: unused parameter 'task' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:98, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_set_pte_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:29: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:30: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_pte_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:43: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:44: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h: In function 'pud_large': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:117: warning: unused parameter 'pud' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h: In function 'native_set_pte_at': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:220, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: (Each undeclared identifier is reported only once -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: for each function it appears in.) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'SetPagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'ClearPagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PageUncached': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:219: warning: unused parameter 'page' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'zone_to_nid': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:513: warning: unused parameter 'zone' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pud_alloc': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:883: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pmd_alloc': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:893: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'kernel_map_pages': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'numpages' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'enable' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h: In function 'dma_mark_clean': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'size' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'get_dma_ops': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:62: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_mapping_error': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dma_addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_cache_sync': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'size' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:238: warning: unused parameter 'dir' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:30, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h: In function 'destroy_hrtimer_on_stack': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h:291: warning: unused parameter 'timer' -+In file included from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h: In function 'skb_can_coalesce': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:1361: warning: comparison between signed and unsigned -+configure:14964: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+| #define SIZEOF_STRUCT_TIMEVAL 8 -+| #define HAVE_STRUCT_TIMESPEC 1 -+| #define SIZEOF_STRUCT_TIMESPEC 8 -+| #define HAVE_ENDIAN_H 1 -+| #define CLICK_BYTE_ORDER 1234 -+| #define HAVE_BYTESWAP_H 1 -+| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+| #define HAVE_ADDRESSABLE_VA_LIST 1 -+| #define HAVE___BUILTIN_CLZ 1 -+| #define HAVE___BUILTIN_CLZL 1 -+| #define HAVE___BUILTIN_CLZLL 1 -+| #define HAVE___BUILTIN_FFS 1 -+| #define HAVE___BUILTIN_FFSL 1 -+| #define HAVE___BUILTIN_FFSLL 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_FFS 1 -+| #define HAVE_FFSL 1 -+| #define HAVE_FFSLL 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_TERMIO_H 1 -+| #define HAVE_NETDB_H 1 -+| #define HAVE_PWD_H 1 -+| #define HAVE_GRP_H 1 -+| #define HAVE_POLL_H 1 -+| #define HAVE_SIGACTION 1 -+| #define HAVE_DLFCN_H 1 -+| #define HAVE_DYNAMIC_LINKING 1 -+| #define HAVE_ACCEPT_SOCKLEN_T 1 -+| #define HAVE_LARGE_FILE_SUPPORT 1 -+| #define SIZEOF_OFF_T 8 -+| #define HAVE_SYS_MMAN_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_GETPAGESIZE 1 -+| #define HAVE_MMAP 1 -+| #define HAVE_MADVISE 1 -+| #define HAVE_DECL_MADVISE 1 -+| #define HAVE_LINUXMODULE_2_6 1 -+| #define HAVE_CLICK_KERNEL 1 -+| #define HAVE_LINUX_STRLEN_EXPOSED 1 -+| #define HAVE_LINUX_POLLING 1 -+| #define __SMP__ 1 -+| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1 -+| #define HAVE_STRIDE_SCHED 1 -+| #define HAVE_LINUX_IF_TUN_H 1 -+| #define HAVE_DECL_PCAP_SETNONBLOCK 1 -+| #define HAVE_PCAP 1 -+| #define HAVE_PCAP_SETNONBLOCK 1 -+| #define HAVE_USERLEVEL_DRIVER 1 -+| #define HAVE_EXPAT 1 -+| #define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1 -+| /* end confdefs.h. */ -+| #if HAVE_LINUXMODULE_2_6 -+| # define KBUILD_STR(s) #s -+| # define KBUILD_BASENAME KBUILD_STR(click) -+| # define KBUILD_MODNAME KBUILD_STR(click) -+| #endif -+| #define new xxx_new -+| #define this xxx_this -+| #define delete xxx_delete -+| #define class xxx_class -+| #define virtual xxx_virtual -+| #define typename xxx_typename -+| #define private xxx_private -+| #define protected xxx_protected -+| #define public xxx_public -+| #define namespace xxx_namespace -+| #include -+| #include -+| int -+| main () -+| { -+| extern struct sk_buff *s; s->fclone = 0; -+| ; -+| return 0; -+| } -+configure:14979: result: no -+configure:14989: checking whether skb_shinfo has a tso_size member -+configure:15037: gcc -W -Wall -c -g -O2 -D__KERNEL__ -I/d/kernels/linux-2.6.27.10-clickport/include -I/d/kernels/linux-2.6.27.10-clickport/include/asm/mach-default conftest.c >&5 -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:17, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h: In function 'ratelimit': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: missing initializer -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: (near initialization for 'rs.printed') -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'clear_user_page': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:71: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:72: warning: unused parameter 'pg' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'copy_user_page': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:77: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:78: warning: unused parameter 'topage' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_none': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:25: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_bad': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:26: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:27: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:28: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pud_offset': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:38: warning: unused parameter 'address' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_none': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:29: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_bad': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:30: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:31: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:32: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_offset': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:43: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_free': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'pmd' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:158, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h: In function 'set_pte_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg.h:2, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/system.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h:17, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h: In function '__set_64bit_var': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:81, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h: In function 'print_irqtrace_events': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h:398: warning: unused parameter 'curr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/net.h:58, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:25, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h: In function '__remove_wait_queue': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h:138: warning: unused parameter 'head' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:16, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:413: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_set_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_clear_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'num_node_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:426: warning: unused parameter 'state' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h: In function '__down_write_nested': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h:144: warning: unused parameter 'subclass' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_lock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'p' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'f' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_unlock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'p' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'f' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_init': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:167: warning: unused parameter 'pgdat' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqbegin': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:169: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqretry': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'iv' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writelock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:177: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writeunlock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:178: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_seqlock_init': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:179: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'register_page_bootmem_info_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:188: warning: unused parameter 'pgdat' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'is_mem_section_removable': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:207: warning: unused parameter 'pfn' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:208: warning: unused parameter 'nr_pages' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'memory_present': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'nid' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'start' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'end' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'is_dma32': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:645: warning: unused parameter 'zone' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h:28, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h:5, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h:28, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:33, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h: In function 'acpi_fake_nodes': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:170: warning: unused parameter 'fake_nodes' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:171: warning: unused parameter 'num_nodes' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function '_node_to_cpumask_ptr': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:189: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_cpumask': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:193: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_first_cpu': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:197: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'arch_fix_phys_package_id': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'num' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'slot' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'get_mp_bus_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:249: warning: unused parameter 'busnum' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'set_mp_bus_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'busnum' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'zonelist_node_idx': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:735: warning: unused parameter 'zoneref' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'node_zonelist': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:164: warning: unused parameter 'nid' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_free_page': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'order' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_alloc_page': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'order' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h:89, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h: In function 'pack_gate': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h:61: warning: unused parameter 'flags' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h: In function 'elf_coredump_extra_notes_write': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:400: warning: unused parameter 'file' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:401: warning: unused parameter 'foffset' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function 'marker_update_probe_range': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:88: warning: unused parameter 'begin' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:89: warning: unused parameter 'end' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function '___mark_check_format': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:125: warning: unused parameter 'fmt' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h:5, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/local.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:19, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmalloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:200: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function '__kmalloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:205: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmem_cache_alloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:213: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:24, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'dev_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:429: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'set_dev_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function '__debug_show_held_locks': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:53: warning: unused parameter 'task' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_show_held_locks': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:57: warning: unused parameter 'task' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_freed': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'from' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'len' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_held': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:67: warning: unused parameter 'task' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:98, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_set_pte_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:29: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:30: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_pte_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:43: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:44: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h: In function 'pud_large': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:117: warning: unused parameter 'pud' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h: In function 'native_set_pte_at': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:220, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: (Each undeclared identifier is reported only once -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: for each function it appears in.) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'SetPagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'ClearPagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PageUncached': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:219: warning: unused parameter 'page' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'zone_to_nid': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:513: warning: unused parameter 'zone' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pud_alloc': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:883: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pmd_alloc': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:893: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'kernel_map_pages': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'numpages' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'enable' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h: In function 'dma_mark_clean': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'size' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'get_dma_ops': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:62: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_mapping_error': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dma_addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_cache_sync': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'size' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:238: warning: unused parameter 'dir' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:30, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h: In function 'destroy_hrtimer_on_stack': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h:291: warning: unused parameter 'timer' -+In file included from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h: In function 'skb_can_coalesce': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:1361: warning: comparison between signed and unsigned -+conftest.c: In function 'main': -+conftest.c:108: error: 'struct skb_shared_info' has no member named 'tso_size' -+configure:15043: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+| #define SIZEOF_STRUCT_TIMEVAL 8 -+| #define HAVE_STRUCT_TIMESPEC 1 -+| #define SIZEOF_STRUCT_TIMESPEC 8 -+| #define HAVE_ENDIAN_H 1 -+| #define CLICK_BYTE_ORDER 1234 -+| #define HAVE_BYTESWAP_H 1 -+| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+| #define HAVE_ADDRESSABLE_VA_LIST 1 -+| #define HAVE___BUILTIN_CLZ 1 -+| #define HAVE___BUILTIN_CLZL 1 -+| #define HAVE___BUILTIN_CLZLL 1 -+| #define HAVE___BUILTIN_FFS 1 -+| #define HAVE___BUILTIN_FFSL 1 -+| #define HAVE___BUILTIN_FFSLL 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_FFS 1 -+| #define HAVE_FFSL 1 -+| #define HAVE_FFSLL 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_TERMIO_H 1 -+| #define HAVE_NETDB_H 1 -+| #define HAVE_PWD_H 1 -+| #define HAVE_GRP_H 1 -+| #define HAVE_POLL_H 1 -+| #define HAVE_SIGACTION 1 -+| #define HAVE_DLFCN_H 1 -+| #define HAVE_DYNAMIC_LINKING 1 -+| #define HAVE_ACCEPT_SOCKLEN_T 1 -+| #define HAVE_LARGE_FILE_SUPPORT 1 -+| #define SIZEOF_OFF_T 8 -+| #define HAVE_SYS_MMAN_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_GETPAGESIZE 1 -+| #define HAVE_MMAP 1 -+| #define HAVE_MADVISE 1 -+| #define HAVE_DECL_MADVISE 1 -+| #define HAVE_LINUXMODULE_2_6 1 -+| #define HAVE_CLICK_KERNEL 1 -+| #define HAVE_LINUX_STRLEN_EXPOSED 1 -+| #define HAVE_LINUX_POLLING 1 -+| #define __SMP__ 1 -+| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1 -+| #define HAVE_STRIDE_SCHED 1 -+| #define HAVE_LINUX_IF_TUN_H 1 -+| #define HAVE_DECL_PCAP_SETNONBLOCK 1 -+| #define HAVE_PCAP 1 -+| #define HAVE_PCAP_SETNONBLOCK 1 -+| #define HAVE_USERLEVEL_DRIVER 1 -+| #define HAVE_EXPAT 1 -+| #define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1 -+| /* end confdefs.h. */ -+| #if HAVE_LINUXMODULE_2_6 -+| # define KBUILD_STR(s) #s -+| # define KBUILD_BASENAME KBUILD_STR(click) -+| # define KBUILD_MODNAME KBUILD_STR(click) -+| #endif -+| #define new xxx_new -+| #define this xxx_this -+| #define delete xxx_delete -+| #define class xxx_class -+| #define virtual xxx_virtual -+| #define typename xxx_typename -+| #define private xxx_private -+| #define protected xxx_protected -+| #define public xxx_public -+| #define namespace xxx_namespace -+| #include -+| #include -+| int -+| main () -+| { -+| extern struct sk_buff *s; skb_shinfo(s)->tso_size = 0; -+| ; -+| return 0; -+| } -+configure:15058: result: no -+configure:15068: checking whether skb_shinfo has a gso_size member -+configure:15116: gcc -W -Wall -c -g -O2 -D__KERNEL__ -I/d/kernels/linux-2.6.27.10-clickport/include -I/d/kernels/linux-2.6.27.10-clickport/include/asm/mach-default conftest.c >&5 -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:17, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h: In function 'ratelimit': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: missing initializer -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: (near initialization for 'rs.printed') -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'clear_user_page': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:71: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:72: warning: unused parameter 'pg' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'copy_user_page': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:77: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:78: warning: unused parameter 'topage' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_none': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:25: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_bad': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:26: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:27: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:28: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pud_offset': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:38: warning: unused parameter 'address' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_none': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:29: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_bad': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:30: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:31: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:32: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_offset': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:43: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_free': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'pmd' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:158, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h: In function 'set_pte_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg.h:2, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/system.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h:17, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h: In function '__set_64bit_var': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:81, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h: In function 'print_irqtrace_events': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h:398: warning: unused parameter 'curr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/net.h:58, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:25, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h: In function '__remove_wait_queue': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h:138: warning: unused parameter 'head' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:16, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:413: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_set_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_clear_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'num_node_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:426: warning: unused parameter 'state' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h: In function '__down_write_nested': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h:144: warning: unused parameter 'subclass' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_lock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'p' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'f' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_unlock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'p' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'f' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_init': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:167: warning: unused parameter 'pgdat' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqbegin': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:169: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqretry': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'iv' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writelock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:177: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writeunlock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:178: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_seqlock_init': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:179: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'register_page_bootmem_info_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:188: warning: unused parameter 'pgdat' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'is_mem_section_removable': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:207: warning: unused parameter 'pfn' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:208: warning: unused parameter 'nr_pages' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'memory_present': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'nid' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'start' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'end' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'is_dma32': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:645: warning: unused parameter 'zone' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h:28, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h:5, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h:28, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:33, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h: In function 'acpi_fake_nodes': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:170: warning: unused parameter 'fake_nodes' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:171: warning: unused parameter 'num_nodes' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function '_node_to_cpumask_ptr': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:189: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_cpumask': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:193: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_first_cpu': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:197: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'arch_fix_phys_package_id': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'num' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'slot' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'get_mp_bus_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:249: warning: unused parameter 'busnum' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'set_mp_bus_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'busnum' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'zonelist_node_idx': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:735: warning: unused parameter 'zoneref' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'node_zonelist': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:164: warning: unused parameter 'nid' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_free_page': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'order' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_alloc_page': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'order' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h:89, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h: In function 'pack_gate': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h:61: warning: unused parameter 'flags' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h: In function 'elf_coredump_extra_notes_write': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:400: warning: unused parameter 'file' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:401: warning: unused parameter 'foffset' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function 'marker_update_probe_range': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:88: warning: unused parameter 'begin' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:89: warning: unused parameter 'end' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function '___mark_check_format': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:125: warning: unused parameter 'fmt' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h:5, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/local.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:19, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmalloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:200: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function '__kmalloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:205: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmem_cache_alloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:213: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:24, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'dev_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:429: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'set_dev_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function '__debug_show_held_locks': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:53: warning: unused parameter 'task' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_show_held_locks': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:57: warning: unused parameter 'task' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_freed': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'from' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'len' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_held': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:67: warning: unused parameter 'task' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:98, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_set_pte_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:29: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:30: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_pte_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:43: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:44: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h: In function 'pud_large': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:117: warning: unused parameter 'pud' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h: In function 'native_set_pte_at': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:220, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: (Each undeclared identifier is reported only once -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: for each function it appears in.) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'SetPagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'ClearPagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PageUncached': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:219: warning: unused parameter 'page' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'zone_to_nid': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:513: warning: unused parameter 'zone' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pud_alloc': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:883: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pmd_alloc': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:893: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'kernel_map_pages': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'numpages' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'enable' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h: In function 'dma_mark_clean': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'size' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'get_dma_ops': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:62: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_mapping_error': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dma_addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_cache_sync': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'size' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:238: warning: unused parameter 'dir' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:30, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h: In function 'destroy_hrtimer_on_stack': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h:291: warning: unused parameter 'timer' -+In file included from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h: In function 'skb_can_coalesce': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:1361: warning: comparison between signed and unsigned -+configure:15122: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+| #define SIZEOF_STRUCT_TIMEVAL 8 -+| #define HAVE_STRUCT_TIMESPEC 1 -+| #define SIZEOF_STRUCT_TIMESPEC 8 -+| #define HAVE_ENDIAN_H 1 -+| #define CLICK_BYTE_ORDER 1234 -+| #define HAVE_BYTESWAP_H 1 -+| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+| #define HAVE_ADDRESSABLE_VA_LIST 1 -+| #define HAVE___BUILTIN_CLZ 1 -+| #define HAVE___BUILTIN_CLZL 1 -+| #define HAVE___BUILTIN_CLZLL 1 -+| #define HAVE___BUILTIN_FFS 1 -+| #define HAVE___BUILTIN_FFSL 1 -+| #define HAVE___BUILTIN_FFSLL 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_FFS 1 -+| #define HAVE_FFSL 1 -+| #define HAVE_FFSLL 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_TERMIO_H 1 -+| #define HAVE_NETDB_H 1 -+| #define HAVE_PWD_H 1 -+| #define HAVE_GRP_H 1 -+| #define HAVE_POLL_H 1 -+| #define HAVE_SIGACTION 1 -+| #define HAVE_DLFCN_H 1 -+| #define HAVE_DYNAMIC_LINKING 1 -+| #define HAVE_ACCEPT_SOCKLEN_T 1 -+| #define HAVE_LARGE_FILE_SUPPORT 1 -+| #define SIZEOF_OFF_T 8 -+| #define HAVE_SYS_MMAN_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_GETPAGESIZE 1 -+| #define HAVE_MMAP 1 -+| #define HAVE_MADVISE 1 -+| #define HAVE_DECL_MADVISE 1 -+| #define HAVE_LINUXMODULE_2_6 1 -+| #define HAVE_CLICK_KERNEL 1 -+| #define HAVE_LINUX_STRLEN_EXPOSED 1 -+| #define HAVE_LINUX_POLLING 1 -+| #define __SMP__ 1 -+| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1 -+| #define HAVE_STRIDE_SCHED 1 -+| #define HAVE_LINUX_IF_TUN_H 1 -+| #define HAVE_DECL_PCAP_SETNONBLOCK 1 -+| #define HAVE_PCAP 1 -+| #define HAVE_PCAP_SETNONBLOCK 1 -+| #define HAVE_USERLEVEL_DRIVER 1 -+| #define HAVE_EXPAT 1 -+| #define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1 -+| /* end confdefs.h. */ -+| #if HAVE_LINUXMODULE_2_6 -+| # define KBUILD_STR(s) #s -+| # define KBUILD_BASENAME KBUILD_STR(click) -+| # define KBUILD_MODNAME KBUILD_STR(click) -+| #endif -+| #define new xxx_new -+| #define this xxx_this -+| #define delete xxx_delete -+| #define class xxx_class -+| #define virtual xxx_virtual -+| #define typename xxx_typename -+| #define private xxx_private -+| #define protected xxx_protected -+| #define public xxx_public -+| #define namespace xxx_namespace -+| #include -+| #include -+| int -+| main () -+| { -+| extern struct sk_buff *s; skb_shinfo(s)->gso_size = 0; -+| ; -+| return 0; -+| } -+configure:15137: result: no -+configure:15147: checking whether skb_shinfo has a ufo_size member -+configure:15195: gcc -W -Wall -c -g -O2 -D__KERNEL__ -I/d/kernels/linux-2.6.27.10-clickport/include -I/d/kernels/linux-2.6.27.10-clickport/include/asm/mach-default conftest.c >&5 -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:17, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h: In function 'ratelimit': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: missing initializer -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: (near initialization for 'rs.printed') -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'clear_user_page': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:71: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:72: warning: unused parameter 'pg' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'copy_user_page': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:77: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:78: warning: unused parameter 'topage' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_none': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:25: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_bad': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:26: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:27: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:28: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pud_offset': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:38: warning: unused parameter 'address' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_none': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:29: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_bad': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:30: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:31: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:32: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_offset': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:43: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_free': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'pmd' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:158, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h: In function 'set_pte_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg.h:2, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/system.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h:17, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h: In function '__set_64bit_var': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:81, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h: In function 'print_irqtrace_events': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h:398: warning: unused parameter 'curr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/net.h:58, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:25, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h: In function '__remove_wait_queue': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h:138: warning: unused parameter 'head' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:16, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:413: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_set_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_clear_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'num_node_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:426: warning: unused parameter 'state' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h: In function '__down_write_nested': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h:144: warning: unused parameter 'subclass' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_lock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'p' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'f' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_unlock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'p' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'f' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_init': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:167: warning: unused parameter 'pgdat' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqbegin': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:169: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqretry': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'iv' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writelock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:177: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writeunlock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:178: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_seqlock_init': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:179: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'register_page_bootmem_info_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:188: warning: unused parameter 'pgdat' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'is_mem_section_removable': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:207: warning: unused parameter 'pfn' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:208: warning: unused parameter 'nr_pages' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'memory_present': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'nid' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'start' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'end' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'is_dma32': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:645: warning: unused parameter 'zone' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h:28, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h:5, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h:28, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:33, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h: In function 'acpi_fake_nodes': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:170: warning: unused parameter 'fake_nodes' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:171: warning: unused parameter 'num_nodes' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function '_node_to_cpumask_ptr': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:189: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_cpumask': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:193: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_first_cpu': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:197: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'arch_fix_phys_package_id': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'num' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'slot' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'get_mp_bus_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:249: warning: unused parameter 'busnum' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'set_mp_bus_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'busnum' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'zonelist_node_idx': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:735: warning: unused parameter 'zoneref' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'node_zonelist': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:164: warning: unused parameter 'nid' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_free_page': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'order' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_alloc_page': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'order' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h:89, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h: In function 'pack_gate': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h:61: warning: unused parameter 'flags' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h: In function 'elf_coredump_extra_notes_write': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:400: warning: unused parameter 'file' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:401: warning: unused parameter 'foffset' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function 'marker_update_probe_range': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:88: warning: unused parameter 'begin' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:89: warning: unused parameter 'end' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function '___mark_check_format': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:125: warning: unused parameter 'fmt' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h:5, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/local.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:19, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmalloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:200: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function '__kmalloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:205: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmem_cache_alloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:213: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:24, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'dev_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:429: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'set_dev_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function '__debug_show_held_locks': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:53: warning: unused parameter 'task' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_show_held_locks': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:57: warning: unused parameter 'task' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_freed': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'from' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'len' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_held': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:67: warning: unused parameter 'task' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:98, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_set_pte_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:29: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:30: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_pte_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:43: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:44: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h: In function 'pud_large': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:117: warning: unused parameter 'pud' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h: In function 'native_set_pte_at': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:220, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: (Each undeclared identifier is reported only once -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: for each function it appears in.) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'SetPagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'ClearPagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PageUncached': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:219: warning: unused parameter 'page' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'zone_to_nid': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:513: warning: unused parameter 'zone' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pud_alloc': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:883: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pmd_alloc': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:893: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'kernel_map_pages': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'numpages' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'enable' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h: In function 'dma_mark_clean': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'size' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'get_dma_ops': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:62: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_mapping_error': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dma_addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_cache_sync': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'size' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:238: warning: unused parameter 'dir' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:30, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h: In function 'destroy_hrtimer_on_stack': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h:291: warning: unused parameter 'timer' -+In file included from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h: In function 'skb_can_coalesce': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:1361: warning: comparison between signed and unsigned -+conftest.c: In function 'main': -+conftest.c:108: error: 'struct skb_shared_info' has no member named 'ufo_size' -+configure:15201: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+| #define SIZEOF_STRUCT_TIMEVAL 8 -+| #define HAVE_STRUCT_TIMESPEC 1 -+| #define SIZEOF_STRUCT_TIMESPEC 8 -+| #define HAVE_ENDIAN_H 1 -+| #define CLICK_BYTE_ORDER 1234 -+| #define HAVE_BYTESWAP_H 1 -+| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+| #define HAVE_ADDRESSABLE_VA_LIST 1 -+| #define HAVE___BUILTIN_CLZ 1 -+| #define HAVE___BUILTIN_CLZL 1 -+| #define HAVE___BUILTIN_CLZLL 1 -+| #define HAVE___BUILTIN_FFS 1 -+| #define HAVE___BUILTIN_FFSL 1 -+| #define HAVE___BUILTIN_FFSLL 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_FFS 1 -+| #define HAVE_FFSL 1 -+| #define HAVE_FFSLL 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_TERMIO_H 1 -+| #define HAVE_NETDB_H 1 -+| #define HAVE_PWD_H 1 -+| #define HAVE_GRP_H 1 -+| #define HAVE_POLL_H 1 -+| #define HAVE_SIGACTION 1 -+| #define HAVE_DLFCN_H 1 -+| #define HAVE_DYNAMIC_LINKING 1 -+| #define HAVE_ACCEPT_SOCKLEN_T 1 -+| #define HAVE_LARGE_FILE_SUPPORT 1 -+| #define SIZEOF_OFF_T 8 -+| #define HAVE_SYS_MMAN_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_GETPAGESIZE 1 -+| #define HAVE_MMAP 1 -+| #define HAVE_MADVISE 1 -+| #define HAVE_DECL_MADVISE 1 -+| #define HAVE_LINUXMODULE_2_6 1 -+| #define HAVE_CLICK_KERNEL 1 -+| #define HAVE_LINUX_STRLEN_EXPOSED 1 -+| #define HAVE_LINUX_POLLING 1 -+| #define __SMP__ 1 -+| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1 -+| #define HAVE_STRIDE_SCHED 1 -+| #define HAVE_LINUX_IF_TUN_H 1 -+| #define HAVE_DECL_PCAP_SETNONBLOCK 1 -+| #define HAVE_PCAP 1 -+| #define HAVE_PCAP_SETNONBLOCK 1 -+| #define HAVE_USERLEVEL_DRIVER 1 -+| #define HAVE_EXPAT 1 -+| #define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1 -+| /* end confdefs.h. */ -+| #if HAVE_LINUXMODULE_2_6 -+| # define KBUILD_STR(s) #s -+| # define KBUILD_BASENAME KBUILD_STR(click) -+| # define KBUILD_MODNAME KBUILD_STR(click) -+| #endif -+| #define new xxx_new -+| #define this xxx_this -+| #define delete xxx_delete -+| #define class xxx_class -+| #define virtual xxx_virtual -+| #define typename xxx_typename -+| #define private xxx_private -+| #define protected xxx_protected -+| #define public xxx_public -+| #define namespace xxx_namespace -+| #include -+| #include -+| int -+| main () -+| { -+| extern struct sk_buff *s; skb_shinfo(s)->ufo_size = 0; -+| ; -+| return 0; -+| } -+configure:15216: result: no -+configure:15226: checking whether skb_shinfo has an ip6_frag_id member -+configure:15274: gcc -W -Wall -c -g -O2 -D__KERNEL__ -I/d/kernels/linux-2.6.27.10-clickport/include -I/d/kernels/linux-2.6.27.10-clickport/include/asm/mach-default conftest.c >&5 -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:17, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h: In function 'ratelimit': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: missing initializer -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: (near initialization for 'rs.printed') -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'clear_user_page': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:71: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:72: warning: unused parameter 'pg' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'copy_user_page': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:77: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:78: warning: unused parameter 'topage' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_none': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:25: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_bad': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:26: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:27: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:28: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pud_offset': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:38: warning: unused parameter 'address' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_none': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:29: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_bad': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:30: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:31: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:32: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_offset': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:43: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_free': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'pmd' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:158, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h: In function 'set_pte_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg.h:2, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/system.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h:17, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h: In function '__set_64bit_var': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:81, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h: In function 'print_irqtrace_events': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h:398: warning: unused parameter 'curr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/net.h:58, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:25, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h: In function '__remove_wait_queue': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h:138: warning: unused parameter 'head' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:16, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:413: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_set_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_clear_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'num_node_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:426: warning: unused parameter 'state' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h: In function '__down_write_nested': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h:144: warning: unused parameter 'subclass' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_lock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'p' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'f' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_unlock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'p' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'f' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_init': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:167: warning: unused parameter 'pgdat' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqbegin': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:169: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqretry': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'iv' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writelock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:177: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writeunlock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:178: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_seqlock_init': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:179: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'register_page_bootmem_info_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:188: warning: unused parameter 'pgdat' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'is_mem_section_removable': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:207: warning: unused parameter 'pfn' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:208: warning: unused parameter 'nr_pages' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'memory_present': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'nid' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'start' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'end' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'is_dma32': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:645: warning: unused parameter 'zone' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h:28, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h:5, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h:28, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:33, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h: In function 'acpi_fake_nodes': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:170: warning: unused parameter 'fake_nodes' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:171: warning: unused parameter 'num_nodes' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function '_node_to_cpumask_ptr': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:189: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_cpumask': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:193: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_first_cpu': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:197: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'arch_fix_phys_package_id': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'num' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'slot' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'get_mp_bus_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:249: warning: unused parameter 'busnum' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'set_mp_bus_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'busnum' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'zonelist_node_idx': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:735: warning: unused parameter 'zoneref' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'node_zonelist': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:164: warning: unused parameter 'nid' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_free_page': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'order' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_alloc_page': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'order' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h:89, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h: In function 'pack_gate': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h:61: warning: unused parameter 'flags' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h: In function 'elf_coredump_extra_notes_write': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:400: warning: unused parameter 'file' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:401: warning: unused parameter 'foffset' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function 'marker_update_probe_range': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:88: warning: unused parameter 'begin' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:89: warning: unused parameter 'end' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function '___mark_check_format': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:125: warning: unused parameter 'fmt' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h:5, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/local.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:19, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmalloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:200: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function '__kmalloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:205: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmem_cache_alloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:213: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:24, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'dev_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:429: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'set_dev_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function '__debug_show_held_locks': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:53: warning: unused parameter 'task' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_show_held_locks': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:57: warning: unused parameter 'task' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_freed': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'from' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'len' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_held': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:67: warning: unused parameter 'task' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:98, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_set_pte_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:29: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:30: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_pte_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:43: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:44: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h: In function 'pud_large': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:117: warning: unused parameter 'pud' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h: In function 'native_set_pte_at': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:220, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: (Each undeclared identifier is reported only once -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: for each function it appears in.) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'SetPagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'ClearPagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PageUncached': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:219: warning: unused parameter 'page' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'zone_to_nid': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:513: warning: unused parameter 'zone' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pud_alloc': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:883: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pmd_alloc': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:893: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'kernel_map_pages': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'numpages' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'enable' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h: In function 'dma_mark_clean': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'size' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'get_dma_ops': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:62: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_mapping_error': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dma_addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_cache_sync': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'size' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:238: warning: unused parameter 'dir' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:30, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h: In function 'destroy_hrtimer_on_stack': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h:291: warning: unused parameter 'timer' -+In file included from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h: In function 'skb_can_coalesce': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:1361: warning: comparison between signed and unsigned -+configure:15280: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+| #define SIZEOF_STRUCT_TIMEVAL 8 -+| #define HAVE_STRUCT_TIMESPEC 1 -+| #define SIZEOF_STRUCT_TIMESPEC 8 -+| #define HAVE_ENDIAN_H 1 -+| #define CLICK_BYTE_ORDER 1234 -+| #define HAVE_BYTESWAP_H 1 -+| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+| #define HAVE_ADDRESSABLE_VA_LIST 1 -+| #define HAVE___BUILTIN_CLZ 1 -+| #define HAVE___BUILTIN_CLZL 1 -+| #define HAVE___BUILTIN_CLZLL 1 -+| #define HAVE___BUILTIN_FFS 1 -+| #define HAVE___BUILTIN_FFSL 1 -+| #define HAVE___BUILTIN_FFSLL 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_FFS 1 -+| #define HAVE_FFSL 1 -+| #define HAVE_FFSLL 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_TERMIO_H 1 -+| #define HAVE_NETDB_H 1 -+| #define HAVE_PWD_H 1 -+| #define HAVE_GRP_H 1 -+| #define HAVE_POLL_H 1 -+| #define HAVE_SIGACTION 1 -+| #define HAVE_DLFCN_H 1 -+| #define HAVE_DYNAMIC_LINKING 1 -+| #define HAVE_ACCEPT_SOCKLEN_T 1 -+| #define HAVE_LARGE_FILE_SUPPORT 1 -+| #define SIZEOF_OFF_T 8 -+| #define HAVE_SYS_MMAN_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_GETPAGESIZE 1 -+| #define HAVE_MMAP 1 -+| #define HAVE_MADVISE 1 -+| #define HAVE_DECL_MADVISE 1 -+| #define HAVE_LINUXMODULE_2_6 1 -+| #define HAVE_CLICK_KERNEL 1 -+| #define HAVE_LINUX_STRLEN_EXPOSED 1 -+| #define HAVE_LINUX_POLLING 1 -+| #define __SMP__ 1 -+| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1 -+| #define HAVE_STRIDE_SCHED 1 -+| #define HAVE_LINUX_IF_TUN_H 1 -+| #define HAVE_DECL_PCAP_SETNONBLOCK 1 -+| #define HAVE_PCAP 1 -+| #define HAVE_PCAP_SETNONBLOCK 1 -+| #define HAVE_USERLEVEL_DRIVER 1 -+| #define HAVE_EXPAT 1 -+| #define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1 -+| /* end confdefs.h. */ -+| #if HAVE_LINUXMODULE_2_6 -+| # define KBUILD_STR(s) #s -+| # define KBUILD_BASENAME KBUILD_STR(click) -+| # define KBUILD_MODNAME KBUILD_STR(click) -+| #endif -+| #define new xxx_new -+| #define this xxx_this -+| #define delete xxx_delete -+| #define class xxx_class -+| #define virtual xxx_virtual -+| #define typename xxx_typename -+| #define private xxx_private -+| #define protected xxx_protected -+| #define public xxx_public -+| #define namespace xxx_namespace -+| #include -+| #include -+| int -+| main () -+| { -+| extern struct sk_buff *s; skb_shinfo(s)->ip6_frag_id = 0; -+| ; -+| return 0; -+| } -+configure:15295: result: no -+configure:15311: checking whether net_enable_timestamp is declared -+configure:15358: gcc -W -Wall -c -g -O2 -D__KERNEL__ -I/d/kernels/linux-2.6.27.10-clickport/include -I/d/kernels/linux-2.6.27.10-clickport/include/asm/mach-default conftest.c >&5 -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:17, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h: In function 'ratelimit': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: missing initializer -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: (near initialization for 'rs.printed') -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'clear_user_page': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:71: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:72: warning: unused parameter 'pg' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'copy_user_page': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:77: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:78: warning: unused parameter 'topage' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_none': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:25: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_bad': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:26: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:27: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:28: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pud_offset': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:38: warning: unused parameter 'address' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_none': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:29: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_bad': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:30: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:31: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:32: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_offset': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:43: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_free': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'pmd' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:158, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h: In function 'set_pte_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg.h:2, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/system.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h:17, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h: In function '__set_64bit_var': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:81, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h: In function 'print_irqtrace_events': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h:398: warning: unused parameter 'curr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/net.h:58, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:25, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h: In function '__remove_wait_queue': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h:138: warning: unused parameter 'head' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:16, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:413: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_set_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_clear_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'num_node_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:426: warning: unused parameter 'state' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h: In function '__down_write_nested': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h:144: warning: unused parameter 'subclass' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_lock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'p' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'f' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_unlock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'p' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'f' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_init': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:167: warning: unused parameter 'pgdat' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqbegin': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:169: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqretry': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'iv' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writelock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:177: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writeunlock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:178: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_seqlock_init': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:179: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'register_page_bootmem_info_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:188: warning: unused parameter 'pgdat' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'is_mem_section_removable': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:207: warning: unused parameter 'pfn' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:208: warning: unused parameter 'nr_pages' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'memory_present': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'nid' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'start' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'end' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'is_dma32': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:645: warning: unused parameter 'zone' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h:28, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h:5, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h:28, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:33, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h: In function 'acpi_fake_nodes': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:170: warning: unused parameter 'fake_nodes' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:171: warning: unused parameter 'num_nodes' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function '_node_to_cpumask_ptr': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:189: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_cpumask': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:193: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_first_cpu': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:197: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'arch_fix_phys_package_id': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'num' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'slot' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'get_mp_bus_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:249: warning: unused parameter 'busnum' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'set_mp_bus_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'busnum' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'zonelist_node_idx': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:735: warning: unused parameter 'zoneref' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'node_zonelist': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:164: warning: unused parameter 'nid' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_free_page': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'order' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_alloc_page': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'order' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h:89, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h: In function 'pack_gate': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h:61: warning: unused parameter 'flags' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h: In function 'elf_coredump_extra_notes_write': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:400: warning: unused parameter 'file' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:401: warning: unused parameter 'foffset' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function 'marker_update_probe_range': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:88: warning: unused parameter 'begin' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:89: warning: unused parameter 'end' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function '___mark_check_format': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:125: warning: unused parameter 'fmt' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h:5, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/local.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:19, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmalloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:200: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function '__kmalloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:205: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmem_cache_alloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:213: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:24, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'dev_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:429: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'set_dev_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function '__debug_show_held_locks': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:53: warning: unused parameter 'task' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_show_held_locks': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:57: warning: unused parameter 'task' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_freed': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'from' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'len' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_held': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:67: warning: unused parameter 'task' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:98, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_set_pte_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:29: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:30: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_pte_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:43: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:44: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h: In function 'pud_large': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:117: warning: unused parameter 'pud' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h: In function 'native_set_pte_at': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:220, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: (Each undeclared identifier is reported only once -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: for each function it appears in.) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'SetPagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'ClearPagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PageUncached': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:219: warning: unused parameter 'page' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'zone_to_nid': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:513: warning: unused parameter 'zone' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pud_alloc': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:883: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pmd_alloc': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:893: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'kernel_map_pages': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'numpages' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'enable' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h: In function 'dma_mark_clean': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'size' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'get_dma_ops': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:62: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_mapping_error': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dma_addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_cache_sync': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'size' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:238: warning: unused parameter 'dir' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:30, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h: In function 'destroy_hrtimer_on_stack': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h:291: warning: unused parameter 'timer' -+In file included from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h: In function 'skb_can_coalesce': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:1361: warning: comparison between signed and unsigned -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:33, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_init': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:67: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:67: warning: unused parameter 'descr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_init_on_stack': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:69: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:69: warning: unused parameter 'descr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_activate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:71: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:71: warning: unused parameter 'descr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_deactivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:73: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:73: warning: unused parameter 'descr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_destroy': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:75: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:75: warning: unused parameter 'descr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_free': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:77: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:77: warning: unused parameter 'descr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_check_no_obj_freed': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:87: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:87: warning: unused parameter 'size' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:33, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h: In function 'destroy_timer_on_stack': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h:47: warning: unused parameter 'timer' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:42, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h: In function 'cancel_delayed_work': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h:220: warning: dereferencing type-punned pointer will break strict-aliasing rules -+/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h: In function 'cancel_rearming_delayed_workqueue': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h:228: warning: unused parameter 'wq' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:44, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/net/net_namespace.h: In function 'release_net': -+/d/kernels/linux-2.6.27.10-clickport/include/net/net_namespace.h:184: warning: unused parameter 'net' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:77, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/seccomp.h: In function 'prctl_set_seccomp': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/seccomp.h:33: warning: unused parameter 'arg2' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h:16, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:79, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/plist.h: In function 'plist_head_init': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/plist.h:128: warning: unused parameter 'lock' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:79, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h: In function 'rt_mutex_debug_check_no_locks_freed': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h:46: warning: unused parameter 'from' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h:47: warning: unused parameter 'len' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:88, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h: In function 'account_scheduler_latency': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h:34: warning: unused parameter 'task' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h:34: warning: unused parameter 'usecs' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h:34: warning: unused parameter 'inter' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h: In function 'clear_all_latency_tracing': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h:38: warning: unused parameter 'p' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'select_nohz_load_balancer': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:260: warning: unused parameter 'cpu' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'prefetch_stack': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:892: warning: unused parameter 't' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:1407, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h: In function '__vx_info_map_pid': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:13: warning: unused parameter 'func' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:13: warning: unused parameter 'file' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:13: warning: unused parameter 'line' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h: In function '__vx_info_rmap_pid': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:35: warning: unused parameter 'func' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:35: warning: unused parameter 'file' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:35: warning: unused parameter 'line' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'wake_up_idle_cpu': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:1636: warning: unused parameter 'cpu' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'spin_needbreak': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2101: warning: unused parameter 'lock' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function '__trace_special': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2154: warning: unused parameter '__tr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2154: warning: unused parameter '__data' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2155: warning: unused parameter 'arg1' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2155: warning: unused parameter 'arg2' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2155: warning: unused parameter 'arg3' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'mm_update_next_owner': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2237: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'mm_init_owner': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2241: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2241: warning: unused parameter 'p' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h:194, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq_32.h:5, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq.h:2, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:12, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/hw_irq.h: In function '__setup_vector_irq': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/hw_irq.h:122: warning: unused parameter 'cpu' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq_32.h:5, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq.h:2, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:12, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h: In function 'set_balance_irq_affinity': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h:242: warning: unused parameter 'irq' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h:242: warning: unused parameter 'mask' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:12, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h: In function 'account_system_vtime': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h:116: warning: unused parameter 'tsk' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h: In function 'disable_irq_nosync_lockdep_irqsave': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:149: warning: unused parameter 'flags' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h: In function 'enable_irq_lockdep_irqrestore': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:173: warning: unused parameter 'flags' -+In file included from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h: In function 'netif_msg_init': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:1455: warning: comparison between signed and unsigned -+/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h: In function 'netif_rx_schedule_prep': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:1464: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h: In function '__netif_rx_schedule': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:1473: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h: In function '__netif_rx_complete': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:1502: warning: unused parameter 'dev' -+configure:15364: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+| #define SIZEOF_STRUCT_TIMEVAL 8 -+| #define HAVE_STRUCT_TIMESPEC 1 -+| #define SIZEOF_STRUCT_TIMESPEC 8 -+| #define HAVE_ENDIAN_H 1 -+| #define CLICK_BYTE_ORDER 1234 -+| #define HAVE_BYTESWAP_H 1 -+| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+| #define HAVE_ADDRESSABLE_VA_LIST 1 -+| #define HAVE___BUILTIN_CLZ 1 -+| #define HAVE___BUILTIN_CLZL 1 -+| #define HAVE___BUILTIN_CLZLL 1 -+| #define HAVE___BUILTIN_FFS 1 -+| #define HAVE___BUILTIN_FFSL 1 -+| #define HAVE___BUILTIN_FFSLL 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_FFS 1 -+| #define HAVE_FFSL 1 -+| #define HAVE_FFSLL 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_TERMIO_H 1 -+| #define HAVE_NETDB_H 1 -+| #define HAVE_PWD_H 1 -+| #define HAVE_GRP_H 1 -+| #define HAVE_POLL_H 1 -+| #define HAVE_SIGACTION 1 -+| #define HAVE_DLFCN_H 1 -+| #define HAVE_DYNAMIC_LINKING 1 -+| #define HAVE_ACCEPT_SOCKLEN_T 1 -+| #define HAVE_LARGE_FILE_SUPPORT 1 -+| #define SIZEOF_OFF_T 8 -+| #define HAVE_SYS_MMAN_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_GETPAGESIZE 1 -+| #define HAVE_MMAP 1 -+| #define HAVE_MADVISE 1 -+| #define HAVE_DECL_MADVISE 1 -+| #define HAVE_LINUXMODULE_2_6 1 -+| #define HAVE_CLICK_KERNEL 1 -+| #define HAVE_LINUX_STRLEN_EXPOSED 1 -+| #define HAVE_LINUX_POLLING 1 -+| #define __SMP__ 1 -+| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1 -+| #define HAVE_STRIDE_SCHED 1 -+| #define HAVE_LINUX_IF_TUN_H 1 -+| #define HAVE_DECL_PCAP_SETNONBLOCK 1 -+| #define HAVE_PCAP 1 -+| #define HAVE_PCAP_SETNONBLOCK 1 -+| #define HAVE_USERLEVEL_DRIVER 1 -+| #define HAVE_EXPAT 1 -+| #define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1 -+| /* end confdefs.h. */ -+| #if HAVE_LINUXMODULE_2_6 -+| # define KBUILD_STR(s) #s -+| # define KBUILD_BASENAME KBUILD_STR(click) -+| # define KBUILD_MODNAME KBUILD_STR(click) -+| #endif -+| #define new xxx_new -+| #define this xxx_this -+| #define delete xxx_delete -+| #define class xxx_class -+| #define virtual xxx_virtual -+| #define typename xxx_typename -+| #define private xxx_private -+| #define protected xxx_protected -+| #define public xxx_public -+| #define namespace xxx_namespace -+| #include -+| #include -+| #include -+| -+| int -+| main () -+| { -+| #ifndef net_enable_timestamp -+| (void) net_enable_timestamp; -+| #endif -+| -+| ; -+| return 0; -+| } -+configure:15379: result: no -+configure:15395: checking whether netif_tx_lock is declared -+configure:15442: gcc -W -Wall -c -g -O2 -D__KERNEL__ -I/d/kernels/linux-2.6.27.10-clickport/include -I/d/kernels/linux-2.6.27.10-clickport/include/asm/mach-default conftest.c >&5 -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:17, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h: In function 'ratelimit': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: missing initializer -+/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: (near initialization for 'rs.printed') -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'clear_user_page': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:71: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:72: warning: unused parameter 'pg' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'copy_user_page': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:77: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:78: warning: unused parameter 'topage' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_none': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:25: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_bad': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:26: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:27: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:28: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pud_offset': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:38: warning: unused parameter 'address' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_none': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:29: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_bad': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:30: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:31: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:32: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_offset': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:43: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_free': -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'pmd' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:158, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h: In function 'set_pte_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg.h:2, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/system.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h:17, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h: In function '__set_64bit_var': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules -+/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:81, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h: In function 'print_irqtrace_events': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h:398: warning: unused parameter 'curr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/net.h:58, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:25, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h: In function '__remove_wait_queue': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h:138: warning: unused parameter 'head' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:16, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:413: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_set_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_clear_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'state' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'num_node_state': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:426: warning: unused parameter 'state' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h: In function '__down_write_nested': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h:144: warning: unused parameter 'subclass' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_lock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'p' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'f' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_unlock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'p' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'f' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_init': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:167: warning: unused parameter 'pgdat' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqbegin': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:169: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqretry': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'iv' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writelock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:177: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writeunlock': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:178: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_seqlock_init': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:179: warning: unused parameter 'zone' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'register_page_bootmem_info_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:188: warning: unused parameter 'pgdat' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'is_mem_section_removable': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:207: warning: unused parameter 'pfn' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:208: warning: unused parameter 'nr_pages' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'memory_present': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'nid' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'start' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'end' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'is_dma32': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:645: warning: unused parameter 'zone' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h:28, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h:5, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h:8, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h:28, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:33, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h: In function 'acpi_fake_nodes': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:170: warning: unused parameter 'fake_nodes' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:171: warning: unused parameter 'num_nodes' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function '_node_to_cpumask_ptr': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:189: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_cpumask': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:193: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_first_cpu': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:197: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'arch_fix_phys_package_id': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'num' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'slot' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'get_mp_bus_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:249: warning: unused parameter 'busnum' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'set_mp_bus_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'busnum' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'zonelist_node_idx': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:735: warning: unused parameter 'zoneref' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'node_zonelist': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:164: warning: unused parameter 'nid' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_free_page': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'order' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_alloc_page': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'order' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h:89, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h: In function 'pack_gate': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h:61: warning: unused parameter 'flags' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h: In function 'elf_coredump_extra_notes_write': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:400: warning: unused parameter 'file' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:401: warning: unused parameter 'foffset' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:18, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function 'marker_update_probe_range': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:88: warning: unused parameter 'begin' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:89: warning: unused parameter 'end' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function '___mark_check_format': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:125: warning: unused parameter 'fmt' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h:5, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/local.h:4, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:19, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmalloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:200: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function '__kmalloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:205: warning: unused parameter 'node' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmem_cache_alloc_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:213: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:24, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'dev_to_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:429: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'set_dev_node': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'node' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:13, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function '__debug_show_held_locks': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:53: warning: unused parameter 'task' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_show_held_locks': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:57: warning: unused parameter 'task' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_freed': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'from' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'len' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_held': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:67: warning: unused parameter 'task' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:98, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_set_pte_present': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:29: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:30: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_pte_clear': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:43: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:44: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h: In function 'pud_large': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:117: warning: unused parameter 'pud' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h: In function 'native_set_pte_at': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'addr' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:220, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: (Each undeclared identifier is reported only once -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: for each function it appears in.) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'SetPagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'ClearPagePrivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function) -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PageUncached': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:219: warning: unused parameter 'page' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'zone_to_nid': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:513: warning: unused parameter 'zone' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pud_alloc': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'pgd' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:883: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pmd_alloc': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'pud' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:893: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'kernel_map_pages': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'page' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'numpages' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'enable' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h: In function 'dma_mark_clean': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'size' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'get_dma_ops': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:62: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_mapping_error': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dma_addr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_cache_sync': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'vaddr' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'size' -+/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:238: warning: unused parameter 'dir' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:30, -+ from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h: In function 'destroy_hrtimer_on_stack': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h:291: warning: unused parameter 'timer' -+In file included from conftest.c:104: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h: In function 'skb_can_coalesce': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:1361: warning: comparison between signed and unsigned -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:33, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_init': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:67: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:67: warning: unused parameter 'descr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_init_on_stack': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:69: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:69: warning: unused parameter 'descr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_activate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:71: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:71: warning: unused parameter 'descr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_deactivate': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:73: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:73: warning: unused parameter 'descr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_destroy': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:75: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:75: warning: unused parameter 'descr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_free': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:77: warning: unused parameter 'addr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:77: warning: unused parameter 'descr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_check_no_obj_freed': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:87: warning: unused parameter 'address' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:87: warning: unused parameter 'size' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:33, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h: In function 'destroy_timer_on_stack': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h:47: warning: unused parameter 'timer' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:42, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h: In function 'cancel_delayed_work': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h:220: warning: dereferencing type-punned pointer will break strict-aliasing rules -+/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h: In function 'cancel_rearming_delayed_workqueue': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h:228: warning: unused parameter 'wq' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:44, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/net/net_namespace.h: In function 'release_net': -+/d/kernels/linux-2.6.27.10-clickport/include/net/net_namespace.h:184: warning: unused parameter 'net' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:77, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/seccomp.h: In function 'prctl_set_seccomp': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/seccomp.h:33: warning: unused parameter 'arg2' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h:16, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:79, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/plist.h: In function 'plist_head_init': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/plist.h:128: warning: unused parameter 'lock' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:79, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h: In function 'rt_mutex_debug_check_no_locks_freed': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h:46: warning: unused parameter 'from' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h:47: warning: unused parameter 'len' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:88, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h: In function 'account_scheduler_latency': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h:34: warning: unused parameter 'task' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h:34: warning: unused parameter 'usecs' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h:34: warning: unused parameter 'inter' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h: In function 'clear_all_latency_tracing': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h:38: warning: unused parameter 'p' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'select_nohz_load_balancer': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:260: warning: unused parameter 'cpu' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'prefetch_stack': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:892: warning: unused parameter 't' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:1407, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h: In function '__vx_info_map_pid': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:13: warning: unused parameter 'func' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:13: warning: unused parameter 'file' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:13: warning: unused parameter 'line' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h: In function '__vx_info_rmap_pid': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:35: warning: unused parameter 'func' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:35: warning: unused parameter 'file' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:35: warning: unused parameter 'line' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'wake_up_idle_cpu': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:1636: warning: unused parameter 'cpu' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'spin_needbreak': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2101: warning: unused parameter 'lock' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function '__trace_special': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2154: warning: unused parameter '__tr' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2154: warning: unused parameter '__data' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2155: warning: unused parameter 'arg1' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2155: warning: unused parameter 'arg2' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2155: warning: unused parameter 'arg3' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'mm_update_next_owner': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2237: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'mm_init_owner': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2241: warning: unused parameter 'mm' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2241: warning: unused parameter 'p' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h:194, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq_32.h:5, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq.h:2, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:12, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/asm/hw_irq.h: In function '__setup_vector_irq': -+/d/kernels/linux-2.6.27.10-clickport/include/asm/hw_irq.h:122: warning: unused parameter 'cpu' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq_32.h:5, -+ from /d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq.h:2, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h:7, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:12, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h: In function 'set_balance_irq_affinity': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h:242: warning: unused parameter 'irq' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h:242: warning: unused parameter 'mask' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:12, -+ from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h: In function 'account_system_vtime': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h:116: warning: unused parameter 'tsk' -+In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911, -+ from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h: In function 'disable_irq_nosync_lockdep_irqsave': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:149: warning: unused parameter 'flags' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h: In function 'enable_irq_lockdep_irqrestore': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:173: warning: unused parameter 'flags' -+In file included from conftest.c:105: -+/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h: In function 'netif_msg_init': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:1455: warning: comparison between signed and unsigned -+/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h: In function 'netif_rx_schedule_prep': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:1464: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h: In function '__netif_rx_schedule': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:1473: warning: unused parameter 'dev' -+/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h: In function '__netif_rx_complete': -+/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:1502: warning: unused parameter 'dev' -+configure:15448: $? = 1 -+configure: failed program was: -+| /* confdefs.h. */ -+| #define PACKAGE_NAME "click" -+| #define PACKAGE_TARNAME "click" -+| #define PACKAGE_VERSION "1.6.0" -+| #define PACKAGE_STRING "click 1.6.0" -+| #define PACKAGE_BUGREPORT "" -+| #define CLICK_VERSION "1.6.0" -+| #define HAVE_NEW_HDR 1 -+| #define NUM_CLICK_CPUS 1 -+| #define HAVE_CLICKFS 1 -+| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+| #define FREEBSD_INCLUDEDIR "/usr/include" -+| #define HAVE_STRERROR 1 -+| #define HAVE_SNPRINTF 1 -+| #define HAVE_STRTOUL 1 -+| #define HAVE_TCGETPGRP 1 -+| #define HAVE_VSNPRINTF 1 -+| #define STDC_HEADERS 1 -+| #define HAVE_SYS_TYPES_H 1 -+| #define HAVE_SYS_STAT_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_STRING_H 1 -+| #define HAVE_MEMORY_H 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_STDINT_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define SIZEOF_INT 4 -+| #define SIZEOF_LONG 4 -+| #define HAVE_INTTYPES_H 1 -+| #define HAVE_INDIFFERENT_ALIGNMENT 1 -+| #define SIZEOF_LONG_LONG 8 -+| #define HAVE_LONG_LONG 1 -+| #define HAVE_INT64_TYPES 1 -+| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+| #define SIZEOF_STRUCT_TIMEVAL 8 -+| #define HAVE_STRUCT_TIMESPEC 1 -+| #define SIZEOF_STRUCT_TIMESPEC 8 -+| #define HAVE_ENDIAN_H 1 -+| #define CLICK_BYTE_ORDER 1234 -+| #define HAVE_BYTESWAP_H 1 -+| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+| #define HAVE_ADDRESSABLE_VA_LIST 1 -+| #define HAVE___BUILTIN_CLZ 1 -+| #define HAVE___BUILTIN_CLZL 1 -+| #define HAVE___BUILTIN_CLZLL 1 -+| #define HAVE___BUILTIN_FFS 1 -+| #define HAVE___BUILTIN_FFSL 1 -+| #define HAVE___BUILTIN_FFSLL 1 -+| #define HAVE_STRINGS_H 1 -+| #define HAVE_FFS 1 -+| #define HAVE_FFSL 1 -+| #define HAVE_FFSLL 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_TERMIO_H 1 -+| #define HAVE_NETDB_H 1 -+| #define HAVE_PWD_H 1 -+| #define HAVE_GRP_H 1 -+| #define HAVE_POLL_H 1 -+| #define HAVE_SIGACTION 1 -+| #define HAVE_DLFCN_H 1 -+| #define HAVE_DYNAMIC_LINKING 1 -+| #define HAVE_ACCEPT_SOCKLEN_T 1 -+| #define HAVE_LARGE_FILE_SUPPORT 1 -+| #define SIZEOF_OFF_T 8 -+| #define HAVE_SYS_MMAN_H 1 -+| #define HAVE_STDLIB_H 1 -+| #define HAVE_UNISTD_H 1 -+| #define HAVE_GETPAGESIZE 1 -+| #define HAVE_MMAP 1 -+| #define HAVE_MADVISE 1 -+| #define HAVE_DECL_MADVISE 1 -+| #define HAVE_LINUXMODULE_2_6 1 -+| #define HAVE_CLICK_KERNEL 1 -+| #define HAVE_LINUX_STRLEN_EXPOSED 1 -+| #define HAVE_LINUX_POLLING 1 -+| #define __SMP__ 1 -+| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1 -+| #define HAVE_STRIDE_SCHED 1 -+| #define HAVE_LINUX_IF_TUN_H 1 -+| #define HAVE_DECL_PCAP_SETNONBLOCK 1 -+| #define HAVE_PCAP 1 -+| #define HAVE_PCAP_SETNONBLOCK 1 -+| #define HAVE_USERLEVEL_DRIVER 1 -+| #define HAVE_EXPAT 1 -+| #define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1 -+| /* end confdefs.h. */ -+| #if HAVE_LINUXMODULE_2_6 -+| # define KBUILD_STR(s) #s -+| # define KBUILD_BASENAME KBUILD_STR(click) -+| # define KBUILD_MODNAME KBUILD_STR(click) -+| #endif -+| #define new xxx_new -+| #define this xxx_this -+| #define delete xxx_delete -+| #define class xxx_class -+| #define virtual xxx_virtual -+| #define typename xxx_typename -+| #define private xxx_private -+| #define protected xxx_protected -+| #define public xxx_public -+| #define namespace xxx_namespace -+| #include -+| #include -+| #include -+| -+| int -+| main () -+| { -+| #ifndef netif_tx_lock -+| (void) netif_tx_lock; -+| #endif -+| -+| ; -+| return 0; -+| } -+configure:15463: result: no -+configure:15600: checking for a BSD-compatible install -+configure:15656: result: /usr/bin/install -c -+configure:15669: checking whether install accepts -C -+configure:15678: result: no -+configure:15688: checking for GNU make -+configure:15701: result: make -+configure:15714: checking for working autoconf -+configure:15719: result: found -+configure:15741: checking for perl5 -+configure:15771: result: no -+configure:15741: checking for perl -+configure:15757: found /usr/bin/perl -+configure:15768: result: perl -+configure:15864: checking for working makeinfo -+configure:15869: result: found -+configure:15882: checking for working texi2dvi -+configure:15887: result: found -+configure:15903: checking for install-info -+configure:15922: found /usr/bin/install-info -+configure:15935: result: /usr/bin/install-info -+configure:15944: checking for working install-info -+configure:15947: result: found -+configure:15955: checking for working pod2man -+configure:15959: result: found -+configure:16185: creating ./config.status -+ -+## ---------------------- ## -+## Running config.status. ## -+## ---------------------- ## -+ -+This file was extended by click config.status 1.6.0, which was -+generated by GNU Autoconf 2.61. Invocation command line was -+ -+ CONFIG_FILES = -+ CONFIG_HEADERS = -+ CONFIG_LINKS = -+ CONFIG_COMMANDS = -+ $ ./config.status -+ -+on joyce -+ -+config.status:689: creating Makefile -+config.status:689: creating click-buildtool -+config.status:689: creating click-compile -+config.status:689: creating config.mk -+config.status:689: creating installch -+config.status:689: creating tools/Makefile -+config.status:689: creating tools/lib/Makefile -+config.status:689: creating doc/Makefile -+config.status:689: creating etc/libclick/Makefile -+config.status:689: creating etc/pkg-config.mk -+config.status:689: creating bsdmodule/Makefile -+config.status:689: creating linuxmodule/Makefile -+config.status:689: creating ns/Makefile -+config.status:689: creating userlevel/Makefile -+config.status:689: creating tools/click-align/Makefile -+config.status:689: creating tools/click-check/Makefile -+config.status:689: creating tools/click-combine/Makefile -+config.status:689: creating tools/click-devirtualize/Makefile -+config.status:689: creating tools/click-fastclassifier/Makefile -+config.status:689: creating tools/click-flatten/Makefile -+config.status:689: creating tools/click-mkmindriver/Makefile -+config.status:689: creating tools/click-pretty/Makefile -+config.status:689: creating tools/click-undead/Makefile -+config.status:689: creating tools/click-xform/Makefile -+config.status:689: creating tools/click2xml/Makefile -+config.status:689: creating tools/click-install/Makefile -+config.status:689: creating include/click/config.h -+config.status:989: include/click/config.h is unchanged -+config.status:689: creating include/click/pathvars.h -+config.status:689: creating include/click/config-bsdmodule.h -+config.status:989: include/click/config-bsdmodule.h is unchanged -+config.status:689: creating include/click/config-linuxmodule.h -+config.status:989: include/click/config-linuxmodule.h is unchanged -+config.status:689: creating include/click/config-ns.h -+config.status:989: include/click/config-ns.h is unchanged -+config.status:689: creating include/click/config-userlevel.h -+config.status:989: include/click/config-userlevel.h is unchanged -+config.status:1002: executing default-1 commands -+ -+## ---------------- ## -+## Cache variables. ## -+## ---------------- ## -+ -+ac_cv_accept_socklen_t=yes -+ac_cv_alignment_indifferent=yes -+ac_cv_arithmetic_right_shift=yes -+ac_cv_bpf_timeval=no -+ac_cv_build=i686-pc-linux-gnu -+ac_cv_c_compiler_gnu=yes -+ac_cv_c_inline=inline -+ac_cv_click_kernel=yes -+ac_cv_click_kernel_tx_notify=no -+ac_cv_cxx_aware_system=yes -+ac_cv_cxx_compiler_gnu=yes -+ac_cv_emulated_poll_h=no -+ac_cv_endian=1234 -+ac_cv_env_CCC_set= -+ac_cv_env_CCC_value= -+ac_cv_env_CC_set= -+ac_cv_env_CC_value= -+ac_cv_env_CFLAGS_set= -+ac_cv_env_CFLAGS_value= -+ac_cv_env_CPPFLAGS_set= -+ac_cv_env_CPPFLAGS_value= -+ac_cv_env_CPP_set= -+ac_cv_env_CPP_value= -+ac_cv_env_CXXCPP_set= -+ac_cv_env_CXXCPP_value= -+ac_cv_env_CXXFLAGS_set= -+ac_cv_env_CXXFLAGS_value= -+ac_cv_env_CXX_set= -+ac_cv_env_CXX_value= -+ac_cv_env_LDFLAGS_set= -+ac_cv_env_LDFLAGS_value= -+ac_cv_env_LIBS_set= -+ac_cv_env_LIBS_value= -+ac_cv_env_build_alias_set= -+ac_cv_env_build_alias_value= -+ac_cv_env_host_alias_set= -+ac_cv_env_host_alias_value= -+ac_cv_env_target_alias_set= -+ac_cv_env_target_alias_value= -+ac_cv_f_permissive=no -+ac_cv_func_dlopen=no -+ac_cv_func_ffs=yes -+ac_cv_func_ffsl=yes -+ac_cv_func_ffsll=yes -+ac_cv_func_getpagesize=yes -+ac_cv_func_kqueue=no -+ac_cv_func_madvise=yes -+ac_cv_func_mmap_fixed_mapped=yes -+ac_cv_func_pcap_setnonblock=yes -+ac_cv_func_sigaction=yes -+ac_cv_func_snprintf=yes -+ac_cv_func_strerror=yes -+ac_cv_func_strtoul=yes -+ac_cv_func_tcgetpgrp=yes -+ac_cv_func_vsnprintf=yes -+ac_cv_gnu_make=make -+ac_cv_good_new_hdr=yes -+ac_cv_have___builtin_clz=yes -+ac_cv_have___builtin_clzl=yes -+ac_cv_have___builtin_clzll=yes -+ac_cv_have___builtin_ffs=yes -+ac_cv_have___builtin_ffsl=yes -+ac_cv_have___builtin_ffsll=yes -+ac_cv_have_decl_madvise=yes -+ac_cv_have_decl_net_enable_timestamp=no -+ac_cv_have_decl_netif_tx_lock=no -+ac_cv_have_decl_pcap_setnonblock=yes -+ac_cv_header_byteswap_h=yes -+ac_cv_header_dlfcn_h=yes -+ac_cv_header_endian_h=yes -+ac_cv_header_expat_h=yes -+ac_cv_header_grp_h=yes -+ac_cv_header_inttypes_h=yes -+ac_cv_header_linux_if_tun_h=yes -+ac_cv_header_memory_h=yes -+ac_cv_header_net_bpf_h=no -+ac_cv_header_net_if_tap_h=no -+ac_cv_header_net_if_tun_h=no -+ac_cv_header_netdb_h=yes -+ac_cv_header_poll_h=yes -+ac_cv_header_pwd_h=yes -+ac_cv_header_stdc=yes -+ac_cv_header_stdint_h=yes -+ac_cv_header_stdlib_h=yes -+ac_cv_header_string_h=yes -+ac_cv_header_strings_h=yes -+ac_cv_header_sys_event_h=no -+ac_cv_header_sys_mman_h=yes -+ac_cv_header_sys_stat_h=yes -+ac_cv_header_sys_types_h=yes -+ac_cv_header_termio_h=yes -+ac_cv_header_unistd_h=yes -+ac_cv_host=i686-pc-linux-gnu -+ac_cv_if_data_ifi_datalen=no -+ac_cv_int64_t=yes -+ac_cv_large_file_support=yes -+ac_cv_lib_dl_dlopen=yes -+ac_cv_lib_expat_XML_ParserCreateNS=yes -+ac_cv_linux26=1 -+ac_cv_linux_asm_alternative_h=yes -+ac_cv_linux_atomic_set_mask=no -+ac_cv_linux_poll_extension=yes -+ac_cv_linux_read_net_skbcount=no -+ac_cv_linux_strlen_exposed=yes -+ac_cv_linux_tulip_intr_hook=no -+ac_cv_linuxmodule_skb_shinfo_gso_size=no -+ac_cv_linuxmodule_skb_shinfo_ip6_frag_id=no -+ac_cv_linuxmodule_skb_shinfo_tso_size=no -+ac_cv_linuxmodule_skb_shinfo_ufo_size=no -+ac_cv_linuxmodule_skbuff_fclone=no -+ac_cv_linuxmodule_skbuff_security=no -+ac_cv_long_64=no -+ac_cv_long_64_linuxmodule=no -+ac_cv_long_long_64=yes -+ac_cv_long_long_64_linuxmodule=yes -+ac_cv_net_enable_timestamp=no -+ac_cv_netif_tx_lock=no -+ac_cv_objext=o -+ac_cv_path_EGREP='/bin/grep -E' -+ac_cv_path_GREP=/bin/grep -+ac_cv_path_INSTALL_INFO=/usr/bin/install-info -+ac_cv_path_install='/usr/bin/install -c' -+ac_cv_pcap_header_path=found -+ac_cv_pcap_library_path=found -+ac_cv_poll_h=yes -+ac_cv_prog_CPP='gcc -W -Wall -E' -+ac_cv_prog_CXXCPP='g++ -W -Wall -E' -+ac_cv_prog_ac_ct_AR=ar -+ac_cv_prog_ac_ct_CC=gcc -+ac_cv_prog_ac_ct_CXX=g++ -+ac_cv_prog_ac_ct_LD=ld -+ac_cv_prog_ac_ct_RANLIB=ranlib -+ac_cv_prog_ac_ct_STRIP=strip -+ac_cv_prog_cc_c89= -+ac_cv_prog_cc_g=yes -+ac_cv_prog_cxx_g=yes -+ac_cv_prog_perl5=perl -+ac_cv_search_connect='none required' -+ac_cv_search_gethostbyname='none required' -+ac_cv_sizeof_int=4 -+ac_cv_sizeof_long=4 -+ac_cv_sizeof_long_long=8 -+ac_cv_sizeof_off_t=8 -+ac_cv_sizeof_struct_timespec=8 -+ac_cv_sizeof_struct_timeval=8 -+ac_cv_smp=yes -+ac_cv_sockaddr_in_sin_len=no -+ac_cv_target=i686-pc-linux-gnu -+ac_cv_type_int=yes -+ac_cv_type_long=yes -+ac_cv_type_long_long=yes -+ac_cv_type_off_t=yes -+ac_cv_type_struct_timespec=yes -+ac_cv_type_struct_timeval=yes -+ac_cv_uint64_t=yes -+ac_cv_under_linux=yes -+ac_cv_va_list_addr=yes -+ac_cv_working_pcap_h=yes -+ -+## ----------------- ## -+## Output variables. ## -+## ----------------- ## -+ -+AR='ar' -+AR_CREATEFLAGS='cru' -+AUTOCONF='autoconf' -+BUILD_AR='' -+BUILD_CC='' -+BUILD_CXX='' -+BUILD_DL_LIBS='' -+BUILD_RANLIB='' -+CC='gcc -W -Wall' -+CFLAGS='-g -O2' -+CFLAGS_NDEBUG=' -O2' -+CLICKINSTALL='/usr/bin/install -c' -+CLICK_VERSION='1.6.0' -+CPP='gcc -W -Wall -E' -+CPPFLAGS='' -+CXX='g++ -W -Wall ' -+CXXCPP='g++ -W -Wall -E' -+CXXFLAGS='-g -O2' -+CXXFLAGS_NDEBUG=' -O2' -+DEFS='-DHAVE_CONFIG_H' -+DEPCFLAGS='-MD' -+DL_LIBS='-ldl' -+DRIVERS=' userlevel linuxmodule' -+ECHO_C='' -+ECHO_N='-n' -+ECHO_T='' -+EGREP='/bin/grep -E' -+EXEEXT='' -+EXPAT_INCLUDES='' -+EXPAT_LIBS=' -lexpat' -+EXTRA_DRIVER_OBJS='' -+EXTRA_TOOL_OBJS='' -+GMAKE='make' -+GREP='/bin/grep' -+HAVE_BSDMODULE_DRIVER='0' -+HAVE_LINUXMODULE_DRIVER='1' -+HAVE_USERLEVEL_DRIVER='1' -+HOST_TOOLS='host' -+INSTALL_DATA='${INSTALL} -m 644' -+INSTALL_IF_CHANGED='$(top_builddir)/installch' -+INSTALL_INFO='/usr/bin/install-info' -+INSTALL_PROGRAM='${INSTALL}' -+INSTALL_SCRIPT='${INSTALL}' -+KERNEL_CC='gcc -w -W -Wall' -+KERNEL_CXX='g++ -w -W -Wall -fno-exceptions -fno-rtti -D__SMP__' -+LD='ld' -+LDFLAGS='' -+LDMODULEFLAGS='-shared' -+LIBOBJS='' -+LIBS='' -+LINUXMODULE_2_6='1' -+LINUX_CFLAGS='' -+LTLIBOBJS='' -+MAKEINFO='makeinfo' -+OBJEXT='o' -+OTHER_TARGETS=' tools' -+PACKAGE_BUGREPORT='' -+PACKAGE_NAME='click' -+PACKAGE_STRING='click 1.6.0' -+PACKAGE_TARNAME='click' -+PACKAGE_VERSION='1.6.0' -+PATH_SEPARATOR=':' -+PCAP_INCLUDES='' -+PCAP_LIBS='-lpcap' -+PERL='perl' -+POD2MAN='pod2man' -+POSSIBLE_DRIVERS=' bsdmodule linuxmodule ns userlevel' -+PROPER_INCLUDES='' -+PROPER_LIBS='' -+RANLIB='ranlib' -+SHELL='/bin/sh' -+SOCKET_LIBS='' -+STRIP='strip' -+SUBMAKE='' -+TEXI2DVI='texi2dvi' -+TOOLDIRS=' click-align click-check click-combine click-devirtualize click-fastclassifier click-flatten click-mkmindriver click-pretty click-undead click-xform click2xml click-install' -+TOOL_TARGETS=' click-align click-check click-combine click-devirtualize click-fastclassifier click-flatten click-mkmindriver click-pretty click-undead click-xform click2xml click-install' -+XML2CLICK='xml2click' -+ac_configure_args=' '\''--prefix=/d/click/click-1.6.0-27/inst'\'' '\''--exec-prefix=/d/click/click-1.6.0-27/inst'\'' '\''--with-linux=/d/kernels/linux-2.6.27.10-clickport'\'' '\''--with-linux-map=/d/uml/trelclickSystem.map'\''' -+ac_ct_CC='gcc' -+ac_ct_CXX='g++' -+bindir='/d/click/click-1.6.0-27/inst/bin' -+build='i686-pc-linux-gnu' -+build_alias='' -+build_cpu='i686' -+build_os='linux-gnu' -+build_vendor='pc' -+clickdatadir='/d/click/click-1.6.0-27/inst/share/click' -+conf_auxdir='$(top_srcdir)' -+datadir='/d/click/click-1.6.0-27/inst/share' -+datarootdir='/d/click/click-1.6.0-27/inst/share' -+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -+dvidir='${docdir}' -+element_groups=' app aqm ethernet icmp ip standard tcpudp' -+exec_prefix='/d/click/click-1.6.0-27/inst' -+freebsd_includedir='/usr/include' -+freebsd_srcdir='NONE' -+host='i686-pc-linux-gnu' -+host_alias='' -+host_cpu='i686' -+host_os='linux-gnu' -+host_vendor='pc' -+htmldir='${docdir}' -+includedir='/d/click/click-1.6.0-27/inst/include' -+infodir='${datarootdir}/info' -+libdir='/d/click/click-1.6.0-27/inst/lib' -+libexecdir='${exec_prefix}/libexec' -+linuxdir='/d/kernels/linux-2.6.27.10-clickport' -+localedir='${datarootdir}/locale' -+localperl5='' -+localstatedir='${prefix}/var' -+mandir='${datarootdir}/man' -+oldincludedir='/usr/include' -+pdfdir='${docdir}' -+perl5='perl' -+prefix='/d/click/click-1.6.0-27/inst' -+program_transform_name='s,x,x,' -+provisions='i686 i386 i586 int64 linux linux_2_6 pcap' -+psdir='${docdir}' -+sbindir='/d/click/click-1.6.0-27/inst/sbin' -+sharedstatedir='${prefix}/com' -+sysconfdir='${prefix}/etc' -+target='i686-pc-linux-gnu' -+target_alias='' -+target_cpu='i686' -+target_os='linux-gnu' -+target_vendor='pc' -+ -+## ----------- ## -+## confdefs.h. ## -+## ----------- ## -+ -+#define PACKAGE_NAME "click" -+#define PACKAGE_TARNAME "click" -+#define PACKAGE_VERSION "1.6.0" -+#define PACKAGE_STRING "click 1.6.0" -+#define PACKAGE_BUGREPORT "" -+#define CLICK_VERSION "1.6.0" -+#define HAVE_NEW_HDR 1 -+#define NUM_CLICK_CPUS 1 -+#define HAVE_CLICKFS 1 -+#define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+#define FREEBSD_INCLUDEDIR "/usr/include" -+#define HAVE_STRERROR 1 -+#define HAVE_SNPRINTF 1 -+#define HAVE_STRTOUL 1 -+#define HAVE_TCGETPGRP 1 -+#define HAVE_VSNPRINTF 1 -+#define STDC_HEADERS 1 -+#define HAVE_SYS_TYPES_H 1 -+#define HAVE_SYS_STAT_H 1 -+#define HAVE_STDLIB_H 1 -+#define HAVE_STRING_H 1 -+#define HAVE_MEMORY_H 1 -+#define HAVE_STRINGS_H 1 -+#define HAVE_INTTYPES_H 1 -+#define HAVE_STDINT_H 1 -+#define HAVE_UNISTD_H 1 -+#define SIZEOF_INT 4 -+#define SIZEOF_LONG 4 -+#define HAVE_INTTYPES_H 1 -+#define HAVE_INDIFFERENT_ALIGNMENT 1 -+#define SIZEOF_LONG_LONG 8 -+#define HAVE_LONG_LONG 1 -+#define HAVE_INT64_TYPES 1 -+#define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+#define SIZEOF_STRUCT_TIMEVAL 8 -+#define HAVE_STRUCT_TIMESPEC 1 -+#define SIZEOF_STRUCT_TIMESPEC 8 -+#define HAVE_ENDIAN_H 1 -+#define CLICK_BYTE_ORDER 1234 -+#define HAVE_BYTESWAP_H 1 -+#define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+#define HAVE_ADDRESSABLE_VA_LIST 1 -+#define HAVE___BUILTIN_CLZ 1 -+#define HAVE___BUILTIN_CLZL 1 -+#define HAVE___BUILTIN_CLZLL 1 -+#define HAVE___BUILTIN_FFS 1 -+#define HAVE___BUILTIN_FFSL 1 -+#define HAVE___BUILTIN_FFSLL 1 -+#define HAVE_STRINGS_H 1 -+#define HAVE_FFS 1 -+#define HAVE_FFSL 1 -+#define HAVE_FFSLL 1 -+#define HAVE_UNISTD_H 1 -+#define HAVE_TERMIO_H 1 -+#define HAVE_NETDB_H 1 -+#define HAVE_PWD_H 1 -+#define HAVE_GRP_H 1 -+#define HAVE_POLL_H 1 -+#define HAVE_SIGACTION 1 -+#define HAVE_DLFCN_H 1 -+#define HAVE_DYNAMIC_LINKING 1 -+#define HAVE_ACCEPT_SOCKLEN_T 1 -+#define HAVE_LARGE_FILE_SUPPORT 1 -+#define SIZEOF_OFF_T 8 -+#define HAVE_SYS_MMAN_H 1 -+#define HAVE_STDLIB_H 1 -+#define HAVE_UNISTD_H 1 -+#define HAVE_GETPAGESIZE 1 -+#define HAVE_MMAP 1 -+#define HAVE_MADVISE 1 -+#define HAVE_DECL_MADVISE 1 -+#define HAVE_LINUXMODULE_2_6 1 -+#define HAVE_CLICK_KERNEL 1 -+#define HAVE_LINUX_STRLEN_EXPOSED 1 -+#define HAVE_LINUX_POLLING 1 -+#define __SMP__ 1 -+#define HAVE_LINUX_ASM_ALTERNATIVE_H 1 -+#define HAVE_STRIDE_SCHED 1 -+#define HAVE_LINUX_IF_TUN_H 1 -+#define HAVE_DECL_PCAP_SETNONBLOCK 1 -+#define HAVE_PCAP 1 -+#define HAVE_PCAP_SETNONBLOCK 1 -+#define HAVE_USERLEVEL_DRIVER 1 -+#define HAVE_EXPAT 1 -+#define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1 -+#define HAVE_LINUXMODULE_DRIVER 1 -+#define CLICK_BINDIR "/d/click/click-1.6.0-27/inst/bin" -+#define CLICK_LIBDIR "/d/click/click-1.6.0-27/inst/lib" -+#define CLICK_DATADIR "/d/click/click-1.6.0-27/inst/share/click" -+ -+configure: exit 0 -diff -Nurb click-1.6.0/config.mk click-1.6.0-27/config.mk ---- click-1.6.0/config.mk 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/config.mk 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,13 @@ -+clickprefix=/d/click/click-1.6.0-27/inst -+clickbindir=/d/click/click-1.6.0-27/inst/bin -+clicksbindir=/d/click/click-1.6.0-27/inst/sbin -+clicklibdir=/d/click/click-1.6.0-27/inst/lib -+clickincludedir=/d/click/click-1.6.0-27/inst/include -+clickdatadir=/d/click/click-1.6.0-27/inst/share/click -+clicklinuxdir=/d/kernels/linux-2.6.27.10-clickport -+clicksrcdir=/d/click/click-1.6.0-27/inst/share/click/src -+CLICK_HAVE_USERLEVEL_DRIVER=1 -+CLICK_HAVE_LINUXMODULE_DRIVER=1 -+CLICK_HAVE_BSDMODULE_DRIVER=0 -+CLICK_LINUXMODULE_2_6=1 -+CLICK_GMAKE=make -diff -Nurb click-1.6.0/config.status click-1.6.0-27/config.status ---- click-1.6.0/config.status 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/config.status 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,1022 @@ -+#! /bin/sh -+# Generated by configure. -+# Run this file to recreate the current configuration. -+# Compiler output produced by configure, useful for debugging -+# configure, is in config.log if it exists. -+ -+debug=false -+ac_cs_recheck=false -+ac_cs_silent=false -+SHELL=${CONFIG_SHELL-/bin/sh} -+## --------------------- ## -+## M4sh Initialization. ## -+## --------------------- ## -+ -+# Be more Bourne compatible -+DUALCASE=1; export DUALCASE # for MKS sh -+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then -+ emulate sh -+ NULLCMD=: -+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '${1+"$@"}'='"$@"' -+ setopt NO_GLOB_SUBST -+else -+ case `(set -o) 2>/dev/null` in -+ *posix*) set -o posix ;; -+esac -+ -+fi -+ -+ -+ -+ -+# PATH needs CR -+# Avoid depending upon Character Ranges. -+as_cr_letters='abcdefghijklmnopqrstuvwxyz' -+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -+as_cr_Letters=$as_cr_letters$as_cr_LETTERS -+as_cr_digits='0123456789' -+as_cr_alnum=$as_cr_Letters$as_cr_digits -+ -+# The user is always right. -+if test "${PATH_SEPARATOR+set}" != set; then -+ echo "#! /bin/sh" >conf$$.sh -+ echo "exit 0" >>conf$$.sh -+ chmod +x conf$$.sh -+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then -+ PATH_SEPARATOR=';' -+ else -+ PATH_SEPARATOR=: -+ fi -+ rm -f conf$$.sh -+fi -+ -+# Support unset when possible. -+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then -+ as_unset=unset -+else -+ as_unset=false -+fi -+ -+ -+# IFS -+# We need space, tab and new line, in precisely that order. Quoting is -+# there to prevent editors from complaining about space-tab. -+# (If _AS_PATH_WALK were called with IFS unset, it would disable word -+# splitting by setting IFS to empty value.) -+as_nl=' -+' -+IFS=" "" $as_nl" -+ -+# Find who we are. Look in the path if we contain no directory separator. -+case $0 in -+ *[\\/]* ) as_myself=$0 ;; -+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -+done -+IFS=$as_save_IFS -+ -+ ;; -+esac -+# We did not find ourselves, most probably we were run as `sh COMMAND' -+# in which case we are not to be found in the path. -+if test "x$as_myself" = x; then -+ as_myself=$0 -+fi -+if test ! -f "$as_myself"; then -+ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 -+ { (exit 1); exit 1; } -+fi -+ -+# Work around bugs in pre-3.0 UWIN ksh. -+for as_var in ENV MAIL MAILPATH -+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -+done -+PS1='$ ' -+PS2='> ' -+PS4='+ ' -+ -+# NLS nuisances. -+for as_var in \ -+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ -+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ -+ LC_TELEPHONE LC_TIME -+do -+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then -+ eval $as_var=C; export $as_var -+ else -+ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -+ fi -+done -+ -+# Required to use basename. -+if expr a : '\(a\)' >/dev/null 2>&1 && -+ test "X`expr 00001 : '.*\(...\)'`" = X001; then -+ as_expr=expr -+else -+ as_expr=false -+fi -+ -+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then -+ as_basename=basename -+else -+ as_basename=false -+fi -+ -+ -+# Name of the executable. -+as_me=`$as_basename -- "$0" || -+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ -+ X"$0" : 'X\(//\)$' \| \ -+ X"$0" : 'X\(/\)' \| . 2>/dev/null || -+echo X/"$0" | -+ sed '/^.*\/\([^/][^/]*\)\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\/\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\/\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ -+# CDPATH. -+$as_unset CDPATH -+ -+ -+ -+ as_lineno_1=$LINENO -+ as_lineno_2=$LINENO -+ test "x$as_lineno_1" != "x$as_lineno_2" && -+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { -+ -+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO -+ # uniformly replaced by the line number. The first 'sed' inserts a -+ # line-number line after each line using $LINENO; the second 'sed' -+ # does the real work. The second script uses 'N' to pair each -+ # line-number line with the line containing $LINENO, and appends -+ # trailing '-' during substitution so that $LINENO is not a special -+ # case at line end. -+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the -+ # scripts with optimization help from Paolo Bonzini. Blame Lee -+ # E. McMahon (1931-1989) for sed's syntax. :-) -+ sed -n ' -+ p -+ /[$]LINENO/= -+ ' <$as_myself | -+ sed ' -+ s/[$]LINENO.*/&-/ -+ t lineno -+ b -+ :lineno -+ N -+ :loop -+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ -+ t loop -+ s/-\n.*// -+ ' >$as_me.lineno && -+ chmod +x "$as_me.lineno" || -+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 -+ { (exit 1); exit 1; }; } -+ -+ # Don't try to exec as it changes $[0], causing all sort of problems -+ # (the dirname of $[0] is not the place where we might find the -+ # original and so on. Autoconf is especially sensitive to this). -+ . "./$as_me.lineno" -+ # Exit status is that of the last command. -+ exit -+} -+ -+ -+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then -+ as_dirname=dirname -+else -+ as_dirname=false -+fi -+ -+ECHO_C= ECHO_N= ECHO_T= -+case `echo -n x` in -+-n*) -+ case `echo 'x\c'` in -+ *c*) ECHO_T=' ';; # ECHO_T is single tab character. -+ *) ECHO_C='\c';; -+ esac;; -+*) -+ ECHO_N='-n';; -+esac -+ -+if expr a : '\(a\)' >/dev/null 2>&1 && -+ test "X`expr 00001 : '.*\(...\)'`" = X001; then -+ as_expr=expr -+else -+ as_expr=false -+fi -+ -+rm -f conf$$ conf$$.exe conf$$.file -+if test -d conf$$.dir; then -+ rm -f conf$$.dir/conf$$.file -+else -+ rm -f conf$$.dir -+ mkdir conf$$.dir -+fi -+echo >conf$$.file -+if ln -s conf$$.file conf$$ 2>/dev/null; then -+ as_ln_s='ln -s' -+ # ... but there are two gotchas: -+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. -+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. -+ # In both cases, we have to default to `cp -p'. -+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || -+ as_ln_s='cp -p' -+elif ln conf$$.file conf$$ 2>/dev/null; then -+ as_ln_s=ln -+else -+ as_ln_s='cp -p' -+fi -+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -+rmdir conf$$.dir 2>/dev/null -+ -+if mkdir -p . 2>/dev/null; then -+ as_mkdir_p=: -+else -+ test -d ./-p && rmdir ./-p -+ as_mkdir_p=false -+fi -+ -+if test -x / >/dev/null 2>&1; then -+ as_test_x='test -x' -+else -+ if ls -dL / >/dev/null 2>&1; then -+ as_ls_L_option=L -+ else -+ as_ls_L_option= -+ fi -+ as_test_x=' -+ eval sh -c '\'' -+ if test -d "$1"; then -+ test -d "$1/."; -+ else -+ case $1 in -+ -*)set "./$1";; -+ esac; -+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in -+ ???[sx]*):;;*)false;;esac;fi -+ '\'' sh -+ ' -+fi -+as_executable_p=$as_test_x -+ -+# Sed expression to map a string onto a valid CPP name. -+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" -+ -+# Sed expression to map a string onto a valid variable name. -+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -+ -+ -+exec 6>&1 -+ -+# Save the log message, to keep $[0] and so on meaningful, and to -+# report actual input values of CONFIG_FILES etc. instead of their -+# values after options handling. -+ac_log=" -+This file was extended by click $as_me 1.6.0, which was -+generated by GNU Autoconf 2.61. Invocation command line was -+ -+ CONFIG_FILES = $CONFIG_FILES -+ CONFIG_HEADERS = $CONFIG_HEADERS -+ CONFIG_LINKS = $CONFIG_LINKS -+ CONFIG_COMMANDS = $CONFIG_COMMANDS -+ $ $0 $@ -+ -+on `(hostname || uname -n) 2>/dev/null | sed 1q` -+" -+ -+# Files that config.status was made for. -+config_files=" Makefile click-buildtool click-compile config.mk installch tools/Makefile tools/lib/Makefile doc/Makefile etc/libclick/Makefile etc/pkg-config.mk bsdmodule/Makefile linuxmodule/Makefile ns/Makefile userlevel/Makefile tools/click-align/Makefile tools/click-check/Makefile tools/click-combine/Makefile tools/click-devirtualize/Makefile tools/click-fastclassifier/Makefile tools/click-flatten/Makefile tools/click-mkmindriver/Makefile tools/click-pretty/Makefile tools/click-undead/Makefile tools/click-xform/Makefile tools/click2xml/Makefile tools/click-install/Makefile" -+config_headers=" include/click/config.h:config.h.in include/click/pathvars.h:pathvars.h.in include/click/config-bsdmodule.h:config-bsdmodule.h.in include/click/config-linuxmodule.h:config-linuxmodule.h.in include/click/config-ns.h:config-ns.h.in include/click/config-userlevel.h:config-userlevel.h.in" -+config_commands=" default-1" -+ -+ac_cs_usage="\ -+\`$as_me' instantiates files from templates according to the -+current configuration. -+ -+Usage: $0 [OPTIONS] [FILE]... -+ -+ -h, --help print this help, then exit -+ -V, --version print version number and configuration settings, then exit -+ -q, --quiet do not print progress messages -+ -d, --debug don't remove temporary files -+ --recheck update $as_me by reconfiguring in the same conditions -+ --file=FILE[:TEMPLATE] -+ instantiate the configuration file FILE -+ --header=FILE[:TEMPLATE] -+ instantiate the configuration header FILE -+ -+Configuration files: -+$config_files -+ -+Configuration headers: -+$config_headers -+ -+Configuration commands: -+$config_commands -+ -+Report bugs to ." -+ -+ac_cs_version="\ -+click config.status 1.6.0 -+configured by ./configure, generated by GNU Autoconf 2.61, -+ with options \"'--prefix=/d/click/click-1.6.0-27/inst' '--exec-prefix=/d/click/click-1.6.0-27/inst' '--with-linux=/d/kernels/linux-2.6.27.10-clickport' '--with-linux-map=/d/uml/trelclickSystem.map'\" -+ -+Copyright (C) 2006 Free Software Foundation, Inc. -+This config.status script is free software; the Free Software Foundation -+gives unlimited permission to copy, distribute and modify it." -+ -+ac_pwd='/d/click/click-1.6.0-27' -+srcdir='.' -+INSTALL='/usr/bin/install -c' -+# If no file are specified by the user, then we need to provide default -+# value. By we need to know if files were specified by the user. -+ac_need_defaults=: -+while test $# != 0 -+do -+ case $1 in -+ --*=*) -+ ac_option=`expr "X$1" : 'X\([^=]*\)='` -+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` -+ ac_shift=: -+ ;; -+ *) -+ ac_option=$1 -+ ac_optarg=$2 -+ ac_shift=shift -+ ;; -+ esac -+ -+ case $ac_option in -+ # Handling of the options. -+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) -+ ac_cs_recheck=: ;; -+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) -+ echo "$ac_cs_version"; exit ;; -+ --debug | --debu | --deb | --de | --d | -d ) -+ debug=: ;; -+ --file | --fil | --fi | --f ) -+ $ac_shift -+ CONFIG_FILES="$CONFIG_FILES $ac_optarg" -+ ac_need_defaults=false;; -+ --header | --heade | --head | --hea ) -+ $ac_shift -+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" -+ ac_need_defaults=false;; -+ --he | --h) -+ # Conflict between --help and --header -+ { echo "$as_me: error: ambiguous option: $1 -+Try \`$0 --help' for more information." >&2 -+ { (exit 1); exit 1; }; };; -+ --help | --hel | -h ) -+ echo "$ac_cs_usage"; exit ;; -+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ -+ | -silent | --silent | --silen | --sile | --sil | --si | --s) -+ ac_cs_silent=: ;; -+ -+ # This is an error. -+ -*) { echo "$as_me: error: unrecognized option: $1 -+Try \`$0 --help' for more information." >&2 -+ { (exit 1); exit 1; }; } ;; -+ -+ *) ac_config_targets="$ac_config_targets $1" -+ ac_need_defaults=false ;; -+ -+ esac -+ shift -+done -+ -+ac_configure_extra_args= -+ -+if $ac_cs_silent; then -+ exec 6>/dev/null -+ ac_configure_extra_args="$ac_configure_extra_args --silent" -+fi -+ -+if $ac_cs_recheck; then -+ echo "running CONFIG_SHELL=/bin/sh /bin/sh ./configure " '--prefix=/d/click/click-1.6.0-27/inst' '--exec-prefix=/d/click/click-1.6.0-27/inst' '--with-linux=/d/kernels/linux-2.6.27.10-clickport' '--with-linux-map=/d/uml/trelclickSystem.map' $ac_configure_extra_args " --no-create --no-recursion" >&6 -+ CONFIG_SHELL=/bin/sh -+ export CONFIG_SHELL -+ exec /bin/sh "./configure" '--prefix=/d/click/click-1.6.0-27/inst' '--exec-prefix=/d/click/click-1.6.0-27/inst' '--with-linux=/d/kernels/linux-2.6.27.10-clickport' '--with-linux-map=/d/uml/trelclickSystem.map' $ac_configure_extra_args --no-create --no-recursion -+fi -+ -+exec 5>>config.log -+{ -+ echo -+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -+## Running $as_me. ## -+_ASBOX -+ echo "$ac_log" -+} >&5 -+ -+# -+# INIT-COMMANDS -+# -+ -+ -+ -+# Handling of arguments. -+for ac_config_target in $ac_config_targets -+do -+ case $ac_config_target in -+ "include/click/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/config.h:config.h.in" ;; -+ "include/click/pathvars.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/pathvars.h:pathvars.h.in" ;; -+ "include/click/config-bsdmodule.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/config-bsdmodule.h:config-bsdmodule.h.in" ;; -+ "include/click/config-linuxmodule.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/config-linuxmodule.h:config-linuxmodule.h.in" ;; -+ "include/click/config-ns.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/config-ns.h:config-ns.h.in" ;; -+ "include/click/config-userlevel.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/config-userlevel.h:config-userlevel.h.in" ;; -+ "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; -+ "$config_files") CONFIG_FILES="$CONFIG_FILES $config_files" ;; -+ -+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -+echo "$as_me: error: invalid argument: $ac_config_target" >&2;} -+ { (exit 1); exit 1; }; };; -+ esac -+done -+ -+ -+# If the user did not use the arguments to specify the items to instantiate, -+# then the envvar interface is used. Set only those that are not. -+# We use the long form for the default assignment because of an extremely -+# bizarre bug on SunOS 4.1.3. -+if $ac_need_defaults; then -+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files -+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers -+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -+fi -+ -+# Have a temporary directory for convenience. Make it in the build tree -+# simply because there is no reason against having it here, and in addition, -+# creating and moving files from /tmp can sometimes cause problems. -+# Hook for its removal unless debugging. -+# Note that there is a small window in which the directory will not be cleaned: -+# after its creation but before its name has been assigned to `$tmp'. -+$debug || -+{ -+ tmp= -+ trap 'exit_status=$? -+ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status -+' 0 -+ trap '{ (exit 1); exit 1; }' 1 2 13 15 -+} -+# Create a (secure) tmp directory for tmp files. -+ -+{ -+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && -+ test -n "$tmp" && test -d "$tmp" -+} || -+{ -+ tmp=./conf$$-$RANDOM -+ (umask 077 && mkdir "$tmp") -+} || -+{ -+ echo "$me: cannot create a temporary directory in ." >&2 -+ { (exit 1); exit 1; } -+} -+ -+# -+# Set up the sed scripts for CONFIG_FILES section. -+# -+ -+# No need to generate the scripts if there are no CONFIG_FILES. -+# This happens for instance when ./config.status config.h -+if test -n "$CONFIG_FILES"; then -+ -+cat >"$tmp/subs-1.sed" <<\CEOF -+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -+s,@SHELL@,|#_!!_#|/bin/sh,g -+s,@PATH_SEPARATOR@,|#_!!_#|:,g -+s,@PACKAGE_NAME@,|#_!!_#|click,g -+s,@PACKAGE_TARNAME@,|#_!!_#|click,g -+s,@PACKAGE_VERSION@,|#_!!_#|1.6.0,g -+s,@PACKAGE_STRING@,|#_!!_#|click 1.6.0,g -+s,@PACKAGE_BUGREPORT@,|#_!!_#|,g -+s,@exec_prefix@,|#_!!_#|/d/click/click-1.6.0-27/inst,g -+s,@prefix@,|#_!!_#|/d/click/click-1.6.0-27/inst,g -+s,@program_transform_name@,|#_!!_#|s\,x\,x\,,g -+s,@bindir@,|#_!!_#|/d/click/click-1.6.0-27/inst/bin,g -+s,@sbindir@,|#_!!_#|/d/click/click-1.6.0-27/inst/sbin,g -+s,@libexecdir@,|#_!!_#|${exec_prefix}/libexec,g -+s,@datarootdir@,|#_!!_#|/d/click/click-1.6.0-27/inst/share,g -+s,@datadir@,|#_!!_#|/d/click/click-1.6.0-27/inst/share,g -+s,@sysconfdir@,|#_!!_#|${prefix}/etc,g -+s,@sharedstatedir@,|#_!!_#|${prefix}/com,g -+s,@localstatedir@,|#_!!_#|${prefix}/var,g -+s,@includedir@,|#_!!_#|/d/click/click-1.6.0-27/inst/include,g -+s,@oldincludedir@,|#_!!_#|/usr/include,g -+s,@docdir@,|#_!!_#|${datarootdir}/doc/${PACKAGE_TARNAME},g -+s,@infodir@,|#_!!_#|${datarootdir}/info,g -+s,@htmldir@,|#_!!_#|${docdir},g -+s,@dvidir@,|#_!!_#|${docdir},g -+s,@pdfdir@,|#_!!_#|${docdir},g -+s,@psdir@,|#_!!_#|${docdir},g -+s,@libdir@,|#_!!_#|/d/click/click-1.6.0-27/inst/lib,g -+s,@localedir@,|#_!!_#|${datarootdir}/locale,g -+s,@mandir@,|#_!!_#|${datarootdir}/man,g -+s,@DEFS@,|#_!!_#|-DHAVE_CONFIG_H,g -+s,@ECHO_C@,|#_!!_#|,g -+s,@ECHO_N@,|#_!!_#|-n,g -+s,@ECHO_T@,|#_!!_#|,g -+s,@LIBS@,|#_!!_#|,g -+s,@build_alias@,|#_!!_#|,g -+s,@host_alias@,|#_!!_#|,g -+s,@target_alias@,|#_!!_#|,g -+s,@ac_configure_args@,|#_!!_#| '--prefix=/d/click/click-1.6.0-27/inst' '--exec-prefix=/d/click/click-1.6.0-27/inst' '--with-linux=/d/kernels/linux-2.6.27.10-clickport' '--with-linux-map=/d/uml/trelclickSystem.map',g -+s,@CLICK_VERSION@,|#_!!_#|1.6.0,g -+s,@conf_auxdir@,|#_!!_#|$(top_srcdir),g -+s,@build@,|#_!!_#|i686-pc-linux-gnu,g -+s,@build_cpu@,|#_!!_#|i686,g -+s,@build_vendor@,|#_!!_#|pc,g -+s,@build_os@,|#_!!_#|linux-gnu,g -+s,@host@,|#_!!_#|i686-pc-linux-gnu,g -+s,@host_cpu@,|#_!!_#|i686,g -+s,@host_vendor@,|#_!!_#|pc,g -+s,@host_os@,|#_!!_#|linux-gnu,g -+s,@target@,|#_!!_#|i686-pc-linux-gnu,g -+s,@target_cpu@,|#_!!_#|i686,g -+s,@target_vendor@,|#_!!_#|pc,g -+s,@target_os@,|#_!!_#|linux-gnu,g -+s,@CC@,|#_!!_#|gcc -W -Wall,g -+s,@CXX@,|#_!!_#|g++ -W -Wall ,g -+s,@CFLAGS@,|#_!!_#|-g -O2,g -+s,@LDFLAGS@,|#_!!_#|,g -+s,@CPPFLAGS@,|#_!!_#|,g -+s,@ac_ct_CC@,|#_!!_#|gcc,g -+s,@EXEEXT@,|#_!!_#|,g -+s,@OBJEXT@,|#_!!_#|o,g -+s,@DEPCFLAGS@,|#_!!_#|-MD,g -+s,@CFLAGS_NDEBUG@,|#_!!_#| -O2,g -+s,@CPP@,|#_!!_#|gcc -W -Wall -E,g -+s,@CXXFLAGS@,|#_!!_#|-g -O2,g -+s,@ac_ct_CXX@,|#_!!_#|g++,g -+s,@CXXFLAGS_NDEBUG@,|#_!!_#| -O2,g -+s,@CXXCPP@,|#_!!_#|g++ -W -Wall -E,g -+s,@KERNEL_CC@,|#_!!_#|gcc -w -W -Wall,g -+s,@KERNEL_CXX@,|#_!!_#|g++ -w -W -Wall -fno-exceptions -fno-rtti -D__SMP__,g -+s,@AR@,|#_!!_#|ar,g -+s,@LD@,|#_!!_#|ld,g -+s,@RANLIB@,|#_!!_#|ranlib,g -+s,@STRIP@,|#_!!_#|strip,g -+s,@AR_CREATEFLAGS@,|#_!!_#|cru,g -+s,@linuxdir@,|#_!!_#|/d/kernels/linux-2.6.27.10-clickport,g -+s,@element_groups@,|#_!!_#| app aqm ethernet icmp ip standard tcpudp,g -+s,@freebsd_srcdir@,|#_!!_#|NONE,g -+s,@freebsd_includedir@,|#_!!_#|/usr/include,g -+s,@LIBOBJS@,|#_!!_#|,g -+s,@GREP@,|#_!!_#|/bin/grep,g -+s,@EGREP@,|#_!!_#|/bin/grep -E,g -+s,@BUILD_CC@,|#_!!_#|,g -+s,@BUILD_CXX@,|#_!!_#|,g -+s,@BUILD_AR@,|#_!!_#|,g -+s,@BUILD_RANLIB@,|#_!!_#|,g -+s,@HOST_TOOLS@,|#_!!_#|host,g -+s,@DL_LIBS@,|#_!!_#|-ldl,g -+s,@LDMODULEFLAGS@,|#_!!_#|-shared,g -+s,@BUILD_DL_LIBS@,|#_!!_#|,g -+s,@SOCKET_LIBS@,|#_!!_#|,g -+s,@EXTRA_DRIVER_OBJS@,|#_!!_#|,g -+s,@EXTRA_TOOL_OBJS@,|#_!!_#|,g -+s,@LINUXMODULE_2_6@,|#_!!_#|1,g -+s,@POSSIBLE_DRIVERS@,|#_!!_#| bsdmodule linuxmodule ns userlevel,g -+s,@DRIVERS@,|#_!!_#| userlevel linuxmodule,g -+s,@HAVE_USERLEVEL_DRIVER@,|#_!!_#|1,g -+s,@HAVE_LINUXMODULE_DRIVER@,|#_!!_#|1,g -+CEOF -+cat >"$tmp/subs-2.sed" <<\CEOF -+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end -+s,@HAVE_BSDMODULE_DRIVER@,|#_!!_#|0,g -+s,@OTHER_TARGETS@,|#_!!_#| tools,g -+s,@TOOLDIRS@,|#_!!_#| click-align click-check click-combine click-devirtualize click-fastclassifier click-flatten click-mkmindriver click-pretty click-undead click-xform click2xml click-install,g -+s,@TOOL_TARGETS@,|#_!!_#| click-align click-check click-combine click-devirtualize click-fastclassifier click-flatten click-mkmindriver click-pretty click-undead click-xform click2xml click-install,g -+s,@PCAP_INCLUDES@,|#_!!_#|,g -+s,@PCAP_LIBS@,|#_!!_#|-lpcap,g -+s,@PROPER_INCLUDES@,|#_!!_#|,g -+s,@PROPER_LIBS@,|#_!!_#|,g -+s,@XML2CLICK@,|#_!!_#|xml2click,g -+s,@EXPAT_INCLUDES@,|#_!!_#|,g -+s,@EXPAT_LIBS@,|#_!!_#| -lexpat,g -+s,@LINUX_CFLAGS@,|#_!!_#|,g -+s,@INSTALL_PROGRAM@,|#_!!_#|${INSTALL},g -+s,@INSTALL_SCRIPT@,|#_!!_#|${INSTALL},g -+s,@INSTALL_DATA@,|#_!!_#|${INSTALL} -m 644,g -+s,@INSTALL_IF_CHANGED@,|#_!!_#|$(top_builddir)/installch,g -+s,@CLICKINSTALL@,|#_!!_#|/usr/bin/install -c,g -+s,@SUBMAKE@,|#_!!_#|,g -+s,@GMAKE@,|#_!!_#|make,g -+s,@AUTOCONF@,|#_!!_#|autoconf,g -+s,@perl5@,|#_!!_#|perl,g -+s,@localperl5@,|#_!!_#|,g -+s,@PERL@,|#_!!_#|perl,g -+s,@INSTALL_INFO@,|#_!!_#|/usr/bin/install-info,g -+s,@MAKEINFO@,|#_!!_#|makeinfo,g -+s,@TEXI2DVI@,|#_!!_#|texi2dvi,g -+s,@POD2MAN@,|#_!!_#|pod2man,g -+s,@clickdatadir@,|#_!!_#|/d/click/click-1.6.0-27/inst/share/click,g -+s,@provisions@,|#_!!_#|i686 i386 i586 int64 linux linux_2_6 pcap,g -+s,@LTLIBOBJS@,|#_!!_#|,g -+:end -+s/|#_!!_#|//g -+CEOF -+fi # test -n "$CONFIG_FILES" -+ -+ -+for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS -+do -+ case $ac_tag in -+ :[FHLC]) ac_mode=$ac_tag; continue;; -+ esac -+ case $ac_mode$ac_tag in -+ :[FHL]*:*);; -+ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 -+echo "$as_me: error: Invalid tag $ac_tag." >&2;} -+ { (exit 1); exit 1; }; };; -+ :[FH]-) ac_tag=-:-;; -+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; -+ esac -+ ac_save_IFS=$IFS -+ IFS=: -+ set x $ac_tag -+ IFS=$ac_save_IFS -+ shift -+ ac_file=$1 -+ shift -+ -+ case $ac_mode in -+ :L) ac_source=$1;; -+ :[FH]) -+ ac_file_inputs= -+ for ac_f -+ do -+ case $ac_f in -+ -) ac_f="$tmp/stdin";; -+ *) # Look for the file first in the build tree, then in the source tree -+ # (if the path is not absolute). The absolute path cannot be DOS-style, -+ # because $ac_f cannot contain `:'. -+ test -f "$ac_f" || -+ case $ac_f in -+ [\\/$]*) false;; -+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; -+ esac || -+ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 -+echo "$as_me: error: cannot find input file: $ac_f" >&2;} -+ { (exit 1); exit 1; }; };; -+ esac -+ ac_file_inputs="$ac_file_inputs $ac_f" -+ done -+ -+ # Let's still pretend it is `configure' which instantiates (i.e., don't -+ # use $as_me), people would be surprised to read: -+ # /* config.h. Generated by config.status. */ -+ configure_input="Generated from "`IFS=: -+ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." -+ if test x"$ac_file" != x-; then -+ configure_input="$ac_file. $configure_input" -+ { echo "$as_me:$LINENO: creating $ac_file" >&5 -+echo "$as_me: creating $ac_file" >&6;} -+ fi -+ -+ case $ac_tag in -+ *:-:* | *:-) cat >"$tmp/stdin";; -+ esac -+ ;; -+ esac -+ -+ ac_dir=`$as_dirname -- "$ac_file" || -+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$ac_file" : 'X\(//\)[^/]' \| \ -+ X"$ac_file" : 'X\(//\)$' \| \ -+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -+echo X"$ac_file" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)[^/].*/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ { as_dir="$ac_dir" -+ case $as_dir in #( -+ -*) as_dir=./$as_dir;; -+ esac -+ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { -+ as_dirs= -+ while :; do -+ case $as_dir in #( -+ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( -+ *) as_qdir=$as_dir;; -+ esac -+ as_dirs="'$as_qdir' $as_dirs" -+ as_dir=`$as_dirname -- "$as_dir" || -+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$as_dir" : 'X\(//\)[^/]' \| \ -+ X"$as_dir" : 'X\(//\)$' \| \ -+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -+echo X"$as_dir" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)[^/].*/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ test -d "$as_dir" && break -+ done -+ test -z "$as_dirs" || eval "mkdir $as_dirs" -+ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -+echo "$as_me: error: cannot create directory $as_dir" >&2;} -+ { (exit 1); exit 1; }; }; } -+ ac_builddir=. -+ -+case "$ac_dir" in -+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -+*) -+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` -+ # A ".." for each directory in $ac_dir_suffix. -+ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` -+ case $ac_top_builddir_sub in -+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; -+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; -+ esac ;; -+esac -+ac_abs_top_builddir=$ac_pwd -+ac_abs_builddir=$ac_pwd$ac_dir_suffix -+# for backward compatibility: -+ac_top_builddir=$ac_top_build_prefix -+ -+case $srcdir in -+ .) # We are building in place. -+ ac_srcdir=. -+ ac_top_srcdir=$ac_top_builddir_sub -+ ac_abs_top_srcdir=$ac_pwd ;; -+ [\\/]* | ?:[\\/]* ) # Absolute name. -+ ac_srcdir=$srcdir$ac_dir_suffix; -+ ac_top_srcdir=$srcdir -+ ac_abs_top_srcdir=$srcdir ;; -+ *) # Relative name. -+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix -+ ac_top_srcdir=$ac_top_build_prefix$srcdir -+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -+esac -+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix -+ -+ -+ case $ac_mode in -+ :F) -+ # -+ # CONFIG_FILE -+ # -+ -+ case $INSTALL in -+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; -+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; -+ esac -+# If the template does not know about datarootdir, expand it. -+# FIXME: This hack should be removed a few years after 2.60. -+ac_datarootdir_hack=; ac_datarootdir_seen= -+ -+case `sed -n '/datarootdir/ { -+ p -+ q -+} -+/@datadir@/p -+/@docdir@/p -+/@infodir@/p -+/@localedir@/p -+/@mandir@/p -+' $ac_file_inputs` in -+*datarootdir*) ac_datarootdir_seen=yes;; -+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) -+ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -+echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -+ ac_datarootdir_hack=' -+ s&@datadir@&/d/click/click-1.6.0-27/inst/share&g -+ s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g -+ s&@infodir@&${datarootdir}/info&g -+ s&@localedir@&${datarootdir}/locale&g -+ s&@mandir@&${datarootdir}/man&g -+ s&\${datarootdir}&/d/click/click-1.6.0-27/inst/share&g' ;; -+esac -+ sed "/^[ ]*VPATH[ ]*=/{ -+s/:*\$(srcdir):*/:/ -+s/:*\${srcdir}:*/:/ -+s/:*@srcdir@:*/:/ -+s/^\([^=]*=[ ]*\):*/\1/ -+s/:*$// -+s/^[^=]*=[ ]*$// -+} -+ -+:t -+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -+s&@configure_input@&$configure_input&;t t -+s&@top_builddir@&$ac_top_builddir_sub&;t t -+s&@srcdir@&$ac_srcdir&;t t -+s&@abs_srcdir@&$ac_abs_srcdir&;t t -+s&@top_srcdir@&$ac_top_srcdir&;t t -+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -+s&@builddir@&$ac_builddir&;t t -+s&@abs_builddir@&$ac_abs_builddir&;t t -+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -+s&@INSTALL@&$ac_INSTALL&;t t -+$ac_datarootdir_hack -+" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out -+ -+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && -+ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && -+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && -+ { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' -+which seems to be undefined. Please make sure it is defined." >&5 -+echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -+which seems to be undefined. Please make sure it is defined." >&2;} -+ -+ rm -f "$tmp/stdin" -+ case $ac_file in -+ -) cat "$tmp/out"; rm -f "$tmp/out";; -+ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; -+ esac -+ ;; -+ :H) -+ # -+ # CONFIG_HEADER -+ # -+ # First, check the format of the line: -+ cat >"$tmp/defines.sed" <<\CEOF -+/^[ ]*#[ ]*undef[ ][ ]*[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*[ ]*$/b def -+/^[ ]*#[ ]*define[ ][ ]*[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*[( ]/b def -+b -+:def -+s/$/ / -+s,^\([ #]*\)[^ ]*\([ ]*PACKAGE_NAME\)[ (].*,\1define\2 "click" , -+s,^\([ #]*\)[^ ]*\([ ]*PACKAGE_TARNAME\)[ (].*,\1define\2 "click" , -+s,^\([ #]*\)[^ ]*\([ ]*PACKAGE_VERSION\)[ (].*,\1define\2 "1.6.0" , -+s,^\([ #]*\)[^ ]*\([ ]*PACKAGE_STRING\)[ (].*,\1define\2 "click 1.6.0" , -+s,^\([ #]*\)[^ ]*\([ ]*PACKAGE_BUGREPORT\)[ (].*,\1define\2 "" , -+s,^\([ #]*\)[^ ]*\([ ]*CLICK_VERSION\)[ (].*,\1define\2 "1.6.0" , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_NEW_HDR\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*NUM_CLICK_CPUS\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_CLICKFS\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*LINUX_SRCDIR\)[ (].*,\1define\2 "/d/kernels/linux-2.6.27.10-clickport" , -+s,^\([ #]*\)[^ ]*\([ ]*FREEBSD_INCLUDEDIR\)[ (].*,\1define\2 "/usr/include" , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_STRERROR\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_SNPRINTF\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_STRTOUL\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_TCGETPGRP\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_VSNPRINTF\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*STDC_HEADERS\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_SYS_TYPES_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_SYS_STAT_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_STDLIB_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_STRING_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_MEMORY_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_STRINGS_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_INTTYPES_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_STDINT_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_UNISTD_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*SIZEOF_INT\)[ (].*,\1define\2 4 , -+s,^\([ #]*\)[^ ]*\([ ]*SIZEOF_LONG\)[ (].*,\1define\2 4 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_INTTYPES_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_INDIFFERENT_ALIGNMENT\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*SIZEOF_LONG_LONG\)[ (].*,\1define\2 8 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_LONG_LONG\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_INT64_TYPES\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_INT64_IS_LONG_LONG_USERLEVEL\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*SIZEOF_STRUCT_TIMEVAL\)[ (].*,\1define\2 8 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_STRUCT_TIMESPEC\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*SIZEOF_STRUCT_TIMESPEC\)[ (].*,\1define\2 8 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_ENDIAN_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*CLICK_BYTE_ORDER\)[ (].*,\1define\2 1234 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_BYTESWAP_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_ARITHMETIC_RIGHT_SHIFT\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_ADDRESSABLE_VA_LIST\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE___BUILTIN_CLZ\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE___BUILTIN_CLZL\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE___BUILTIN_CLZLL\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE___BUILTIN_FFS\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE___BUILTIN_FFSL\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE___BUILTIN_FFSLL\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_STRINGS_H\)[ (].*,\1define\2 1 , -+CEOF -+ sed -f "$tmp/defines.sed" $ac_file_inputs >"$tmp/out1" -+ # First, check the format of the line: -+ cat >"$tmp/defines.sed" <<\CEOF -+/^[ ]*#[ ]*undef[ ][ ]*[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*[ ]*$/b def -+/^[ ]*#[ ]*define[ ][ ]*[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*[( ]/b def -+b -+:def -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_FFS\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_FFSL\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_FFSLL\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_UNISTD_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_TERMIO_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_NETDB_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_PWD_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_GRP_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_POLL_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_SIGACTION\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_DLFCN_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_DYNAMIC_LINKING\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_ACCEPT_SOCKLEN_T\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_LARGE_FILE_SUPPORT\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*SIZEOF_OFF_T\)[ (].*,\1define\2 8 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_SYS_MMAN_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_STDLIB_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_UNISTD_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_GETPAGESIZE\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_MMAP\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_MADVISE\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_DECL_MADVISE\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_LINUXMODULE_2_6\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_CLICK_KERNEL\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_LINUX_STRLEN_EXPOSED\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_LINUX_POLLING\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*__SMP__\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_LINUX_ASM_ALTERNATIVE_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_STRIDE_SCHED\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_LINUX_IF_TUN_H\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_DECL_PCAP_SETNONBLOCK\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_PCAP\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_PCAP_SETNONBLOCK\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_USERLEVEL_DRIVER\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_EXPAT\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_INT64_IS_LONG_LONG_LINUXMODULE\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*HAVE_LINUXMODULE_DRIVER\)[ (].*,\1define\2 1 , -+s,^\([ #]*\)[^ ]*\([ ]*CLICK_BINDIR\)[ (].*,\1define\2 "/d/click/click-1.6.0-27/inst/bin" , -+s,^\([ #]*\)[^ ]*\([ ]*CLICK_LIBDIR\)[ (].*,\1define\2 "/d/click/click-1.6.0-27/inst/lib" , -+s,^\([ #]*\)[^ ]*\([ ]*CLICK_DATADIR\)[ (].*,\1define\2 "/d/click/click-1.6.0-27/inst/share/click" , -+s/ $// -+s,^[ #]*u.*,/* & */, -+CEOF -+ sed -f "$tmp/defines.sed" "$tmp/out1" >"$tmp/out2" -+ac_result="$tmp/out2" -+ if test x"$ac_file" != x-; then -+ echo "/* $configure_input */" >"$tmp/config.h" -+ cat "$ac_result" >>"$tmp/config.h" -+ if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then -+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -+echo "$as_me: $ac_file is unchanged" >&6;} -+ else -+ rm -f $ac_file -+ mv "$tmp/config.h" $ac_file -+ fi -+ else -+ echo "/* $configure_input */" -+ cat "$ac_result" -+ fi -+ rm -f "$tmp/out12" -+ ;; -+ -+ :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 -+echo "$as_me: executing $ac_file commands" >&6;} -+ ;; -+ esac -+ -+ -+ case $ac_file$ac_mode in -+ "default-1":C) for ac_file in $CONFIG_HEADERS; do -+ test $ac_file = include/click/config.h:config.h.in && echo > stamp-h -+done -+for ac_file in $CONFIG_FILES; do -+ test $ac_file = click-buildtool && chmod +x click-buildtool -+ test $ac_file = click-compile && chmod +x click-compile -+ test $ac_file = installch && chmod +x installch -+done ;; -+ -+ esac -+done # for ac_tag -+ -+ -+{ (exit 0); exit 0; } -diff -Nurb click-1.6.0/configure click-1.6.0-27/configure ---- click-1.6.0/configure 2007-09-18 16:40:11.000000000 -0400 -+++ click-1.6.0-27/configure 2009-01-27 12:14:44.000000000 -0500 -@@ -1819,6 +1819,7 @@ - ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -+set +x +v - - ac_config_headers="$ac_config_headers include/click/config.h:config.h.in include/click/pathvars.h:pathvars.h.in include/click/config-bsdmodule.h:config-bsdmodule.h.in include/click/config-linuxmodule.h:config-linuxmodule.h.in include/click/config-ns.h:config-ns.h.in include/click/config-userlevel.h:config-userlevel.h.in" - -@@ -8688,7 +8689,7 @@ - - ac_cv_endian=0 - cat > conftest.$ac_ext < - #ifdef __BYTE_ORDER -@@ -14430,8 +14431,7 @@ - SAVE_CXX="$CXX" - CXX="$KERNEL_CXX" - saveflags="$CPPFLAGS" -- CPPFLAGS="$saveflags -D__KERNEL__ -I$linuxdir/include $LINUX_CFLAGS" -- -+ CPPFLAGS="$saveflags -D__KERNEL__ -I$linuxdir/include -I$linuxdir/include/asm/mach-default $LINUX_CFLAGS" - - # CLICK_LINUXMODULE_PROLOGUE() - -diff -Nurb click-1.6.0/configure.in click-1.6.0-27/configure.in ---- click-1.6.0/configure.in 2007-09-18 16:40:01.000000000 -0400 -+++ click-1.6.0-27/configure.in 2009-01-27 12:14:10.000000000 -0500 -@@ -12,6 +12,7 @@ - dnl legally binding. - - AC_INIT(click, 1.6.0) -+set +x +v - AC_PREREQ(2.50) - AC_CONFIG_HEADER(include/click/config.h:config.h.in include/click/pathvars.h:pathvars.h.in include/click/config-bsdmodule.h:config-bsdmodule.h.in include/click/config-linuxmodule.h:config-linuxmodule.h.in include/click/config-ns.h:config-ns.h.in include/click/config-userlevel.h:config-userlevel.h.in) - -@@ -848,8 +849,7 @@ - SAVE_CXX="$CXX" - CXX="$KERNEL_CXX" - saveflags="$CPPFLAGS" -- CPPFLAGS="$saveflags -D__KERNEL__ -I$linuxdir/include $LINUX_CFLAGS" -- -+ CPPFLAGS="$saveflags -D__KERNEL__ -I$linuxdir/include -I$linuxdir/include/asm/mach-default $LINUX_CFLAGS" - - # CLICK_LINUXMODULE_PROLOGUE() - AC_DEFUN([CLICK_LINUXMODULE_PROLOGUE], [[#if HAVE_LINUXMODULE_2_6 -diff -Nurb click-1.6.0/configure.in.orig click-1.6.0-27/configure.in.orig ---- click-1.6.0/configure.in.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/configure.in.orig 2007-09-18 16:40:01.000000000 -0400 -@@ -0,0 +1,1286 @@ -+dnl -*- mode: shell-script -*- -+dnl Process this file with autoconf to produce a configure script. -+dnl -+dnl Permission is hereby granted, free of charge, to any person obtaining a -+dnl copy of this software and associated documentation files (the "Software"), -+dnl to deal in the Software without restriction, subject to the conditions -+dnl listed in the Click LICENSE file. These conditions include: you must -+dnl preserve this copyright notice, and you cannot mention the copyright -+dnl holders in advertising related to the Software without their permission. -+dnl The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+dnl notice is a summary of the Click LICENSE file; the license in that file is -+dnl legally binding. -+ -+AC_INIT(click, 1.6.0) -+AC_PREREQ(2.50) -+AC_CONFIG_HEADER(include/click/config.h:config.h.in include/click/pathvars.h:pathvars.h.in include/click/config-bsdmodule.h:config-bsdmodule.h.in include/click/config-linuxmodule.h:config-linuxmodule.h.in include/click/config-ns.h:config-ns.h.in include/click/config-userlevel.h:config-userlevel.h.in) -+ -+CLICK_VERSION=$PACKAGE_VERSION -+ -+AC_SUBST(ac_configure_args) -+AC_DEFINE_UNQUOTED(CLICK_VERSION, "$CLICK_VERSION") -+AC_SUBST(CLICK_VERSION) -+ -+CLICK_INIT('$(top_srcdir)') -+ -+dnl support for cross compiling -+AC_CANONICAL_SYSTEM -+ -+dnl This is wrong!! -+AC_CHECK_TOOL(CC, gcc) -+AC_CHECK_TOOL(CXX, g++) -+ -+CLICK_PROG_CC -+AC_PROG_CPP -+AC_C_INLINE -+ -+CLICK_PROG_CXX -+AC_PROG_CXXCPP -+ -+CLICK_PROG_KERNEL_CC -+CLICK_PROG_KERNEL_CXX -+ -+ac_preset_ar="$AR" -+AC_CHECK_TOOL(AR, ar) -+AC_CHECK_TOOL(LD, ld) -+AC_CHECK_TOOL(RANLIB, ranlib, :) -+AC_CHECK_TOOL(STRIP, strip, :) -+ -+conf_auxdir='$(top_srcdir)' -+AC_SUBST(conf_auxdir) -+ -+test -z "$AR_CREATEFLAGS" && AR_CREATEFLAGS=cru -+AC_SUBST(AR_CREATEFLAGS) -+ -+ -+dnl -+dnl check drivers to enable -+dnl -+ -+dnl userlevel driver and features -+ -+AC_ARG_ENABLE(userlevel, [ --disable-userlevel disable user-level driver], :, enable_userlevel=yes) -+ -+AC_ARG_ENABLE(user-multithread, [[ --enable-user-multithread support userlevel multithreading (EXPERIMENTAL)]], :, [enable_user_multithread=no]) -+if test "x$enable_user_multithread" = xyes; then -+ AC_DEFINE(HAVE_USER_MULTITHREAD) -+fi -+ -+ -+dnl linuxmodule driver and features -+ -+AC_ARG_ENABLE(linuxmodule, [ --disable-linuxmodule disable Linux kernel driver], :, [enable_linuxmodule=yes; enable_linuxmodule_default=yes]) -+ -+AC_ARG_ENABLE(multithread, -+ [[ --enable-multithread[=N] support kernel multithreading, N threads max]], -+ :, enable_multithread=no) -+ -+test "$enable_multithread" = yes && enable_multithread=4 -+test "$enable_multithread" = no && enable_multithread=1 -+if test "$enable_multithread" -gt 1; then -+ AC_DEFINE_UNQUOTED(NUM_CLICK_CPUS, $enable_multithread) -+ AC_DEFINE_UNQUOTED(__MTCLICK__, 1) -+ saveflags="$CPPFLAGS" -+ CPPFLAGS="$saveflags -D__MTCLICK__" -+else -+ AC_DEFINE_UNQUOTED(NUM_CLICK_CPUS, 1) -+fi -+ -+AC_ARG_ENABLE(warp9, [[ --enable-warp9 reduce PollDevice functionality for speed]], :, enable_warp9=no) -+if test "x$enable_warp9" = xyes; then -+ AC_DEFINE(CLICK_WARP9) -+fi -+ -+AC_DEFINE(HAVE_CLICKFS) -+ -+AC_ARG_ENABLE(kassert, [[ --enable-kassert enable kernel assertions]], :, enable_kassert=no) -+if test $enable_kassert = yes; then -+ AC_DEFINE(HAVE_KERNEL_ASSERT) -+fi -+ -+AC_ARG_ENABLE(adaptive, [[ --enable-adaptive use adaptive scheduler to flexibly arbitrate -+ between Click and the kernel (EXPERIMENTAL)]], :, enable_adaptive=no) -+if test "x$enable_adaptive" = xyes; then -+ AC_DEFINE(HAVE_ADAPTIVE_SCHEDULER) -+fi -+ -+ -+ -+dnl bsdmodule driver and features -+ -+AC_ARG_ENABLE(bsdmodule, [ --enable-bsdmodule enable FreeBSD kernel driver (EXPERIMENTAL)], :, enable_bsdmodule=no) -+ -+dnl nsclick driver and features -+ -+AC_ARG_ENABLE(nsclick, [ --enable-nsclick enable NS simulator driver (EXPERIMENTAL)], :, enable_nsclick=no) -+ -+ -+dnl -+dnl How to build linuxmodule driver? -+dnl -+ -+AC_ARG_WITH(linux, [[ --with-linux[=DIR] Linux source code is in DIR]], -+ [linuxdir=$withval], [linuxdir=NONE]) -+test -z "$linuxdir" -o "$linuxdir" = yes && linuxdir=yes -+ -+AC_ARG_WITH(linux-map, [[ --with-linux-map[=FILE] filename for Linux System.map [LINUXDIR/System.map]]], -+ [linux_system_map=$withval; if test -z "$withval" -o "$withval" = yes; then linux_system_map=NONE; fi], -+ linux_system_map=NONE) -+ -+linux_system_map_boot=no -+ -+if test "x$linuxdir" = xNONE -o "x$linuxdir" = xyes; then -+ if uname -r 2>/dev/null | grep '^2\.6' >/dev/null 2>&1; then -+ linuxdir=/lib/modules/"`uname -r`"/build -+ linux_system_map_boot="`uname -r`" -+ else -+ linuxdir=/usr/src/linux -+ fi -+ if test ! -d "$linuxdir" -a "x$enable_linuxmodule" = xyes; then -+ if test "x$enable_linuxmodule_default" = xyes; then -+ linuxdir=NONE; enable_linuxmodule=no -+ else -+ AC_MSG_ERROR([ -+========================================= -+ -+Can't find $linuxdir, so I can't compile the linuxmodule driver! -+(You may need the --with-linux=DIR option.) -+ -+=========================================]) -+ fi -+ fi -+fi -+ -+if test "x$linuxdir" = xNONE -o "x$linuxdir" = xno -o "x$enable_linuxmodule" != xyes; then -+ ac_have_linux_kernel=n -+ linuxdir=NONE -+elif expr "_$linuxdir" : '_[[^/\\]]' >/dev/null; then -+ AC_MSG_ERROR([ -+========================================= -+ -+The --with-linux directory $linuxdir is relative. -+You must supply an absolute path starting with /. -+ -+=========================================]) -+elif test -r $linuxdir/include/linux/skbuff.h; then -+ ac_have_linux_kernel=y -+else -+ AC_MSG_ERROR([ -+========================================= -+ -+Can't find $linuxdir/include/linux/skbuff.h. -+Are you sure $linuxdir contains Linux kernel source? -+ -+=========================================]) -+fi -+AC_SUBST(linuxdir) -+AC_DEFINE_UNQUOTED(LINUX_SRCDIR, "${linuxdir}") -+ -+ -+ -+dnl -+dnl element collections -+dnl -+ -+AC_ARG_ENABLE(all-elements, [ --enable-all-elements include all provided element groups]) -+ -+dnl ELEMENTS_ARG_ENABLE(COLLECTION, HELP-STRING, DEFAULT-VALUE) -+element_groups="" -+AC_SUBST(element_groups) -+AC_DEFUN([ELEMENTS_ARG_ENABLE], -+[AC_ARG_ENABLE($1, [ --]builtin(substr, builtin(ifelse, [$3], yes, dis, en)[able-$1 ], 0, 21)[ ]builtin(ifelse, [$3], yes, [do not ], [])[$2], , -+[enable_]patsubst([$1], -, _)=$3)dnl -+test "x$enable_all_elements" = xyes -a ["x$enable_]patsubst([$1], -, _)["] = xNO && [enable_]patsubst([$1], -, _)[=yes] -+if test ["x$enable_]patsubst([$1], -, _)["] = xyes; then -+ : -+ $4 -+fi]) -+ -+ELEMENTS_ARG_ENABLE(analysis, [include elements for network analysis], NO) -+ELEMENTS_ARG_ENABLE(app, [include application-level elements], yes) -+ELEMENTS_ARG_ENABLE(aqm, [include active queue management elements], yes) -+ELEMENTS_ARG_ENABLE(ethernet, [include Ethernet elements], yes) -+ELEMENTS_ARG_ENABLE(etherswitch, [include Ethernet switch elements (EXPERIMENTAL)], NO) -+ELEMENTS_ARG_ENABLE(grid, [include Grid elements (see FAQ)], NO) -+ELEMENTS_ARG_ENABLE(icmp, [include ICMP elements], yes) -+ELEMENTS_ARG_ENABLE(ip, [include IP elements], yes) -+ELEMENTS_ARG_ENABLE(ip6, [include IPv6 elements (EXPERIMENTAL)], NO, AC_DEFINE(HAVE_IP6)) -+ELEMENTS_ARG_ENABLE(ipsec, [include IP security elements], NO, AC_DEFINE(HAVE_IPSEC)) -+ELEMENTS_ARG_ENABLE(local, [include local elements], NO) -+ELEMENTS_ARG_ENABLE(radio, [include radio elements (EXPERIMENTAL)], NO) -+ELEMENTS_ARG_ENABLE(simple, [include simple versions of other elements], NO) -+dnl ELEMENTS_ARG_ENABLE(snmp, [include SNMP elements], NO) -+ELEMENTS_ARG_ENABLE(standard, [include standard elements], yes) -+ELEMENTS_ARG_ENABLE(tcpudp, [include TCP and UDP elements], yes) -+ELEMENTS_ARG_ENABLE(test, [include regression test elements], NO) -+ELEMENTS_ARG_ENABLE(wifi, [include wifi elements and support], NO) -+AC_ARG_ENABLE(experimental, [ --enable-experimental enable experimental elements in normal groups], :, enable_experimental=no) -+ -+for i in `(cd $srcdir/elements; ls | sed '/^CVS$/d;/^bsdmodule$/d;/^exopc$/d;/^linuxmodule$/d;/^ns$/d;/^userlevel$/d')`; do -+ enableval=`eval 'echo $'"enable_$i"` -+ test "x$enable_all_elements" = xyes -a "x$enableval" '!=' 'no' && enableval=yes -+ test -d "$srcdir/elements/$i" -a "$enableval" = "yes" && element_groups="$element_groups $i" -+done -+ -+ -+ -+dnl -+dnl How to build bsdmodule driver? -+dnl -+ -+AC_ARG_WITH(freebsd, [[ --with-freebsd[=SRC,INC] FreeBSD source code is in SRC [/usr/src/sys], -+ include directory is INC [/usr/include]]], -+ [freebsddir=$withval; if test -z "$withval" -o "$withval" = yes; then freebsddir=/usr/src/sys,/usr/include; fi], -+ freebsddir=NONE) -+ -+if test "x$freebsddir" = xNONE; then -+ if test -d /usr/src/sys -a -d /usr/include; then -+ freebsddir=/usr/src/sys,/usr/include -+ elif test "x$enable_bsdmodule" = xyes; then -+ AC_MSG_WARN([ -+========================================= -+ -+Can't find /usr/src/sys and/or /usr/include, so I'm not compiling -+the bsdmodule driver. (You may need the --with-freebsd=DIR option.) -+ -+=========================================]) -+ fi -+fi -+ -+freebsd_srcdir=`echo "$freebsddir," | sed -e 's/,.*//'` -+freebsd_includedir=`echo "$freebsddir,/usr/include," | sed -e 's/^[[^,]]*,\([[^,]]*\),.*$/\1/'` -+ -+if test "x$freebsddir" = xNONE -o "x$freebsddir" = xno -o "x$enable_bsdmodule" != xyes; then -+ ac_have_bsd_kernel=n -+ freebsddir=NONE -+elif expr '(' "_$freebsd_includedir" : '_[[^/\\]]' ')' '|' '(' "_$freebsd_srcdir" : '_[[^/\\]]' ')'; then -+ AC_MSG_ERROR([ -+========================================= -+ -+The --with-freebsd directories $freebsd_srcdir,$freebsd_includedir -+are relative. You must supply absolute paths starting with /. -+ -+=========================================]) -+elif test -r $freebsd_includedir/net/if_var.h -a -r $freebsd_srcdir/kern/vnode_if.src; then -+ ac_have_bsd_kernel=y -+else -+ AC_MSG_ERROR([ -+========================================= -+ -+Can't find $freebsd_includedir/net/if_var.h and/or -+$freebsd_srcdir/kern/vnode_if.src. Are you sure $freebsd_srcdir -+and $freebsd_includedir contain FreeBSD kernel source? -+ -+=========================================]) -+fi -+ -+AC_SUBST(freebsd_srcdir) -+AC_SUBST(freebsd_includedir) -+AC_DEFINE_UNQUOTED(FREEBSD_INCLUDEDIR, "${freebsd_includedir}") -+ -+ -+dnl -+dnl check whether target is Linux -+dnl -+ -+AC_CACHE_CHECK([whether we are compiling for Linux], [ac_cv_under_linux], -+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[#ifndef __linux__ -+#error "fuckers! fuckers!" -+#endif -+return 0;]])], ac_cv_under_linux=yes, ac_cv_under_linux=no)]) -+ -+ -+dnl -+dnl functions -+dnl -+ -+AC_LANG_C -+AC_REPLACE_FUNCS(strerror) -+AC_CHECK_FUNCS(snprintf strtoul tcgetpgrp vsnprintf) -+AC_LANG_CPLUSPLUS -+ -+ -+dnl -+dnl integer types, endianness, int64, addressable va_list -+dnl -+ -+AC_ARG_ENABLE(int64, [ --disable-int64 disable 64-bit integer support], :, enable_int64=yes) -+ -+AC_CHECK_SIZEOF(int) -+AC_CHECK_SIZEOF(long) -+CLICK_CHECK_INTEGER_TYPES -+CLICK_CHECK_ALIGNMENT -+if test "x$enable_int64" = xyes; then -+ AC_CHECK_SIZEOF(long long) -+ CLICK_CHECK_INT64_TYPES -+fi -+AC_CHECK_SIZEOF([struct timeval]) -+AC_CHECK_TYPES([struct timespec], have_timespec=yes, have_timespec=no) -+if test "x$have_timespec" = xyes; then -+ AC_CHECK_SIZEOF([struct timespec]) -+fi -+CLICK_CHECK_ENDIAN -+CLICK_CHECK_SIGNED_SHIFT -+CLICK_CHECK_ADDRESSABLE_VA_LIST -+CLICK_CHECK_INTEGER_BUILTINS -+ -+ -+dnl -+dnl nanosecond-precision timestamps -+dnl -+ -+AC_ARG_ENABLE(nanotimestamp, [ --enable-nanotimestamp enable nanosecond timestamps]) -+if test "x$enable_nanotimestamp" = xyes; then -+ AC_DEFINE(HAVE_NANOTIMESTAMP_ENABLED) -+fi -+ -+ -+dnl -+dnl check whether tools should be built for host or build -+dnl -+ -+AC_ARG_ENABLE(tools, -+ [[ --enable-tools=WHERE enable tools (host/build/mixed/no) [mixed]]], -+ :, enable_tools=mixed) -+ -+if test "$enable_tools" != mixed -a "$enable_tools" != host -a "$enable_tools" != build -a "$enable_tools" != no; then -+ AC_MSG_ERROR([ -+========================================= -+ -+Bad value for --enable-tools. Try 'host', 'build', 'mixed', or 'no'. -+ -+=========================================]) -+elif test "$enable_tools" = no; then -+ HOST_TOOLS=host -+elif test "$cross_compiling" = no -o "$enable_tools" = host; then -+ HOST_TOOLS=host -+else -+ dnl This is wrong!! Should at least check that HOST_CC and HOST_CXX work. -+ AC_CHECK_PROGS(BUILD_CC, gcc) -+ AC_CHECK_PROGS(BUILD_CXX, g++) -+ CLICK_PROG_BUILD_CXX -+ AC_CHECK_PROGS(BUILD_AR, ar) -+ AC_CHECK_PROGS(BUILD_RANLIB, ranlib, :) -+ HOST_TOOLS=$enable_tools -+fi -+AC_SUBST(HOST_TOOLS) -+ -+ -+dnl -+dnl headers, event detection, dynamic linking -+dnl -+ -+AC_CHECK_HEADERS(unistd.h termio.h netdb.h sys/event.h pwd.h grp.h) -+CLICK_CHECK_POLL_H -+AC_CHECK_FUNCS(sigaction) -+ -+AC_CHECK_FUNCS(kqueue, have_kqueue=yes) -+if test "x$have_kqueue" = xyes; then -+ AC_CACHE_CHECK([whether EV_SET last argument is void *], [ac_cv_ev_set_udata_pointer], -+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include -+#include -+#include ]], [[struct kevent kev; EV_SET(&kev, 1, EVFILT_WRITE, EV_ADD, 0, 0, (void *) &kev);]])], [ac_cv_ev_set_udata_pointer=yes], [ac_cv_ev_set_udata_pointer=no])]) -+ if test $ac_cv_ev_set_udata_pointer = yes; then -+ AC_DEFINE([HAVE_EV_SET_UDATA_POINTER], [1], [Define if the last argument to EV_SET has pointer type.]) -+ fi -+fi -+ -+AC_ARG_ENABLE(dynamic-linking, [ --disable-dynamic-linking disable dynamic linking], :, enable_dynamic_linking=yes) -+ -+if test "x$enable_dynamic_linking" = xyes; then -+ CLICK_CHECK_DYNAMIC_LINKING -+ if test "$HOST_TOOLS" != host -a "$enable_tools" != no; then -+ CLICK_CHECK_BUILD_DYNAMIC_LINKING -+ fi -+fi -+ -+ -+dnl -+dnl sockets -+dnl -+ -+AC_LANG_C -+SOCKET_LIBS= -+if test "$enable_userlevel" = yes; then -+ savelibs="$LIBS"; LIBS= -+ AC_SEARCH_LIBS(gethostbyname, nsl, , , $savelibs) -+ AC_SEARCH_LIBS(connect, socket, , , $savelibs) -+ SOCKET_LIBS="$LIBS"; LIBS="$savelibs" -+ -+ AC_CACHE_CHECK([whether accept() uses socklen_t], [ac_cv_accept_socklen_t], -+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include -+#include -+]], [[socklen_t sl; (void) accept(0, (struct sockaddr *) 0, &sl);]])], -+ ac_cv_accept_socklen_t=yes, ac_cv_accept_socklen_t=no)]) -+ if test "$ac_cv_accept_socklen_t" = yes; then -+ AC_DEFINE([HAVE_ACCEPT_SOCKLEN_T], [1], [Define if accept() uses socklen_t.]) -+ fi -+fi -+AC_SUBST(SOCKET_LIBS) -+AC_LANG_CPLUSPLUS -+ -+ -+dnl -+dnl large file support -+dnl -+ -+CLICK_CHECK_LARGE_FILE_SUPPORT -+ -+ -+dnl -+dnl mmap -+dnl -+ -+AC_LANG_C -+AC_CHECK_HEADERS(sys/mman.h) -+AC_FUNC_MMAP -+AC_LANG_CPLUSPLUS -+AC_CHECK_FUNCS(madvise) -+AC_CHECK_DECLS(madvise, [], [], [#if HAVE_SYS_MMAN_H -+#include -+#include -+#endif]) -+ -+ -+dnl -+dnl objects required by element collections -+dnl -+ -+EXTRA_DRIVER_OBJS= -+EXTRA_TOOL_OBJS= -+if test "x$enable_ip6" = xyes; then -+ EXTRA_DRIVER_OBJS="ip6address.o ip6flowid.o ip6table.o $EXTRA_DRIVER_OBJS" -+ EXTRA_TOOL_OBJS="ip6address.o $EXTRA_TOOL_OBJS" -+fi -+AC_SUBST(EXTRA_DRIVER_OBJS) -+AC_SUBST(EXTRA_TOOL_OBJS) -+ -+ -+dnl -+dnl stuff in the linux kernel -+dnl -+ -+if test $ac_have_linux_kernel = y; then -+ -+dnl Look for System.map -+ -+if test "$linux_system_map" = NONE; then -+ linux_system_map=$linuxdir/System.map -+ if test "x$linux_system_map_boot" != xno -a ! -f "$linux_system_map"; then -+ linux_system_map=/boot/System.map-"$linux_system_map_boot" -+ fi -+fi -+ -+if test ! -f "$linux_system_map"; then -+ if test "x$enable_linuxmodule_default" = xyes; then -+ AC_MSG_WARN([ -+========================================= -+ -+Can't find Linux System.map file '$linux_system_map', -+so I won't compile the linuxmodule driver. -+(You may need the --with-linux=DIR and/or --with-linux-map=MAP options.) -+ -+=========================================]) -+ ac_have_linux_kernel=no -+ else -+ AC_MSG_ERROR([ -+========================================= -+ -+Can't find Linux System.map file '$linux_system_map'. -+(You may need the --with-linux=DIR and/or --with-linux-map=MAP options.) -+ -+=========================================]) -+ fi -+fi -+ -+fi -+ -+dnl Check for Linux 2.6 -+ -+if test $ac_have_linux_kernel = y; then -+ -+AC_CACHE_CHECK([for Linux 2.6], [ac_cv_linux26], -+ [if grep '^PATCHLEVEL[ ]*=[ ]*6' $linuxdir/Makefile >/dev/null 2>&1; then ac_cv_linux26=1; else ac_cv_linux26=0; fi]) -+LINUXMODULE_2_6=$ac_cv_linux26 -+AC_SUBST(LINUXMODULE_2_6) -+if test $LINUXMODULE_2_6 = 1; then -+ AC_DEFINE([HAVE_LINUXMODULE_2_6], [1], [Define if the Click linuxmodule is compiled for a 2.6 kernel.]) -+fi -+ -+AC_CACHE_CHECK(for Click Linux kernel extensions, ac_cv_click_kernel, -+[if grep register_net_in $linux_system_map >/dev/null 2>&1; then -+ ac_cv_click_kernel=yes -+else ac_cv_click_kernel=no; fi]) -+if test $ac_cv_click_kernel = yes; then -+ AC_DEFINE(HAVE_CLICK_KERNEL) -+fi -+ -+AC_CACHE_CHECK(for Click Linux kernel extensions for transmit notification, ac_cv_click_kernel_tx_notify, -+[if grep register_net_tx $linux_system_map >/dev/null 2>&1; then -+ ac_cv_click_kernel_tx_notify=yes -+else ac_cv_click_kernel_tx_notify=no; fi]) -+if test $ac_cv_click_kernel_tx_notify = yes; then -+ AC_DEFINE(HAVE_CLICK_KERNEL_TX_NOTIFY) -+fi -+ -+AC_CACHE_CHECK(for read_net_skbcount kernel extension, ac_cv_linux_read_net_skbcount, -+[if grep read_net_skbcount $linux_system_map >/dev/null 2>&1; then -+ ac_cv_linux_read_net_skbcount=yes -+else ac_cv_linux_read_net_skbcount=no; fi]) -+if test $ac_cv_linux_read_net_skbcount = yes; then -+ AC_DEFINE(HAVE_LINUX_READ_NET_SKBCOUNT) -+fi -+ -+AC_CACHE_CHECK(for strlen kernel symbol, ac_cv_linux_strlen_exposed, -+[if grep ' strlen' $linux_system_map >/dev/null 2>&1; then -+ ac_cv_linux_strlen_exposed=yes -+else ac_cv_linux_strlen_exposed=no; fi]) -+if test $ac_cv_linux_strlen_exposed = yes; then -+ AC_DEFINE(HAVE_LINUX_STRLEN_EXPOSED) -+fi -+ -+AC_CACHE_CHECK(for tulip_interrupt_hook kernel symbol, ac_cv_linux_tulip_intr_hook, -+[if grep ' tulip_interrupt_hook' $linux_system_map >/dev/null 2>&1; then -+ ac_cv_linux_tulip_intr_hook=yes -+else ac_cv_linux_tulip_intr_hook=no; fi]) -+if test $ac_cv_linux_tulip_intr_hook = yes; then -+ AC_DEFINE(HAVE_LINUX_TULIP_INTERRUPT_HOOK) -+fi -+ -+AC_CACHE_CHECK(for device polling kernel extension, ac_cv_linux_poll_extension, -+[if grep polling $linuxdir/include/linux/netdevice.h >/dev/null 2>&1; then -+ ac_cv_linux_poll_extension=yes -+else ac_cv_linux_poll_extension=no; fi]) -+if test $ac_cv_linux_poll_extension = yes; then -+ AC_DEFINE(HAVE_LINUX_POLLING) -+fi -+ -+AC_CACHE_CHECK(for atomic_set_mask, ac_cv_linux_atomic_set_mask, -+[if grep atomic_set_mask $linuxdir/include/asm/atomic.h >/dev/null 2>&1; then -+ ac_cv_linux_atomic_set_mask=yes -+else ac_cv_linux_atomic_set_mask=no; fi]) -+if test $ac_cv_linux_atomic_set_mask = yes; then -+ AC_DEFINE(HAVE_LINUX_ATOMIC_SET_MASK) -+fi -+ -+AC_CACHE_CHECK(for SMP, ac_cv_smp, -+[if grep "#define CONFIG_SMP 1" $linuxdir/include/linux/autoconf.h >/dev/null 2>&1; then -+ ac_cv_smp=yes -+else ac_cv_smp=no; fi]) -+if test $ac_cv_smp = yes; then -+ AC_DEFINE(__SMP__) -+ KERNEL_CXX="$KERNEL_CXX -D__SMP__" -+fi -+ -+AC_CACHE_CHECK(for , ac_cv_linux_asm_alternative_h, -+[if test -r $linuxdir/include/asm/alternative.h >/dev/null 2>&1; then -+ ac_cv_linux_asm_alternative_h=yes -+else ac_cv_linux_asm_alternative_h=no; fi]) -+if test $ac_cv_linux_asm_alternative_h = yes; then -+ AC_DEFINE(HAVE_LINUX_ASM_ALTERNATIVE_H) -+fi -+ -+fi -+ -+ -+dnl -+dnl stuff in the bsd kernel -+dnl -+ -+if test $ac_have_bsd_kernel = y; then -+ KERNEL_CXX="$KERNEL_CXX -fpermissive" -+ AC_CACHE_CHECK(FreeBSD version, ac_cv_freebsd_version, [ -+ save_flags="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS -I$freebsd_includedir" -+ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include -+#if __FreeBSD_version < 500000 -+#include -+#endif]])], ac_cv_freebsd_version=yes, ac_cv_freebsd_version=no) -+ CPPFLAGS="$save_flags"]) -+ if test $ac_cv_freebsd_version = yes; then -+ AC_DEFINE(HAVE_CLICK_BSD_KERNEL) -+ AC_DEFINE(HAVE_BSD_POLLING) -+ else -+ AC_MSG_WARN([ -+========================================= -+ -+Your version of FreeBSD is old. Click works with FreeBSD 5.x and later. -+ -+=========================================]) -+ fi -+fi -+ -+ -+dnl -+dnl type of scheduling -+dnl -+ -+AC_ARG_ENABLE(stride, [ --disable-stride disable stride scheduler], :, enable_stride=yes) -+if test $enable_stride = yes; then -+ AC_DEFINE(HAVE_STRIDE_SCHED) -+fi -+ -+AC_ARG_ENABLE(task-heap, [ --enable-task-heap use heap for task list], :, enable_task_heap=no) -+if test $enable_task_heap = yes; then -+ AC_DEFINE(HAVE_TASK_HEAP) -+fi -+ -+ -+dnl -+dnl debugging malloc -+dnl -+ -+AC_ARG_ENABLE(dmalloc, [ --enable-dmalloc enable debugging malloc], :, enable_dmalloc=no) -+if test $enable_dmalloc = yes; then -+ AC_DEFINE(CLICK_DMALLOC) -+fi -+ -+ -+dnl -+dnl use Intel-specific machine instructions -+dnl -+ -+AC_ARG_ENABLE(intel-cpu, [ --enable-intel-cpu enable Intel-specific machine instructions], :, enable_intel_cpu=no) -+if test $enable_intel_cpu = yes; then -+ AC_DEFINE(HAVE_INTEL_CPU) -+fi -+ -+ -+dnl -+dnl kernel interfaces -+dnl -+ -+AC_CHECK_HEADERS(linux/if_tun.h net/if_tun.h net/if_tap.h net/bpf.h) -+ -+ -+dnl -+dnl possible drivers -+dnl -+ -+POSSIBLE_DRIVERS= -+for i in bsdmodule exopc linuxmodule ns userlevel; do -+ test -f $srcdir/$i/Makefile.in && POSSIBLE_DRIVERS="$POSSIBLE_DRIVERS $i" -+done -+AC_SUBST(POSSIBLE_DRIVERS) -+ -+ -+dnl -+dnl default drivers -+dnl -+ -+DRIVERS= -+AC_SUBST(DRIVERS) -+ -+HAVE_USERLEVEL_DRIVER=0 -+AC_SUBST(HAVE_USERLEVEL_DRIVER) -+HAVE_LINUXMODULE_DRIVER=0 -+AC_SUBST(HAVE_LINUXMODULE_DRIVER) -+HAVE_BSDMODULE_DRIVER=0 -+AC_SUBST(HAVE_BSDMODULE_DRIVER) -+ -+OTHER_TARGETS= -+AC_SUBST(OTHER_TARGETS) -+ -+for i in click-align click-check click-combine click-devirtualize click-fastclassifier click-flatten click-ipopt click-mkmindriver click-pretty click-undead click-xform click2xml; do -+ test -d $srcdir/tools/$i && \ -+ TOOLDIRS="$TOOLDIRS $i" TOOL_TARGETS="$TOOL_TARGETS $i" -+done -+for i in click-install; do -+ test -d $srcdir/tools/$i && TOOLDIRS="$TOOLDIRS $i" -+done -+AC_SUBST(TOOLDIRS) -+AC_SUBST(TOOL_TARGETS) -+ -+ -+dnl pcap library -+dnl note: no longer need pcap under Linux -+ -+if test "$enable_userlevel" = yes; then -+ CLICK_CHECK_LIBPCAP -+ if test "$HAVE_PCAP" != yes -a "$ac_cv_under_linux" != yes; then -+ AC_MSG_WARN([ -+========================================= -+ -+pcap.h and/or -lpcap not found; user-level driver can't steal packets. -+ -+=========================================]) -+ fi -+ DRIVERS="$DRIVERS userlevel" -+ AC_DEFINE(HAVE_USERLEVEL_DRIVER) -+ HAVE_USERLEVEL_DRIVER=1 -+fi -+ -+ -+dnl other user-level specifics -+ -+AC_CACHE_CHECK([whether struct if_data has ifi_datalen], [ac_cv_if_data_ifi_datalen], -+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include -+#include -+]], [[struct if_msghdr ifm; ifm.ifm_data.ifi_datalen = 0;]])], ac_cv_if_data_ifi_datalen=yes, ac_cv_if_data_ifi_datalen=no)]) -+if test "x$ac_cv_if_data_ifi_datalen" = xyes; then -+ AC_DEFINE([HAVE_IF_DATA_IFI_DATALEN], [1], [Define if 'struct if_data' has an 'ifi_datalen' member.]) -+fi -+ -+AC_CACHE_CHECK([whether struct sockaddr_in has sin_len], [ac_cv_sockaddr_in_sin_len], -+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include -+#include -+]], [[struct sockaddr_in sin; sin.sin_len = 0;]])], ac_cv_sockaddr_in_sin_len=yes, ac_cv_sockaddr_in_sin_len=no)]) -+if test "x$ac_cv_sockaddr_in_sin_len" = xyes; then -+ AC_DEFINE([HAVE_SOCKADDR_IN_SIN_LEN], [1], [Define if 'struct sockaddr_in' has a 'sin_len' member.]) -+fi -+ -+ -+dnl PlanetLab "Privileged Operations" library -+ -+explicit_proper=yes -+AC_ARG_WITH(proper, [[ --with-proper[=PREFIX] use PlanetLab Proper library (optional)]], -+ [properprefix=$withval; if test -z "$withval" -o "$withval" = yes; then properprefix=; fi], -+ [properprefix=no; explicit_proper=no]) -+if test "$properprefix" != no; then -+ dnl Proper requires libcurl -+ dnl AC_CHECK_HEADER(curl/curl.h, have_curl_h=yes, have_curl_h=no) -+ dnl AC_CHECK_LIB(curl, curl_easy_init) -+ -+ saveflags="$CPPFLAGS"; test -n "$properprefix" && CPPFLAGS="$CPPFLAGS -I$properprefix/include" -+ AC_CHECK_HEADER(prop.h, have_prop_h=yes, have_prop_h=no) -+ CPPFLAGS="$saveflags" -+ -+ AC_LANG_C -+ saveflags="$LDFLAGS"; test -n "$properprefix" && LDFLAGS="$LDFLAGS -L$properprefix/lib" -+ AC_CHECK_LIB(proper, prop_open, have_libproper=yes, have_libproper=no) -+ LDFLAGS="$saveflags" -+ AC_LANG_CPLUSPLUS -+ -+ if test $have_prop_h = yes -a $have_libproper = yes; then -+ AC_DEFINE(HAVE_PROPER) -+ test -n "$properprefix" && PROPER_INCLUDES="-I$properprefix/include" && PROPER_LIBS="-L$properprefix/lib" -+ PROPER_LIBS="$PROPER_LIBS -lproper" -+ elif test $explicit_proper = yes; then -+ PROPER_INCLUDES= PROPER_LIBS= -+ AC_MSG_ERROR([ -+========================================= -+ -+You explicitly specified --with-proper, but I can't find the proper headers -+and/or libraries where you said they would be. Run again supplying -+--without-proper or --with-proper=PREFIX. -+ -+=========================================]) -+ fi -+fi -+AC_SUBST(PROPER_INCLUDES) -+AC_SUBST(PROPER_LIBS) -+ -+ -+dnl expat library -+ -+explicit_expat=yes -+AC_ARG_WITH(expat, [[ --with-expat[=PREFIX] locate expat XML library (optional)]], -+ [expatprefix=$withval; if test -z "$withval" -o "$withval" = yes; then expatprefix=; fi], -+ expatprefix=; explicit_expat=no) -+ -+XML2CLICK= -+if test "$expatprefix" != no; then -+ saveflags="$CPPFLAGS"; test -n "$expatprefix" && CPPFLAGS="$CPPFLAGS -I$expatprefix/include" -+ AC_CHECK_HEADER(expat.h, have_expat_h=yes, have_expat_h=no) -+ CPPFLAGS="$saveflags" -+ -+ AC_LANG_C -+ saveflags="$LDFLAGS"; test -n "$expatprefix" && LDFLAGS="$LDFLAGS -L$expatprefix/lib" -+ AC_CHECK_LIB(expat, XML_ParserCreateNS, have_libexpat=yes, have_libexpat=no) -+ LDFLAGS="$saveflags" -+ -+ if test $have_expat_h = yes -a $have_libexpat = yes; then -+ AC_DEFINE(HAVE_EXPAT) -+ XML2CLICK=xml2click -+ test -n "$expatprefix" && EXPAT_INCLUDES="-I$expatprefix/include" && EXPAT_LIBS="-L$expatprefix/lib" -+ EXPAT_LIBS="$EXPAT_LIBS -lexpat" -+ elif test $explicit_expat = yes; then -+ EXPAT_INCLUDES= EXPAT_LIBS= -+ AC_MSG_ERROR([ -+========================================= -+ -+You explicitly specified --with-expat, but I can't find the expat headers -+and/or libraries where you said they would be. Run again supplying -+--without-expat or --with-expat=PREFIX. -+ -+=========================================]) -+ fi -+fi -+AC_SUBST(XML2CLICK) -+AC_SUBST(EXPAT_INCLUDES) -+AC_SUBST(EXPAT_LIBS) -+ -+ -+dnl check linuxmodule for Linux -+ -+if test $ac_have_linux_kernel = y; then -+ -+ dnl check for Linux 2.6 #includes -+ if test $LINUXMODULE_2_6 = 1; then -+ AC_MSG_CHECKING([for Linux 2.6 compilation flags]) -+ echo "include $linuxdir/Makefile -+fwablongie: -+ @echo \$(CFLAGS)" >conftest.mk -+ make -C "${linuxdir}" M="`pwd`" -f "`pwd`/conftest.mk" --no-print-directory fwablongie >conftest.dat -+ if test $? != 0; then -+ AC_MSG_RESULT([not found]) -+ AC_MSG_ERROR([ -+============================================== -+ -+Can't find Linux 2.6 compilation flags. -+ -+==============================================]) -+ fi -+ LINUX_CFLAGS="`sed -e s,-Iinclude,-I$linuxdir/include,g \ -+ -e 's,-W[^ ]*,,g' \ -+ -e 's,-Wno-pointer-sign,,g' \ -+ -e s,-fno-unit-at-a-time,,g \ -+ -e s,-Wstrict-prototypes,,g \ -+ -e s,-Wdeclaration-after-statement,,g \ -+ -e s,-fno-common,,g ]]) -+ -+ -+ AC_CACHE_CHECK([for C++-includable kernel header files], [ac_cv_cxx_aware_system], -+ [AC_LANG_CPLUSPLUS -+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([CLICK_LINUXMODULE_PROLOGUE()[ -+#include ]], [[return 0]])], ac_cv_cxx_aware_system=yes, ac_cv_cxx_aware_system=no) -+ ]) -+ -+ -+ dnl check whether -fpermissive is required -+ if test $ac_cv_cxx_aware_system = yes; then -+ -+ AC_CACHE_CHECK([whether -fpermissive is required], [ac_cv_f_permissive], -+ [AC_LANG_CPLUSPLUS -+ AC_LINK_IFELSE([AC_LANG_PROGRAM([CLICK_LINUXMODULE_PROLOGUE()[ -+#include ]], [[]])], ac_cv_f_permissive=no, ac_cv_f_permissive=yes)]) -+ -+ if test $ac_cv_f_permissive = yes; then -+ CXX="$KERNEL_CXX -fpermissive" -+ AC_CACHE_CHECK([whether -fpermissive is allowed], [ac_cv_f_permissive_ok], -+ [AC_LANG_CPLUSPLUS -+ AC_LINK_IFELSE([AC_LANG_PROGRAM([CLICK_LINUXMODULE_PROLOGUE()[ -+#include ]], [[]])], ac_cv_f_permissive_ok=yes, ac_cv_f_permissive_ok=no)]) -+ -+ if test $ac_cv_f_permissive_ok = no; then -+ ac_cv_cxx_aware_system=no -+ else -+ KERNEL_CXX="$KERNEL_CXX -fpermissive" -+ fi -+ fi -+ fi -+ -+ -+ AC_CACHE_CHECK([whether long and int64_t are the same type in the Linux kernel], -+ ac_cv_long_64_linuxmodule, [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([CLICK_LINUXMODULE_PROLOGUE()[ -+#include -+void f1(long) { -+} -+void f1(int64_t) { // will fail if long and int64_t are the same type -+}]], [[]])], ac_cv_long_64_linuxmodule=no, ac_cv_long_64_linuxmodule=yes)]) -+ if test $ac_cv_long_64_linuxmodule = yes; then -+ AC_DEFINE([HAVE_INT64_IS_LONG_LINUXMODULE], [1], [Define if 'int64_t' is typedefed to 'long' in linuxmodule.]) -+ fi -+ -+ -+ AC_CACHE_CHECK([whether long long and int64_t are the same type in the Linux kernel], -+ ac_cv_long_long_64_linuxmodule, [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([CLICK_LINUXMODULE_PROLOGUE()[ -+#include -+void f1(long long) { -+} -+void f1(int64_t) { // will fail if long long and int64_t are the same type -+}]], [[]])], ac_cv_long_long_64_linuxmodule=no, ac_cv_long_long_64_linuxmodule=yes)]) -+ if test $ac_cv_long_long_64_linuxmodule = yes; then -+ AC_DEFINE([HAVE_INT64_IS_LONG_LONG_LINUXMODULE], [1], [Define if 'int64_t' is typedefed to 'long long' in linuxmodule.]) -+ fi -+ -+ -+ AC_CACHE_CHECK([whether struct sk_buff has a security member], [ac_cv_linuxmodule_skbuff_security], -+ [AC_LANG_C -+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([CLICK_LINUXMODULE_PROLOGUE()[ -+#include ]], -+[[extern struct sk_buff *s; s->security = 0;]])], -+ [ac_cv_linuxmodule_skbuff_security=yes], [ac_cv_linuxmodule_skbuff_security=no])]) -+ if test $ac_cv_linuxmodule_skbuff_security = yes; then -+ AC_DEFINE([HAVE_LINUX_SKBUFF_SECURITY], [1], [Define if 'struct sk_buff' has a 'security' member.]) -+ fi -+ -+ AC_CACHE_CHECK([whether struct sk_buff has an fclone member], [ac_cv_linuxmodule_skbuff_fclone], -+ [AC_LANG_C -+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([CLICK_LINUXMODULE_PROLOGUE()[ -+#include ]], -+[[extern struct sk_buff *s; s->fclone = 0;]])], -+ [ac_cv_linuxmodule_skbuff_fclone=yes], [ac_cv_linuxmodule_skbuff_fclone=no])]) -+ if test $ac_cv_linuxmodule_skbuff_fclone = yes; then -+ AC_DEFINE([HAVE_LINUX_SKBUFF_FCLONE], [1], [Define if 'struct sk_buff' has an 'fclone' member.]) -+ fi -+ -+ AC_CACHE_CHECK([whether skb_shinfo has a tso_size member], [ac_cv_linuxmodule_skb_shinfo_tso_size], -+ [AC_LANG_C -+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([CLICK_LINUXMODULE_PROLOGUE()[ -+#include ]], -+[[extern struct sk_buff *s; skb_shinfo(s)->tso_size = 0;]])], -+ [ac_cv_linuxmodule_skb_shinfo_tso_size=yes], [ac_cv_linuxmodule_skb_shinfo_tso_size=no])]) -+ if test $ac_cv_linuxmodule_skb_shinfo_tso_size = yes; then -+ AC_DEFINE([HAVE_LINUX_SKB_SHINFO_TSO_SIZE], [1], [Define if 'struct skb_shared_info' has a 'tso_size' member.]) -+ fi -+ -+ AC_CACHE_CHECK([whether skb_shinfo has a gso_size member], [ac_cv_linuxmodule_skb_shinfo_gso_size], -+ [AC_LANG_C -+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([CLICK_LINUXMODULE_PROLOGUE()[ -+#include ]], -+[[extern struct sk_buff *s; skb_shinfo(s)->gso_size = 0;]])], -+ [ac_cv_linuxmodule_skb_shinfo_gso_size=yes], [ac_cv_linuxmodule_skb_shinfo_gso_size=no])]) -+ if test $ac_cv_linuxmodule_skb_shinfo_gso_size = yes; then -+ AC_DEFINE([HAVE_LINUX_SKB_SHINFO_GSO_SIZE], [1], [Define if 'struct skb_shared_info' has a 'gso_size' member.]) -+ fi -+ -+ AC_CACHE_CHECK([whether skb_shinfo has a ufo_size member], [ac_cv_linuxmodule_skb_shinfo_ufo_size], -+ [AC_LANG_C -+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([CLICK_LINUXMODULE_PROLOGUE()[ -+#include ]], -+[[extern struct sk_buff *s; skb_shinfo(s)->ufo_size = 0;]])], -+ [ac_cv_linuxmodule_skb_shinfo_ufo_size=yes], [ac_cv_linuxmodule_skb_shinfo_ufo_size=no])]) -+ if test $ac_cv_linuxmodule_skb_shinfo_ufo_size = yes; then -+ AC_DEFINE([HAVE_LINUX_SKB_SHINFO_UFO_SIZE], [1], [Define if 'struct skb_shared_info' has a 'ufo_size' member.]) -+ fi -+ -+ AC_CACHE_CHECK([whether skb_shinfo has an ip6_frag_id member], [ac_cv_linuxmodule_skb_shinfo_ip6_frag_id], -+ [AC_LANG_C -+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([CLICK_LINUXMODULE_PROLOGUE()[ -+#include ]], -+[[extern struct sk_buff *s; skb_shinfo(s)->ip6_frag_id = 0;]])], -+ [ac_cv_linuxmodule_skb_shinfo_ip6_frag_id=yes], [ac_cv_linuxmodule_skb_shinfo_ip6_frag_id=no])]) -+ if test $ac_cv_linuxmodule_skb_shinfo_ip6_frag_id = yes; then -+ AC_DEFINE([HAVE_LINUX_SKB_SHINFO_IP6_FRAG_ID], [1], [Define if 'struct skb_shared_info' has an 'ip6_frag_id' member.]) -+ fi -+ -+ AC_LANG_C -+ AC_CHECK_DECL(net_enable_timestamp, [ac_cv_net_enable_timestamp=yes], [ac_cv_net_enable_timestamp=no], [CLICK_LINUXMODULE_PROLOGUE()[ -+#include -+#include ]]) -+ if test $ac_cv_net_enable_timestamp = yes; then -+ AC_DEFINE([HAVE_NET_ENABLE_TIMESTAMP], [1], [Define if you have the 'net_enable_timestamp' function.]) -+ fi -+ -+ AC_CHECK_DECL(netif_tx_lock, [ac_cv_netif_tx_lock=yes], [ac_cv_netif_tx_lock=no], [CLICK_LINUXMODULE_PROLOGUE()[ -+#include -+#include ]]) -+ if test $ac_cv_netif_tx_lock = yes; then -+ AC_DEFINE([HAVE_NETIF_TX_LOCK], [1], [Define if you have the 'netif_tx_lock' function.]) -+ fi -+ -+ -+ CXX="$SAVE_CXX" -+ CPPFLAGS="$saveflags" -+ -+ if test $ac_cv_cxx_aware_system = yes; then -+ DRIVERS="$DRIVERS linuxmodule" -+ TOOL_TARGETS="$TOOL_TARGETS click-install" -+ AC_DEFINE(HAVE_LINUXMODULE_DRIVER) -+ HAVE_LINUXMODULE_DRIVER=1 -+ elif test x$enable_linuxmodule_default = xyes; then -+ AC_MSG_WARN([ -+========================================= -+ -+Your Linux kernel header files cause errors when included by a C++ program, -+so I won't try to compile the linuxmodule driver. -+ -+There are two common reasons for this error: -+1. You have not applied the Linux kernel patch that comes with this -+ distribution. Apply the right patch and try again. See the INSTALL -+ file for more information. -+2. Your Linux configuration enables some functionality that is not yet -+ covered by our patches. Turn off this functionality and try again, -+ or fix the error and tell us how you did it. See the config.log file -+ for more detailed information on the error. -+ -+=========================================]) -+ else -+ AC_MSG_ERROR([ -+========================================= -+ -+Your Linux kernel header files cause errors when included by a C++ program. -+ -+There are two common reasons for this error: -+1. You have not applied the Linux kernel patch that comes with this -+ distribution. Apply the right patch and try again. See the INSTALL -+ file for more information. -+2. Your Linux configuration enables some functionality that is not yet -+ covered by our patches. Turn off this functionality and try again, -+ or fix the error and tell us how you did it. See the config.log file -+ for more detailed information on the error. -+ -+=========================================]) -+ fi -+fi -+ -+ -+dnl check bsdmodule for BSD -+ -+if test $ac_have_bsd_kernel = y; then -+ DRIVERS="$DRIVERS bsdmodule" -+ if echo "$DRIVERS" | grep linuxmodule >/dev/null 2>&1; then :; else -+ TOOL_TARGETS="$TOOL_TARGETS click-install" -+ fi -+ AC_DEFINE(HAVE_BSDMODULE_DRIVER) -+ HAVE_BSDMODULE_DRIVER=1 -+fi -+ -+ -+dnl check ns -+ -+if test "x$enable_nsclick" = xyes; then -+ DRIVERS="$DRIVERS ns" -+fi -+ -+ -+dnl check tools -+ -+if test "x$enable_tools" != xno; then -+ OTHER_TARGETS="$OTHER_TARGETS tools" -+fi -+ -+ -+dnl -+dnl programs needed for build process -+dnl -+ -+CLICK_PROG_INSTALL -+CLICK_PROG_GMAKE -+CLICK_PROG_AUTOCONF -+CLICK_PROG_PERL5 -+ -+if test -z "$GMAKE"; then -+ AC_MSG_ERROR([ -+============================================== -+ -+Can't find GNU make. Either put 'gmake' on your PATH and -+rerun './configure', or set the GMAKE environment variable to -+GNU make's pathname. -+ -+==============================================]) -+fi -+ -+ -+dnl -+dnl Makeinfo, texi2dvi, install-info, pod2man -+dnl -+ -+AC_MSG_CHECKING(for working makeinfo) -+MAKEINFO=${MAKEINFO-makeinfo} -+if ($MAKEINFO --version) < /dev/null > conftest.out 2>&1; then -+ if test `head -n 1 conftest.out | sed 's/^.* \([[0-9]][[0-9]]*\).*$/\1/'` -ge 4; then -+ AC_MSG_RESULT(found) -+ else -+ MAKEINFO='$(conf_auxdir)/missing makeinfo' -+ AC_MSG_RESULT(old) -+ fi -+else -+ MAKEINFO='$(conf_auxdir)/missing makeinfo' -+ AC_MSG_RESULT(missing) -+fi -+ -+AC_MSG_CHECKING(for working texi2dvi) -+TEXI2DVI=${TEXI2DVI-texi2dvi} -+if ($TEXI2DVI --version) < /dev/null > conftest.out 2>&1; then -+ dnl Search for a good version of texi2dvi -+ if test `head -n 1 conftest.out | sed 's/.*Texinfo \([[0-9]][[0-9]]*\).*/\1/'` -ge 4; then -+ AC_MSG_RESULT(found) -+ else -+ TEXI2DVI='$(conf_auxdir)/missing texi2dvi' -+ AC_MSG_RESULT(old) -+ fi -+else -+ TEXI2DVI='$(conf_auxdir)/missing texi2dvi' -+ AC_MSG_RESULT(missing) -+fi -+ -+dnl Assume any version of install-info is OK -+if test ${INSTALL_INFO-xxx} = xxx; then -+ AC_PATH_PROG(INSTALL_INFO, install-info, '$(conf_auxdir)/missing install-info', -+ $PATH:/sbin:/usr/sbin:/usr/local/sbin) -+fi -+AC_MSG_CHECKING(for working install-info) -+if ($INSTALL_INFO --version) < /dev/null > conftest.out 2>&1; then -+ AC_MSG_RESULT(found) -+else -+ INSTALL_INFO='$(conf_auxdir)/missing install-info' -+ AC_MSG_RESULT(missing) -+fi -+ -+AC_MSG_CHECKING(for working pod2man) -+POD2MAN=${POD2MAN-pod2man} -+if ($POD2MAN --help) < /dev/null > conftest.out 2>&1 && grep pod2man conftest.out >/dev/null 2>&1; then -+ AC_MSG_RESULT(found) -+else -+ POD2MAN='$(conf_auxdir)/missing pod2man' -+ AC_MSG_RESULT(missing) -+fi -+ -+ -+AC_SUBST(MAKEINFO) -+AC_SUBST(TEXI2DVI) -+AC_SUBST(INSTALL_INFO) -+AC_SUBST(POD2MAN) -+ -+ -+dnl -+dnl set path variables -+dnl -+ -+shell_expand () { -+ val=`eval echo '$'"$1"` -+ while echo "x$val" | fgrep '$' >/dev/null 2>&1; do val=`eval echo "$val"`; done -+ eval "$1='$val'" -+} -+ -+dnl Preset $prefix and $exec_prefix. -+test "x$prefix" = xNONE && prefix=$ac_default_prefix -+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -+ -+dnl Expand 'infodir' to check for Red Hat -+if test x$infodir = 'x${prefix}/info'; then -+ test ! -d ${prefix}/info && test -d ${prefix}/share/info && infodir='${prefix}/share/info' -+fi -+ -+shell_expand bindir -+shell_expand sbindir -+shell_expand libdir -+shell_expand datarootdir -+shell_expand datadir -+shell_expand includedir -+ -+clickdatadir="$datadir/click" -+AC_SUBST(clickdatadir) -+ -+AC_DEFINE_UNQUOTED(CLICK_BINDIR, "$bindir") -+AC_DEFINE_UNQUOTED(CLICK_LIBDIR, "$libdir") -+AC_DEFINE_UNQUOTED(CLICK_DATADIR, "$clickdatadir") -+ -+ -+dnl -+dnl Provisions -+dnl -+ -+dnl start out with CPU -+provisions="$target_cpu" -+case "$target_cpu" in -+ i386) :;; -+ i486|i586) provisions="$provisions i386";; -+ i686|i786) provisions="$provisions i386 i586";; -+esac -+ -+dnl add 'analysis' if analysis elements are available -+if test "x$enable_analysis" = xyes; then -+ provisions="$provisions analysis" -+fi -+ -+dnl add 'experimental' if --enable-experimental was supplied -+if test "x$enable_experimental" = xyes; then -+ provisions="$provisions experimental" -+fi -+ -+dnl add 'int64' if 64-bit integers are available -+if test "x$have_int64_types" = xyes; then -+ provisions="$provisions int64" -+fi -+ -+dnl add 'ip6' if ip6 elements are available -+if test "x$enable_ip6" = xyes; then -+ provisions="$provisions ip6" -+fi -+ -+dnl add 'linux' if compiling under linux -+if test "x$ac_cv_under_linux" = xyes; then -+ provisions="$provisions linux" -+fi -+ -+dnl add provision for linux kernel version -+if test $ac_have_linux_kernel = y; then -+ ac_linux_version_code=`grep LINUX_VERSION_CODE $linuxdir/include/linux/version.h | sed 's/^.*CODE //'` -+ if test $ac_linux_version_code -ge 131584 -a $ac_linux_version_code -lt 131840; then -+ provisions="$provisions linux_2_2" -+ elif test $ac_linux_version_code -ge 132096 -a $ac_linux_version_code -lt 132352; then -+ provisions="$provisions linux_2_4" -+ elif test $ac_linux_version_code -ge 132608 -a $ac_linux_version_code -lt 132864; then -+ provisions="$provisions linux_2_6" -+ fi -+fi -+ -+dnl add 'pcap' if libpcap is available -+if test "x$HAVE_PCAP" = xyes; then -+ provisions="$provisions pcap" -+fi -+ -+dnl add 'smpclick' if compiled with --enable-multithread > 1 -+if test "$enable_multithread" -gt 1; then -+ provisions="$provisions smpclick" -+fi -+ -+dnl add 'umultithread' if compiled with --enable-user-multithread -+if test "x$enable_user_multithread" = xyes; then -+ provisions="$provisions umultithread" -+fi -+ -+dnl add 'wifi' if wifi elements are available -+if test "x$enable_wifi" = xyes; then -+ provisions="$provisions wifi" -+fi -+ -+AC_SUBST(provisions) -+ -+dnl -+dnl Output -+dnl -+ -+config_files="Makefile click-buildtool click-compile config.mk installch tools/Makefile tools/lib/Makefile doc/Makefile etc/libclick/Makefile etc/pkg-config.mk" -+for ac_dir in $POSSIBLE_DRIVERS; do -+ config_files="$config_files $ac_dir/Makefile" -+done -+for ac_dir in $TOOLDIRS; do -+ config_files="$config_files tools/$ac_dir/Makefile" -+done -+for ac_dir in etc include; do -+ test ! -d "$ac_dir" && mkdir "$ac_dir" -+done -+ -+AC_OUTPUT_COMMANDS([for ac_file in $CONFIG_HEADERS; do -+ test $ac_file = include/click/config.h:config.h.in && echo > stamp-h -+done -+for ac_file in $CONFIG_FILES; do -+ test $ac_file = click-buildtool && chmod +x click-buildtool -+ test $ac_file = click-compile && chmod +x click-compile -+ test $ac_file = installch && chmod +x installch -+done]) -+AC_OUTPUT($config_files) -diff -Nurb click-1.6.0/diff click-1.6.0-27/diff ---- click-1.6.0/diff 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/diff 2009-01-26 14:37:19.000000000 -0500 -@@ -0,0 +1,780 @@ -+--- ./lib/string.cc.orig 2007-09-09 23:45:30.000000000 -0400 -++++ ./lib/string.cc 2009-01-20 16:09:36.000000000 -0500 -+@@ -17,6 +17,7 @@ -+ * legally binding. -+ */ -+ -++#include -+ #include -+ #include -+ #include -+--- ./lib/straccum.cc.orig 2007-08-28 01:08:36.000000000 -0400 -++++ ./lib/straccum.cc 2009-01-20 20:23:30.000000000 -0500 -+@@ -17,6 +17,7 @@ -+ * legally binding. -+ */ -+ -++#include -+ #include -+ #include -+ #include -+--- ./lib/ino.cc.orig 2007-09-11 15:39:22.000000000 -0400 -++++ ./lib/ino.cc 2009-01-20 22:34:50.000000000 -0500 -+@@ -34,6 +34,16 @@ -+ _generation = 0; -+ } -+ -++#define DT_UNKNOWN 0 -++#define DT_FIFO 1 -++#define DT_CHR 2 -++#define DT_DIR 4 -++#define DT_BLK 6 -++#define DT_REG 8 -++#define DT_LNK 10 -++#define DT_SOCK 12 -++#define DT_WHT 14 -++ -+ void -+ ClickIno::cleanup() -+ { -+--- ./lib/bitvector.cc.orig 2007-07-16 19:47:50.000000000 -0400 -++++ ./lib/bitvector.cc 2009-01-20 22:28:27.000000000 -0500 -+@@ -17,6 +17,7 @@ -+ * legally binding. -+ */ -+ -++#include -+ #include -+ #include -+ CLICK_DECLS -+--- ./lib/nameinfo.cc.orig 2007-07-16 19:47:50.000000000 -0400 -++++ ./lib/nameinfo.cc 2009-01-20 20:24:08.000000000 -0500 -+@@ -16,6 +16,7 @@ -+ * legally binding. -+ */ -+ -++#include -+ #include -+ #include -+ #include -+--- ./include/clicknet/ip.h.orig 2007-07-16 19:47:50.000000000 -0400 -++++ ./include/clicknet/ip.h 2009-01-19 16:01:43.000000000 -0500 -+@@ -5,6 +5,7 @@ -+ #include -+ CLICK_CXX_PROTECT -+ #if CLICK_LINUXMODULE -++#include -+ # include -+ # include -+ #else -+--- ./include/click/glue.hh.orig 2007-09-12 18:24:50.000000000 -0400 -++++ ./include/click/glue.hh 2009-01-19 16:05:45.000000000 -0500 -+@@ -15,6 +15,7 @@ -+ # endif -+ # include -+ CLICK_CXX_PROTECT -++#include -+ # ifdef WANT_MOD_USE_COUNT -+ # define __NO_VERSION__ -+ # include -+--- ./include/click/packet.hh.orig 2007-09-07 16:11:26.000000000 -0400 -++++ ./include/click/packet.hh 2009-01-20 22:21:20.000000000 -0500 -+@@ -1,6 +1,7 @@ -+ // -*- related-file-name: "../../lib/packet.cc" -*- -+ #ifndef CLICK_PACKET_HH -+ #define CLICK_PACKET_HH -++#include -+ #include -+ #include -+ #include -+@@ -452,7 +453,7 @@ -+ Packet::mac_header() const -+ { -+ #if CLICK_LINUXMODULE -+- return skb()->mac.raw; -++ return skb_mac_header(skb()); -+ #else -+ return _mac; -+ #endif -+@@ -462,7 +463,7 @@ -+ Packet::network_header() const -+ { -+ #if CLICK_LINUXMODULE -+- return skb()->nh.raw; -++ return skb_network_header(skb()); -+ #else -+ return _nh; -+ #endif -+@@ -472,7 +473,7 @@ -+ Packet::transport_header() const -+ { -+ #if CLICK_LINUXMODULE -+- return skb()->h.raw; -++ return skb_transport_header(skb()); -+ #else -+ return _h; -+ #endif -+@@ -567,7 +568,7 @@ -+ # if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 13) -+ memcpy(&skb()->stamp, ×tamp, 8); -+ # else -+- skb_set_timestamp(skb(), ×tamp.timeval()); -++ memcpy(&skb()->tstamp, ×tamp, 8); -+ # endif -+ #else -+ _timestamp = timestamp; -+@@ -904,7 +905,7 @@ -+ Packet::set_mac_header(const unsigned char *h) -+ { -+ #if CLICK_LINUXMODULE /* Linux kernel module */ -+- skb()->mac.raw = const_cast(h); -++ skb()->mac_header = const_cast(h); -+ #else /* User-space and BSD kernel module */ -+ _mac = const_cast(h); -+ #endif -+@@ -914,8 +915,8 @@ -+ Packet::set_mac_header(const unsigned char *h, uint32_t len) -+ { -+ #if CLICK_LINUXMODULE /* Linux kernel module */ -+- skb()->mac.raw = const_cast(h); -+- skb()->nh.raw = const_cast(h) + len; -++ skb()->mac_header = const_cast(h); -++ skb()->network_header = const_cast(h) + len; -+ #else /* User-space and BSD kernel module */ -+ _mac = const_cast(h); -+ _nh = const_cast(h) + len; -+@@ -956,8 +957,8 @@ -+ Packet::set_network_header(const unsigned char *h, uint32_t len) -+ { -+ #if CLICK_LINUXMODULE /* Linux kernel module */ -+- skb()->nh.raw = const_cast(h); -+- skb()->h.raw = const_cast(h) + len; -++ skb()->network_header = const_cast(h); -++ skb()->transport_header = const_cast(h) + len; -+ #else /* User-space and BSD kernel module */ -+ _nh = const_cast(h); -+ _h = const_cast(h) + len; -+@@ -968,7 +969,7 @@ -+ Packet::set_network_header_length(uint32_t len) -+ { -+ #if CLICK_LINUXMODULE /* Linux kernel module */ -+- skb()->h.raw = skb()->nh.raw + len; -++ skb()->transport_header = skb()->network_header + len; -+ #else /* User-space and BSD kernel module */ -+ _h = _nh + len; -+ #endif -+@@ -1076,9 +1077,9 @@ -+ _h += (_h ? shift : 0); -+ #else -+ struct sk_buff *mskb = skb(); -+- mskb->mac.raw += (mskb->mac.raw ? shift : 0); -+- mskb->nh.raw += (mskb->nh.raw ? shift : 0); -+- mskb->h.raw += (mskb->h.raw ? shift : 0); -++ mskb->mac_header += (mskb->mac_header ? shift : 0); -++ mskb->network_header += (mskb->network_header ? shift : 0); -++ mskb->transport_header += (mskb->transport_header ? shift : 0); -+ #endif -+ } -+ -+--- ./include/click/config-linuxmodule.h.orig 2009-01-19 15:07:24.000000000 -0500 -++++ ./include/click/config-linuxmodule.h 2009-01-20 22:30:23.000000000 -0500 -+@@ -87,12 +87,13 @@ -+ #endif -+ -+ /* Include integer type definitions. */ -++# include -+ #if !HAVE_LINUXMODULE_2_6 -+ # include -+ #endif -+ #include -+ typedef ptrdiff_t intptr_t; -+-typedef unsigned long uintptr_t; /* XXX? */ -++//typedef unsigned long uintptr_t; /* XXX? */ -+ -+ /* Define HAVE_INT64_IS_LONG based on HAVE_INT64_IS_LONG_LINUXMODULE. */ -+ #ifdef HAVE_INT64_IS_LONG_LINUXMODULE -+@@ -114,11 +115,11 @@ -+ #ifdef __cplusplus -+ -+ /* Declare operator new. */ -+-void *operator new(size_t) throw (); -+-void *operator new[](size_t) throw (); -++void *operator new(unsigned int) throw (); -++void *operator new[](unsigned int) throw (); -+ -+ /* Provide placement new. */ -+-inline void *operator new(size_t, void *v) { return v; } -++inline void *operator new(unsigned int, void *v) { return v; } -+ #define HAVE_PLACEMENT_NEW 1 -+ -+ /* Define macros that surround Click declarations. */ -+--- ./linuxmodule/Makefile.orig 2009-01-19 15:15:55.000000000 -0500 -++++ ./linuxmodule/Makefile 2009-01-20 10:22:39.000000000 -0500 -+@@ -95,7 +95,7 @@ -+ -+ CLICKDEFS = -DHAVE_CONFIG_H -+ CLICKINCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -+- -I$(srcdir) -I$(top_srcdir) -I$(linuxdir)/include -++ -I$(srcdir) -I$(top_srcdir) -I$(linuxdir)/include -I$(linuxdir)/include/asm/mach-default -+ -+ CXXCOMPILE = $(CLICKCXX) $(LINUXCFLAGS) $(CLICKCPPFLAGS) $(CLICKCFLAGS) \ -+ $(CLICKCXXFLAGS) $(CLICKDEFS) $(CLICKINCLUDES) $(CLICKDEPCFLAGS) -+@@ -177,7 +177,7 @@ -+ -+ CC = gcc -w -W -Wall -+ CPP = gcc -W -Wall -E -+-CXX = g++ -w -W -Wall -fno-exceptions -fno-rtti -D__SMP__ -++CXX = g++ -w -W -fno-exceptions -fno-rtti -D__SMP__ -+ CXXCPP = g++ -W -Wall -E -+ LD = ld -+ STRIP = strip -+--- ./elements/linuxmodule/anydevice.cc.orig 2007-08-29 04:03:55.000000000 -0400 -++++ ./elements/linuxmodule/anydevice.cc 2009-01-21 14:44:39.000000000 -0500 -+@@ -49,7 +49,7 @@ -+ int -+ AnyDevice::find_device(AnyDeviceMap *adm, ErrorHandler *errh) -+ { -+- _dev = dev_get_by_name(_devname.c_str()); -++ _dev = dev_get_by_name(&init_net,_devname.c_str()); -+ _devname_exists = (bool) _dev; -+ if (!_dev) -+ _dev = dev_get_by_ether_address(_devname, this); -+@@ -233,7 +233,7 @@ -+ return 0; -+ read_lock(&dev_base_lock); -+ net_device *dev; -+- for (dev = dev_base; dev; dev = dev->next) -++ for_each_netdev(&init_net, dev)//for (dev = dev_base; dev; dev = dev->next) -+ if ((dev->type == ARPHRD_ETHER || dev->type == ARPHRD_80211) -+ && memcmp(en, dev->dev_addr, 6) == 0) { -+ dev_hold(dev); // dev_get_by_name does dev_hold; so -+--- ./elements/standard/addressinfo.cc.orig 2007-09-12 02:14:04.000000000 -0400 -++++ ./elements/standard/addressinfo.cc 2009-01-21 13:08:40.000000000 -0500 -+@@ -272,7 +272,7 @@ -+ // if it's a device name, return a primary IP address -+ #if CLICK_LINUXMODULE -+ # if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) -+- net_device *dev = dev_get_by_name(s.c_str()); -++ net_device *dev = dev_get_by_name(&init_net,s.c_str()); -+ if (dev) { -+ bool found = false; -+ in_device *in_dev = in_dev_get(dev); -+@@ -383,7 +383,7 @@ -+ # if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0) -+ # define dev_put(dev) /* nada */ -+ # endif -+- net_device *dev = dev_get_by_name(s.c_str()); -++ net_device *dev = dev_get_by_name(&init_net,s.c_str()); -+ if (dev && (dev->type == ARPHRD_ETHER || dev->type == ARPHRD_80211)) { -+ memcpy(store, dev->dev_addr, 6); -+ dev_put(dev); -+--- ./drivers/e1000-4.x/src/e1000_param.c.orig 2007-07-16 19:47:50.000000000 -0400 -++++ ./drivers/e1000-4.x/src/e1000_param.c 2007-07-16 19:47:50.000000000 -0400 -+@@ -362,7 +362,7 @@ -+ type: list_option, -+ name: "Flow Control", -+ err: "reading default settings from EEPROM", -+- def: e1000_fc_default, -++ def: e1000_fc_none, /* RTM, was e1000_fc_default */ -+ arg: { l: { nr: ARRAY_SIZE(fc_list), p: fc_list }} -+ }; -+ -+--- ./drivers/e1000-4.x/src/e1000.h.orig 2007-07-16 19:47:50.000000000 -0400 -++++ ./drivers/e1000-4.x/src/e1000.h 2007-07-16 19:47:50.000000000 -0400 -+@@ -150,6 +150,8 @@ -+ -+ #define E1000_DESC_UNUSED(R) \ -+ ((((R)->next_to_clean + (R)->count) - ((R)->next_to_use + 1)) % ((R)->count)) -++#define E1000_RX_DESC_UNUSED(R) \ -++((((R)->next_to_clean + (R)->count) - ((R)->next_to_use)) % ((R)->count)) -+ -+ #define E1000_GET_DESC(R, i, type) (&(((struct type *)((R).desc))[i])) -+ #define E1000_RX_DESC(R, i) E1000_GET_DESC(R, i, e1000_rx_desc) -+@@ -240,5 +242,7 @@ -+ -+ /* Semaphore for locking HW access vs. i2c-i8254x SMBUS driver */ -+ struct semaphore smbus_lock; -++ -++ int do_poll_watchdog; /* Click polling */ -+ }; -+ #endif /* _E1000_H_ */ -+--- ./drivers/e1000-4.x/src/e1000_main.c.orig 2007-07-16 19:47:50.000000000 -0400 -++++ ./drivers/e1000-4.x/src/e1000_main.c 2007-07-16 19:47:50.000000000 -0400 -+@@ -146,6 +146,7 @@ -+ static void e1000_set_multi(struct net_device *netdev); -+ static void e1000_update_phy_info(unsigned long data); -+ static void e1000_watchdog(unsigned long data); -++void e1000_watchdog_1(struct e1000_adapter *adapter); -+ static int e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev); -+ static struct net_device_stats * e1000_get_stats(struct net_device *netdev); -+ static int e1000_change_mtu(struct net_device *netdev, int new_mtu); -+@@ -181,6 +182,16 @@ -+ static int e1000_resume(struct pci_dev *pdev); -+ #endif -+ -++/* For Click polling */ -++static int e1000_tx_pqueue(struct net_device *dev, struct sk_buff *skb); -++static int e1000_tx_start(struct net_device *dev); -++static int e1000_rx_refill(struct net_device *dev, struct sk_buff **); -++static int e1000_tx_eob(struct net_device *dev); -++static struct sk_buff *e1000_tx_clean(struct net_device *dev); -++static struct sk_buff *e1000_rx_poll(struct net_device *dev, int *want); -++static int e1000_poll_on(struct net_device *dev); -++static int e1000_poll_off(struct net_device *dev); -++ -+ struct notifier_block e1000_notifier = { -+ notifier_call: e1000_notify_reboot, -+ next: NULL, -+@@ -231,6 +242,8 @@ -+ printk(KERN_INFO "%s - version %s\n", -+ e1000_driver_string, e1000_driver_version); -+ -++ printk(KERN_INFO " w/ Click polling\n"); -++ -+ printk(KERN_INFO "%s\n", e1000_copyright); -+ -+ ret = pci_module_init(&e1000_driver); -+@@ -416,6 +429,17 @@ -+ netdev->vlan_rx_kill_vid = e1000_vlan_rx_kill_vid; -+ #endif -+ -++ /* Click - polling extensions */ -++ netdev->polling = 0; -++ netdev->rx_poll = e1000_rx_poll; -++ netdev->rx_refill = e1000_rx_refill; -++ netdev->tx_queue = e1000_tx_pqueue; -++ netdev->tx_eob = e1000_tx_eob; -++ netdev->tx_start = e1000_tx_start; -++ netdev->tx_clean = e1000_tx_clean; -++ netdev->poll_off = e1000_poll_off; -++ netdev->poll_on = e1000_poll_on; -++ -+ netdev->irq = pdev->irq; -+ netdev->mem_start = mmio_start; -+ netdev->base_addr = adapter->hw.io_base; -+@@ -1303,7 +1327,20 @@ -+ static void -+ e1000_watchdog(unsigned long data) -+ { -+- struct e1000_adapter *adapter = (struct e1000_adapter *) data; -++ struct e1000_adapter *adapter = (struct e1000_adapter *) data; -++ -++ if(adapter->netdev->polling){ -++ adapter->do_poll_watchdog = 1; -++ } else { -++ e1000_watchdog_1(adapter); -++ } -++ -++ mod_timer(&adapter->watchdog_timer, jiffies + 2 * HZ); -++} -++ -++void -++e1000_watchdog_1(struct e1000_adapter *adapter) -++{ -+ struct net_device *netdev = adapter->netdev; -+ struct e1000_desc_ring *txdr = &adapter->tx_ring; -+ int i; -+@@ -1388,9 +1425,6 @@ -+ time_after(jiffies, txdr->buffer_info[i].time_stamp + HZ) && -+ !(E1000_READ_REG(&adapter->hw, STATUS) & E1000_STATUS_TXOFF)) -+ netif_stop_queue(netdev); -+- -+- /* Reset the timer */ -+- mod_timer(&adapter->watchdog_timer, jiffies + 2 * HZ); -+ } -+ -+ #define E1000_TX_FLAGS_CSUM 0x00000001 -+@@ -1893,8 +1927,18 @@ -+ mod_timer(&adapter->watchdog_timer, jiffies); -+ } -+ -+- e1000_clean_rx_irq(adapter); -+- e1000_clean_tx_irq(adapter); -++ /* 26.Jun.2004 - Do not print a message if we get an interrupt -++ in polling mode. Andy Van Maele reports that e1000 -++ adapters can share interrupts with other devices, such as -++ other network cards. Thus, it is not necessarily a problem -++ if we get an interrupt; and printing a message is very -++ expensive. So scrap it. It might be better to keep a -++ counter. */ -++ if(!netdev->polling){ -++ e1000_clean_rx_irq(adapter); -++ e1000_clean_tx_irq(adapter); -++ } -++ -+ i--; -+ -+ #ifdef E1000_COUNT_ICR -+@@ -2533,4 +2577,335 @@ -+ return ret_val; -+ } -+ -++/* Click polling support */ -++ -++static struct sk_buff * -++e1000_rx_poll(struct net_device *dev, int *want) -++{ -++ struct e1000_adapter *adapter = dev->priv; -++ struct pci_dev *pdev = adapter->pdev; -++ struct e1000_rx_desc *rx_desc; -++ int i; -++ uint32_t length; -++ struct sk_buff *skb; -++ uint8_t last_byte; -++ unsigned long flags; -++ struct sk_buff *skb_head = 0, *skb_last = 0; -++ int good; -++ int got = 0; -++ -++ i = adapter->rx_ring.next_to_clean; -++ rx_desc = E1000_RX_DESC(adapter->rx_ring, i); -++ -++ while(got < *want){ -++ if((rx_desc->status & E1000_RXD_STAT_DD) == 0) -++ break; -++ pci_unmap_single(pdev, adapter->rx_ring.buffer_info[i].dma, -++ adapter->rx_ring.buffer_info[i].length, -++ PCI_DMA_FROMDEVICE); -++ -++ skb = adapter->rx_ring.buffer_info[i].skb; -++ length = le16_to_cpu(rx_desc->length); -++ good = 1; -++ -++ if(!(rx_desc->status & E1000_RXD_STAT_EOP)) -++ good = 0; -++ -++ if(good && (rx_desc->errors & E1000_RXD_ERR_FRAME_ERR_MASK)){ -++ last_byte = *(skb->data + length - 1); -++ if(TBI_ACCEPT(&adapter->hw,rx_desc->status,rx_desc->errors,length, -++ last_byte)) { -++ spin_lock_irqsave(&adapter->stats_lock, flags); -++ e1000_tbi_adjust_stats(&adapter->hw, &adapter->stats, -++ length, skb->data); -++ spin_unlock_irqrestore(&adapter->stats_lock, flags); -++ length--; -++ } else { -++ good = 0; -++ } -++ } -++ -++ if(good){ -++ skb_put(skb, length - CRC_LENGTH); -++ e1000_rx_checksum(adapter, rx_desc, skb); -++ skb_pull(skb, dev->hard_header_len); -++ if (got == 0) { -++ skb_head = skb; -++ skb_last = skb; -++ skb_last->next = NULL; -++ } else { -++ skb_last->next = skb; -++ skb->next = NULL; -++ skb_last = skb; -++ } -++ got++; -++ } else { -++ dev_kfree_skb(skb); -++ } -++ -++#if 0 -++ memset(rx_desc, 0, 16); -++#endif -++ -++#if 0 -++ /* -++ * This mb() generates a "lock addl" even on a uniprocessor. -++ * It's slow (slows down ip forwarding by 15%?) and I do -++ * not believe it's needed. -++ */ -++ mb(); -++#endif -++ adapter->rx_ring.buffer_info[i].skb = NULL; -++ i = i + 1; -++ if(i >= adapter->rx_ring.count) -++ i = 0; -++ rx_desc = E1000_RX_DESC(adapter->rx_ring, i); -++ } -++ -++ adapter->rx_ring.next_to_clean = i; -++ *want = got; -++ -++ return skb_head; -++} -++ -++int -++e1000_rx_refill(struct net_device *dev, struct sk_buff **skbs) -++{ -++ struct e1000_adapter *adapter = dev->priv; -++ struct pci_dev *pdev = adapter->pdev; -++ struct e1000_rx_desc *rx_desc; -++ int i, nfilled = 0, last_filled = -1; -++ struct sk_buff *skb_list; -++ -++ if(skbs == 0) -++ return E1000_RX_DESC_UNUSED(&adapter->rx_ring); -++ -++ i = adapter->rx_ring.next_to_use; -++ skb_list = *skbs; -++ -++ while(adapter->rx_ring.buffer_info[i].skb == NULL && skb_list){ -++ struct sk_buff *skb = skb_list; -++ skb_list = skb_list->next; -++ rx_desc = E1000_RX_DESC(adapter->rx_ring, i); -++ skb->dev = dev; -++ adapter->rx_ring.buffer_info[i].skb = skb; -++ adapter->rx_ring.buffer_info[i].length = adapter->rx_buffer_len; -++ adapter->rx_ring.buffer_info[i].dma = -++ pci_map_single(pdev, skb->data, adapter->rx_buffer_len, -++ PCI_DMA_FROMDEVICE); -++ rx_desc->status = 0; -++ rx_desc->buffer_addr = cpu_to_le64(adapter->rx_ring.buffer_info[i].dma); -++ last_filled = i; -++ i = i + 1; -++ if(i >= adapter->rx_ring.count) -++ i = 0; -++ nfilled++; -++ } -++ -++ *skbs = skb_list; -++ -++ adapter->rx_ring.next_to_use = i; -++ if(nfilled){ -++#if 0 -++ mb(); -++#endif -++ /* -++ * Intel driver code sets RDT to last filled slot. -++ * e1000 manual implies (I think) one beyond. -++ */ -++ E1000_WRITE_REG(&adapter->hw, RDT, last_filled); -++ } -++ -++ /* -++ * Update statistics counters, check link. -++ * do_poll_watchdog is set by the timer interrupt e1000_watchdog(), -++ * but we don't want to do the work in an interrupt (since it may -++ * happen while polling code is active), so defer it to here. -++ */ -++ if(adapter->do_poll_watchdog){ -++ adapter->do_poll_watchdog = 0; -++ e1000_watchdog_1(adapter); -++ } -++ -++ return E1000_RX_DESC_UNUSED(&adapter->rx_ring); -++} -++ -++static int -++e1000_tx_pqueue(struct net_device *netdev, struct sk_buff *skb) -++{ -++ /* -++ * This function is just a streamlined version of -++ * return e1000_xmit_frame(skb, netdev); -++ */ -++ -++ struct e1000_adapter *adapter = netdev->priv; -++ struct pci_dev *pdev = adapter->pdev; -++ struct e1000_tx_desc *tx_desc; -++ int i, len, offset, txd_needed; -++ uint32_t txd_upper, txd_lower; -++ -++ if(!netif_carrier_ok(netdev)) { -++ netif_stop_queue(netdev); -++ return 1; -++ } -++ -++ txd_needed = TXD_USE_COUNT(skb->len, adapter->max_data_per_txd); -++ -++ /* make sure there are enough Tx descriptors available in the ring */ -++ if(E1000_DESC_UNUSED(&adapter->tx_ring) <= (txd_needed + 1)) { -++ adapter->net_stats.tx_dropped++; -++ netif_stop_queue(netdev); -++ return 1; -++ } -++ -++ txd_upper = 0; -++ txd_lower = adapter->txd_cmd; -++ -++ if(e1000_tx_csum(adapter, skb)){ -++ txd_lower |= E1000_TXD_CMD_DEXT | E1000_TXD_DTYP_D; -++ txd_upper |= E1000_TXD_POPTS_TXSM << 8; -++ } -++ -++ i = adapter->tx_ring.next_to_use; -++ tx_desc = E1000_TX_DESC(adapter->tx_ring, i); -++ -++ len = skb->len; -++ offset = 0; -++ -++ adapter->tx_ring.buffer_info[i].length = len; -++ adapter->tx_ring.buffer_info[i].dma = -++ pci_map_page(pdev, virt_to_page(skb->data + offset), -++ (unsigned long) (skb->data + offset) & ~PAGE_MASK, len, -++ PCI_DMA_TODEVICE); -++ -++ tx_desc->buffer_addr = cpu_to_le64(adapter->tx_ring.buffer_info[i].dma); -++ tx_desc->lower.data = cpu_to_le32(txd_lower | len); -++ tx_desc->upper.data = cpu_to_le32(txd_upper); -++ -++ /* EOP and SKB pointer go with the last fragment */ -++ tx_desc->lower.data |= cpu_to_le32(E1000_TXD_CMD_EOP); -++ adapter->tx_ring.buffer_info[i].skb = skb; -++ -++ i = i + 1; -++ if(i >= adapter->tx_ring.count) -++ i = 0; -++ -++ /* Move the HW Tx Tail Pointer */ -++ adapter->tx_ring.next_to_use = i; -++ -++ netdev->trans_start = jiffies; -++ -++ return 0; -++} -++ -++static int -++e1000_tx_eob(struct net_device *dev) -++{ -++ struct e1000_adapter *adapter = dev->priv; -++ E1000_WRITE_REG(&adapter->hw, TDT, adapter->tx_ring.next_to_use); -++ return 0; -++} -++ -++static int -++e1000_tx_start(struct net_device *dev) -++{ -++ /* printk("e1000_tx_start called\n"); */ -++ e1000_tx_eob(dev); -++ return 0; -++} -++ -++static struct sk_buff * -++e1000_tx_clean(struct net_device *netdev) -++{ -++ /* -++ * This function is a streamlined version of -++ * return e1000_clean_tx_irq(adapter, 1); -++ */ -++ -++ struct e1000_adapter *adapter = netdev->priv; -++ struct pci_dev *pdev = adapter->pdev; -++ int i; -++ struct e1000_tx_desc *tx_desc; -++ struct sk_buff *skb_head, *skb_last; -++ -++ skb_head = skb_last = 0; -++ -++ i = adapter->tx_ring.next_to_clean; -++ tx_desc = E1000_TX_DESC(adapter->tx_ring, i); -++ -++ while(tx_desc->upper.data & cpu_to_le32(E1000_TXD_STAT_DD)) { -++ if(adapter->tx_ring.buffer_info[i].dma != 0) { -++ pci_unmap_page(pdev, adapter->tx_ring.buffer_info[i].dma, -++ adapter->tx_ring.buffer_info[i].length, -++ PCI_DMA_TODEVICE); -++ adapter->tx_ring.buffer_info[i].dma = 0; -++ } -++ -++ if(adapter->tx_ring.buffer_info[i].skb != NULL) { -++ struct sk_buff *skb = adapter->tx_ring.buffer_info[i].skb; -++ if (skb_head == 0) { -++ skb_head = skb; -++ skb_last = skb; -++ skb_last->next = NULL; -++ } else { -++ skb_last->next = skb; -++ skb->next = NULL; -++ skb_last = skb; -++ } -++ adapter->tx_ring.buffer_info[i].skb = NULL; -++ } -++ -++ i = i + 1; -++ if(i >= adapter->tx_ring.count) -++ i = 0; -++ -++ tx_desc->upper.data = 0; -++ tx_desc = E1000_TX_DESC(adapter->tx_ring, i); -++ } -++ -++ adapter->tx_ring.next_to_clean = i; -++ -++ if(netif_queue_stopped(netdev) && -++ (E1000_DESC_UNUSED(&adapter->tx_ring) > E1000_TX_QUEUE_WAKE)) { -++ netif_start_queue(netdev); -++ } -++ -++ return skb_head; -++} -++ -++static int -++e1000_poll_on(struct net_device *dev) -++{ -++ struct e1000_adapter *adapter = dev->priv; -++ unsigned long flags; -++ -++ if (!dev->polling) { -++ printk("e1000_poll_on\n"); -++ -++ save_flags(flags); -++ cli(); -++ -++ dev->polling = 2; -++ e1000_irq_disable(adapter); -++ -++ restore_flags(flags); -++ } -++ -++ return 0; -++} -++ -++static int -++e1000_poll_off(struct net_device *dev) -++{ -++ struct e1000_adapter *adapter = dev->priv; -++ -++ if(dev->polling > 0){ -++ dev->polling = 0; -++ e1000_irq_enable(adapter); -++ printk("e1000_poll_off\n"); -++ } -++ -++ return 0; -++} -++ -+ /* e1000_main.c */ -+--- ./drivers/e1000-4.x/src/e1000_idiag.c.orig 2007-07-16 19:47:50.000000000 -0400 -++++ ./drivers/e1000-4.x/src/e1000_idiag.c 2007-07-16 19:47:50.000000000 -0400 -+@@ -322,10 +322,12 @@ -+ if(rxdr->desc) -+ pci_free_consistent(pdev, rxdr->size, rxdr->desc, rxdr->dma); -+ -++#if 0 -+ if(txdr->buffer_info) -+ kfree(txdr->buffer_info); -+ if(rxdr->buffer_info) -+ kfree(rxdr->buffer_info); -++#endif -+ -+ return; -+ } -+@@ -344,8 +346,10 @@ -+ txdr->count = 80; -+ -+ size = txdr->count * sizeof(struct e1000_buffer); -++#if 0 -+ if(!(txdr->buffer_info = kmalloc(size, GFP_KERNEL))) -+ goto err_nomem; -++#endif -+ memset(txdr->buffer_info, 0, size); -+ -+ txdr->size = txdr->count * sizeof(struct e1000_tx_desc); -+@@ -393,8 +397,10 @@ -+ rxdr->count = 80; -+ -+ size = rxdr->count * sizeof(struct e1000_buffer); -++#if 0 -+ if(!(rxdr->buffer_info = kmalloc(size, GFP_KERNEL))) -+ goto err_nomem; -++#endif -+ memset(rxdr->buffer_info, 0, size); -+ -+ rxdr->size = rxdr->count * sizeof(struct e1000_rx_desc); -diff -Nurb click-1.6.0/doc/Makefile click-1.6.0-27/doc/Makefile ---- click-1.6.0/doc/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/doc/Makefile 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,120 @@ -+SHELL = /bin/sh -+ -+top_srcdir = .. -+srcdir = . -+top_builddir = .. -+subdir = doc -+conf_auxdir = $(top_srcdir) -+ -+prefix = /d/click/click-1.6.0-27/inst -+exec_prefix = /d/click/click-1.6.0-27/inst -+bindir = /d/click/click-1.6.0-27/inst/bin -+mandir = ${datarootdir}/man -+datarootdir = /d/click/click-1.6.0-27/inst/share -+datadir = /d/click/click-1.6.0-27/inst/share -+clickdatadir = $(datadir)/click -+infodir = ${datarootdir}/info -+ -+PERL = perl -+INSTALL = /usr/bin/install -c -+INSTALL_DATA = /usr/bin/install -c -m 644 -+INSTALL_INFO = /usr/bin/install-info -+MAKEINFO = makeinfo -+TEXI2DVI = texi2dvi -+POD2MAN = pod2man -+CP_PRESERVE = /bin/cp -p -+mkinstalldirs = $(conf_auxdir)/mkinstalldirs -+ -+EXTRA_PROVIDES = -+ -+all: Makefile -+ -+Makefile: $(srcdir)/Makefile.in -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status -+ -+install: Makefile install-man install-info -+ $(mkinstalldirs) $(DESTDIR)$(bindir) -+ $(INSTALL) $(srcdir)/click-elem2man $(DESTDIR)$(bindir)/click-elem2man -+install-man: testie.1 $(top_builddir)/elementmap.xml Makefile -+ $(mkinstalldirs) $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(mandir)/man3 $(DESTDIR)$(mandir)/man5 $(DESTDIR)$(mandir)/man7 $(DESTDIR)$(mandir)/man8 $(DESTDIR)$(mandir)/mann -+ $(INSTALL_DATA) $(srcdir)/click.1 $(DESTDIR)$(mandir)/man1/click.1 -+ $(INSTALL_DATA) $(srcdir)/click.5 $(DESTDIR)$(mandir)/man5/click.5 -+ $(INSTALL_DATA) $(srcdir)/click.o.8 $(DESTDIR)$(mandir)/man8/click.o.8 -+ $(INSTALL_DATA) $(srcdir)/click-align.1 $(DESTDIR)$(mandir)/man1/click-align.1 -+ $(INSTALL_DATA) $(srcdir)/click-combine.1 $(DESTDIR)$(mandir)/man1/click-combine.1 -+ $(INSTALL_DATA) $(srcdir)/click-devirtualize.1 $(DESTDIR)$(mandir)/man1/click-devirtualize.1 -+ $(INSTALL_DATA) $(srcdir)/click-fastclassifier.1 $(DESTDIR)$(mandir)/man1/click-fastclassifier.1 -+ $(INSTALL_DATA) $(srcdir)/click-flatten.1 $(DESTDIR)$(mandir)/man1/click-flatten.1 -+ $(INSTALL_DATA) $(srcdir)/click-install.1 $(DESTDIR)$(mandir)/man1/click-install.1 -+ $(INSTALL_DATA) $(srcdir)/click-mkmindriver.1 $(DESTDIR)$(mandir)/man1/click-mkmindriver.1 -+ $(INSTALL_DATA) $(srcdir)/click-pretty.1 $(DESTDIR)$(mandir)/man1/click-pretty.1 -+ $(INSTALL_DATA) $(srcdir)/click-uncombine.1 $(DESTDIR)$(mandir)/man1/click-uncombine.1 -+ $(INSTALL_DATA) $(srcdir)/click-undead.1 $(DESTDIR)$(mandir)/man1/click-undead.1 -+ $(INSTALL_DATA) $(srcdir)/click-uninstall.1 $(DESTDIR)$(mandir)/man1/click-uninstall.1 -+ $(INSTALL_DATA) $(srcdir)/click-xform.1 $(DESTDIR)$(mandir)/man1/click-xform.1 -+ $(INSTALL_DATA) $(srcdir)/elementdoc.7 $(DESTDIR)$(mandir)/man7/elementdoc.7 -+ $(INSTALL_DATA) testie.1 $(DESTDIR)$(mandir)/man1/testie.1 -+ $(PERL) $(srcdir)/click-elem2man -l -d $(DESTDIR)$(mandir)/mann -P DEFAULT -p $(top_srcdir) $(top_builddir)/elementmap.xml -+install-info: Makefile click.info -+ $(mkinstalldirs) $(DESTDIR)$(infodir) -+ @for f in click.info click.info-[0-9] click.info-[0-9][0-9]; do \ -+ if test -f $$f; then \ -+ echo "$(INSTALL_DATA) $$f $(DESTDIR)$(infodir)/$$f"; \ -+ $(INSTALL_DATA) $$f $(DESTDIR)$(infodir)/$$f || exit 1; fi; \ -+ done -+ -$(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/click.info 2>&1 >/dev/null -+ -+uninstall: uninstall-man uninstall-info -+ /bin/rm -f $(DESTDIR)$(bindir)/click-elem2man -+uninstall-man: $(top_builddir)/elementmap.xml -+ cd $(DESTDIR)$(mandir)/man1; /bin/rm -f click.1 click-align.1 click-combine.1 click-devirtualize.1 click-fastclassifier.1 click-flatten.1 click-install.1 click-mkmindriver.1 click-pretty.1 click-uncombine.1 click-undead.1 click-uninstall.1 click-xform.1 testie.1 -+ cd $(DESTDIR)$(mandir)/man5; /bin/rm -f click.5 -+ cd $(DESTDIR)$(mandir)/man7; /bin/rm -f elementdoc.7 -+ cd $(DESTDIR)$(mandir)/man8; /bin/rm -f click.o.8 -+ $(PERL) $(srcdir)/click-elem2man -l -d $(DESTDIR)$(mandir)/mann -P DEFAULT -p $(top_srcdir) -u $(top_builddir)/elementmap.xml -+uninstall-info: click.info -+ @for f in click.info click.info-[0-9] click.info-[0-9][0-9]; do \ -+ if test -f $$f; then \ -+ echo "/bin/rm -f $(DESTDIR)$(infodir)/$$f"; \ -+ /bin/rm -f $(DESTDIR)$(infodir)/$$f; fi; \ -+ done -+ -+info: click.info -+ @: -+click.info: $(srcdir)/click.texi -+ @-if [ ! -f click.info -a -f $(srcdir)/click.info ]; then \ -+ echo $(CP_PRESERVE) "$(srcdir)/click.info*" .; \ -+ $(CP_PRESERVE) $(srcdir)/click.info* .; \ -+ $(MAKE) click.info; \ -+ else \ -+ echo $(MAKEINFO) $(srcdir)/click.texi; \ -+ $(MAKEINFO) $(srcdir)/click.texi; \ -+ fi -+click.html: $(srcdir)/click.texi -+ $(MAKEINFO) --html --no-split --number-sections $(srcdir)/click.texi -+ $(PERL) -pi -e 's|^ -- Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 -- --*******************************************************************************/ -- -- --/* Linux PRO/1000 Ethernet Driver main header file */ -- --#ifndef _E1000_H_ --#define _E1000_H_ --#ifndef __E1000_MAIN__ --#define __NO_VERSION__ --#endif -- --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#include --#ifdef SIOCETHTOOL --#include --#endif --#ifdef NETIF_F_HW_VLAN_TX --#include --#endif -- --#define BAR_0 0 --#define BAR_1 1 --#define BAR_5 5 --#define PCI_DMA_64BIT 0xffffffffffffffffULL --#define PCI_DMA_32BIT 0x00000000ffffffffULL -- --#include "kcompat.h" -- --struct e1000_adapter; -- --#include "e1000_hw.h" --#ifdef IANS --#include "base_comm.h" --#include "ans_driver.h" --#include "ans.h" --#endif --#ifdef IDIAG --#include "idiag_pro.h" --#endif -- --#if DBG --#define E1000_DBG(args...) printk(KERN_DEBUG "e1000: " args) --#else --#define E1000_DBG(args...) --#endif -- --#define E1000_ERR(args...) printk(KERN_ERR "e1000: " args) -- --#define E1000_MAX_INTR 10 -- --/* Supported Rx Buffer Sizes */ --#define E1000_RXBUFFER_2048 2048 --#define E1000_RXBUFFER_4096 4096 --#define E1000_RXBUFFER_8192 8192 --#define E1000_RXBUFFER_16384 16384 -- --/* How many Tx Descriptors do we need to call netif_wake_queue ? */ --#define E1000_TX_QUEUE_WAKE 16 --/* How many Rx Buffers do we bundle into one write to the hardware ? */ --#define E1000_RX_BUFFER_WRITE 16 -- --#define E1000_JUMBO_PBA 0x00000028 --#define E1000_DEFAULT_PBA 0x00000030 -- --#define AUTO_ALL_MODES 0 -- --/* only works for sizes that are powers of 2 */ --#define E1000_ROUNDUP(i, size) ((i) = (((i) + (size) - 1) & ~((size) - 1))) -- --/* wrapper around a pointer to a socket buffer, -- * so a DMA handle can be stored along with the buffer */ --struct e1000_buffer { -- struct sk_buff *skb; -- uint64_t dma; -- unsigned long length; -- unsigned long time_stamp; --}; -- --struct e1000_desc_ring { -- /* pointer to the descriptor ring memory */ -- void *desc; -- /* physical address of the descriptor ring */ -- dma_addr_t dma; -- /* length of descriptor ring in bytes */ -- unsigned int size; -- /* number of descriptors in the ring */ -- unsigned int count; -- /* next descriptor to associate a buffer with */ -- unsigned int next_to_use; -- /* next descriptor to check for DD status bit */ -- unsigned int next_to_clean; -- /* array of buffer information structs */ -- struct e1000_buffer *buffer_info; --}; -- --#define E1000_DESC_UNUSED(R) \ --((((R)->next_to_clean + (R)->count) - ((R)->next_to_use + 1)) % ((R)->count)) -- --#define E1000_GET_DESC(R, i, type) (&(((struct type *)((R).desc))[i])) --#define E1000_RX_DESC(R, i) E1000_GET_DESC(R, i, e1000_rx_desc) --#define E1000_TX_DESC(R, i) E1000_GET_DESC(R, i, e1000_tx_desc) --#define E1000_CONTEXT_DESC(R, i) E1000_GET_DESC(R, i, e1000_context_desc) -- --/* board specific private data structure */ -- --struct e1000_adapter { --#ifdef IANS -- void *iANSReserved; -- piANSsupport_t iANSdata; -- uint32_t ans_link; -- uint32_t ans_speed; -- uint32_t ans_duplex; -- uint32_t ans_suspend; -- IANS_BD_TAGGING_MODE tag_mode; --#endif -- struct timer_list watchdog_timer; -- struct timer_list phy_info_timer; --#ifdef CONFIG_PROC_FS -- struct list_head proc_list_head; --#endif --#ifdef NETIF_F_HW_VLAN_TX -- struct vlan_group *vlgrp; --#endif -- char *id_string; -- uint32_t bd_number; -- uint32_t rx_buffer_len; -- uint32_t part_num; -- uint32_t wol; -- uint16_t link_speed; -- uint16_t link_duplex; -- spinlock_t stats_lock; -- atomic_t irq_sem; -- --#ifdef ETHTOOL_PHYS_ID -- struct timer_list blink_timer; -- unsigned long led_status; --#endif -- -- /* TX */ -- struct e1000_desc_ring tx_ring; -- uint32_t txd_cmd; -- uint32_t tx_int_delay; -- uint32_t tx_abs_int_delay; -- int max_data_per_txd; -- -- /* RX */ -- struct e1000_desc_ring rx_ring; -- uint64_t hw_csum_err; -- uint64_t hw_csum_good; -- uint32_t rx_int_delay; -- uint32_t rx_abs_int_delay; -- boolean_t rx_csum; -- -- /* OS defined structs */ -- struct net_device *netdev; -- struct pci_dev *pdev; -- struct net_device_stats net_stats; -- -- /* structs defined in e1000_hw.h */ -- struct e1000_hw hw; -- struct e1000_hw_stats stats; -- struct e1000_phy_info phy_info; -- struct e1000_phy_stats phy_stats; -- --#ifdef IDIAG -- uint32_t diag_icr; -- struct e1000_desc_ring diag_tx_ring; -- struct e1000_desc_ring diag_rx_ring; --#endif -- --#ifdef E1000_COUNT_ICR -- uint64_t icr_txdw; -- uint64_t icr_txqe; -- uint64_t icr_lsc; -- uint64_t icr_rxseq; -- uint64_t icr_rxdmt; -- uint64_t icr_rxo; -- uint64_t icr_rxt; -- uint64_t icr_mdac; -- uint64_t icr_rxcfg; -- uint64_t icr_gpi; --#endif -- -- uint32_t pci_state[16]; -- -- /* Semaphore for locking HW access vs. i2c-i8254x SMBUS driver */ -- struct semaphore smbus_lock; --}; --#endif /* _E1000_H_ */ -diff -Nurb click-1.6.0/drivers/e1000-4.x/src/e1000_idiag.c.orig click-1.6.0-27/drivers/e1000-4.x/src/e1000_idiag.c.orig ---- click-1.6.0/drivers/e1000-4.x/src/e1000_idiag.c.orig 2007-07-16 19:47:50.000000000 -0400 -+++ click-1.6.0-27/drivers/e1000-4.x/src/e1000_idiag.c.orig 1969-12-31 19:00:00.000000000 -0500 -@@ -1,1048 +0,0 @@ --/******************************************************************************* -- -- -- Copyright(c) 1999 - 2002 Intel Corporation. All rights reserved. -- -- 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. -- -- The full GNU General Public License is included in this distribution in the -- file called LICENSE. -- -- Contact Information: -- Linux NICS -- Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 -- --*******************************************************************************/ -- --/* -- * Intel PRO diagnostics -- */ -- --#include "e1000.h" --#include "idiag_pro.h" --#include "idiag_e1000.h" -- --extern int e1000_up(struct e1000_adapter *adapter); --extern void e1000_down(struct e1000_adapter *adapter); --extern void e1000_reset(struct e1000_adapter *adapter); -- --#define REG_PATTERN_TEST(R, M, W) \ --{ \ -- uint32_t pat, value; \ -- uint32_t test[] = \ -- {0x5A5A5A5A, 0xA5A5A5A5, 0x00000000, 0xFFFFFFFF}; \ -- for(pat = 0; pat < sizeof(test)/sizeof(test[0]); pat++) { \ -- E1000_WRITE_REG(&adapter->hw, R, (test[pat] & W)); \ -- value = E1000_READ_REG(&adapter->hw, R); \ -- if(value != (test[pat] & W & M)) { \ -- param->reg = \ -- (adapter->hw.mac_type < e1000_82543) ? \ -- E1000_82542_##R : E1000_##R; \ -- param->write_value = test[pat] & W; \ -- param->read_value = value; \ -- return IDIAG_PRO_STAT_TEST_FAILED; \ -- } \ -- } \ --} -- --#define REG_SET_AND_CHECK(R, M, W) \ --{ \ -- uint32_t value; \ -- E1000_WRITE_REG(&adapter->hw, R, W & M); \ -- value = E1000_READ_REG(&adapter->hw, R); \ -- if ((W & M) != (value & M)) { \ -- param->reg = (adapter->hw.mac_type < e1000_82543) ? \ -- E1000_82542_##R : E1000_##R; \ -- param->write_value = W & M; \ -- param->read_value = value & M; \ -- return IDIAG_PRO_STAT_TEST_FAILED; \ -- } \ --} -- --static enum idiag_pro_stat --e1000_diag_reg_test(struct e1000_adapter *adapter, -- uint8_t *diag_param) --{ -- struct idiag_e1000_diag_reg_test_param *param = -- (struct idiag_e1000_diag_reg_test_param *) diag_param; -- uint32_t value; -- uint32_t i; -- -- /* The status register is Read Only, so a write should fail. -- * Some bits that get toggled are ignored. -- */ -- value = (E1000_READ_REG(&adapter->hw, STATUS) & (0xFFFFF833)); -- E1000_WRITE_REG(&adapter->hw, STATUS, (0xFFFFFFFF)); -- if(value != (E1000_READ_REG(&adapter->hw, STATUS) & (0xFFFFF833))) { -- param->reg = E1000_STATUS; -- param->write_value = 0xFFFFFFFF; -- param->read_value = value; -- return IDIAG_PRO_STAT_TEST_FAILED; -- } -- -- REG_PATTERN_TEST(FCAL, 0xFFFFFFFF, 0xFFFFFFFF); -- REG_PATTERN_TEST(FCAH, 0x0000FFFF, 0xFFFFFFFF); -- REG_PATTERN_TEST(FCT, 0x0000FFFF, 0xFFFFFFFF); -- REG_PATTERN_TEST(VET, 0x0000FFFF, 0xFFFFFFFF); -- REG_PATTERN_TEST(RDTR, 0x0000FFFF, 0xFFFFFFFF); -- REG_PATTERN_TEST(RDBAH, 0xFFFFFFFF, 0xFFFFFFFF); -- REG_PATTERN_TEST(RDLEN, 0x000FFF80, 0x000FFFFF); -- REG_PATTERN_TEST(RDH, 0x0000FFFF, 0x0000FFFF); -- REG_PATTERN_TEST(RDT, 0x0000FFFF, 0x0000FFFF); -- REG_PATTERN_TEST(FCRTH, 0x0000FFF8, 0x0000FFF8); -- REG_PATTERN_TEST(FCTTV, 0x0000FFFF, 0x0000FFFF); -- REG_PATTERN_TEST(TIPG, 0x3FFFFFFF, 0x3FFFFFFF); -- REG_PATTERN_TEST(TDBAH, 0xFFFFFFFF, 0xFFFFFFFF); -- REG_PATTERN_TEST(TDLEN, 0x000FFF80, 0x000FFFFF); -- -- REG_SET_AND_CHECK(RCTL, 0xFFFFFFFF, 0x00000000); -- REG_SET_AND_CHECK(RCTL, 0x06DFB3FE, 0x003FFFFB); -- REG_SET_AND_CHECK(TCTL, 0xFFFFFFFF, 0x00000000); -- -- if(adapter->hw.mac_type >= e1000_82543) { -- -- REG_SET_AND_CHECK(RCTL, 0x06DFB3FE, 0xFFFFFFFF); -- REG_PATTERN_TEST(RDBAL, 0xFFFFFFF0, 0xFFFFFFFF); -- REG_PATTERN_TEST(TXCW, 0xC000FFFF, 0x0000FFFF); -- REG_PATTERN_TEST(TDBAL, 0xFFFFFFF0, 0xFFFFFFFF); -- REG_PATTERN_TEST(TIDV, 0x0000FFFF, 0x0000FFFF); -- -- for(i = 0; i < E1000_RAR_ENTRIES; i++) { -- REG_PATTERN_TEST(RA + ((i << 1) << 2), 0xFFFFFFFF, -- 0xFFFFFFFF); -- REG_PATTERN_TEST(RA + (((i << 1) + 1) << 2), 0x8003FFFF, -- 0xFFFFFFFF); -- } -- -- } else { -- -- REG_SET_AND_CHECK(RCTL, 0xFFFFFFFF, 0x01FFFFFF); -- REG_PATTERN_TEST(RDBAL, 0xFFFFF000, 0xFFFFFFFF); -- REG_PATTERN_TEST(TXCW, 0x0000FFFF, 0x0000FFFF); -- REG_PATTERN_TEST(TDBAL, 0xFFFFF000, 0xFFFFFFFF); -- -- } -- -- for(i = 0; i < E1000_MC_TBL_SIZE; i++) -- REG_PATTERN_TEST(MTA + (i << 2), 0xFFFFFFFF, 0xFFFFFFFF); -- -- return IDIAG_PRO_STAT_OK; --} -- -- --static enum idiag_pro_stat --e1000_diag_eeprom_test(struct e1000_adapter *adapter, -- uint8_t *diag_param) --{ -- struct idiag_e1000_diag_eeprom_test_param *param = -- (struct idiag_e1000_diag_eeprom_test_param *) diag_param; -- uint16_t temp; -- uint16_t checksum = 0; -- uint16_t i; -- -- /* Read and add up the contents of the EEPROM */ -- for(i = 0; i < (EEPROM_CHECKSUM_REG + 1); i++) { -- if((e1000_read_eeprom(&adapter->hw, i, &temp)) < 0) { -- param->actual_checksum = checksum; -- param->expected_checksum = EEPROM_SUM; -- return IDIAG_PRO_STAT_TEST_FATAL; -- } -- checksum += temp; -- } -- -- /* If Checksum is not Correct return error else test passed */ -- if(checksum != (uint16_t) EEPROM_SUM) { -- param->actual_checksum = checksum; -- param->expected_checksum = EEPROM_SUM; -- return IDIAG_PRO_STAT_TEST_FAILED; -- } -- -- return IDIAG_PRO_STAT_OK; --} -- --static void --e1000_diag_intr(int irq, -- void *data, -- struct pt_regs *regs) --{ -- struct net_device *netdev = (struct net_device *) data; -- struct e1000_adapter *adapter = netdev->priv; -- -- adapter->diag_icr |= E1000_READ_REG(&adapter->hw, ICR); -- -- return; --} -- --static enum idiag_pro_stat --e1000_diag_intr_test(struct e1000_adapter *adapter, -- uint8_t *diag_param) --{ -- struct net_device *netdev = adapter->netdev; -- enum idiag_e1000_diag_intr_test_param *param = -- (enum idiag_e1000_diag_intr_test_param *) diag_param; -- uint32_t icr, i, mask; -- -- *param = IDIAG_E1000_INTR_TEST_OK; -- -- /* Hook up diag interrupt handler just for this test */ -- if(request_irq -- (netdev->irq, &e1000_diag_intr, SA_SHIRQ, netdev->name, netdev)) -- return IDIAG_PRO_STAT_TEST_FATAL; -- -- /* Disable all the interrupts */ -- E1000_WRITE_REG(&adapter->hw, IMC, 0xFFFFFFFF); -- msec_delay(10); -- -- /* Interrupts are disabled, so read interrupt cause -- * register (icr) twice to verify that there are no interrupts -- * pending. icr is clear on read. -- */ -- icr = E1000_READ_REG(&adapter->hw, ICR); -- icr = E1000_READ_REG(&adapter->hw, ICR); -- -- if(icr != 0) { -- /* if icr is non-zero, there is no point -- * running other interrupt tests. -- */ -- *param = IDIAG_E1000_INTR_TEST_NOT_EXEC; -- return IDIAG_PRO_STAT_TEST_FAILED; -- } -- -- /* Test each interrupt */ -- for(i = 0; i < 10; i++) { -- -- /* Interrupt to test */ -- mask = 1 << i; -- -- /* Disable the interrupt to be reported in -- * the cause register and then force the same -- * interrupt and see if one gets posted. If -- * an interrupt was posted to the bus, the -- * test failed. -- */ -- adapter->diag_icr = 0; -- E1000_WRITE_REG(&adapter->hw, IMC, mask); -- E1000_WRITE_REG(&adapter->hw, ICS, mask); -- msec_delay(10); -- -- if(adapter->diag_icr & mask) { -- *param = IDIAG_E1000_INTR_TEST_FAILED_WHILE_DISABLED; -- break; -- } -- -- /* Enable the interrupt to be reported in -- * the cause register and then force the same -- * interrupt and see if one gets posted. If -- * an interrupt was not posted to the bus, the -- * test failed. -- */ -- adapter->diag_icr = 0; -- E1000_WRITE_REG(&adapter->hw, IMS, mask); -- E1000_WRITE_REG(&adapter->hw, ICS, mask); -- msec_delay(10); -- -- if(!(adapter->diag_icr & mask)) { -- *param = IDIAG_E1000_INTR_TEST_FAILED_WHILE_ENABLED; -- break; -- } -- -- /* Disable the other interrupts to be reported in -- * the cause register and then force the other -- * interrupts and see if any get posted. If -- * an interrupt was posted to the bus, the -- * test failed. -- */ -- adapter->diag_icr = 0; -- E1000_WRITE_REG(&adapter->hw, IMC, ~mask); -- E1000_WRITE_REG(&adapter->hw, ICS, ~mask); -- msec_delay(10); -- -- if(adapter->diag_icr) { -- *param = IDIAG_E1000_INTR_TEST_FAILED_MASKED_ENABLED; -- break; -- } -- } -- -- /* Disable all the interrupts */ -- E1000_WRITE_REG(&adapter->hw, IMC, 0xFFFFFFFF); -- msec_delay(10); -- -- /* Unhook diag interrupt handler */ -- free_irq(netdev->irq, netdev); -- -- return (*param == -- IDIAG_E1000_INTR_TEST_OK) ? IDIAG_PRO_STAT_OK : -- IDIAG_PRO_STAT_TEST_FAILED; --} -- --static void --e1000_free_desc_rings(struct e1000_adapter *adapter) --{ -- struct e1000_desc_ring *txdr = &adapter->diag_tx_ring; -- struct e1000_desc_ring *rxdr = &adapter->diag_rx_ring; -- struct pci_dev *pdev = adapter->pdev; -- int i; -- -- if(txdr->desc && txdr->buffer_info) { -- for(i = 0; i < txdr->count; i++) { -- if(txdr->buffer_info[i].dma) -- pci_unmap_single(pdev, txdr->buffer_info[i].dma, -- txdr->buffer_info[i].length, -- PCI_DMA_TODEVICE); -- if(txdr->buffer_info[i].skb) -- dev_kfree_skb(txdr->buffer_info[i].skb); -- } -- } -- -- if(rxdr->desc && rxdr->buffer_info) { -- for(i = 0; i < rxdr->count; i++) { -- if(rxdr->buffer_info[i].dma) -- pci_unmap_single(pdev, rxdr->buffer_info[i].dma, -- rxdr->buffer_info[i].length, -- PCI_DMA_FROMDEVICE); -- if(rxdr->buffer_info[i].skb) -- dev_kfree_skb(rxdr->buffer_info[i].skb); -- } -- } -- -- if(txdr->desc) -- pci_free_consistent(pdev, txdr->size, txdr->desc, txdr->dma); -- if(rxdr->desc) -- pci_free_consistent(pdev, rxdr->size, rxdr->desc, rxdr->dma); -- -- if(txdr->buffer_info) -- kfree(txdr->buffer_info); -- if(rxdr->buffer_info) -- kfree(rxdr->buffer_info); -- -- return; --} -- --static int --e1000_setup_desc_rings(struct e1000_adapter *adapter) --{ -- struct e1000_desc_ring *txdr = &adapter->diag_tx_ring; -- struct e1000_desc_ring *rxdr = &adapter->diag_rx_ring; -- struct pci_dev *pdev = adapter->pdev; -- uint32_t rctl; -- int size, i; -- -- /* Setup Tx descriptor ring and Tx buffers */ -- -- txdr->count = 80; -- -- size = txdr->count * sizeof(struct e1000_buffer); -- if(!(txdr->buffer_info = kmalloc(size, GFP_KERNEL))) -- goto err_nomem; -- memset(txdr->buffer_info, 0, size); -- -- txdr->size = txdr->count * sizeof(struct e1000_tx_desc); -- E1000_ROUNDUP(txdr->size, 4096); -- if(!(txdr->desc = pci_alloc_consistent(pdev, txdr->size, &txdr->dma))) -- goto err_nomem; -- memset(txdr->desc, 0, txdr->size); -- txdr->next_to_use = txdr->next_to_clean = 0; -- -- E1000_WRITE_REG(&adapter->hw, TDBAL, -- ((uint64_t) txdr->dma & 0x00000000FFFFFFFF)); -- E1000_WRITE_REG(&adapter->hw, TDBAH, ((uint64_t) txdr->dma >> 32)); -- E1000_WRITE_REG(&adapter->hw, TDLEN, -- txdr->count * sizeof(struct e1000_tx_desc)); -- E1000_WRITE_REG(&adapter->hw, TDH, 0); -- E1000_WRITE_REG(&adapter->hw, TDT, 0); -- E1000_WRITE_REG(&adapter->hw, TCTL, -- E1000_TCTL_PSP | E1000_TCTL_EN | -- E1000_COLLISION_THRESHOLD << E1000_CT_SHIFT | -- E1000_FDX_COLLISION_DISTANCE << E1000_COLD_SHIFT); -- -- for(i = 0; i < txdr->count; i++) { -- struct e1000_tx_desc *tx_desc = E1000_TX_DESC(*txdr, i); -- struct sk_buff *skb; -- unsigned int size = 1024; -- -- if(!(skb = alloc_skb(size, GFP_KERNEL))) -- goto err_nomem; -- skb_put(skb, size); -- txdr->buffer_info[i].skb = skb; -- txdr->buffer_info[i].length = skb->len; -- txdr->buffer_info[i].dma = -- pci_map_single(pdev, skb->data, skb->len, -- PCI_DMA_TODEVICE); -- tx_desc->buffer_addr = cpu_to_le64(txdr->buffer_info[i].dma); -- tx_desc->lower.data = cpu_to_le32(skb->len); -- tx_desc->lower.data |= E1000_TXD_CMD_EOP; -- tx_desc->lower.data |= E1000_TXD_CMD_IFCS; -- tx_desc->lower.data |= E1000_TXD_CMD_RPS; -- tx_desc->upper.data = 0; -- } -- -- /* Setup Rx descriptor ring and Rx buffers */ -- -- rxdr->count = 80; -- -- size = rxdr->count * sizeof(struct e1000_buffer); -- if(!(rxdr->buffer_info = kmalloc(size, GFP_KERNEL))) -- goto err_nomem; -- memset(rxdr->buffer_info, 0, size); -- -- rxdr->size = rxdr->count * sizeof(struct e1000_rx_desc); -- if(!(rxdr->desc = pci_alloc_consistent(pdev, rxdr->size, &rxdr->dma))) -- goto err_nomem; -- memset(rxdr->desc, 0, rxdr->size); -- rxdr->next_to_use = rxdr->next_to_clean = 0; -- -- rctl = E1000_READ_REG(&adapter->hw, RCTL); -- E1000_WRITE_REG(&adapter->hw, RCTL, rctl & ~E1000_RCTL_EN); -- E1000_WRITE_REG(&adapter->hw, RDBAL, -- ((uint64_t) rxdr->dma & 0xFFFFFFFF)); -- E1000_WRITE_REG(&adapter->hw, RDBAH, ((uint64_t) rxdr->dma >> 32)); -- E1000_WRITE_REG(&adapter->hw, RDLEN, rxdr->size); -- E1000_WRITE_REG(&adapter->hw, RDH, 0); -- E1000_WRITE_REG(&adapter->hw, RDT, 0); -- rctl = E1000_RCTL_EN | E1000_RCTL_BAM | E1000_RCTL_SZ_2048 | -- E1000_RCTL_LBM_NO | E1000_RCTL_RDMTS_HALF | -- (adapter->hw.mc_filter_type << E1000_RCTL_MO_SHIFT); -- E1000_WRITE_REG(&adapter->hw, RCTL, rctl); -- -- for(i = 0; i < rxdr->count; i++) { -- struct e1000_rx_desc *rx_desc = E1000_RX_DESC(*rxdr, i); -- struct sk_buff *skb; -- -- if(!(skb = alloc_skb(E1000_RXBUFFER_2048 + 2, GFP_KERNEL))) -- goto err_nomem; -- skb_reserve(skb, 2); -- rxdr->buffer_info[i].skb = skb; -- rxdr->buffer_info[i].length = E1000_RXBUFFER_2048; -- rxdr->buffer_info[i].dma = -- pci_map_single(pdev, skb->data, E1000_RXBUFFER_2048, -- PCI_DMA_FROMDEVICE); -- rx_desc->buffer_addr = cpu_to_le64(rxdr->buffer_info[i].dma); -- memset(skb->data, 0x00, skb->len); -- } -- -- return 0; -- -- err_nomem: -- e1000_free_desc_rings(adapter); -- return -ENOMEM; --} -- --/** -- * e1000_phy_disable_receiver - This routine disables the receiver -- * during loopback testing to insure that if, in the middle of a -- * loopback test, a link partner is connected, it won't change the -- * speed or link status and thus cause a failure. -- * -- * @adapter: board private structure -- **/ -- --static void --e1000_phy_disable_receiver(struct e1000_adapter *adapter) --{ -- /* Write out to PHY registers 29 and 30 to disable the Receiver. */ -- e1000_write_phy_reg(&adapter->hw, 29, 0x001F); -- e1000_write_phy_reg(&adapter->hw, 30, 0x8FFC); -- e1000_write_phy_reg(&adapter->hw, 29, 0x001A); -- e1000_write_phy_reg(&adapter->hw, 30, 0x8FF0); -- -- return; --} -- --/** -- * e1000_phy_reset_clk_and_crs - This routine resets the TX_CLK and -- * TX_CRS registers on the non-integrated PHY. -- * -- * @adapter: board private structure -- **/ -- --static void --e1000_phy_reset_clk_and_crs(struct e1000_adapter *adapter) --{ -- uint16_t phy_reg; -- -- /* Because we reset the PHY above, we need to re-force TX_CLK in the -- * Extended PHY Specific Control Register to 25MHz clock. This -- * value defaults back to a 2.5MHz clock when the PHY is reset. -- */ -- e1000_read_phy_reg(&adapter->hw, M88E1000_EXT_PHY_SPEC_CTRL, &phy_reg); -- phy_reg |= M88E1000_EPSCR_TX_CLK_25; -- e1000_write_phy_reg(&adapter->hw, -- M88E1000_EXT_PHY_SPEC_CTRL, phy_reg); -- -- /* In addition, because of the s/w reset above, we need to enable -- * CRS on TX. This must be set for both full and half duplex -- * operation. -- */ -- e1000_read_phy_reg(&adapter->hw, M88E1000_PHY_SPEC_CTRL, &phy_reg); -- phy_reg |= M88E1000_PSCR_ASSERT_CRS_ON_TX; -- e1000_write_phy_reg(&adapter->hw, -- M88E1000_PHY_SPEC_CTRL, phy_reg); --} -- --/** -- * e1000_nonintegrated_phy_loopback - This routine enables the PHY -- * loopback circuit to work on the non-integrated PHY, under *any* link -- * condition. -- * -- * @adapter: board private structure -- * -- * Returns 0 on success, 1 on failure -- **/ -- --static int --e1000_nonintegrated_phy_loopback(struct e1000_adapter *adapter) --{ -- uint32_t ctrl_reg; -- uint16_t phy_reg; -- int status = 1; -- -- /* Setup the Device Control Register for PHY loopback test. */ -- -- ctrl_reg = E1000_READ_REG(&adapter->hw, CTRL); -- ctrl_reg |= (E1000_CTRL_ILOS | /* Invert Loss-Of-Signal */ -- E1000_CTRL_FRCSPD | /* Set the Force Speed Bit */ -- E1000_CTRL_FRCDPX | /* Set the Force Duplex Bit */ -- E1000_CTRL_SPD_1000 | /* Force Speed to 1000 */ -- E1000_CTRL_FD); /* Force Duplex to FULL */ -- -- E1000_WRITE_REG(&adapter->hw, CTRL, ctrl_reg); -- -- /* Read the PHY Specific Control Register (0x10) */ -- e1000_read_phy_reg(&adapter->hw, M88E1000_PHY_SPEC_CTRL, &phy_reg); -- -- /* Clear Auto-Crossover bits in PHY Specific Control Register -- * (bits 6:5). -- */ -- phy_reg &= ~M88E1000_PSCR_AUTO_X_MODE; -- e1000_write_phy_reg(&adapter->hw, M88E1000_PHY_SPEC_CTRL, phy_reg); -- -- /* Perform software reset on the PHY */ -- e1000_phy_reset(&adapter->hw); -- -- /* Have to setup TX_CLK and TX_CRS after software reset */ -- e1000_phy_reset_clk_and_crs(adapter); -- -- e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x8100); -- -- /* Wait for reset to complete. */ -- usec_delay(500); -- -- /* Have to setup TX_CLK and TX_CRS after software reset */ -- e1000_phy_reset_clk_and_crs(adapter); -- -- /* Write out to PHY registers 29 and 30 to disable the Receiver. */ -- e1000_phy_disable_receiver(adapter); -- -- /* Set the loopback bit in the PHY control register. */ -- e1000_read_phy_reg(&adapter->hw, PHY_CTRL, &phy_reg); -- phy_reg |= MII_CR_LOOPBACK; -- e1000_write_phy_reg(&adapter->hw, PHY_CTRL, phy_reg); -- -- /* Setup TX_CLK and TX_CRS one more time. */ -- e1000_phy_reset_clk_and_crs(adapter); -- -- status = 0; -- -- /* Check Phy Configuration */ -- e1000_read_phy_reg(&adapter->hw, PHY_CTRL, &phy_reg); -- if(phy_reg != 0x4100) { -- status = 1; -- } -- -- e1000_read_phy_reg(&adapter->hw, M88E1000_EXT_PHY_SPEC_CTRL, &phy_reg); -- if(phy_reg != 0x0070) { -- status = 1; -- } -- -- e1000_read_phy_reg(&adapter->hw, 29, &phy_reg); -- if(phy_reg != 0x001A) { -- status = 1; -- } -- -- return status; --} -- --/** -- * e1000_integrated_phy_loopback - This routine is used by diagnostic -- * software to put the 82544, 82540, 82545, and 82546 MAC based network -- * cards into loopback mode. -- * -- * @adapter: board private structure -- * @speed: speed -- * -- * Current procedure is to: -- * 1) Disable auto-MDI/MDIX -- * 2) Perform SW phy reset (bit 15 of PHY_CTRL) -- * 3) Disable autoneg and reset -- * 4) For the specified speed, set the loopback -- * mode for that speed. Also force the MAC -- * to the correct speed and duplex for the -- * specified operation. -- * 5) If this is an 82543, setup the TX_CLK and -- * TX_CRS again. -- * 6) Disable the receiver so a cable disconnect -- * and reconnect will not cause autoneg to -- * begin. -- * -- * Returns 0 on success, 1 on failure -- **/ -- --static int --e1000_integrated_phy_loopback(struct e1000_adapter *adapter, -- uint16_t speed) --{ -- uint32_t ctrl_reg = 0; -- uint32_t stat_reg = 0; -- boolean_t loopback_mode_set = FALSE; -- -- adapter->hw.autoneg = FALSE; -- -- /* Set up desired loopback speed and duplex depending on input -- * into this function. -- */ -- switch (speed) { -- case SPEED_1000: -- /* Set up the MII control reg to the desired loopback speed. */ -- -- /* Auto-MDI/MDIX Off */ -- e1000_write_phy_reg(&adapter->hw, M88E1000_PHY_SPEC_CTRL, -- 0x0808); -- /* reset to update Auto-MDI/MDIX */ -- e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x9140); -- /* autoneg off */ -- e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x8140); -- /* force 1000, set loopback */ -- e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x4140); -- -- /* Now set up the MAC to the same speed/duplex as the PHY. */ -- ctrl_reg = E1000_READ_REG(&adapter->hw, CTRL); -- ctrl_reg &= ~E1000_CTRL_SPD_SEL; /* Clear the speed sel bits */ -- ctrl_reg |= (E1000_CTRL_FRCSPD | /* Set the Force Speed Bit */ -- E1000_CTRL_FRCDPX | /* Set the Force Duplex Bit */ -- E1000_CTRL_SPD_1000 |/* Force Speed to 1000 */ -- E1000_CTRL_FD); /* Force Duplex to FULL */ -- -- if(adapter->hw.media_type == e1000_media_type_copper) { -- ctrl_reg |= E1000_CTRL_ILOS; /* Invert Loss of Signal */ -- } else { -- /* Set the ILOS bit on the fiber Nic is half -- * duplex link is detected. */ -- stat_reg = E1000_READ_REG(&adapter->hw, STATUS); -- if((stat_reg & E1000_STATUS_FD) == 0) -- ctrl_reg |= (E1000_CTRL_ILOS | E1000_CTRL_SLU); -- } -- -- E1000_WRITE_REG(&adapter->hw, CTRL, ctrl_reg); -- loopback_mode_set = TRUE; -- break; -- -- case SPEED_100: -- /* Set up the MII control reg to the desired loopback speed. */ -- -- /* Auto-MDI/MDIX Off */ -- e1000_write_phy_reg(&adapter->hw, M88E1000_PHY_SPEC_CTRL, -- 0x0808); -- /* reset to update Auto-MDI/MDIX */ -- e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x9140); -- /* autoneg off */ -- e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x8140); -- /* reset to update autoneg */ -- e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x8100); -- /* MAC interface speed to 100Mbps */ -- e1000_write_phy_reg(&adapter->hw, -- M88E1000_EXT_PHY_SPEC_CTRL, 0x0c14); -- /* reset to update MAC interface speed */ -- e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0xe100); -- /* force 100, set loopback */ -- e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x6100); -- -- /* Now set up the MAC to the same speed/duplex as the PHY. */ -- ctrl_reg = E1000_READ_REG(&adapter->hw, CTRL); -- ctrl_reg &= ~E1000_CTRL_SPD_SEL; /* Clear the speed sel bits */ -- ctrl_reg |= (E1000_CTRL_ILOS | /* Invert Loss-Of-Signal */ -- E1000_CTRL_SLU | /* Set the Force Link Bit */ -- E1000_CTRL_FRCSPD | /* Set the Force Speed Bit */ -- E1000_CTRL_FRCDPX | /* Set the Force Duplex Bit */ -- E1000_CTRL_SPD_100 |/* Force Speed to 100 */ -- E1000_CTRL_FD); /* Force Duplex to FULL */ -- -- E1000_WRITE_REG(&adapter->hw, CTRL, ctrl_reg); -- loopback_mode_set = TRUE; -- break; -- -- case SPEED_10: -- /* Set up the MII control reg to the desired loopback speed. */ -- -- /* Auto-MDI/MDIX Off */ -- e1000_write_phy_reg(&adapter->hw, M88E1000_PHY_SPEC_CTRL, -- 0x0808); -- /* reset to update Auto-MDI/MDIX */ -- e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x9140); -- /* autoneg off */ -- e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x8140); -- /* reset to update autoneg */ -- e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x8100); -- /* MAC interface speed to 10Mbps */ -- e1000_write_phy_reg(&adapter->hw, -- M88E1000_EXT_PHY_SPEC_CTRL, 0x0c04); -- /* reset to update MAC interface speed */ -- e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x8100); -- /* force 10, set loopback */ -- e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x4100); -- -- /* Now set up the MAC to the same speed/duplex as the PHY. */ -- ctrl_reg = E1000_READ_REG(&adapter->hw, CTRL); -- ctrl_reg &= ~E1000_CTRL_SPD_SEL; /* Clear the speed sel bits */ -- ctrl_reg |= (E1000_CTRL_SLU | /* Set the Force Link Bit */ -- E1000_CTRL_FRCSPD |/* Set the Force Speed Bit */ -- E1000_CTRL_FRCDPX |/* Set the Force Duplex Bit */ -- E1000_CTRL_SPD_10 |/* Force Speed to 10 */ -- E1000_CTRL_FD); /* Force Duplex to FULL */ -- -- E1000_WRITE_REG(&adapter->hw, CTRL, ctrl_reg); -- loopback_mode_set = TRUE; -- break; -- -- default: -- loopback_mode_set = FALSE; -- break; -- } -- -- /* Disable the receiver on the PHY so when a cable is plugged -- * in, the PHY does not begin to autoneg when a cable is -- * reconnected to the NIC. -- */ -- e1000_phy_disable_receiver(adapter); -- -- usec_delay(500); -- -- return loopback_mode_set ? 0 : 1; --} -- --/** -- * e1000_set_phy_loopback - Set the PHY into loopback mode. -- * @adapter: board private structure -- * -- * Returns 0 on success, 1 on failure -- **/ -- --static int --e1000_set_phy_loopback(struct e1000_adapter *adapter) --{ -- uint16_t phy_reg = 0; -- uint16_t speed = 0; -- uint16_t duplex = 0; -- int status = 1; -- int count; -- -- switch (adapter->hw.mac_type) { -- case e1000_82543: -- if(adapter->hw.media_type == e1000_media_type_copper) { -- /* Attempt to setup Loopback mode on Non- -- * integrated PHY. Some PHY registers get -- * corrupted at random, so attempt this -- * 10 times. -- */ -- for(count = 0; count < 10; count++) -- if(!e1000_nonintegrated_phy_loopback(adapter)) -- break; -- status = 0; -- } -- break; -- -- case e1000_82544: -- if(adapter->hw.media_type == e1000_media_type_copper) -- e1000_get_speed_and_duplex(&adapter->hw, &speed, -- &duplex); -- status = e1000_integrated_phy_loopback(adapter, speed); -- break; -- -- case e1000_82540: -- case e1000_82545: -- case e1000_82546: -- e1000_get_speed_and_duplex(&adapter->hw, &speed, &duplex); -- status = e1000_integrated_phy_loopback(adapter, speed); -- break; -- -- default: -- /* Default PHY loopback work is to read the MII -- * control register and assert bit 14 (loopback mode). -- */ -- e1000_read_phy_reg(&adapter->hw, PHY_CTRL, &phy_reg); -- phy_reg |= MII_CR_LOOPBACK; -- e1000_write_phy_reg(&adapter->hw, PHY_CTRL, -- phy_reg); -- status = 0; -- break; -- } -- -- return status; --} -- --static int --e1000_set_loopback_mode(struct e1000_adapter *adapter, -- enum idiag_e1000_diag_loopback_mode mode) --{ -- uint32_t rctl; -- uint16_t phy_reg; -- int status = 1; -- -- switch (mode) { -- -- case IDIAG_E1000_DIAG_NONE_LB: -- /* Clear bits 7:6 to turn off loopback mode */ -- rctl = E1000_READ_REG(&adapter->hw, RCTL); -- rctl &= ~(E1000_RCTL_LBM_TCVR | E1000_RCTL_LBM_MAC); -- E1000_WRITE_REG(&adapter->hw, RCTL, rctl); -- /* Only modify the GMII/MII PHY device if the -- * media type is copper. -- */ -- if(adapter->hw.media_type == e1000_media_type_copper || -- (adapter->hw.media_type == e1000_media_type_fiber && -- (adapter->hw.mac_type == e1000_82545 || -- adapter->hw.mac_type == e1000_82546))) { -- adapter->hw.autoneg = TRUE; -- /* De-assert bit 14 (loopback mode) in PHY */ -- e1000_read_phy_reg(&adapter->hw, PHY_CTRL, &phy_reg); -- /* Only turn off PHY loopback if enabled */ -- if(phy_reg & MII_CR_LOOPBACK) { -- phy_reg &= ~MII_CR_LOOPBACK; -- e1000_write_phy_reg(&adapter->hw, PHY_CTRL, -- phy_reg); -- /* Reset the PHY to make sure we -- * regain link */ -- e1000_phy_reset(&adapter->hw); -- } -- } -- status = 0; -- break; -- -- -- case IDIAG_E1000_DIAG_MAC_LB: -- /* Not supported */ -- break; -- -- case IDIAG_E1000_DIAG_PHY_TCVR_LB: -- if(adapter->hw.media_type == e1000_media_type_fiber) { -- if(adapter->hw.mac_type == e1000_82545 || -- adapter->hw.mac_type == e1000_82546) { -- status = e1000_set_phy_loopback(adapter); -- } else { -- rctl = E1000_READ_REG(&adapter->hw, RCTL); -- rctl |= E1000_RCTL_LBM_TCVR; -- E1000_WRITE_REG(&adapter->hw, RCTL, rctl); -- status = 0; -- } -- } -- if(adapter->hw.media_type == e1000_media_type_copper) { -- status = e1000_set_phy_loopback(adapter); -- } -- break; -- } -- -- return status; --} -- --static void --e1000_create_lbtest_frame(struct sk_buff *skb, -- unsigned int frame_size) --{ -- memset(skb->data, 0xFF, frame_size); -- frame_size = (frame_size % 2) ? (frame_size - 1) : frame_size; -- memset(&skb->data[frame_size / 2], 0xAA, frame_size / 2 - 1); -- memset(&skb->data[frame_size / 2 + 10], 0xBE, 1); -- memset(&skb->data[frame_size / 2 + 12], 0xAF, 1); --} -- --static int --e1000_check_lbtest_frame(struct sk_buff *skb, -- unsigned int frame_size) --{ -- frame_size = (frame_size % 2) ? (frame_size - 1) : frame_size; -- if(*(skb->data + 3) == 0xFF) { -- if((*(skb->data + frame_size / 2 + 10) == 0xBE) && -- (*(skb->data + frame_size / 2 + 12) == 0xAF)) { -- return 1; -- } -- } -- return 0; --} -- --static enum idiag_e1000_diag_loopback_result --e1000_loopback_test(struct e1000_adapter *adapter) --{ -- struct e1000_desc_ring *txdr = &adapter->diag_tx_ring; -- struct e1000_desc_ring *rxdr = &adapter->diag_rx_ring; -- struct pci_dev *pdev = adapter->pdev; -- int i; -- -- E1000_WRITE_REG(&adapter->hw, RDT, rxdr->count - 1); -- -- for(i = 0; i < 64; i++) { -- e1000_create_lbtest_frame(txdr->buffer_info[i].skb, 1024); -- pci_dma_sync_single(pdev, txdr->buffer_info[i].dma, -- txdr->buffer_info[i].length, -- PCI_DMA_TODEVICE); -- } -- E1000_WRITE_REG(&adapter->hw, TDT, i); -- -- msec_delay(200); -- -- pci_dma_sync_single(pdev, rxdr->buffer_info[0].dma, -- rxdr->buffer_info[0].length, PCI_DMA_FROMDEVICE); -- if(e1000_check_lbtest_frame(rxdr->buffer_info[0].skb, 1024)) -- return IDIAG_E1000_LOOPBACK_TEST_OK; -- else -- return IDIAG_E1000_LOOPBACK_TEST_FAILED; --} -- --static enum idiag_pro_stat --e1000_diag_loopback_test(struct e1000_adapter *adapter, -- uint8_t *diag_param) --{ -- struct idiag_e1000_diag_loopback_test_param *param = -- (struct idiag_e1000_diag_loopback_test_param *) diag_param; -- -- if(param->mode == IDIAG_E1000_DIAG_MAC_LB) { -- /* Loopback test not support */ -- param->result = IDIAG_E1000_LOOPBACK_TEST_NOT_EXEC; -- return IDIAG_PRO_STAT_NOT_SUPPORTED; -- } -- -- if(e1000_setup_desc_rings(adapter)) { -- param->result = IDIAG_E1000_LOOPBACK_TEST_NOT_EXEC; -- return IDIAG_PRO_STAT_TEST_FAILED; -- } -- -- if(e1000_set_loopback_mode(adapter, param->mode)) { -- param->result = IDIAG_E1000_LOOPBACK_TEST_NOT_EXEC; -- e1000_free_desc_rings(adapter); -- return IDIAG_PRO_STAT_TEST_FAILED; -- } -- param->result = e1000_loopback_test(adapter); -- e1000_set_loopback_mode(adapter, IDIAG_E1000_DIAG_NONE_LB); -- -- e1000_free_desc_rings(adapter); -- -- return (param->result == -- IDIAG_E1000_LOOPBACK_TEST_OK) ? IDIAG_PRO_STAT_OK : -- IDIAG_PRO_STAT_TEST_FAILED; --} -- --static enum idiag_pro_stat --e1000_diag_link_test(struct e1000_adapter *adapter, -- uint8_t *diag_param) --{ -- e1000_check_for_link(&adapter->hw); -- -- if(E1000_READ_REG(&adapter->hw, STATUS) & E1000_STATUS_LU) -- return IDIAG_PRO_STAT_OK; -- else -- return IDIAG_PRO_STAT_TEST_FAILED; --} -- --int --e1000_diag_ioctl(struct net_device *netdev, -- struct ifreq *ifr) --{ -- struct e1000_adapter *adapter = netdev->priv; -- struct idiag_pro_data *diag_data = -- (struct idiag_pro_data *) ifr->ifr_data; -- boolean_t run_offline; -- boolean_t interface_up = netif_running(netdev); -- -- diag_data->status = IDIAG_PRO_STAT_NOT_SUPPORTED; -- -- if(!capable(CAP_NET_ADMIN)) -- /* must have admin capabilities */ -- return -EPERM; -- -- if(diag_data->interface_ver != IDIAG_PRO_VERSION) -- /* incorrect diagnostics interface version */ -- return -EFAULT; -- -- if(diag_data->cmd != IDIAG_PRO_IDENTIFY_DRIVER && -- diag_data->driver_id != IDIAG_E1000_DRIVER) -- /* incorrect driver identifier */ -- return -EFAULT; -- -- /* Some test requring exclusive access to hardware, so -- * we need to teardown the hardware setup, run the test, -- * and restore the hardware to resume the network -- * connection. -- */ -- run_offline = (diag_data->cmd == IDIAG_E1000_DIAG_REG_TEST || -- diag_data->cmd == IDIAG_E1000_DIAG_INTR_TEST || -- diag_data->cmd == IDIAG_E1000_DIAG_LOOPBACK_TEST); -- -- if(run_offline) { -- if(interface_up) -- e1000_down(adapter); -- else -- e1000_reset(adapter); -- } -- -- /* Run the diagnotic test */ -- switch (diag_data->cmd) { -- -- case IDIAG_PRO_IDENTIFY_DRIVER: -- diag_data->driver_id = IDIAG_E1000_DRIVER; -- diag_data->status = IDIAG_PRO_STAT_OK; -- break; -- -- case IDIAG_E1000_DIAG_REG_TEST: -- diag_data->status = -- e1000_diag_reg_test(adapter, diag_data->diag_param); -- break; -- -- case IDIAG_E1000_DIAG_XSUM_TEST: -- diag_data->status = -- e1000_diag_eeprom_test(adapter, diag_data->diag_param); -- break; -- -- case IDIAG_E1000_DIAG_INTR_TEST: -- diag_data->status = -- e1000_diag_intr_test(adapter, diag_data->diag_param); -- break; -- -- case IDIAG_E1000_DIAG_LOOPBACK_TEST: -- diag_data->status = -- e1000_diag_loopback_test(adapter, -- diag_data->diag_param); -- break; -- -- case IDIAG_E1000_DIAG_LINK_TEST: -- diag_data->status = -- e1000_diag_link_test(adapter, diag_data->diag_param); -- break; -- -- default: -- diag_data->status = IDIAG_PRO_STAT_NOT_SUPPORTED; -- break; -- } -- -- if(run_offline) { -- e1000_reset(adapter); -- if(interface_up) { -- if(e1000_up(adapter)) { -- diag_data->status = IDIAG_PRO_STAT_TEST_FATAL; -- return -EFAULT; -- } -- } -- } -- -- return 0; --} -- -diff -Nurb click-1.6.0/drivers/e1000-4.x/src/e1000_main.c.orig click-1.6.0-27/drivers/e1000-4.x/src/e1000_main.c.orig ---- click-1.6.0/drivers/e1000-4.x/src/e1000_main.c.orig 2007-07-16 19:47:50.000000000 -0400 -+++ click-1.6.0-27/drivers/e1000-4.x/src/e1000_main.c.orig 1969-12-31 19:00:00.000000000 -0500 -@@ -1,2536 +0,0 @@ --/******************************************************************************* -- -- -- Copyright(c) 1999 - 2002 Intel Corporation. All rights reserved. -- -- 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. -- -- The full GNU General Public License is included in this distribution in the -- file called LICENSE. -- -- Contact Information: -- Linux NICS -- Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 -- --*******************************************************************************/ -- --#define __E1000_MAIN__ --#ifdef IANS --#define _IANS_MAIN_MODULE_C_ --#endif --#include "e1000.h" -- --/* Change Log -- * -- * 4.3.15 8/9/02 -- * o Clean up: prepended a shortened version of the license that references -- * the full license in LICENSE. -- * o Clean up: copied small packets to small socket buffers for truesize -- * bug that is exposed with the NFS mount daemon. -- * o Clean up: added pci reads for pci posting issues. -- * o Bug fix: added memory barriers for IA64. -- * o Feature: added locking mechanism for asf functionality. -- * -- * 4.3.2 7/5/02 -- * o Bug fix: perform controller reset using I/O rather than mmio because -- * some chipsets try to perform a 64-bit write, but the controller ignores -- * the upper 32-bit write once the reset is intiated by the lower 32-bit -- * write, causing a master abort. -- * o Bug fix: fixed jumbo frames sized from 1514 to 2048. -- * o ASF support: disable ARP when driver is loaded or resumed; enable when -- * driver is removed or suspended. -- * o Bug fix: changed default setting for RxIntDelay to 0 for 82542/3/4 -- * controllers to workaround h/w errata where controller will hang when -- * RxIntDelay <> 0 under certian network conditions. -- * o Clean up: removed unused and undocumented user-settable settings for -- * PHY. -- * o Bug fix: ethtool GEEPROM was using byte address rather than word -- * addressing. -- * o Feature: added support for ethtool SEEPROM. -- * o Feature: added support for entropy pool. -- * -- * 4.2.17 5/30/02 -- */ -- --char e1000_driver_name[] = "e1000"; --char e1000_driver_string[] = "Intel(R) PRO/1000 Network Driver"; --char e1000_driver_version[] = "4.3.15"; --char e1000_copyright[] = "Copyright (c) 1999-2002 Intel Corporation."; -- --/* e1000_pci_tbl - PCI Device ID Table -- * -- * Private driver_data field (last one) stores an index into e1000_strings -- * Wildcard entries (PCI_ANY_ID) should come last -- * Last entry must be all 0s -- * -- * { Vendor ID, Device ID, SubVendor ID, SubDevice ID, -- * Class, Class Mask, String Index } -- */ --static struct pci_device_id e1000_pci_tbl[] __devinitdata = { -- /* Intel(R) PRO/1000 Network Connection */ -- {0x8086, 0x1000, 0x8086, 0x1000, 0, 0, 0}, -- {0x8086, 0x1001, 0x8086, 0x1003, 0, 0, 0}, -- {0x8086, 0x1004, 0x8086, 0x1004, 0, 0, 0}, -- {0x8086, 0x1008, 0x8086, 0x1107, 0, 0, 0}, -- {0x8086, 0x1009, 0x8086, 0x1109, 0, 0, 0}, -- {0x8086, 0x100C, 0x8086, 0x1112, 0, 0, 0}, -- {0x8086, 0x100E, 0x8086, 0x001E, 0, 0, 0}, -- /* Compaq Gigabit Ethernet Server Adapter */ -- {0x8086, 0x1000, 0x0E11, PCI_ANY_ID, 0, 0, 1}, -- {0x8086, 0x1001, 0x0E11, PCI_ANY_ID, 0, 0, 1}, -- {0x8086, 0x1004, 0x0E11, PCI_ANY_ID, 0, 0, 1}, -- /* IBM Mobile, Desktop & Server Adapters */ -- {0x8086, 0x1000, 0x1014, PCI_ANY_ID, 0, 0, 2}, -- {0x8086, 0x1001, 0x1014, PCI_ANY_ID, 0, 0, 2}, -- {0x8086, 0x1004, 0x1014, PCI_ANY_ID, 0, 0, 2}, -- /* Generic */ -- {0x8086, 0x1000, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, -- {0x8086, 0x1001, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, -- {0x8086, 0x1004, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, -- {0x8086, 0x1008, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, -- {0x8086, 0x1009, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, -- {0x8086, 0x100C, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, -- {0x8086, 0x100D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, -- {0x8086, 0x100E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, -- {0x8086, 0x100F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, -- {0x8086, 0x1011, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, -- {0x8086, 0x1010, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, -- {0x8086, 0x1012, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, -- /* required last entry */ -- {0,} --}; -- --MODULE_DEVICE_TABLE(pci, e1000_pci_tbl); -- --static char *e1000_strings[] = { -- "Intel(R) PRO/1000 Network Connection", -- "Compaq Gigabit Ethernet Server Adapter", -- "IBM Mobile, Desktop & Server Adapters" --}; -- --/* Local Function Prototypes */ -- --int e1000_up(struct e1000_adapter *adapter); --void e1000_down(struct e1000_adapter *adapter); --void e1000_reset(struct e1000_adapter *adapter); --void e1000_smbus_lock(struct pci_dev *pdev, boolean_t lock); -- --static int e1000_init_module(void); --static void e1000_exit_module(void); --static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent); --static void e1000_remove(struct pci_dev *pdev); --static void e1000_sw_init(struct e1000_adapter *adapter); --static int e1000_open(struct net_device *netdev); --static int e1000_close(struct net_device *netdev); --static int e1000_setup_tx_resources(struct e1000_adapter *adapter); --static int e1000_setup_rx_resources(struct e1000_adapter *adapter); --static void e1000_configure_tx(struct e1000_adapter *adapter); --static void e1000_configure_rx(struct e1000_adapter *adapter); --static void e1000_setup_rctl(struct e1000_adapter *adapter); --static void e1000_clean_tx_ring(struct e1000_adapter *adapter); --static void e1000_clean_rx_ring(struct e1000_adapter *adapter); --static void e1000_free_tx_resources(struct e1000_adapter *adapter); --static void e1000_free_rx_resources(struct e1000_adapter *adapter); --static void e1000_set_multi(struct net_device *netdev); --static void e1000_update_phy_info(unsigned long data); --static void e1000_watchdog(unsigned long data); --static int e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev); --static struct net_device_stats * e1000_get_stats(struct net_device *netdev); --static int e1000_change_mtu(struct net_device *netdev, int new_mtu); --static int e1000_set_mac(struct net_device *netdev, void *p); --static void e1000_update_stats(struct e1000_adapter *adapter); --static inline void e1000_irq_disable(struct e1000_adapter *adapter); --static inline void e1000_irq_enable(struct e1000_adapter *adapter); --static void e1000_intr(int irq, void *data, struct pt_regs *regs); --static void e1000_clean_tx_irq(struct e1000_adapter *adapter); --static void e1000_clean_rx_irq(struct e1000_adapter *adapter); --static void e1000_alloc_rx_buffers(struct e1000_adapter *adapter); --static int e1000_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd); --static void e1000_enter_82542_rst(struct e1000_adapter *adapter); --static void e1000_leave_82542_rst(struct e1000_adapter *adapter); --static inline void e1000_rx_checksum(struct e1000_adapter *adapter, -- struct e1000_rx_desc *rx_desc, -- struct sk_buff *skb); --static boolean_t e1000_smbus_arp_enable(struct e1000_adapter *adapter, -- boolean_t arp_enable); --#ifdef HAVE_TX_TIMEOUT --static void e1000_tx_timeout(struct net_device *dev); --#endif -- --#ifdef NETIF_F_HW_VLAN_TX --static void e1000_vlan_rx_register(struct net_device *netdev, struct vlan_group *grp); --static void e1000_vlan_rx_add_vid(struct net_device *netdev, uint16_t vid); --static void e1000_vlan_rx_kill_vid(struct net_device *netdev, uint16_t vid); --#endif -- --static int e1000_notify_reboot(struct notifier_block *, unsigned long event, void *ptr); --static int e1000_suspend(struct pci_dev *pdev, uint32_t state); --#ifdef CONFIG_PM --static int e1000_resume(struct pci_dev *pdev); --#endif -- --struct notifier_block e1000_notifier = { -- notifier_call: e1000_notify_reboot, -- next: NULL, -- priority: 0 --}; -- --/* Exported from other modules */ -- --extern void e1000_check_options(struct e1000_adapter *adapter); --extern void e1000_proc_dev_setup(struct e1000_adapter *adapter); --extern void e1000_proc_dev_free(struct e1000_adapter *adapter); --extern int e1000_ethtool_ioctl(struct net_device *netdev, struct ifreq *ifr); --#ifdef IDIAG --extern int e1000_diag_ioctl(struct net_device *netdev, struct ifreq *ifr); --#endif -- --static struct pci_driver e1000_driver = { -- name: e1000_driver_name, -- id_table: e1000_pci_tbl, -- probe: e1000_probe, -- remove: __devexit_p(e1000_remove), -- /* Power Managment Hooks */ --#ifdef CONFIG_PM -- suspend: e1000_suspend, -- resume: e1000_resume --#endif --}; -- --MODULE_AUTHOR("Intel Corporation, "); --MODULE_DESCRIPTION("Intel(R) PRO/1000 Network Driver"); --MODULE_LICENSE("GPL"); -- --#ifdef EXPORT_SYMTAB --EXPORT_SYMBOL(e1000_smbus_lock); --#endif -- --/** -- * e1000_init_module - Driver Registration Routine -- * -- * e1000_init_module is the first routine called when the driver is -- * loaded. All it does is register with the PCI subsystem. -- **/ -- --static int __init --e1000_init_module(void) --{ -- int ret; -- printk(KERN_INFO "%s - version %s\n", -- e1000_driver_string, e1000_driver_version); -- -- printk(KERN_INFO "%s\n", e1000_copyright); -- -- ret = pci_module_init(&e1000_driver); -- if(ret >= 0) -- register_reboot_notifier(&e1000_notifier); -- return ret; --} -- --module_init(e1000_init_module); -- --/** -- * e1000_exit_module - Driver Exit Cleanup Routine -- * -- * e1000_exit_module is called just before the driver is removed -- * from memory. -- **/ -- --static void __exit --e1000_exit_module(void) --{ -- unregister_reboot_notifier(&e1000_notifier); -- pci_unregister_driver(&e1000_driver); --} -- --module_exit(e1000_exit_module); -- -- --int --e1000_up(struct e1000_adapter *adapter) --{ -- struct net_device *netdev = adapter->netdev; -- -- if(request_irq(netdev->irq, &e1000_intr, SA_SHIRQ | SA_SAMPLE_RANDOM, -- netdev->name, netdev)) -- return -1; -- -- /* hardware has been reset, we need to reload some things */ -- -- e1000_set_multi(netdev); --#ifdef IANS -- if((ANS_PRIVATE_DATA_FIELD(adapter)->tag_mode) != IANS_BD_TAGGING_NONE) -- bd_ans_hw_EnableVLAN(adapter); --#endif -- -- e1000_configure_tx(adapter); -- e1000_setup_rctl(adapter); -- e1000_configure_rx(adapter); -- e1000_alloc_rx_buffers(adapter); -- -- mod_timer(&adapter->watchdog_timer, jiffies); -- e1000_irq_enable(adapter); -- -- return 0; --} -- --void --e1000_down(struct e1000_adapter *adapter) --{ -- struct net_device *netdev = adapter->netdev; -- -- e1000_irq_disable(adapter); -- free_irq(netdev->irq, netdev); -- del_timer_sync(&adapter->watchdog_timer); -- del_timer_sync(&adapter->phy_info_timer); -- adapter->link_speed = 0; -- adapter->link_duplex = 0; -- netif_carrier_off(netdev); -- netif_stop_queue(netdev); -- -- e1000_reset(adapter); -- e1000_clean_tx_ring(adapter); -- e1000_clean_rx_ring(adapter); --} -- --void --e1000_reset(struct e1000_adapter *adapter) --{ -- /* Repartition Pba for greater than 9k mtu -- * To take effect CTRL.RST is required. -- */ -- -- if(adapter->rx_buffer_len > E1000_RXBUFFER_8192) -- E1000_WRITE_REG(&adapter->hw, PBA, E1000_JUMBO_PBA); -- else -- E1000_WRITE_REG(&adapter->hw, PBA, E1000_DEFAULT_PBA); -- -- adapter->hw.fc = adapter->hw.original_fc; -- down(&adapter->smbus_lock); -- e1000_reset_hw(&adapter->hw); -- up(&adapter->smbus_lock); -- if(adapter->hw.mac_type >= e1000_82544) -- E1000_WRITE_REG(&adapter->hw, WUC, 0); -- e1000_init_hw(&adapter->hw); -- e1000_reset_adaptive(&adapter->hw); -- e1000_phy_get_info(&adapter->hw, &adapter->phy_info); --} -- --/** -- * e1000_probe - Device Initialization Routine -- * @pdev: PCI device information struct -- * @ent: entry in e1000_pci_tbl -- * -- * Returns 0 on success, negative on failure -- * -- * e1000_probe initializes an adapter identified by a pci_dev structure. -- * The OS initialization, configuring of the adapter private structure, -- * and a hardware reset occur. -- **/ -- --static int __devinit --e1000_probe(struct pci_dev *pdev, -- const struct pci_device_id *ent) --{ -- struct net_device *netdev; -- struct e1000_adapter *adapter; -- static int cards_found = 0; -- unsigned long mmio_start; -- int mmio_len; -- int pci_using_dac; -- int i; -- -- if((i = pci_enable_device(pdev))) -- return i; -- -- if(!(i = pci_set_dma_mask(pdev, PCI_DMA_64BIT))) { -- pci_using_dac = 1; -- } else { -- if((i = pci_set_dma_mask(pdev, PCI_DMA_32BIT))) { -- E1000_ERR("No usable DMA configuration, aborting\n"); -- return i; -- } -- pci_using_dac = 0; -- } -- -- if((i = pci_request_regions(pdev, e1000_driver_name))) -- return i; -- -- pci_set_master(pdev); -- -- netdev = alloc_etherdev(sizeof(struct e1000_adapter)); -- if(!netdev) -- goto err_alloc_etherdev; -- -- SET_MODULE_OWNER(netdev); -- -- pci_set_drvdata(pdev, netdev); -- adapter = netdev->priv; -- adapter->netdev = netdev; -- adapter->pdev = pdev; -- adapter->hw.back = adapter; -- -- mmio_start = pci_resource_start(pdev, BAR_0); -- mmio_len = pci_resource_len(pdev, BAR_0); -- -- adapter->hw.hw_addr = ioremap(mmio_start, mmio_len); -- if(!adapter->hw.hw_addr) -- goto err_ioremap; -- -- for(i = BAR_1; i <= BAR_5; i++) { -- if(pci_resource_len(pdev, i) == 0) -- continue; -- if(pci_resource_flags(pdev, i) & IORESOURCE_IO) { -- adapter->hw.io_base = pci_resource_start(pdev, i); -- break; -- } -- } -- -- netdev->open = &e1000_open; -- netdev->stop = &e1000_close; -- netdev->hard_start_xmit = &e1000_xmit_frame; -- netdev->get_stats = &e1000_get_stats; -- netdev->set_multicast_list = &e1000_set_multi; -- netdev->set_mac_address = &e1000_set_mac; -- netdev->change_mtu = &e1000_change_mtu; -- netdev->do_ioctl = &e1000_ioctl; --#ifdef HAVE_TX_TIMEOUT -- netdev->tx_timeout = &e1000_tx_timeout; -- netdev->watchdog_timeo = HZ; --#endif --#ifdef NETIF_F_HW_VLAN_TX -- netdev->vlan_rx_register = e1000_vlan_rx_register; -- netdev->vlan_rx_add_vid = e1000_vlan_rx_add_vid; -- netdev->vlan_rx_kill_vid = e1000_vlan_rx_kill_vid; --#endif -- -- netdev->irq = pdev->irq; -- netdev->mem_start = mmio_start; -- netdev->base_addr = adapter->hw.io_base; -- -- adapter->bd_number = cards_found; -- adapter->id_string = e1000_strings[ent->driver_data]; -- -- /* setup the private structure */ -- -- e1000_sw_init(adapter); -- --#ifdef MAX_SKB_FRAGS -- if(adapter->hw.mac_type >= e1000_82543) { --#ifdef NETIF_F_HW_VLAN_TX -- netdev->features = NETIF_F_SG | -- NETIF_F_HW_CSUM | -- NETIF_F_HW_VLAN_TX | -- NETIF_F_HW_VLAN_RX | -- NETIF_F_HW_VLAN_FILTER; --#else -- netdev->features = NETIF_F_SG | NETIF_F_HW_CSUM; --#endif -- } else { -- netdev->features = NETIF_F_SG; -- } -- -- if(pci_using_dac) -- netdev->features |= NETIF_F_HIGHDMA; --#endif -- -- /* make sure the EEPROM is good */ -- -- if(e1000_validate_eeprom_checksum(&adapter->hw) < 0) { -- printk(KERN_ERR "The EEPROM Checksum Is Not Valid\n"); -- goto err_eeprom; -- } -- -- /* copy the MAC address out of the EEPROM */ -- -- e1000_read_mac_addr(&adapter->hw); -- memcpy(netdev->dev_addr, adapter->hw.mac_addr, netdev->addr_len); -- -- if(!is_valid_ether_addr(netdev->dev_addr)) -- goto err_eeprom; -- -- e1000_read_part_num(&adapter->hw, &(adapter->part_num)); -- -- e1000_get_bus_info(&adapter->hw); -- -- if((adapter->hw.mac_type == e1000_82544) && -- (adapter->hw.bus_type == e1000_bus_type_pcix)) -- -- adapter->max_data_per_txd = 4096; -- else -- adapter->max_data_per_txd = MAX_JUMBO_FRAME_SIZE; -- --#ifdef IANS -- adapter->iANSdata = kmalloc(sizeof(iANSsupport_t), GFP_KERNEL); -- -- if(!adapter->iANSdata) -- goto err_eeprom; -- -- memset(adapter->iANSdata, 0, sizeof(iANSsupport_t)); -- bd_ans_drv_InitANS(adapter, adapter->iANSdata); --#endif -- -- init_timer(&adapter->watchdog_timer); -- adapter->watchdog_timer.function = &e1000_watchdog; -- adapter->watchdog_timer.data = (unsigned long) adapter; -- -- init_timer(&adapter->phy_info_timer); -- adapter->phy_info_timer.function = &e1000_update_phy_info; -- adapter->phy_info_timer.data = (unsigned long) adapter; -- -- register_netdev(netdev); -- -- /* we're going to reset, so assume we have no link for now */ -- -- netif_carrier_off(netdev); -- netif_stop_queue(netdev); -- -- printk(KERN_INFO "%s: %s\n", netdev->name, adapter->id_string); -- e1000_check_options(adapter); -- e1000_proc_dev_setup(adapter); -- -- /* Initial Wake on LAN setting -- * If APM wake is enabled in the EEPROM, -- * enable the ACPI Magic Packet filter -- */ -- -- if((adapter->hw.mac_type >= e1000_82544) && -- (E1000_READ_REG(&adapter->hw, WUC) & E1000_WUC_APME)) -- adapter->wol |= E1000_WUFC_MAG; -- -- /* reset the hardware with the new settings */ -- -- e1000_reset(adapter); -- -- cards_found++; -- return 0; -- --err_eeprom: -- iounmap(adapter->hw.hw_addr); --err_ioremap: -- pci_release_regions(pdev); -- kfree(netdev); --err_alloc_etherdev: -- return -ENOMEM; --} -- --/** -- * e1000_remove - Device Removal Routine -- * @pdev: PCI device information struct -- * -- * e1000_remove is called by the PCI subsystem to alert the driver -- * that it should release a PCI device. The could be caused by a -- * Hot-Plug event, or because the driver is going to be removed from -- * memory. -- **/ -- --static void __devexit --e1000_remove(struct pci_dev *pdev) --{ -- struct net_device *netdev = pci_get_drvdata(pdev); -- struct e1000_adapter *adapter = netdev->priv; -- -- e1000_smbus_arp_enable(adapter, TRUE); -- -- unregister_netdev(netdev); -- -- e1000_phy_hw_reset(&adapter->hw); -- -- e1000_proc_dev_free(adapter); -- --#ifdef IANS -- if(adapter->iANSdata) -- kfree(adapter->iANSdata); --#endif -- iounmap(adapter->hw.hw_addr); -- pci_release_regions(pdev); -- -- kfree(netdev); --} -- --/** -- * e1000_sw_init - Initialize general software structures (struct e1000_adapter) -- * @adapter: board private structure to initialize -- * -- * e1000_sw_init initializes the Adapter private data structure. -- * Fields are initialized based on PCI device information and -- * OS network device settings (MTU size). -- **/ -- --static void __devinit --e1000_sw_init(struct e1000_adapter *adapter) --{ -- struct e1000_hw *hw = &adapter->hw; -- struct net_device *netdev = adapter->netdev; -- struct pci_dev *pdev = adapter->pdev; -- -- /* PCI config space info */ -- -- pci_read_config_word(pdev, PCI_VENDOR_ID, &hw->vendor_id); -- pci_read_config_word(pdev, PCI_DEVICE_ID, &hw->device_id); -- pci_read_config_byte(pdev, PCI_REVISION_ID, &hw->revision_id); -- pci_read_config_word(pdev, PCI_SUBSYSTEM_VENDOR_ID, -- &hw->subsystem_vendor_id); -- pci_read_config_word(pdev, PCI_SUBSYSTEM_ID, &hw->subsystem_id); -- -- pci_read_config_word(pdev, PCI_COMMAND, &hw->pci_cmd_word); -- -- adapter->rx_buffer_len = E1000_RXBUFFER_2048; -- hw->max_frame_size = netdev->mtu + -- ENET_HEADER_SIZE + ETHERNET_FCS_SIZE; -- hw->min_frame_size = MINIMUM_ETHERNET_FRAME_SIZE; -- -- /* identify the MAC */ -- -- if (e1000_set_mac_type(hw)) { -- E1000_ERR("Unknown MAC Type\n"); -- BUG(); -- } -- -- /* flow control settings */ -- -- hw->fc_high_water = FC_DEFAULT_HI_THRESH; -- hw->fc_low_water = FC_DEFAULT_LO_THRESH; -- hw->fc_pause_time = FC_DEFAULT_TX_TIMER; -- hw->fc_send_xon = 1; -- -- /* Media type - copper or fiber */ -- -- if(hw->mac_type >= e1000_82543) { -- uint32_t status = E1000_READ_REG(hw, STATUS); -- -- if(status & E1000_STATUS_TBIMODE) -- hw->media_type = e1000_media_type_fiber; -- else -- hw->media_type = e1000_media_type_copper; -- } else { -- hw->media_type = e1000_media_type_fiber; -- } -- -- if(hw->mac_type < e1000_82543) -- hw->report_tx_early = 0; -- else -- hw->report_tx_early = 1; -- -- hw->wait_autoneg_complete = FALSE; -- hw->tbi_compatibility_en = TRUE; -- hw->adaptive_ifs = TRUE; -- -- /* Copper options */ -- -- if(hw->media_type == e1000_media_type_copper) { -- hw->mdix = AUTO_ALL_MODES; -- hw->disable_polarity_correction = FALSE; -- } -- -- atomic_set(&adapter->irq_sem, 1); -- spin_lock_init(&adapter->stats_lock); -- init_MUTEX(&adapter->smbus_lock); --} -- --/** -- * e1000_open - Called when a network interface is made active -- * @netdev: network interface device structure -- * -- * Returns 0 on success, negative value on failure -- * -- * The open entry point is called when a network interface is made -- * active by the system (IFF_UP). At this point all resources needed -- * for transmit and receive operations are allocated, the interrupt -- * handler is registered with the OS, the watchdog timer is started, -- * and the stack is notified that the interface is ready. -- **/ -- --static int --e1000_open(struct net_device *netdev) --{ -- struct e1000_adapter *adapter = netdev->priv; -- -- /* allocate transmit descriptors */ -- -- if(e1000_setup_tx_resources(adapter)) -- goto err_setup_tx; -- -- /* allocate receive descriptors */ -- -- if(e1000_setup_rx_resources(adapter)) -- goto err_setup_rx; -- -- if(e1000_up(adapter)) -- goto err_up; -- -- MOD_INC_USE_COUNT; -- return 0; -- --err_up: -- e1000_free_rx_resources(adapter); --err_setup_rx: -- e1000_free_tx_resources(adapter); --err_setup_tx: -- e1000_reset(adapter); -- -- return -EBUSY; --} -- --/** -- * e1000_close - Disables a network interface -- * @netdev: network interface device structure -- * -- * Returns 0, this is not allowed to fail -- * -- * The close entry point is called when an interface is de-activated -- * by the OS. The hardware is still under the drivers control, but -- * needs to be disabled. A global MAC reset is issued to stop the -- * hardware, and all transmit and receive resources are freed. -- **/ -- --static int --e1000_close(struct net_device *netdev) --{ -- struct e1000_adapter *adapter = netdev->priv; -- -- e1000_down(adapter); -- -- e1000_free_tx_resources(adapter); -- e1000_free_rx_resources(adapter); -- -- MOD_DEC_USE_COUNT; -- return 0; --} -- --/** -- * e1000_setup_tx_resources - allocate Tx resources (Descriptors) -- * @adapter: board private structure -- * -- * Return 0 on success, negative on failure -- **/ -- --static int --e1000_setup_tx_resources(struct e1000_adapter *adapter) --{ -- struct e1000_desc_ring *txdr = &adapter->tx_ring; -- struct pci_dev *pdev = adapter->pdev; -- int size; -- -- size = sizeof(struct e1000_buffer) * txdr->count; -- txdr->buffer_info = kmalloc(size, GFP_KERNEL); -- if(!txdr->buffer_info) { -- return -ENOMEM; -- } -- memset(txdr->buffer_info, 0, size); -- -- /* round up to nearest 4K */ -- -- txdr->size = txdr->count * sizeof(struct e1000_tx_desc); -- E1000_ROUNDUP(txdr->size, 4096); -- -- txdr->desc = pci_alloc_consistent(pdev, txdr->size, &txdr->dma); -- if(!txdr->desc) { -- kfree(txdr->buffer_info); -- return -ENOMEM; -- } -- memset(txdr->desc, 0, txdr->size); -- -- txdr->next_to_use = 0; -- txdr->next_to_clean = 0; -- -- return 0; --} -- --/** -- * e1000_configure_tx - Configure 8254x Transmit Unit after Reset -- * @adapter: board private structure -- * -- * Configure the Tx unit of the MAC after a reset. -- **/ -- --static void --e1000_configure_tx(struct e1000_adapter *adapter) --{ -- uint64_t tdba = adapter->tx_ring.dma; -- uint32_t tdlen = adapter->tx_ring.count * sizeof(struct e1000_tx_desc); -- uint32_t tctl, tipg; -- -- E1000_WRITE_REG(&adapter->hw, TDBAL, (tdba & 0x00000000ffffffffULL)); -- E1000_WRITE_REG(&adapter->hw, TDBAH, (tdba >> 32)); -- -- E1000_WRITE_REG(&adapter->hw, TDLEN, tdlen); -- -- /* Setup the HW Tx Head and Tail descriptor pointers */ -- -- E1000_WRITE_REG(&adapter->hw, TDH, 0); -- E1000_WRITE_REG(&adapter->hw, TDT, 0); -- -- /* Set the default values for the Tx Inter Packet Gap timer */ -- -- switch (adapter->hw.mac_type) { -- case e1000_82542_rev2_0: -- case e1000_82542_rev2_1: -- tipg = DEFAULT_82542_TIPG_IPGT; -- tipg |= DEFAULT_82542_TIPG_IPGR1 << E1000_TIPG_IPGR1_SHIFT; -- tipg |= DEFAULT_82542_TIPG_IPGR2 << E1000_TIPG_IPGR2_SHIFT; -- break; -- default: -- if(adapter->hw.media_type == e1000_media_type_fiber) -- tipg = DEFAULT_82543_TIPG_IPGT_FIBER; -- else -- tipg = DEFAULT_82543_TIPG_IPGT_COPPER; -- tipg |= DEFAULT_82543_TIPG_IPGR1 << E1000_TIPG_IPGR1_SHIFT; -- tipg |= DEFAULT_82543_TIPG_IPGR2 << E1000_TIPG_IPGR2_SHIFT; -- } -- E1000_WRITE_REG(&adapter->hw, TIPG, tipg); -- -- /* Set the Tx Interrupt Delay register */ -- -- E1000_WRITE_REG(&adapter->hw, TIDV, adapter->tx_int_delay); -- if(adapter->hw.mac_type >= e1000_82540) -- E1000_WRITE_REG(&adapter->hw, TADV, adapter->tx_abs_int_delay); -- -- /* Program the Transmit Control Register */ -- -- tctl = E1000_READ_REG(&adapter->hw, TCTL); -- -- tctl &= ~E1000_TCTL_CT; -- tctl |= E1000_TCTL_EN | E1000_TCTL_PSP | -- (E1000_COLLISION_THRESHOLD << E1000_CT_SHIFT); -- -- E1000_WRITE_REG(&adapter->hw, TCTL, tctl); -- -- e1000_config_collision_dist(&adapter->hw); -- -- /* Setup Transmit Descriptor Settings for this adapter */ -- adapter->txd_cmd = E1000_TXD_CMD_IFCS | E1000_TXD_CMD_IDE; -- -- if(adapter->hw.report_tx_early == 1) -- adapter->txd_cmd |= E1000_TXD_CMD_RS; -- else -- adapter->txd_cmd |= E1000_TXD_CMD_RPS; --} -- --/** -- * e1000_setup_rx_resources - allocate Rx resources (Descriptors) -- * @adapter: board private structure -- * -- * Returns 0 on success, negative on failure -- **/ -- --static int --e1000_setup_rx_resources(struct e1000_adapter *adapter) --{ -- struct e1000_desc_ring *rxdr = &adapter->rx_ring; -- struct pci_dev *pdev = adapter->pdev; -- int size; -- -- size = sizeof(struct e1000_buffer) * rxdr->count; -- rxdr->buffer_info = kmalloc(size, GFP_KERNEL); -- if(!rxdr->buffer_info) { -- return -ENOMEM; -- } -- memset(rxdr->buffer_info, 0, size); -- -- /* Round up to nearest 4K */ -- -- rxdr->size = rxdr->count * sizeof(struct e1000_rx_desc); -- E1000_ROUNDUP(rxdr->size, 4096); -- -- rxdr->desc = pci_alloc_consistent(pdev, rxdr->size, &rxdr->dma); -- -- if(!rxdr->desc) { -- kfree(rxdr->buffer_info); -- return -ENOMEM; -- } -- memset(rxdr->desc, 0, rxdr->size); -- -- rxdr->next_to_clean = 0; -- rxdr->next_to_use = 0; -- -- return 0; --} -- --/** -- * e1000_setup_rctl - configure the receive control register -- * @adapter: Board private structure -- **/ -- --static void --e1000_setup_rctl(struct e1000_adapter *adapter) --{ -- uint32_t rctl; -- -- rctl = E1000_READ_REG(&adapter->hw, RCTL); -- -- rctl &= ~(3 << E1000_RCTL_MO_SHIFT); -- -- rctl |= E1000_RCTL_EN | E1000_RCTL_BAM | -- E1000_RCTL_LBM_NO | E1000_RCTL_RDMTS_HALF | -- (adapter->hw.mc_filter_type << E1000_RCTL_MO_SHIFT); -- -- if(adapter->hw.tbi_compatibility_on == 1) -- rctl |= E1000_RCTL_SBP; -- else -- rctl &= ~E1000_RCTL_SBP; -- -- rctl &= ~(E1000_RCTL_SZ_4096); -- switch (adapter->rx_buffer_len) { -- case E1000_RXBUFFER_2048: -- default: -- rctl |= E1000_RCTL_SZ_2048; -- rctl &= ~(E1000_RCTL_BSEX | E1000_RCTL_LPE); -- break; -- case E1000_RXBUFFER_4096: -- rctl |= E1000_RCTL_SZ_4096 | E1000_RCTL_BSEX | E1000_RCTL_LPE; -- break; -- case E1000_RXBUFFER_8192: -- rctl |= E1000_RCTL_SZ_8192 | E1000_RCTL_BSEX | E1000_RCTL_LPE; -- break; -- case E1000_RXBUFFER_16384: -- rctl |= E1000_RCTL_SZ_16384 | E1000_RCTL_BSEX | E1000_RCTL_LPE; -- break; -- } -- -- E1000_WRITE_REG(&adapter->hw, RCTL, rctl); --} -- --/** -- * e1000_configure_rx - Configure 8254x Receive Unit after Reset -- * @adapter: board private structure -- * -- * Configure the Rx unit of the MAC after a reset. -- **/ -- --static void --e1000_configure_rx(struct e1000_adapter *adapter) --{ -- uint64_t rdba = adapter->rx_ring.dma; -- uint32_t rdlen = adapter->rx_ring.count * sizeof(struct e1000_rx_desc); -- uint32_t rctl; -- uint32_t rxcsum; -- -- /* make sure receives are disabled while setting up the descriptors */ -- -- rctl = E1000_READ_REG(&adapter->hw, RCTL); -- E1000_WRITE_REG(&adapter->hw, RCTL, rctl & ~E1000_RCTL_EN); -- -- /* set the Receive Delay Timer Register */ -- -- if(adapter->hw.mac_type >= e1000_82540) { -- E1000_WRITE_REG(&adapter->hw, RDTR, adapter->rx_int_delay); -- E1000_WRITE_REG(&adapter->hw, RADV, adapter->rx_abs_int_delay); -- -- /* Set the interrupt throttling rate. Value is calculated -- * as DEFAULT_ITR = 1/(MAX_INTS_PER_SEC * 256ns) */ --#define MAX_INTS_PER_SEC 8000 --#define DEFAULT_ITR 1000000000/(MAX_INTS_PER_SEC * 256) -- E1000_WRITE_REG(&adapter->hw, ITR, DEFAULT_ITR); -- --#ifdef HAVE_TX_TIMEOUT -- } else { -- E1000_WRITE_REG(&adapter->hw, RDTR, adapter->rx_int_delay); --#endif -- } -- -- /* Setup the Base and Length of the Rx Descriptor Ring */ -- -- E1000_WRITE_REG(&adapter->hw, RDBAL, (rdba & 0x00000000ffffffffULL)); -- E1000_WRITE_REG(&adapter->hw, RDBAH, (rdba >> 32)); -- -- E1000_WRITE_REG(&adapter->hw, RDLEN, rdlen); -- -- /* Setup the HW Rx Head and Tail Descriptor Pointers */ -- E1000_WRITE_REG(&adapter->hw, RDH, 0); -- E1000_WRITE_REG(&adapter->hw, RDT, 0); -- -- /* Enable 82543 Receive Checksum Offload for TCP and UDP */ -- if((adapter->hw.mac_type >= e1000_82543) && -- (adapter->rx_csum == TRUE)) { -- rxcsum = E1000_READ_REG(&adapter->hw, RXCSUM); -- rxcsum |= E1000_RXCSUM_TUOFL; -- E1000_WRITE_REG(&adapter->hw, RXCSUM, rxcsum); -- } -- -- /* Enable Receives */ -- -- E1000_WRITE_REG(&adapter->hw, RCTL, rctl); --} -- --/** -- * e1000_free_tx_resources - Free Tx Resources -- * @adapter: board private structure -- * -- * Free all transmit software resources -- **/ -- --static void --e1000_free_tx_resources(struct e1000_adapter *adapter) --{ -- struct pci_dev *pdev = adapter->pdev; -- -- e1000_clean_tx_ring(adapter); -- -- kfree(adapter->tx_ring.buffer_info); -- adapter->tx_ring.buffer_info = NULL; -- -- pci_free_consistent(pdev, adapter->tx_ring.size, -- adapter->tx_ring.desc, adapter->tx_ring.dma); -- -- adapter->tx_ring.desc = NULL; --} -- --/** -- * e1000_clean_tx_ring - Free Tx Buffers -- * @adapter: board private structure -- **/ -- --static void --e1000_clean_tx_ring(struct e1000_adapter *adapter) --{ -- struct pci_dev *pdev = adapter->pdev; -- unsigned long size; -- int i; -- -- /* Free all the Tx ring sk_buffs */ -- -- for(i = 0; i < adapter->tx_ring.count; i++) { -- if(adapter->tx_ring.buffer_info[i].skb) { -- -- pci_unmap_page(pdev, -- adapter->tx_ring.buffer_info[i].dma, -- adapter->tx_ring.buffer_info[i].length, -- PCI_DMA_TODEVICE); -- -- dev_kfree_skb(adapter->tx_ring.buffer_info[i].skb); -- -- adapter->tx_ring.buffer_info[i].skb = NULL; -- } -- } -- -- size = sizeof(struct e1000_buffer) * adapter->tx_ring.count; -- memset(adapter->tx_ring.buffer_info, 0, size); -- -- /* Zero out the descriptor ring */ -- -- memset(adapter->tx_ring.desc, 0, adapter->tx_ring.size); -- -- adapter->tx_ring.next_to_use = 0; -- adapter->tx_ring.next_to_clean = 0; -- -- E1000_WRITE_REG(&adapter->hw, TDH, 0); -- E1000_WRITE_REG(&adapter->hw, TDT, 0); --} -- --/** -- * e1000_free_rx_resources - Free Rx Resources -- * @adapter: board private structure -- * -- * Free all receive software resources -- **/ -- --static void --e1000_free_rx_resources(struct e1000_adapter *adapter) --{ -- struct pci_dev *pdev = adapter->pdev; -- -- e1000_clean_rx_ring(adapter); -- -- kfree(adapter->rx_ring.buffer_info); -- adapter->rx_ring.buffer_info = NULL; -- -- pci_free_consistent(pdev, adapter->rx_ring.size, -- adapter->rx_ring.desc, adapter->rx_ring.dma); -- -- adapter->rx_ring.desc = NULL; --} -- --/** -- * e1000_clean_rx_ring - Free Rx Buffers -- * @adapter: board private structure -- **/ -- --static void --e1000_clean_rx_ring(struct e1000_adapter *adapter) --{ -- struct pci_dev *pdev = adapter->pdev; -- unsigned long size; -- int i; -- -- /* Free all the Rx ring sk_buffs */ -- -- for(i = 0; i < adapter->rx_ring.count; i++) { -- if(adapter->rx_ring.buffer_info[i].skb) { -- -- pci_unmap_single(pdev, -- adapter->rx_ring.buffer_info[i].dma, -- adapter->rx_ring.buffer_info[i].length, -- PCI_DMA_FROMDEVICE); -- -- dev_kfree_skb(adapter->rx_ring.buffer_info[i].skb); -- -- adapter->rx_ring.buffer_info[i].skb = NULL; -- } -- } -- -- size = sizeof(struct e1000_buffer) * adapter->rx_ring.count; -- memset(adapter->rx_ring.buffer_info, 0, size); -- -- /* Zero out the descriptor ring */ -- -- memset(adapter->rx_ring.desc, 0, adapter->rx_ring.size); -- -- adapter->rx_ring.next_to_clean = 0; -- adapter->rx_ring.next_to_use = 0; -- -- E1000_WRITE_REG(&adapter->hw, RDH, 0); -- E1000_WRITE_REG(&adapter->hw, RDT, 0); --} -- --/* The 82542 2.0 (revision 2) needs to have the receive unit in reset -- * and memory write and invalidate disabled for certain operations -- */ --static void --e1000_enter_82542_rst(struct e1000_adapter *adapter) --{ -- struct net_device *netdev = adapter->netdev; -- uint32_t rctl; -- -- e1000_pci_clear_mwi(&adapter->hw); -- -- rctl = E1000_READ_REG(&adapter->hw, RCTL); -- rctl |= E1000_RCTL_RST; -- E1000_WRITE_REG(&adapter->hw, RCTL, rctl); -- E1000_WRITE_FLUSH(&adapter->hw); -- mdelay(5); -- -- if(netif_running(netdev)) -- e1000_clean_rx_ring(adapter); --} -- --static void --e1000_leave_82542_rst(struct e1000_adapter *adapter) --{ -- struct net_device *netdev = adapter->netdev; -- uint32_t rctl; -- -- rctl = E1000_READ_REG(&adapter->hw, RCTL); -- rctl &= ~E1000_RCTL_RST; -- E1000_WRITE_REG(&adapter->hw, RCTL, rctl); -- E1000_WRITE_FLUSH(&adapter->hw); -- mdelay(5); -- -- if(adapter->hw.pci_cmd_word & PCI_COMMAND_INVALIDATE) -- e1000_pci_set_mwi(&adapter->hw); -- -- if(netif_running(netdev)) { -- e1000_configure_rx(adapter); -- e1000_alloc_rx_buffers(adapter); -- } --} -- --/** -- * e1000_set_mac - Change the Ethernet Address of the NIC -- * @netdev: network interface device structure -- * @p: pointer to an address structure -- * -- * Returns 0 on success, negative on failure -- **/ -- --static int --e1000_set_mac(struct net_device *netdev, void *p) --{ -- struct e1000_adapter *adapter = netdev->priv; -- struct sockaddr *addr = p; -- -- /* 82542 2.0 needs to be in reset to write receive address registers */ -- -- if(adapter->hw.mac_type == e1000_82542_rev2_0) -- e1000_enter_82542_rst(adapter); -- -- memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len); -- memcpy(adapter->hw.mac_addr, addr->sa_data, netdev->addr_len); -- -- e1000_rar_set(&adapter->hw, adapter->hw.mac_addr, 0); -- -- if(adapter->hw.mac_type == e1000_82542_rev2_0) -- e1000_leave_82542_rst(adapter); -- -- return 0; --} -- --/** -- * e1000_set_multi - Multicast and Promiscuous mode set -- * @netdev: network interface device structure -- * -- * The set_multi entry point is called whenever the multicast address -- * list or the network interface flags are updated. This routine is -- * resposible for configuring the hardware for proper multicast, -- * promiscuous mode, and all-multi behavior. -- **/ -- --static void --e1000_set_multi(struct net_device *netdev) --{ -- struct e1000_adapter *adapter = netdev->priv; -- struct e1000_hw *hw = &adapter->hw; -- struct dev_mc_list *mc_ptr; -- uint32_t rctl; -- uint32_t hash_value; -- int i; -- -- /* Check for Promiscuous and All Multicast modes */ -- -- rctl = E1000_READ_REG(hw, RCTL); -- -- if(netdev->flags & IFF_PROMISC) { -- rctl |= (E1000_RCTL_UPE | E1000_RCTL_MPE); -- } else if(netdev->flags & IFF_ALLMULTI) { -- rctl |= E1000_RCTL_MPE; -- rctl &= ~E1000_RCTL_UPE; -- } else { -- rctl &= ~(E1000_RCTL_UPE | E1000_RCTL_MPE); -- } -- -- E1000_WRITE_REG(hw, RCTL, rctl); -- -- /* 82542 2.0 needs to be in reset to write receive address registers */ -- -- if(hw->mac_type == e1000_82542_rev2_0) -- e1000_enter_82542_rst(adapter); -- -- /* load the first 15 multicast address into the exact filters 1-15 -- * RAR 0 is used for the station MAC adddress -- * if there are not 15 addresses, go ahead and clear the filters -- */ -- mc_ptr = netdev->mc_list; -- -- for(i = 1; i < E1000_RAR_ENTRIES; i++) { -- if(mc_ptr) { -- e1000_rar_set(hw, mc_ptr->dmi_addr, i); -- mc_ptr = mc_ptr->next; -- } else { -- E1000_WRITE_REG_ARRAY(hw, RA, i << 1, 0); -- E1000_WRITE_REG_ARRAY(hw, RA, (i << 1) + 1, 0); -- } -- } -- -- /* clear the old settings from the multicast hash table */ -- -- for(i = 0; i < E1000_NUM_MTA_REGISTERS; i++) -- E1000_WRITE_REG_ARRAY(hw, MTA, i, 0); -- -- /* load any remaining addresses into the hash table */ -- -- for(; mc_ptr; mc_ptr = mc_ptr->next) { -- hash_value = e1000_hash_mc_addr(hw, mc_ptr->dmi_addr); -- e1000_mta_set(hw, hash_value); -- } -- -- if(hw->mac_type == e1000_82542_rev2_0) -- e1000_leave_82542_rst(adapter); --} -- --#ifdef IANS -- --static void --e1000_tx_flush(struct e1000_adapter *adapter) --{ -- uint32_t ctrl, tctl, txcw, icr; -- -- e1000_irq_disable(adapter); -- -- /* TODO , does the ILOS trick work for 82542 also? */ -- -- if(adapter->hw.mac_type < e1000_82543) { -- /* Transmit Unit Reset */ -- -- tctl = E1000_READ_REG(&adapter->hw, TCTL); -- E1000_WRITE_REG(&adapter->hw, TCTL, tctl | E1000_TCTL_RST); -- E1000_WRITE_REG(&adapter->hw, TCTL, tctl); -- e1000_clean_tx_ring(adapter); -- e1000_configure_tx(adapter); -- -- } else { -- /* turn off autoneg, set link up, and invert loss of signal */ -- -- txcw = E1000_READ_REG(&adapter->hw, TXCW); -- E1000_WRITE_REG(&adapter->hw, TXCW, txcw & ~E1000_TXCW_ANE); -- -- ctrl = E1000_READ_REG(&adapter->hw, CTRL); -- E1000_WRITE_REG(&adapter->hw, CTRL, ctrl | E1000_CTRL_SLU | E1000_CTRL_ILOS); -- -- /* delay to flush queue, then clean up */ -- -- mdelay(10); -- -- e1000_clean_tx_irq(adapter); -- E1000_WRITE_REG(&adapter->hw, CTRL, ctrl); -- E1000_WRITE_REG(&adapter->hw, TXCW, txcw); -- -- /* clear the link status change interrupts this caused */ -- -- icr = E1000_READ_REG(&adapter->hw, ICR); -- } -- -- e1000_irq_enable(adapter); --} -- --#endif -- --/* need to wait a few seconds after link up to get diagnostic information from the phy */ -- --static void --e1000_update_phy_info(unsigned long data) --{ -- struct e1000_adapter *adapter = (struct e1000_adapter *) data; -- e1000_phy_get_info(&adapter->hw, &adapter->phy_info); --} -- --/** -- * e1000_watchdog - Timer Call-back -- * @data: pointer to netdev cast into an unsigned long -- **/ -- --static void --e1000_watchdog(unsigned long data) --{ -- struct e1000_adapter *adapter = (struct e1000_adapter *) data; -- struct net_device *netdev = adapter->netdev; -- struct e1000_desc_ring *txdr = &adapter->tx_ring; -- int i; -- -- e1000_check_for_link(&adapter->hw); -- -- if(E1000_READ_REG(&adapter->hw, STATUS) & E1000_STATUS_LU) { -- if(!netif_carrier_ok(netdev)) { --#ifdef IANS -- if((adapter->iANSdata->iANS_status == IANS_COMMUNICATION_UP) && -- (adapter->iANSdata->reporting_mode == IANS_STATUS_REPORTING_ON)) -- if(ans_notify) -- ans_notify(netdev, IANS_IND_XMIT_QUEUE_READY); --#endif -- e1000_get_speed_and_duplex(&adapter->hw, -- &adapter->link_speed, -- &adapter->link_duplex); -- -- printk(KERN_INFO -- "e1000: %s NIC Link is Up %d Mbps %s\n", -- netdev->name, adapter->link_speed, -- adapter->link_duplex == FULL_DUPLEX ? -- "Full Duplex" : "Half Duplex"); -- -- netif_carrier_on(netdev); -- netif_wake_queue(netdev); -- mod_timer(&adapter->phy_info_timer, jiffies + 2 * HZ); -- } -- } else { -- if(netif_carrier_ok(netdev)) { -- adapter->link_speed = 0; -- adapter->link_duplex = 0; -- printk(KERN_INFO -- "e1000: %s NIC Link is Down\n", -- netdev->name); -- netif_carrier_off(netdev); -- netif_stop_queue(netdev); -- mod_timer(&adapter->phy_info_timer, jiffies + 2 * HZ); -- } -- } -- -- e1000_update_stats(adapter); -- e1000_update_adaptive(&adapter->hw); -- --#ifdef IANS --{ --#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)) -- unsigned long flags; --#endif -- if(adapter->iANSdata->iANS_status == IANS_COMMUNICATION_UP) { -- -- if(adapter->iANSdata->reporting_mode == IANS_STATUS_REPORTING_ON) -- bd_ans_os_Watchdog(netdev, adapter); -- -- if(!netif_carrier_ok(netdev)) { -- /* don't sit on SKBs while link is down */ -- -- if(E1000_DESC_UNUSED(&adapter->tx_ring) + 1 < adapter->tx_ring.count) { -- --#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)) -- spin_lock_irqsave(&netdev->xmit_lock, flags); -- e1000_tx_flush(adapter); -- spin_unlock_irqrestore(&netdev->xmit_lock, flags); --#else -- e1000_tx_flush(adapter); --#endif -- } --#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)) -- spin_lock_irqsave(&netdev->queue_lock, flags); -- qdisc_reset(netdev->qdisc); -- spin_unlock_irqrestore(&netdev->queue_lock, flags); --#else -- qdisc_reset(netdev->qdisc); --#endif -- } -- } --} --#endif -- /* Early detection of hung controller */ -- i = txdr->next_to_clean; -- if(txdr->buffer_info[i].dma && -- time_after(jiffies, txdr->buffer_info[i].time_stamp + HZ) && -- !(E1000_READ_REG(&adapter->hw, STATUS) & E1000_STATUS_TXOFF)) -- netif_stop_queue(netdev); -- -- /* Reset the timer */ -- mod_timer(&adapter->watchdog_timer, jiffies + 2 * HZ); --} -- --#define E1000_TX_FLAGS_CSUM 0x00000001 --#define E1000_TX_FLAGS_VLAN 0x00000002 --#define E1000_TX_FLAGS_VLAN_MASK 0xffff0000 --#define E1000_TX_FLAGS_VLAN_SHIFT 16 -- --static inline boolean_t --e1000_tx_csum(struct e1000_adapter *adapter, struct sk_buff *skb) --{ -- struct e1000_context_desc *context_desc; -- int i; -- uint8_t css, cso; -- -- if(skb->ip_summed == CHECKSUM_HW) { -- css = skb->h.raw - skb->data; -- cso = (skb->h.raw + skb->csum) - skb->data; -- -- i = adapter->tx_ring.next_to_use; -- context_desc = E1000_CONTEXT_DESC(adapter->tx_ring, i); -- -- context_desc->upper_setup.tcp_fields.tucss = css; -- context_desc->upper_setup.tcp_fields.tucso = cso; -- context_desc->upper_setup.tcp_fields.tucse = 0; -- context_desc->tcp_seg_setup.data = 0; -- context_desc->cmd_and_length = -- cpu_to_le32(adapter->txd_cmd | E1000_TXD_CMD_DEXT); -- -- i = (i + 1) % adapter->tx_ring.count; -- adapter->tx_ring.next_to_use = i; -- -- return TRUE; -- } -- -- return FALSE; --} -- --static inline int --e1000_tx_map(struct e1000_adapter *adapter, struct sk_buff *skb) --{ -- struct e1000_desc_ring *tx_ring = &adapter->tx_ring; -- int len, offset, size, count, i; -- --#ifdef MAX_SKB_FRAGS -- int f; -- len = skb->len - skb->data_len; --#else -- len = skb->len; --#endif -- -- i = (tx_ring->next_to_use + tx_ring->count - 1) % tx_ring->count; -- count = 0; -- -- offset = 0; -- -- while(len) { -- i = (i + 1) % tx_ring->count; -- size = min(len, adapter->max_data_per_txd); -- tx_ring->buffer_info[i].length = size; -- tx_ring->buffer_info[i].dma = -- pci_map_single(adapter->pdev, -- skb->data + offset, -- size, -- PCI_DMA_TODEVICE); -- tx_ring->buffer_info[i].time_stamp = jiffies; -- -- len -= size; -- offset += size; -- count++; -- } -- --#ifdef MAX_SKB_FRAGS -- for(f = 0; f < skb_shinfo(skb)->nr_frags; f++) { -- struct skb_frag_struct *frag; -- -- frag = &skb_shinfo(skb)->frags[f]; -- len = frag->size; -- offset = 0; -- -- while(len) { -- i = (i + 1) % tx_ring->count; -- size = min(len, adapter->max_data_per_txd); -- tx_ring->buffer_info[i].length = size; -- tx_ring->buffer_info[i].dma = -- pci_map_page(adapter->pdev, -- frag->page, -- frag->page_offset + offset, -- size, -- PCI_DMA_TODEVICE); -- -- len -= size; -- offset += size; -- count++; -- } -- } --#endif -- tx_ring->buffer_info[i].skb = skb; -- -- return count; --} -- --static inline void --e1000_tx_queue(struct e1000_adapter *adapter, int count, int tx_flags) --{ -- struct e1000_desc_ring *tx_ring = &adapter->tx_ring; -- struct e1000_tx_desc *tx_desc = NULL; -- uint32_t txd_upper, txd_lower; -- int i; -- -- txd_upper = 0; -- txd_lower = adapter->txd_cmd; -- -- if(tx_flags & E1000_TX_FLAGS_CSUM) { -- txd_lower |= E1000_TXD_CMD_DEXT | E1000_TXD_DTYP_D; -- txd_upper |= E1000_TXD_POPTS_TXSM << 8; -- } -- -- if(tx_flags & E1000_TX_FLAGS_VLAN) { -- txd_lower |= E1000_TXD_CMD_VLE; -- txd_upper |= (tx_flags & E1000_TX_FLAGS_VLAN_MASK); -- } -- -- i = tx_ring->next_to_use; -- -- while(count--) { -- tx_desc = E1000_TX_DESC(*tx_ring, i); -- tx_desc->buffer_addr = cpu_to_le64(tx_ring->buffer_info[i].dma); -- tx_desc->lower.data = -- cpu_to_le32(txd_lower | tx_ring->buffer_info[i].length); -- tx_desc->upper.data = cpu_to_le32(txd_upper); -- i = (i + 1) % tx_ring->count; -- } -- -- tx_desc->lower.data |= cpu_to_le32(E1000_TXD_CMD_EOP); -- -- /* Force memory writes to complete before letting h/w -- * know there are new descriptors to fetch. (Only -- * applicable for weak-ordered memory model archs, -- * such as IA-64). */ -- wmb(); -- -- tx_ring->next_to_use = i; -- E1000_WRITE_REG(&adapter->hw, TDT, i); --} -- --#define TXD_USE_COUNT(S, X) (((S) / (X)) + (((S) % (X)) ? 1 : 0)) --#ifdef IANS --#define ANS_XMIT_FULL() do { \ -- iANSsupport_t *ans = adapter->iANSdata; \ -- if((ans->iANS_status == IANS_COMMUNICATION_UP) && \ -- (ans->reporting_mode == IANS_STATUS_REPORTING_ON) && \ -- (ans_notify)) \ -- ans_notify(netdev, IANS_IND_XMIT_QUEUE_FULL); \ --} while (0) --#endif -- --static int --e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev) --{ -- struct e1000_adapter *adapter = netdev->priv; -- int tx_flags = 0, count; -- --#ifdef MAX_SKB_FRAGS -- int f; --#endif -- -- if(!netif_carrier_ok(netdev)) { -- netif_stop_queue(netdev); --#ifdef IANS -- ANS_XMIT_FULL(); --#endif -- return 1; -- } -- --#ifdef MAX_SKB_FRAGS -- count = TXD_USE_COUNT(skb->len - skb->data_len, -- adapter->max_data_per_txd); -- for(f = 0; f < skb_shinfo(skb)->nr_frags; f++) -- count += TXD_USE_COUNT(skb_shinfo(skb)->frags[f].size, -- adapter->max_data_per_txd); -- if(skb->ip_summed == CHECKSUM_HW) -- count++; --#else -- count = TXD_USE_COUNT(skb->len, adapter->max_data_per_txd); --#endif -- -- if(E1000_DESC_UNUSED(&adapter->tx_ring) < count) { -- netif_stop_queue(netdev); --#ifdef IANS -- ANS_XMIT_FULL(); --#endif -- return 1; -- } -- -- if(e1000_tx_csum(adapter, skb)) -- tx_flags |= E1000_TX_FLAGS_CSUM; -- --#ifdef IANS --if(adapter->iANSdata->iANS_status == IANS_COMMUNICATION_UP) { -- struct e1000_tx_desc *tx_desc; -- tx_desc = E1000_TX_DESC(adapter->tx_ring, adapter->tx_ring.next_to_use); -- -- if(bd_ans_os_Transmit(adapter, tx_desc, &skb) == BD_ANS_FAILURE) -- return 1; -- -- if(tx_desc->lower.data & E1000_TXD_CMD_VLE) { -- tx_flags |= E1000_TX_FLAGS_VLAN; -- tx_flags |= (tx_desc->upper.data & E1000_TX_FLAGS_VLAN_MASK); -- } --} --#endif --#ifdef NETIF_F_HW_VLAN_TX -- if(adapter->vlgrp && vlan_tx_tag_present(skb)) { -- tx_flags |= E1000_TX_FLAGS_VLAN; -- tx_flags |= (vlan_tx_tag_get(skb) << E1000_TX_FLAGS_VLAN_SHIFT); -- } --#endif -- -- count = e1000_tx_map(adapter, skb); -- -- e1000_tx_queue(adapter, count, tx_flags); -- -- netdev->trans_start = jiffies; -- -- return 0; --} -- --#ifdef HAVE_TX_TIMEOUT --/** -- * e1000_tx_timeout - Respond to a Tx Hang -- * @netdev: network interface device structure -- **/ -- --static void --e1000_tx_timeout(struct net_device *netdev) --{ -- struct e1000_adapter *adapter = netdev->priv; -- -- e1000_down(adapter); --#ifdef IANS -- if((adapter->iANSdata->iANS_status == IANS_COMMUNICATION_UP) && -- (adapter->iANSdata->reporting_mode == IANS_STATUS_REPORTING_ON)) { -- netif_carrier_off(netdev); -- bd_ans_os_Watchdog(netdev, adapter); -- netif_carrier_on(netdev); -- } --#endif -- e1000_up(adapter); --} --#endif -- --/** -- * e1000_get_stats - Get System Network Statistics -- * @netdev: network interface device structure -- * -- * Returns the address of the device statistics structure. -- * The statistics are actually updated from the timer callback. -- **/ -- --static struct net_device_stats * --e1000_get_stats(struct net_device *netdev) --{ -- struct e1000_adapter *adapter = netdev->priv; -- -- return &adapter->net_stats; --} -- --/** -- * e1000_change_mtu - Change the Maximum Transfer Unit -- * @netdev: network interface device structure -- * @new_mtu: new value for maximum frame size -- * -- * Returns 0 on success, negative on failure -- **/ -- --static int --e1000_change_mtu(struct net_device *netdev, int new_mtu) --{ -- struct e1000_adapter *adapter = netdev->priv; -- int old_mtu = adapter->rx_buffer_len; -- int max_frame = new_mtu + ENET_HEADER_SIZE + ETHERNET_FCS_SIZE; -- -- if((max_frame < MINIMUM_ETHERNET_FRAME_SIZE) || -- (max_frame > MAX_JUMBO_FRAME_SIZE)) { -- E1000_ERR("Invalid MTU setting\n"); -- return -EINVAL; -- } -- -- if(max_frame <= MAXIMUM_ETHERNET_FRAME_SIZE) { -- adapter->rx_buffer_len = E1000_RXBUFFER_2048; -- -- } else if(adapter->hw.mac_type < e1000_82543) { -- E1000_ERR("Jumbo Frames not supported on 82542\n"); -- return -EINVAL; -- -- } else if(max_frame <= E1000_RXBUFFER_4096) { -- adapter->rx_buffer_len = E1000_RXBUFFER_4096; -- -- } else if(max_frame <= E1000_RXBUFFER_8192) { -- adapter->rx_buffer_len = E1000_RXBUFFER_8192; -- -- } else { -- adapter->rx_buffer_len = E1000_RXBUFFER_16384; -- } -- -- if(old_mtu != adapter->rx_buffer_len && netif_running(netdev)) { -- -- e1000_down(adapter); -- e1000_up(adapter); -- } -- -- netdev->mtu = new_mtu; -- adapter->hw.max_frame_size = max_frame; -- -- return 0; --} -- --/** -- * e1000_update_stats - Update the board statistics counters -- * @adapter: board private structure -- **/ -- --static void --e1000_update_stats(struct e1000_adapter *adapter) --{ -- struct e1000_hw *hw = &adapter->hw; -- unsigned long flags; -- uint16_t phy_tmp; -- --#define PHY_IDLE_ERROR_COUNT_MASK 0x00FF -- -- spin_lock_irqsave(&adapter->stats_lock, flags); -- -- /* these counters are modified from e1000_adjust_tbi_stats, -- * called from the interrupt context, so they must only -- * be written while holding adapter->stats_lock -- */ -- -- adapter->stats.crcerrs += E1000_READ_REG(hw, CRCERRS); -- adapter->stats.gprc += E1000_READ_REG(hw, GPRC); -- adapter->stats.gorcl += E1000_READ_REG(hw, GORCL); -- adapter->stats.gorch += E1000_READ_REG(hw, GORCH); -- adapter->stats.bprc += E1000_READ_REG(hw, BPRC); -- adapter->stats.mprc += E1000_READ_REG(hw, MPRC); -- adapter->stats.roc += E1000_READ_REG(hw, ROC); -- adapter->stats.prc64 += E1000_READ_REG(hw, PRC64); -- adapter->stats.prc127 += E1000_READ_REG(hw, PRC127); -- adapter->stats.prc255 += E1000_READ_REG(hw, PRC255); -- adapter->stats.prc511 += E1000_READ_REG(hw, PRC511); -- adapter->stats.prc1023 += E1000_READ_REG(hw, PRC1023); -- adapter->stats.prc1522 += E1000_READ_REG(hw, PRC1522); -- -- spin_unlock_irqrestore(&adapter->stats_lock, flags); -- -- /* the rest of the counters are only modified here */ -- -- adapter->stats.symerrs += E1000_READ_REG(hw, SYMERRS); -- adapter->stats.mpc += E1000_READ_REG(hw, MPC); -- adapter->stats.scc += E1000_READ_REG(hw, SCC); -- adapter->stats.ecol += E1000_READ_REG(hw, ECOL); -- adapter->stats.mcc += E1000_READ_REG(hw, MCC); -- adapter->stats.latecol += E1000_READ_REG(hw, LATECOL); -- adapter->stats.dc += E1000_READ_REG(hw, DC); -- adapter->stats.sec += E1000_READ_REG(hw, SEC); -- adapter->stats.rlec += E1000_READ_REG(hw, RLEC); -- adapter->stats.xonrxc += E1000_READ_REG(hw, XONRXC); -- adapter->stats.xontxc += E1000_READ_REG(hw, XONTXC); -- adapter->stats.xoffrxc += E1000_READ_REG(hw, XOFFRXC); -- adapter->stats.xofftxc += E1000_READ_REG(hw, XOFFTXC); -- adapter->stats.fcruc += E1000_READ_REG(hw, FCRUC); -- adapter->stats.gptc += E1000_READ_REG(hw, GPTC); -- adapter->stats.gotcl += E1000_READ_REG(hw, GOTCL); -- adapter->stats.gotch += E1000_READ_REG(hw, GOTCH); -- adapter->stats.rnbc += E1000_READ_REG(hw, RNBC); -- adapter->stats.ruc += E1000_READ_REG(hw, RUC); -- adapter->stats.rfc += E1000_READ_REG(hw, RFC); -- adapter->stats.rjc += E1000_READ_REG(hw, RJC); -- adapter->stats.torl += E1000_READ_REG(hw, TORL); -- adapter->stats.torh += E1000_READ_REG(hw, TORH); -- adapter->stats.totl += E1000_READ_REG(hw, TOTL); -- adapter->stats.toth += E1000_READ_REG(hw, TOTH); -- adapter->stats.tpr += E1000_READ_REG(hw, TPR); -- adapter->stats.ptc64 += E1000_READ_REG(hw, PTC64); -- adapter->stats.ptc127 += E1000_READ_REG(hw, PTC127); -- adapter->stats.ptc255 += E1000_READ_REG(hw, PTC255); -- adapter->stats.ptc511 += E1000_READ_REG(hw, PTC511); -- adapter->stats.ptc1023 += E1000_READ_REG(hw, PTC1023); -- adapter->stats.ptc1522 += E1000_READ_REG(hw, PTC1522); -- adapter->stats.mptc += E1000_READ_REG(hw, MPTC); -- adapter->stats.bptc += E1000_READ_REG(hw, BPTC); -- -- /* used for adaptive IFS */ -- -- hw->tx_packet_delta = E1000_READ_REG(hw, TPT); -- adapter->stats.tpt += hw->tx_packet_delta; -- hw->collision_delta = E1000_READ_REG(hw, COLC); -- adapter->stats.colc += hw->collision_delta; -- -- if(hw->mac_type >= e1000_82543) { -- adapter->stats.algnerrc += E1000_READ_REG(hw, ALGNERRC); -- adapter->stats.rxerrc += E1000_READ_REG(hw, RXERRC); -- adapter->stats.tncrs += E1000_READ_REG(hw, TNCRS); -- adapter->stats.cexterr += E1000_READ_REG(hw, CEXTERR); -- adapter->stats.tsctc += E1000_READ_REG(hw, TSCTC); -- adapter->stats.tsctfc += E1000_READ_REG(hw, TSCTFC); -- } -- -- /* Fill out the OS statistics structure */ -- -- adapter->net_stats.rx_packets = adapter->stats.gprc; -- adapter->net_stats.tx_packets = adapter->stats.gptc; -- adapter->net_stats.rx_bytes = adapter->stats.gorcl; -- adapter->net_stats.tx_bytes = adapter->stats.gotcl; -- adapter->net_stats.multicast = adapter->stats.mprc; -- adapter->net_stats.collisions = adapter->stats.colc; -- -- /* Rx Errors */ -- -- adapter->net_stats.rx_errors = adapter->stats.rxerrc + -- adapter->stats.crcerrs + adapter->stats.algnerrc + -- adapter->stats.rlec + adapter->stats.rnbc + -- adapter->stats.mpc + adapter->stats.cexterr; -- adapter->net_stats.rx_dropped = adapter->stats.rnbc; -- adapter->net_stats.rx_length_errors = adapter->stats.rlec; -- adapter->net_stats.rx_crc_errors = adapter->stats.crcerrs; -- adapter->net_stats.rx_frame_errors = adapter->stats.algnerrc; -- adapter->net_stats.rx_fifo_errors = adapter->stats.mpc; -- adapter->net_stats.rx_missed_errors = adapter->stats.mpc; -- -- /* Tx Errors */ -- -- adapter->net_stats.tx_errors = adapter->stats.ecol + -- adapter->stats.latecol; -- adapter->net_stats.tx_aborted_errors = adapter->stats.ecol; -- adapter->net_stats.tx_window_errors = adapter->stats.latecol; -- -- /* Tx Dropped needs to be maintained elsewhere */ -- -- /* Phy Stats */ -- -- if(hw->media_type == e1000_media_type_copper) { -- if((adapter->link_speed == SPEED_1000) && -- (!e1000_read_phy_reg(hw, PHY_1000T_STATUS, &phy_tmp))) { -- phy_tmp &= PHY_IDLE_ERROR_COUNT_MASK; -- adapter->phy_stats.idle_errors += phy_tmp; -- } -- -- if(!e1000_read_phy_reg(hw, M88E1000_RX_ERR_CNTR, &phy_tmp)) -- adapter->phy_stats.receive_errors += phy_tmp; -- } --} -- --/** -- * e1000_irq_disable - Mask off interrupt generation on the NIC -- * @adapter: board private structure -- **/ -- --static inline void --e1000_irq_disable(struct e1000_adapter *adapter) --{ -- atomic_inc(&adapter->irq_sem); -- E1000_WRITE_REG(&adapter->hw, IMC, ~0); -- E1000_WRITE_FLUSH(&adapter->hw); -- synchronize_irq(); --} -- --/** -- * e1000_irq_enable - Enable default interrupt generation settings -- * @adapter: board private structure -- **/ -- --static inline void --e1000_irq_enable(struct e1000_adapter *adapter) --{ -- if(atomic_dec_and_test(&adapter->irq_sem)) { -- E1000_WRITE_REG(&adapter->hw, IMS, IMS_ENABLE_MASK); -- E1000_WRITE_FLUSH(&adapter->hw); -- } --} -- --/** -- * e1000_intr - Interrupt Handler -- * @irq: interrupt number -- * @data: pointer to a network interface device structure -- * @pt_regs: CPU registers structure -- **/ -- --static void --e1000_intr(int irq, void *data, struct pt_regs *regs) --{ -- struct net_device *netdev = data; -- struct e1000_adapter *adapter = netdev->priv; -- uint32_t icr; -- int i = E1000_MAX_INTR; -- -- while(i && (icr = E1000_READ_REG(&adapter->hw, ICR))) { -- -- if(icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC)) { -- adapter->hw.get_link_status = 1; -- mod_timer(&adapter->watchdog_timer, jiffies); -- } -- -- e1000_clean_rx_irq(adapter); -- e1000_clean_tx_irq(adapter); -- i--; -- --#ifdef E1000_COUNT_ICR -- adapter->icr_txdw += icr & 0x01; -- icr >>= 1; -- adapter->icr_txqe += icr & 0x01; -- icr >>= 1; -- adapter->icr_lsc += icr & 0x01; -- icr >>= 1; -- adapter->icr_rxseq += icr & 0x01; -- icr >>= 1; -- adapter->icr_rxdmt += icr & 0x01; -- icr >>= 2; -- adapter->icr_rxo += icr & 0x01; -- icr >>= 1; -- adapter->icr_rxt += icr & 0x01; -- icr >>= 2; -- adapter->icr_mdac += icr & 0x01; -- icr >>= 1; -- adpater->icr_rxcfg += icr & 0x01; -- icr >>= 1; -- adpater->icr_gpi += icr & 0x01; --#endif -- } --} -- --/** -- * e1000_clean_tx_irq - Reclaim resources after transmit completes -- * @adapter: board private structure -- **/ -- --static void --e1000_clean_tx_irq(struct e1000_adapter *adapter) --{ -- struct e1000_desc_ring *tx_ring = &adapter->tx_ring; -- struct net_device *netdev = adapter->netdev; -- struct pci_dev *pdev = adapter->pdev; -- struct e1000_tx_desc *tx_desc; -- int i; -- -- i = tx_ring->next_to_clean; -- tx_desc = E1000_TX_DESC(*tx_ring, i); -- -- while(tx_desc->upper.data & cpu_to_le32(E1000_TXD_STAT_DD)) { -- -- if(tx_ring->buffer_info[i].dma) { -- -- pci_unmap_page(pdev, -- tx_ring->buffer_info[i].dma, -- tx_ring->buffer_info[i].length, -- PCI_DMA_TODEVICE); -- -- tx_ring->buffer_info[i].dma = 0; -- } -- -- if(tx_ring->buffer_info[i].skb) { -- -- dev_kfree_skb_any(tx_ring->buffer_info[i].skb); -- -- tx_ring->buffer_info[i].skb = NULL; -- } -- -- tx_desc->upper.data = 0; -- -- i = (i + 1) % tx_ring->count; -- tx_desc = E1000_TX_DESC(*tx_ring, i); -- } -- -- tx_ring->next_to_clean = i; -- -- if(netif_queue_stopped(netdev) && netif_carrier_ok(netdev) && -- (E1000_DESC_UNUSED(tx_ring) > E1000_TX_QUEUE_WAKE)) { -- --#ifdef IANS --{ -- iANSsupport_t *ans = adapter->iANSdata; -- -- if((ans->iANS_status == IANS_COMMUNICATION_UP) && -- (ans->reporting_mode == IANS_STATUS_REPORTING_ON) && -- (ans_notify)) -- ans_notify(netdev, IANS_IND_XMIT_QUEUE_READY); --} --#endif -- netif_wake_queue(netdev); -- } --} -- --/** -- * e1000_clean_rx_irq - Send received data up the network stack, -- * @adapter: board private structure -- **/ -- --static void --e1000_clean_rx_irq(struct e1000_adapter *adapter) --{ -- struct e1000_desc_ring *rx_ring = &adapter->rx_ring; -- struct net_device *netdev = adapter->netdev; -- struct pci_dev *pdev = adapter->pdev; -- struct e1000_rx_desc *rx_desc; -- struct sk_buff *skb; -- unsigned long flags; -- uint32_t length; -- uint8_t last_byte; -- int i; -- -- i = rx_ring->next_to_clean; -- rx_desc = E1000_RX_DESC(*rx_ring, i); -- -- while(rx_desc->status & E1000_RXD_STAT_DD) { -- -- pci_unmap_single(pdev, -- rx_ring->buffer_info[i].dma, -- rx_ring->buffer_info[i].length, -- PCI_DMA_FROMDEVICE); -- -- skb = rx_ring->buffer_info[i].skb; -- length = le16_to_cpu(rx_desc->length); -- -- if(!(rx_desc->status & E1000_RXD_STAT_EOP)) { -- -- /* All receives must fit into a single buffer */ -- -- E1000_DBG("Receive packet consumed multiple buffers\n"); -- -- dev_kfree_skb_irq(skb); -- rx_desc->status = 0; -- rx_ring->buffer_info[i].skb = NULL; -- -- i = (i + 1) % rx_ring->count; -- -- rx_desc = E1000_RX_DESC(*rx_ring, i); -- continue; -- } -- -- if(rx_desc->errors & E1000_RXD_ERR_FRAME_ERR_MASK) { -- -- last_byte = *(skb->data + length - 1); -- -- if(TBI_ACCEPT(&adapter->hw, rx_desc->status, -- rx_desc->errors, length, last_byte)) { -- -- spin_lock_irqsave(&adapter->stats_lock, flags); -- -- e1000_tbi_adjust_stats(&adapter->hw, -- &adapter->stats, -- length, skb->data); -- -- spin_unlock_irqrestore(&adapter->stats_lock, -- flags); -- length--; -- } else { -- -- dev_kfree_skb_irq(skb); -- rx_desc->status = 0; -- rx_ring->buffer_info[i].skb = NULL; -- -- i = (i + 1) % rx_ring->count; -- -- rx_desc = E1000_RX_DESC(*rx_ring, i); -- continue; -- } -- } -- -- /* Good Receive */ -- skb_put(skb, length - ETHERNET_FCS_SIZE); --#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0)) -- /* NFS mountd workaround on 2.2.x */ -- if(length < 512) { -- struct sk_buff *tmp_skb; -- tmp_skb = alloc_skb(E1000_RXBUFFER_2048>>1, GFP_ATOMIC); -- if(tmp_skb != NULL) { -- tmp_skb->dev = skb->dev; -- skb_reserve(tmp_skb, skb->data - skb->head); -- skb_put(tmp_skb, skb->len); -- memcpy(tmp_skb->head, skb->head, -- tmp_skb->end - tmp_skb->head); -- dev_kfree_skb(skb); -- skb = tmp_skb; -- } -- } --#endif -- -- /* Receive Checksum Offload */ -- e1000_rx_checksum(adapter, rx_desc, skb); -- --#ifdef IANS --{ -- iANSsupport_t *ans = adapter->iANSdata; -- -- if(ans->iANS_status == IANS_COMMUNICATION_UP) { -- if(bd_ans_os_Receive(adapter, rx_desc, skb) == BD_ANS_FAILURE) -- dev_kfree_skb_irq(skb); -- else -- netif_rx(skb); -- } else { --#endif -- skb->protocol = eth_type_trans(skb, netdev); --#ifdef NETIF_F_HW_VLAN_TX -- if(adapter->vlgrp && (rx_desc->status & E1000_RXD_STAT_VP)) { -- vlan_hwaccel_rx(skb, adapter->vlgrp, -- (rx_desc->special & E1000_RXD_SPC_VLAN_MASK)); -- } else { -- netif_rx(skb); -- } --#else -- netif_rx(skb); --#endif --#ifdef IANS -- } --} --#endif -- netdev->last_rx = jiffies; -- -- rx_desc->status = 0; -- rx_ring->buffer_info[i].skb = NULL; -- -- i = (i + 1) % rx_ring->count; -- -- rx_desc = E1000_RX_DESC(*rx_ring, i); -- } -- -- rx_ring->next_to_clean = i; -- -- e1000_alloc_rx_buffers(adapter); --} -- --/** -- * e1000_alloc_rx_buffers - Replace used receive buffers -- * @data: address of board private structure -- **/ -- --static void --e1000_alloc_rx_buffers(struct e1000_adapter *adapter) --{ -- struct e1000_desc_ring *rx_ring = &adapter->rx_ring; -- struct net_device *netdev = adapter->netdev; -- struct pci_dev *pdev = adapter->pdev; -- struct e1000_rx_desc *rx_desc; -- struct sk_buff *skb; -- int reserve_len; -- int i; -- --#ifdef IANS -- reserve_len = BD_ANS_INFO_SIZE; -- E1000_ROUNDUP(reserve_len, 16); -- reserve_len += 2; --#else -- reserve_len = 2; --#endif -- -- i = rx_ring->next_to_use; -- -- while(!rx_ring->buffer_info[i].skb) { -- rx_desc = E1000_RX_DESC(*rx_ring, i); -- -- skb = alloc_skb(adapter->rx_buffer_len + reserve_len, -- GFP_ATOMIC); -- -- if(!skb) { -- /* Better luck next round */ -- break; -- } -- -- /* Make buffer alignment 2 beyond a 16 byte boundary -- * this will result in a 16 byte aligned IP header after -- * the 14 byte MAC header is removed -- */ -- skb_reserve(skb, reserve_len); -- -- skb->dev = netdev; -- -- rx_ring->buffer_info[i].skb = skb; -- rx_ring->buffer_info[i].length = adapter->rx_buffer_len; -- rx_ring->buffer_info[i].dma = -- pci_map_single(pdev, -- skb->data, -- adapter->rx_buffer_len, -- PCI_DMA_FROMDEVICE); -- -- rx_desc->buffer_addr = cpu_to_le64(rx_ring->buffer_info[i].dma); -- -- if(!(i % E1000_RX_BUFFER_WRITE)) { -- /* Force memory writes to complete before letting h/w -- * know there are new descriptors to fetch. (Only -- * applicable for weak-ordered memory model archs, -- * such as IA-64). */ -- wmb(); -- -- E1000_WRITE_REG(&adapter->hw, RDT, i); -- } -- -- i = (i + 1) % rx_ring->count; -- } -- -- rx_ring->next_to_use = i; --} -- --/** -- * e1000_ioctl - -- * @netdev: -- * @ifreq: -- * @cmd: -- **/ -- --static int --e1000_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd) --{ -- switch (cmd) { --#ifdef IANS -- case IANS_BASE_SIOC: { -- IANS_BD_PARAM_HEADER *header; -- -- header = (IANS_BD_PARAM_HEADER *) ifr->ifr_data; -- if((header->Opcode != IANS_OP_EXT_GET_STATUS) && -- (!capable(CAP_NET_ADMIN))) -- return -EPERM; -- -- return bd_ans_os_Ioctl(netdev, ifr, cmd); -- } --#endif --#ifdef IDIAG -- case IDIAG_PRO_BASE_SIOC: -- return e1000_diag_ioctl(netdev, ifr); --#endif --#ifdef SIOCETHTOOL -- case SIOCETHTOOL: -- return e1000_ethtool_ioctl(netdev, ifr); --#endif -- default: -- return -EOPNOTSUPP; -- } --} -- --/** -- * e1000_rx_checksum - Receive Checksum Offload for 82543 -- * @adapter: board private structure -- * @rx_desc: receive descriptor -- * @sk_buff: socket buffer with received data -- **/ -- --static inline void --e1000_rx_checksum(struct e1000_adapter *adapter, -- struct e1000_rx_desc *rx_desc, -- struct sk_buff *skb) --{ -- /* 82543 or newer only */ -- if((adapter->hw.mac_type < e1000_82543) || -- /* Ignore Checksum bit is set */ -- (rx_desc->status & E1000_RXD_STAT_IXSM) || -- /* TCP Checksum has not been calculated */ -- (!(rx_desc->status & E1000_RXD_STAT_TCPCS))) { -- skb->ip_summed = CHECKSUM_NONE; -- return; -- } -- -- /* At this point we know the hardware did the TCP checksum */ -- /* now look at the TCP checksum error bit */ -- if(rx_desc->errors & E1000_RXD_ERR_TCPE) { -- /* let the stack verify checksum errors */ -- skb->ip_summed = CHECKSUM_NONE; -- adapter->hw_csum_err++; -- } else { -- /* TCP checksum is good */ -- skb->ip_summed = CHECKSUM_UNNECESSARY; -- adapter->hw_csum_good++; -- } --} -- --void --e1000_pci_set_mwi(struct e1000_hw *hw) --{ -- struct e1000_adapter *adapter = hw->back; -- --#ifdef HAVE_PCI_SET_MWI -- pci_set_mwi(adapter->pdev); --#else -- pci_write_config_word(adapter->pdev, PCI_COMMAND, -- adapter->hw.pci_cmd_word | -- PCI_COMMAND_INVALIDATE); --#endif --} -- --void --e1000_pci_clear_mwi(struct e1000_hw *hw) --{ -- struct e1000_adapter *adapter = hw->back; -- --#ifdef HAVE_PCI_SET_MWI -- pci_clear_mwi(adapter->pdev); --#else -- pci_write_config_word(adapter->pdev, PCI_COMMAND, -- adapter->hw.pci_cmd_word & -- ~PCI_COMMAND_INVALIDATE); --#endif --} -- --void --e1000_read_pci_cfg(struct e1000_hw *hw, uint32_t reg, uint16_t *value) --{ -- struct e1000_adapter *adapter = hw->back; -- -- pci_read_config_word(adapter->pdev, reg, value); --} -- --void --e1000_write_pci_cfg(struct e1000_hw *hw, uint32_t reg, uint16_t *value) --{ -- struct e1000_adapter *adapter = hw->back; -- -- pci_write_config_word(adapter->pdev, reg, *value); --} -- --uint32_t --e1000_io_read(struct e1000_hw *hw, uint32_t port) --{ -- return inl(port); --} -- --void --e1000_io_write(struct e1000_hw *hw, uint32_t port, uint32_t value) --{ -- outl(value, port); --} -- --#ifdef NETIF_F_HW_VLAN_TX --static void --e1000_vlan_rx_register(struct net_device *netdev, struct vlan_group *grp) --{ -- struct e1000_adapter *adapter = netdev->priv; -- uint32_t ctrl, rctl; -- -- e1000_irq_disable(adapter); -- adapter->vlgrp = grp; -- -- if(grp) { -- /* enable VLAN tag insert/strip */ -- -- E1000_WRITE_REG(&adapter->hw, VET, ETHERNET_IEEE_VLAN_TYPE); -- -- ctrl = E1000_READ_REG(&adapter->hw, CTRL); -- ctrl |= E1000_CTRL_VME; -- E1000_WRITE_REG(&adapter->hw, CTRL, ctrl); -- -- /* enable VLAN receive filtering */ -- -- rctl = E1000_READ_REG(&adapter->hw, RCTL); -- rctl |= E1000_RCTL_VFE; -- rctl &= ~E1000_RCTL_CFIEN; -- E1000_WRITE_REG(&adapter->hw, RCTL, rctl); -- } else { -- /* disable VLAN tag insert/strip */ -- -- ctrl = E1000_READ_REG(&adapter->hw, CTRL); -- ctrl &= ~E1000_CTRL_VME; -- E1000_WRITE_REG(&adapter->hw, CTRL, ctrl); -- -- /* disable VLAN filtering */ -- -- rctl = E1000_READ_REG(&adapter->hw, RCTL); -- rctl &= ~E1000_RCTL_VFE; -- E1000_WRITE_REG(&adapter->hw, RCTL, rctl); -- } -- -- e1000_irq_enable(adapter); --} -- --static void --e1000_vlan_rx_add_vid(struct net_device *netdev, uint16_t vid) --{ -- struct e1000_adapter *adapter = netdev->priv; -- uint32_t vfta, index; -- -- /* add VID to filter table */ -- -- index = (vid >> 5) & 0x7F; -- vfta = E1000_READ_REG_ARRAY(&adapter->hw, VFTA, index); -- vfta |= (1 << (vid & 0x1F)); -- e1000_write_vfta(&adapter->hw, index, vfta); --} -- --static void --e1000_vlan_rx_kill_vid(struct net_device *netdev, uint16_t vid) --{ -- struct e1000_adapter *adapter = netdev->priv; -- uint32_t vfta, index; -- -- e1000_irq_disable(adapter); -- -- if(adapter->vlgrp) -- adapter->vlgrp->vlan_devices[vid] = NULL; -- -- e1000_irq_enable(adapter); -- -- /* remove VID from filter table*/ -- -- index = (vid >> 5) & 0x7F; -- vfta = E1000_READ_REG_ARRAY(&adapter->hw, VFTA, index); -- vfta &= ~(1 << (vid & 0x1F)); -- e1000_write_vfta(&adapter->hw, index, vfta); --} --#endif -- --static int --e1000_notify_reboot(struct notifier_block *nb, unsigned long event, void *p) --{ -- struct pci_dev *pdev = NULL; -- -- switch(event) { -- case SYS_DOWN: -- case SYS_HALT: -- case SYS_POWER_OFF: -- pci_for_each_dev(pdev) { -- if(pci_dev_driver(pdev) == &e1000_driver) -- e1000_suspend(pdev, 3); -- } -- } -- return NOTIFY_DONE; --} -- --static int --e1000_suspend(struct pci_dev *pdev, uint32_t state) --{ -- struct net_device *netdev = pci_get_drvdata(pdev); -- struct e1000_adapter *adapter = netdev->priv; -- uint32_t ctrl, ctrl_ext, rctl; -- -- netif_device_detach(netdev); -- -- if(netif_running(netdev)) -- e1000_down(adapter); -- -- if(adapter->wol) { -- e1000_setup_rctl(adapter); -- e1000_set_multi(netdev); -- -- if(adapter->wol & E1000_WUFC_MC) { -- rctl = E1000_READ_REG(&adapter->hw, RCTL); -- rctl |= E1000_RCTL_MPE; -- E1000_WRITE_REG(&adapter->hw, RCTL, rctl); -- } -- -- if(adapter->hw.media_type == e1000_media_type_fiber) { -- #define E1000_CTRL_ADVD3WUC 0x00100000 -- ctrl = E1000_READ_REG(&adapter->hw, CTRL); -- ctrl |= E1000_CTRL_ADVD3WUC; -- E1000_WRITE_REG(&adapter->hw, CTRL, ctrl); -- -- ctrl_ext = E1000_READ_REG(&adapter->hw, CTRL_EXT); -- ctrl_ext |= E1000_CTRL_EXT_SDP7_DATA; -- E1000_WRITE_REG(&adapter->hw, CTRL_EXT, ctrl_ext); -- } -- -- E1000_WRITE_REG(&adapter->hw, WUC, 0); -- E1000_WRITE_REG(&adapter->hw, WUFC, adapter->wol); -- pci_enable_wake(pdev, 3, 1); -- } else { -- E1000_WRITE_REG(&adapter->hw, WUC, 0); -- E1000_WRITE_REG(&adapter->hw, WUFC, 0); -- pci_enable_wake(pdev, 3, 0); -- } -- -- pci_save_state(pdev, adapter->pci_state); -- -- if(!e1000_smbus_arp_enable(adapter, TRUE)) -- pci_set_power_state(pdev, 3); -- -- return 0; --} -- --#ifdef CONFIG_PM --static int --e1000_resume(struct pci_dev *pdev) --{ -- struct net_device *netdev = pci_get_drvdata(pdev); -- struct e1000_adapter *adapter = netdev->priv; -- -- pci_set_power_state(pdev, 0); -- pci_restore_state(pdev, adapter->pci_state); -- pci_enable_wake(pdev, 0, 0); -- -- /* Clear the wakeup status bits */ -- -- E1000_WRITE_REG(&adapter->hw, WUS, ~0); -- -- if(netif_running(netdev)) -- e1000_up(adapter); -- -- netif_device_attach(netdev); -- -- e1000_smbus_arp_enable(adapter, FALSE); -- -- return 0; --} --#endif -- --/** -- * e1000_smbus_lock - Exported for lock/unlock external smbus hw access -- * @pdev: PCI device information struct -- * @lock: TRUE to lock hw access; FALSE to unlock -- * -- * e1000_smbus_lock is designed to allow synchronization between e1000 -- * driver and i2c-i8254x SMBUS bus driver when accessing e1000 hardware -- **/ --void --e1000_smbus_lock(struct pci_dev *pdev, boolean_t lock) --{ -- struct net_device *netdev = pci_get_drvdata(pdev); -- struct e1000_adapter *adapter = netdev->priv; -- -- if (lock) -- down(&adapter->smbus_lock); -- else -- up(&adapter->smbus_lock); --} -- --static boolean_t --e1000_smbus_arp_enable(struct e1000_adapter *adapter, boolean_t arp_enable) --{ -- uint32_t manc; -- boolean_t ret_val = FALSE; -- -- if(adapter->hw.mac_type < e1000_82540) -- return ret_val; -- -- down(&adapter->smbus_lock); -- manc = E1000_READ_REG(&adapter->hw, MANC); -- if(!arp_enable) { -- manc &= ~(E1000_MANC_ARP_EN); -- } else if(manc & E1000_MANC_SMBUS_EN) { -- manc |= E1000_MANC_ARP_EN; -- ret_val = TRUE; -- } -- E1000_WRITE_REG(&adapter->hw, MANC, manc); -- up(&adapter->smbus_lock); -- -- return ret_val; --} -- --/* e1000_main.c */ -diff -Nurb click-1.6.0/drivers/e1000-4.x/src/e1000_param.c.orig click-1.6.0-27/drivers/e1000-4.x/src/e1000_param.c.orig ---- click-1.6.0/drivers/e1000-4.x/src/e1000_param.c.orig 2007-07-16 19:47:50.000000000 -0400 -+++ click-1.6.0-27/drivers/e1000-4.x/src/e1000_param.c.orig 1969-12-31 19:00:00.000000000 -0500 -@@ -1,657 +0,0 @@ --/******************************************************************************* -- -- -- Copyright(c) 1999 - 2002 Intel Corporation. All rights reserved. -- -- 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. -- -- The full GNU General Public License is included in this distribution in the -- file called LICENSE. -- -- Contact Information: -- Linux NICS -- Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 -- --*******************************************************************************/ -- --#include "e1000.h" -- --/* This is the only thing that needs to be changed to adjust the -- * maximum number of ports that the driver can manage. -- */ -- --#define E1000_MAX_NIC 32 -- --#define OPTION_UNSET -1 --#define OPTION_DISABLED 0 --#define OPTION_ENABLED 1 -- --/* Module Parameters are always initialized to -1, so that the driver -- * can tell the difference between no user specified value or the -- * user asking for the default value. -- * The true default values are loaded in when e1000_check_options is called. -- * -- * This is a GCC extension to ANSI C. -- * See the item "Labeled Elements in Initializers" in the section -- * "Extensions to the C Language Family" of the GCC documentation. -- */ -- --#define E1000_PARAM_INIT { [0 ... E1000_MAX_NIC] = OPTION_UNSET } -- --/* All parameters are treated the same, as an integer array of values. -- * This macro just reduces the need to repeat the same declaration code -- * over and over (plus this helps to avoid typo bugs). -- */ -- --#define E1000_PARAM(X, S) \ --static const int __devinitdata X[E1000_MAX_NIC + 1] = E1000_PARAM_INIT; \ --MODULE_PARM(X, "1-" __MODULE_STRING(E1000_MAX_NIC) "i"); \ --MODULE_PARM_DESC(X, S); -- --/* Transmit Descriptor Count -- * -- * Valid Range: 80-256 for 82542 and 82543 gigabit ethernet controllers -- * Valid Range: 80-4096 for 82544 -- * -- * Default Value: 256 -- */ -- --E1000_PARAM(TxDescriptors, "Number of transmit descriptors"); -- --/* Receive Descriptor Count -- * -- * Valid Range: 80-256 for 82542 and 82543 gigabit ethernet controllers -- * Valid Range: 80-4096 for 82544 -- * -- * Default Value: 80 -- */ -- --E1000_PARAM(RxDescriptors, "Number of receive descriptors"); -- --/* User Specified Speed Override -- * -- * Valid Range: 0, 10, 100, 1000 -- * - 0 - auto-negotiate at all supported speeds -- * - 10 - only link at 10 Mbps -- * - 100 - only link at 100 Mbps -- * - 1000 - only link at 1000 Mbps -- * -- * Default Value: 0 -- */ -- --E1000_PARAM(Speed, "Speed setting"); -- --/* User Specified Duplex Override -- * -- * Valid Range: 0-2 -- * - 0 - auto-negotiate for duplex -- * - 1 - only link at half duplex -- * - 2 - only link at full duplex -- * -- * Default Value: 0 -- */ -- --E1000_PARAM(Duplex, "Duplex setting"); -- --/* Auto-negotiation Advertisement Override -- * -- * Valid Range: 0x01-0x0F, 0x20-0x2F -- * -- * The AutoNeg value is a bit mask describing which speed and duplex -- * combinations should be advertised during auto-negotiation. -- * The supported speed and duplex modes are listed below -- * -- * Bit 7 6 5 4 3 2 1 0 -- * Speed (Mbps) N/A N/A 1000 N/A 100 100 10 10 -- * Duplex Full Full Half Full Half -- * -- * Default Value: 0x2F -- */ -- --E1000_PARAM(AutoNeg, "Advertised auto-negotiation setting"); -- --/* User Specified Flow Control Override -- * -- * Valid Range: 0-3 -- * - 0 - No Flow Control -- * - 1 - Rx only, respond to PAUSE frames but do not generate them -- * - 2 - Tx only, generate PAUSE frames but ignore them on receive -- * - 3 - Full Flow Control Support -- * -- * Default Value: Read flow control settings from the EEPROM -- */ -- --E1000_PARAM(FlowControl, "Flow Control setting"); -- --/* XsumRX - Receive Checksum Offload Enable/Disable -- * -- * Valid Range: 0, 1 -- * - 0 - disables all checksum offload -- * - 1 - enables receive IP/TCP/UDP checksum offload -- * on 82543 based NICs -- * -- * Default Value: 1 -- */ -- --E1000_PARAM(XsumRX, "Disable or enable Receive Checksum offload"); -- --/* Transmit Interrupt Delay in units of 1.024 microseconds -- * -- * Valid Range: 0-65535 -- * -- * Default Value: 64 -- */ -- --E1000_PARAM(TxIntDelay, "Transmit Interrupt Delay"); -- --/* Transmit Absolute Interrupt Delay in units of 1.024 microseconds -- * -- * Valid Range: 0-65535 -- * -- * Default Value: 0 -- */ -- --E1000_PARAM(TxAbsIntDelay, "Transmit Absolute Interrupt Delay"); -- --/* Receive Interrupt Delay in units of 1.024 microseconds -- * -- * Valid Range: 0-65535 -- * -- * Default Value: 0/128 -- */ -- --E1000_PARAM(RxIntDelay, "Receive Interrupt Delay"); -- --/* Receive Absolute Interrupt Delay in units of 1.024 microseconds -- * -- * Valid Range: 0-65535 -- * -- * Default Value: 128 -- */ -- --E1000_PARAM(RxAbsIntDelay, "Receive Absolute Interrupt Delay"); -- --#define AUTONEG_ADV_DEFAULT 0x2F --#define AUTONEG_ADV_MASK 0x2F --#define FLOW_CONTROL_DEFAULT FLOW_CONTROL_FULL -- --#define DEFAULT_TXD 256 --#define MAX_TXD 256 --#define MIN_TXD 80 --#define MAX_82544_TXD 4096 -- --#define DEFAULT_RXD 80 --#define MAX_RXD 256 --#define MIN_RXD 80 --#define MAX_82544_RXD 4096 -- --#define DEFAULT_RDTR 128 --#define DEFAULT_RDTR_82544 0 --#define MAX_RXDELAY 0xFFFF --#define MIN_RXDELAY 0 -- --#define DEFAULT_RADV 128 --#define MAX_RXABSDELAY 0xFFFF --#define MIN_RXABSDELAY 0 -- --#define DEFAULT_TIDV 64 --#define MAX_TXDELAY 0xFFFF --#define MIN_TXDELAY 0 -- --#define DEFAULT_TADV 64 --#define MAX_TXABSDELAY 0xFFFF --#define MIN_TXABSDELAY 0 -- --struct e1000_option { -- enum { enable_option, range_option, list_option } type; -- char *name; -- char *err; -- int def; -- union { -- struct { /* range_option info */ -- int min; -- int max; -- } r; -- struct { /* list_option info */ -- int nr; -- struct e1000_opt_list { int i; char *str; } *p; -- } l; -- } arg; --}; -- -- --static int __devinit --e1000_validate_option(int *value, struct e1000_option *opt) --{ -- if(*value == OPTION_UNSET) { -- *value = opt->def; -- return 0; -- } -- -- switch (opt->type) { -- case enable_option: -- switch (*value) { -- case OPTION_ENABLED: -- printk(KERN_INFO "%s Enabled\n", opt->name); -- return 0; -- case OPTION_DISABLED: -- printk(KERN_INFO "%s Disabled\n", opt->name); -- return 0; -- } -- break; -- case range_option: -- if(*value >= opt->arg.r.min && *value <= opt->arg.r.max) { -- printk(KERN_INFO "%s set to %i\n", opt->name, *value); -- return 0; -- } -- break; -- case list_option: { -- int i; -- struct e1000_opt_list *ent; -- -- for(i = 0; i < opt->arg.l.nr; i++) { -- ent = &opt->arg.l.p[i]; -- if(*value == ent->i) { -- if(ent->str[0] != '\0') -- printk(KERN_INFO "%s\n", ent->str); -- return 0; -- } -- } -- } -- break; -- default: -- BUG(); -- } -- -- printk(KERN_INFO "Invalid %s specified (%i) %s\n", -- opt->name, *value, opt->err); -- *value = opt->def; -- return -1; --} -- --static void e1000_check_fiber_options(struct e1000_adapter *adapter); --static void e1000_check_copper_options(struct e1000_adapter *adapter); -- --/** -- * e1000_check_options - Range Checking for Command Line Parameters -- * @adapter: board private structure -- * -- * This routine checks all command line paramters for valid user -- * input. If an invalid value is given, or if no user specified -- * value exists, a default value is used. The final value is stored -- * in a variable in the adapter structure. -- **/ -- --void __devinit --e1000_check_options(struct e1000_adapter *adapter) --{ -- int bd = adapter->bd_number; -- if(bd >= E1000_MAX_NIC) { -- printk(KERN_NOTICE -- "Warning: no configuration for board #%i\n", bd); -- printk(KERN_NOTICE "Using defaults for all values\n"); -- bd = E1000_MAX_NIC; -- } -- -- { /* Transmit Descriptor Count */ -- struct e1000_option opt = { -- type: range_option, -- name: "Transmit Descriptors", -- err: "using default of " __MODULE_STRING(DEFAULT_TXD), -- def: DEFAULT_TXD, -- arg: { r: { min: MIN_TXD }} -- }; -- struct e1000_desc_ring *tx_ring = &adapter->tx_ring; -- e1000_mac_type mac_type = adapter->hw.mac_type; -- opt.arg.r.max = mac_type < e1000_82544 ? MAX_TXD : MAX_82544_TXD; -- -- tx_ring->count = TxDescriptors[bd]; -- e1000_validate_option(&tx_ring->count, &opt); -- E1000_ROUNDUP(tx_ring->count, REQ_TX_DESCRIPTOR_MULTIPLE); -- } -- { /* Receive Descriptor Count */ -- struct e1000_option opt = { -- type: range_option, -- name: "Receive Descriptors", -- err: "using default of " __MODULE_STRING(DEFAULT_RXD), -- def: DEFAULT_RXD, -- arg: { r: { min: MIN_RXD }} -- }; -- struct e1000_desc_ring *rx_ring = &adapter->rx_ring; -- e1000_mac_type mac_type = adapter->hw.mac_type; -- opt.arg.r.max = mac_type < e1000_82544 ? MAX_RXD : MAX_82544_RXD; -- -- rx_ring->count = RxDescriptors[bd]; -- e1000_validate_option(&rx_ring->count, &opt); -- E1000_ROUNDUP(rx_ring->count, REQ_RX_DESCRIPTOR_MULTIPLE); -- } -- { /* Checksum Offload Enable/Disable */ -- struct e1000_option opt = { -- type: enable_option, -- name: "Checksum Offload", -- err: "defaulting to Enabled", -- def: OPTION_ENABLED -- }; -- -- int rx_csum = XsumRX[bd]; -- e1000_validate_option(&rx_csum, &opt); -- adapter->rx_csum = rx_csum; -- } -- { /* Flow Control */ -- -- struct e1000_opt_list fc_list[] = -- {{ e1000_fc_none, "Flow Control Disabled" }, -- { e1000_fc_rx_pause,"Flow Control Receive Only" }, -- { e1000_fc_tx_pause,"Flow Control Transmit Only" }, -- { e1000_fc_full, "Flow Control Enabled" }, -- { e1000_fc_default, "Flow Control Hardware Default" }}; -- -- struct e1000_option opt = { -- type: list_option, -- name: "Flow Control", -- err: "reading default settings from EEPROM", -- def: e1000_fc_default, -- arg: { l: { nr: ARRAY_SIZE(fc_list), p: fc_list }} -- }; -- -- int fc = FlowControl[bd]; -- e1000_validate_option(&fc, &opt); -- adapter->hw.fc = adapter->hw.original_fc = fc; -- } -- { /* Transmit Interrupt Delay */ -- char *tidv = "using default of " __MODULE_STRING(DEFAULT_TIDV); -- struct e1000_option opt = { -- type: range_option, -- name: "Transmit Interrupt Delay", -- arg: { r: { min: MIN_TXDELAY, max: MAX_TXDELAY }} -- }; -- opt.def = DEFAULT_TIDV; -- opt.err = tidv; -- -- adapter->tx_int_delay = TxIntDelay[bd]; -- e1000_validate_option(&adapter->tx_int_delay, &opt); -- } -- { /* Transmit Absolute Interrupt Delay */ -- char *tadv = "using default of " __MODULE_STRING(DEFAULT_TADV); -- struct e1000_option opt = { -- type: range_option, -- name: "Transmit Absolute Interrupt Delay", -- arg: { r: { min: MIN_TXABSDELAY, max: MAX_TXABSDELAY }} -- }; -- opt.def = DEFAULT_TADV; -- opt.err = tadv; -- -- adapter->tx_abs_int_delay = TxAbsIntDelay[bd]; -- e1000_validate_option(&adapter->tx_abs_int_delay, &opt); -- } -- { /* Receive Interrupt Delay */ -- char *rdtr = "using default of " __MODULE_STRING(DEFAULT_RDTR); -- char *rdtr_82544 = "using default of " -- __MODULE_STRING(DEFAULT_RDTR_82544); -- struct e1000_option opt = { -- type: range_option, -- name: "Receive Interrupt Delay", -- arg: { r: { min: MIN_RXDELAY, max: MAX_RXDELAY }} -- }; -- e1000_mac_type mac_type = adapter->hw.mac_type; -- opt.def = mac_type > e1000_82544 ? DEFAULT_RDTR : 0; -- opt.err = mac_type > e1000_82544 ? rdtr : rdtr_82544; -- -- adapter->rx_int_delay = RxIntDelay[bd]; -- e1000_validate_option(&adapter->rx_int_delay, &opt); -- } -- { /* Receive Absolute Interrupt Delay */ -- char *radv = "using default of " __MODULE_STRING(DEFAULT_RADV); -- struct e1000_option opt = { -- type: range_option, -- name: "Receive Absolute Interrupt Delay", -- arg: { r: { min: MIN_RXABSDELAY, max: MAX_RXABSDELAY }} -- }; -- opt.def = DEFAULT_RADV; -- opt.err = radv; -- -- adapter->rx_abs_int_delay = RxAbsIntDelay[bd]; -- e1000_validate_option(&adapter->rx_abs_int_delay, &opt); -- } -- -- switch(adapter->hw.media_type) { -- case e1000_media_type_fiber: -- e1000_check_fiber_options(adapter); -- break; -- case e1000_media_type_copper: -- e1000_check_copper_options(adapter); -- break; -- default: -- BUG(); -- } --} -- --/** -- * e1000_check_fiber_options - Range Checking for Link Options, Fiber Version -- * @adapter: board private structure -- * -- * Handles speed and duplex options on fiber adapters -- **/ -- --static void __devinit --e1000_check_fiber_options(struct e1000_adapter *adapter) --{ -- int bd = adapter->bd_number; -- bd = bd > E1000_MAX_NIC ? E1000_MAX_NIC : bd; -- -- if((Speed[bd] != OPTION_UNSET)) { -- printk(KERN_INFO "Speed not valid for fiber adapters, " -- "parameter ignored\n"); -- } -- if((Duplex[bd] != OPTION_UNSET)) { -- printk(KERN_INFO "Duplex not valid for fiber adapters, " -- "parameter ignored\n"); -- } -- if((AutoNeg[bd] != OPTION_UNSET)) { -- printk(KERN_INFO "AutoNeg not valid for fiber adapters, " -- "parameter ignored\n"); -- } --} -- --/** -- * e1000_check_copper_options - Range Checking for Link Options, Copper Version -- * @adapter: board private structure -- * -- * Handles speed and duplex options on copper adapters -- **/ -- --static void __devinit --e1000_check_copper_options(struct e1000_adapter *adapter) --{ -- int speed, dplx; -- int bd = adapter->bd_number; -- bd = bd > E1000_MAX_NIC ? E1000_MAX_NIC : bd; -- -- { /* Speed */ -- struct e1000_opt_list speed_list[] = {{ 0, "" }, -- { SPEED_10, "" }, -- { SPEED_100, "" }, -- { SPEED_1000, "" }}; -- struct e1000_option opt = { -- type: list_option, -- name: "Speed", -- err: "parameter ignored", -- def: 0, -- arg: { l: { nr: ARRAY_SIZE(speed_list), p: speed_list }} -- }; -- -- speed = Speed[bd]; -- e1000_validate_option(&speed, &opt); -- } -- { /* Duplex */ -- struct e1000_opt_list dplx_list[] = {{ 0, "" }, -- { HALF_DUPLEX, "" }, -- { FULL_DUPLEX, "" }}; -- struct e1000_option opt = { -- type: list_option, -- name: "Duplex", -- err: "parameter ignored", -- def: 0, -- arg: { l: { nr: ARRAY_SIZE(dplx_list), p: dplx_list }} -- }; -- -- dplx = Duplex[bd]; -- e1000_validate_option(&dplx, &opt); -- } -- -- if(AutoNeg[bd] != OPTION_UNSET && (speed != 0 || dplx != 0)) { -- printk(KERN_INFO -- "AutoNeg specified along with Speed or Duplex, " -- "parameter ignored\n"); -- adapter->hw.autoneg_advertised = AUTONEG_ADV_DEFAULT; -- } else { /* Autoneg */ -- struct e1000_opt_list an_list[] = -- #define AA "AutoNeg advertising " -- {{ 0x01, AA "10/HD" }, -- { 0x02, AA "10/FD" }, -- { 0x03, AA "10/FD, 10/HD" }, -- { 0x04, AA "100/HD" }, -- { 0x05, AA "100/HD, 10/HD" }, -- { 0x06, AA "100/HD, 10/FD" }, -- { 0x07, AA "100/HD, 10/FD, 10/HD" }, -- { 0x08, AA "100/FD" }, -- { 0x09, AA "100/FD, 10/HD" }, -- { 0x0a, AA "100/FD, 10/FD" }, -- { 0x0b, AA "100/FD, 10/FD, 10/HD" }, -- { 0x0c, AA "100/FD, 100/HD" }, -- { 0x0d, AA "100/FD, 100/HD, 10/HD" }, -- { 0x0e, AA "100/FD, 100/HD, 10/FD" }, -- { 0x0f, AA "100/FD, 100/HD, 10/FD, 10/HD" }, -- { 0x20, AA "1000/FD" }, -- { 0x21, AA "1000/FD, 10/HD" }, -- { 0x22, AA "1000/FD, 10/FD" }, -- { 0x23, AA "1000/FD, 10/FD, 10/HD" }, -- { 0x24, AA "1000/FD, 100/HD" }, -- { 0x25, AA "1000/FD, 100/HD, 10/HD" }, -- { 0x26, AA "1000/FD, 100/HD, 10/FD" }, -- { 0x27, AA "1000/FD, 100/HD, 10/FD, 10/HD" }, -- { 0x28, AA "1000/FD, 100/FD" }, -- { 0x29, AA "1000/FD, 100/FD, 10/HD" }, -- { 0x2a, AA "1000/FD, 100/FD, 10/FD" }, -- { 0x2b, AA "1000/FD, 100/FD, 10/FD, 10/HD" }, -- { 0x2c, AA "1000/FD, 100/FD, 100/HD" }, -- { 0x2d, AA "1000/FD, 100/FD, 100/HD, 10/HD" }, -- { 0x2e, AA "1000/FD, 100/FD, 100/HD, 10/FD" }, -- { 0x2f, AA "1000/FD, 100/FD, 100/HD, 10/FD, 10/HD" }}; -- -- struct e1000_option opt = { -- type: list_option, -- name: "AutoNeg", -- err: "parameter ignored", -- def: AUTONEG_ADV_DEFAULT, -- arg: { l: { nr: ARRAY_SIZE(an_list), p: an_list }} -- }; -- -- int an = AutoNeg[bd]; -- e1000_validate_option(&an, &opt); -- adapter->hw.autoneg_advertised = an; -- } -- -- switch (speed + dplx) { -- case 0: -- adapter->hw.autoneg = 1; -- if(Speed[bd] != OPTION_UNSET || Duplex[bd] != OPTION_UNSET) -- printk(KERN_INFO -- "Speed and duplex autonegotiation enabled\n"); -- break; -- case HALF_DUPLEX: -- printk(KERN_INFO "Half Duplex specified without Speed\n"); -- printk(KERN_INFO "Using Autonegotiation at Half Duplex only\n"); -- adapter->hw.autoneg = 1; -- adapter->hw.autoneg_advertised = ADVERTISE_10_HALF | -- ADVERTISE_100_HALF; -- break; -- case FULL_DUPLEX: -- printk(KERN_INFO "Full Duplex specified without Speed\n"); -- printk(KERN_INFO "Using Autonegotiation at Full Duplex only\n"); -- adapter->hw.autoneg = 1; -- adapter->hw.autoneg_advertised = ADVERTISE_10_FULL | -- ADVERTISE_100_FULL | -- ADVERTISE_1000_FULL; -- break; -- case SPEED_10: -- printk(KERN_INFO "10 Mbps Speed specified without Duplex\n"); -- printk(KERN_INFO "Using Autonegotiation at 10 Mbps only\n"); -- adapter->hw.autoneg = 1; -- adapter->hw.autoneg_advertised = ADVERTISE_10_HALF | -- ADVERTISE_10_FULL; -- break; -- case SPEED_10 + HALF_DUPLEX: -- printk(KERN_INFO "Forcing to 10 Mbps Half Duplex\n"); -- adapter->hw.autoneg = 0; -- adapter->hw.forced_speed_duplex = e1000_10_half; -- adapter->hw.autoneg_advertised = 0; -- break; -- case SPEED_10 + FULL_DUPLEX: -- printk(KERN_INFO "Forcing to 10 Mbps Full Duplex\n"); -- adapter->hw.autoneg = 0; -- adapter->hw.forced_speed_duplex = e1000_10_full; -- adapter->hw.autoneg_advertised = 0; -- break; -- case SPEED_100: -- printk(KERN_INFO "100 Mbps Speed specified without Duplex\n"); -- printk(KERN_INFO "Using Autonegotiation at 100 Mbps only\n"); -- adapter->hw.autoneg = 1; -- adapter->hw.autoneg_advertised = ADVERTISE_100_HALF | -- ADVERTISE_100_FULL; -- break; -- case SPEED_100 + HALF_DUPLEX: -- printk(KERN_INFO "Forcing to 100 Mbps Half Duplex\n"); -- adapter->hw.autoneg = 0; -- adapter->hw.forced_speed_duplex = e1000_100_half; -- adapter->hw.autoneg_advertised = 0; -- break; -- case SPEED_100 + FULL_DUPLEX: -- printk(KERN_INFO "Forcing to 100 Mbps Full Duplex\n"); -- adapter->hw.autoneg = 0; -- adapter->hw.forced_speed_duplex = e1000_100_full; -- adapter->hw.autoneg_advertised = 0; -- break; -- case SPEED_1000: -- printk(KERN_INFO "1000 Mbps Speed specified without Duplex\n"); -- printk(KERN_INFO -- "Using Autonegotiation at 1000 Mbps Full Duplex only\n"); -- adapter->hw.autoneg = 1; -- adapter->hw.autoneg_advertised = ADVERTISE_1000_FULL; -- break; -- case SPEED_1000 + HALF_DUPLEX: -- printk(KERN_INFO "Half Duplex is not supported at 1000 Mbps\n"); -- printk(KERN_INFO -- "Using Autonegotiation at 1000 Mbps Full Duplex only\n"); -- adapter->hw.autoneg = 1; -- adapter->hw.autoneg_advertised = ADVERTISE_1000_FULL; -- break; -- case SPEED_1000 + FULL_DUPLEX: -- printk(KERN_INFO -- "Using Autonegotiation at 1000 Mbps Full Duplex only\n"); -- adapter->hw.autoneg = 1; -- adapter->hw.autoneg_advertised = ADVERTISE_1000_FULL; -- break; -- default: -- BUG(); -- } -- -- /* Speed, AutoNeg and MDI/MDI-X must all play nice */ -- if (e1000_validate_mdi_setting(&(adapter->hw)) < 0) { -- printk(KERN_INFO "Speed, AutoNeg and MDI-X specifications are " -- "incompatible. Setting MDI-X to a compatible value.\n"); -- } --} -- -diff -Nurb click-1.6.0/elements/linuxmodule/anydevice.cc click-1.6.0-27/elements/linuxmodule/anydevice.cc ---- click-1.6.0/elements/linuxmodule/anydevice.cc 2007-08-29 04:03:55.000000000 -0400 -+++ click-1.6.0-27/elements/linuxmodule/anydevice.cc 2009-01-21 14:44:39.000000000 -0500 -@@ -49,7 +49,7 @@ - int - AnyDevice::find_device(AnyDeviceMap *adm, ErrorHandler *errh) - { -- _dev = dev_get_by_name(_devname.c_str()); -+ _dev = dev_get_by_name(&init_net,_devname.c_str()); - _devname_exists = (bool) _dev; - if (!_dev) - _dev = dev_get_by_ether_address(_devname, this); -@@ -233,7 +233,7 @@ - return 0; - read_lock(&dev_base_lock); - net_device *dev; -- for (dev = dev_base; dev; dev = dev->next) -+ for_each_netdev(&init_net, dev)//for (dev = dev_base; dev; dev = dev->next) - if ((dev->type == ARPHRD_ETHER || dev->type == ARPHRD_80211) - && memcmp(en, dev->dev_addr, 6) == 0) { - dev_hold(dev); // dev_get_by_name does dev_hold; so -diff -Nurb click-1.6.0/elements/linuxmodule/anydevice.cc.orig click-1.6.0-27/elements/linuxmodule/anydevice.cc.orig ---- click-1.6.0/elements/linuxmodule/anydevice.cc.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/elements/linuxmodule/anydevice.cc.orig 2007-08-29 04:03:55.000000000 -0400 -@@ -0,0 +1,248 @@ -+// -*- mode: c++; c-basic-offset: 4 -*- -+/* -+ * anydevice.{cc,hh} -- support Linux device interaction -+ * Eddie Kohler -+ * -+ * Copyright (c) 2001 International Computer Science Institute -+ * Copyright (c) 2000 Massachusetts Institute of Technology -+ * Copyright (c) 2000 Mazu Networks, Inc. -+ * Copyright (c) 2004-2007 Regents of the University of California -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, subject to the conditions -+ * listed in the Click LICENSE file. These conditions include: you must -+ * preserve this copyright notice, and you cannot mention the copyright -+ * holders in advertising related to the Software without their permission. -+ * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+ * notice is a summary of the Click LICENSE file; the license in that file is -+ * legally binding. -+ */ -+ -+#include -+#include -+#include "anydevice.hh" -+#include -+#include -+#include -+#include -+CLICK_CXX_PROTECT -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) -+#include -+#endif -+#include -+CLICK_CXX_UNPROTECT -+#include -+ -+AnyDevice::AnyDevice() -+ : _dev(0), _promisc(false), _timestamp(true), _in_map(false), -+ _quiet(false), _allow_nonexistent(false), _devname_exists(false), _next(0) -+{ -+} -+ -+AnyDevice::~AnyDevice() -+{ -+ if (_in_map || _dev) -+ click_chatter("%s: bad device destructor!", name().c_str()); -+} -+ -+int -+AnyDevice::find_device(AnyDeviceMap *adm, ErrorHandler *errh) -+{ -+ _dev = dev_get_by_name(_devname.c_str()); -+ _devname_exists = (bool) _dev; -+ if (!_dev) -+ _dev = dev_get_by_ether_address(_devname, this); -+ -+ if (!_dev && !_allow_nonexistent) -+ return errh->error("unknown device '%s'", _devname.c_str()); -+ else if (!_dev && !_quiet) -+ errh->warning("unknown device '%s'", _devname.c_str()); -+ else if (_dev && !(_dev->flags & IFF_UP)) { -+ if (!_quiet) -+ errh->warning("device '%s' is down", _devname.c_str()); -+ dev_put(_dev); -+ _dev = 0; -+ } -+ -+ if (_dev && _promisc) -+ dev_set_promiscuity(_dev, 1); -+#if HAVE_NET_ENABLE_TIMESTAMP -+ if (_dev && _timestamp) -+ net_enable_timestamp(); -+#endif -+ if (adm) -+ adm->insert(this, false); -+ -+ return 0; -+} -+ -+void -+AnyDevice::set_device(net_device *dev, AnyDeviceMap *adm, bool locked) -+{ -+ if (_dev == dev) // changing to the same device is a noop -+ return; -+ -+ if (_dev && !_quiet) -+ click_chatter("%s: device '%s' went down", declaration().c_str(), _devname.c_str()); -+ if (dev && !_quiet) -+ click_chatter("%s: device '%s' came up", declaration().c_str(), _devname.c_str()); -+ -+ if (_dev && _promisc) -+ dev_set_promiscuity(_dev, -1); -+#if HAVE_NET_ENABLE_TIMESTAMP -+ if (_dev && _timestamp) -+ net_disable_timestamp(); -+#endif -+ -+ if (adm && _in_map) -+ adm->remove(this, locked); -+ if (_dev) -+ dev_put(_dev); -+ _dev = dev; -+ if (_dev) -+ dev_hold(_dev); -+ if (adm) -+ adm->insert(this, locked); -+ -+ if (_dev && _promisc) -+ dev_set_promiscuity(_dev, 1); -+#if HAVE_NET_ENABLE_TIMESTAMP -+ if (_dev && _timestamp) -+ net_enable_timestamp(); -+#endif -+} -+ -+void -+AnyDevice::clear_device(AnyDeviceMap *adm) -+{ -+ if (_dev && _promisc) -+ dev_set_promiscuity(_dev, -1); -+#if HAVE_NET_ENABLE_TIMESTAMP -+ if (_dev && _timestamp) -+ net_disable_timestamp(); -+#endif -+ if (adm && _in_map) -+ adm->remove(this, false); -+ if (_dev) -+ dev_put(_dev); -+ _dev = 0; -+} -+ -+ -+AnyTaskDevice::AnyTaskDevice() -+ : _task(this), _idles(0) -+{ -+} -+ -+ -+void -+AnyDeviceMap::initialize() -+{ -+ _unknown_map = 0; -+ for (int i = 0; i < MAP_SIZE; i++) -+ _map[i] = 0; -+ rwlock_init(&_lock); -+} -+ -+void -+AnyDeviceMap::insert(AnyDevice *d, bool locked) -+{ -+ // lock when manipulating device map -+ if (!locked) -+ lock(true); -+ -+ // put new devices last on list -+ int ifi = d->ifindex(); -+ AnyDevice **pprev = (ifi >= 0 ? &_map[ifi % MAP_SIZE] : &_unknown_map); -+ AnyDevice *trav = *pprev; -+ while (trav) { -+ pprev = &trav->_next; -+ trav = *pprev; -+ } -+ d->_next = 0; -+ *pprev = d; -+ -+ d->_in_map = true; -+ if (!locked) -+ unlock(true); -+} -+ -+void -+AnyDeviceMap::remove(AnyDevice *d, bool locked) -+{ -+ if (!locked) -+ lock(true); -+ int ifi = d->ifindex(); -+ AnyDevice **pprev = (ifi >= 0 ? &_map[ifi % MAP_SIZE] : &_unknown_map); -+ AnyDevice *trav = *pprev; -+ while (trav && trav != d) { -+ pprev = &trav->_next; -+ trav = *pprev; -+ } -+ if (trav) -+ *pprev = d->_next; -+ d->_in_map = false; -+ if (!locked) -+ unlock(true); -+} -+ -+AnyDevice * -+AnyDeviceMap::lookup_unknown(net_device *dev, AnyDevice *last) const -+ // must be called between AnyDeviceMap::lock() ... unlock() -+{ -+ // make sure device is valid -+ if (!dev) -+ return 0; -+ -+ // look by device name and Ethernet address -+ String dev_name = dev->name; -+ unsigned char en[6]; -+ -+ for (AnyDevice *d = (last ? last->_next : _unknown_map); d; d = d->_next) -+ if (d->devname() == dev_name) { -+ d->_devname_exists = true; -+ return d; -+ } else if ((dev->type == ARPHRD_ETHER || dev->type == ARPHRD_80211) -+ && !d->_devname_exists -+ && cp_ethernet_address(d->devname(), en, d) -+ && memcmp(en, dev->dev_addr, 6) == 0) -+ return d; -+ -+ return 0; -+} -+ -+void -+AnyDeviceMap::lookup_all(net_device *dev, bool known, Vector &v) const -+ // must be called between AnyDeviceMap::lock() ... unlock() -+{ -+ if (known) -+ for (AnyDevice *d = 0; d = lookup(dev, d); v.push_back(d)) -+ /* nada */; -+ else -+ for (AnyDevice *d = 0; d = lookup_unknown(dev, d); v.push_back(d)) -+ /* nada */; -+} -+ -+ -+net_device * -+dev_get_by_ether_address(const String &name, Element *context) -+{ -+ unsigned char en[6]; -+ if (!cp_ethernet_address(name, en, context)) -+ return 0; -+ read_lock(&dev_base_lock); -+ net_device *dev; -+ for (dev = dev_base; dev; dev = dev->next) -+ if ((dev->type == ARPHRD_ETHER || dev->type == ARPHRD_80211) -+ && memcmp(en, dev->dev_addr, 6) == 0) { -+ dev_hold(dev); // dev_get_by_name does dev_hold; so -+ // should we -+ break; -+ } -+ read_unlock(&dev_base_lock); -+ return dev; -+} -+ -+ELEMENT_REQUIRES(linuxmodule) -+ELEMENT_PROVIDES(AnyDevice) -diff -Nurb click-1.6.0/elements/linuxmodule/fromdevice.cc click-1.6.0-27/elements/linuxmodule/fromdevice.cc ---- click-1.6.0/elements/linuxmodule/fromdevice.cc 2007-08-29 04:01:48.000000000 -0400 -+++ click-1.6.0-27/elements/linuxmodule/fromdevice.cc 2009-01-26 14:38:07.000000000 -0500 -@@ -258,7 +258,7 @@ - assert(skb_shared(skb) == 0); /* else skb = skb_clone(skb, GFP_ATOMIC); */ - - /* Retrieve the MAC header. */ -- skb_push(skb, skb->data - skb->mac.raw); -+ skb_push(skb, skb->data - skb_mac_header(skb)); - - Packet *p = Packet::make(skb); - _queue[_tail] = p; /* hand it to run_task */ -diff -Nurb click-1.6.0/elements/linuxmodule/fromdevice.cc.orig click-1.6.0-27/elements/linuxmodule/fromdevice.cc.orig ---- click-1.6.0/elements/linuxmodule/fromdevice.cc.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/elements/linuxmodule/fromdevice.cc.orig 2007-08-29 04:01:48.000000000 -0400 -@@ -0,0 +1,395 @@ -+// -*- mode: c++; c-basic-offset: 4 -*- -+/* -+ * fromdevice.{cc,hh} -- element steals packets from Linux devices using -+ * register_net_in -+ * Eddie Kohler -+ * Robert Morris -+ * Benjie Chen: scheduling, internal queue -+ * -+ * Copyright (c) 1999-2000 Massachusetts Institute of Technology -+ * Copyright (c) 2000 Mazu Networks, Inc. -+ * Copyright (c) 2001 International Computer Science Institute -+ * Copyright (c) 2007 Regents of the University of California -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, subject to the conditions -+ * listed in the Click LICENSE file. These conditions include: you must -+ * preserve this copyright notice, and you cannot mention the copyright -+ * holders in advertising related to the Software without their permission. -+ * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+ * notice is a summary of the Click LICENSE file; the license in that file is -+ * legally binding. -+ */ -+ -+#include -+#include -+#include "fromdevice.hh" -+#include -+#include -+#include -+#include -+#include -+ -+static AnyDeviceMap from_device_map; -+static int registered_readers; -+#ifdef HAVE_CLICK_KERNEL -+static struct notifier_block packet_notifier; -+#endif -+static struct notifier_block device_notifier; -+ -+extern "C" { -+#ifdef HAVE_CLICK_KERNEL -+static int packet_notifier_hook(struct notifier_block *nb, unsigned long val, void *v); -+#endif -+static int device_notifier_hook(struct notifier_block *nb, unsigned long val, void *v); -+} -+ -+void -+FromDevice::static_initialize() -+{ -+ from_device_map.initialize(); -+#ifdef HAVE_CLICK_KERNEL -+ packet_notifier.notifier_call = packet_notifier_hook; -+ packet_notifier.priority = 1; -+ packet_notifier.next = 0; -+#endif -+ device_notifier.notifier_call = device_notifier_hook; -+ device_notifier.priority = 1; -+ device_notifier.next = 0; -+ register_netdevice_notifier(&device_notifier); -+} -+ -+void -+FromDevice::static_cleanup() -+{ -+#ifdef HAVE_CLICK_KERNEL -+ if (registered_readers) -+ unregister_net_in(&packet_notifier); -+#endif -+ unregister_netdevice_notifier(&device_notifier); -+} -+ -+FromDevice::FromDevice() -+{ -+ _head = _tail = 0; -+} -+ -+FromDevice::~FromDevice() -+{ -+} -+ -+void * -+FromDevice::cast(const char *n) -+{ -+ if (strcmp(n, "Storage") == 0) -+ return (Storage *)this; -+ else if (strcmp(n, "FromDevice") == 0) -+ return (Element *)this; -+ else -+ return 0; -+} -+ -+int -+FromDevice::configure(Vector &conf, ErrorHandler *errh) -+{ -+ bool promisc = false, quiet = false, allow_nonexistent = false, timestamp = true; -+ _burst = 8; -+ if (cp_va_parse(conf, this, errh, -+ cpString, "device name", &_devname, -+ cpOptional, -+ cpBool, "enter promiscuous mode?", &promisc, -+ cpUnsigned, "burst size", &_burst, -+ cpKeywords, -+ "PROMISC", cpBool, "enter promiscuous mode?", &promisc, -+ "PROMISCUOUS", cpBool, "enter promiscuous mode?", &promisc, -+ "BURST", cpUnsigned, "burst size", &_burst, -+ "TIMESTAMP", cpBool, "set timestamps?", ×tamp, -+ "QUIET", cpBool, "suppress up/down messages?", &quiet, -+ "ALLOW_NONEXISTENT", cpBool, "allow nonexistent device?", &allow_nonexistent, -+ cpEnd) < 0) -+ return -1; -+ set_device_flags(promisc, timestamp, allow_nonexistent, quiet); -+ -+ // make queue look full so packets sent to us are ignored -+ _head = _tail = _capacity = 0; -+ -+ return find_device(&from_device_map, errh); -+} -+ -+/* -+ * Use a Linux interface added by us, in net/core/dev.c, -+ * to register to grab incoming packets. -+ */ -+int -+FromDevice::initialize(ErrorHandler *errh) -+{ -+ // check for duplicate readers -+ if (ifindex() >= 0) { -+ void *&used = router()->force_attachment("device_reader_" + String(ifindex())); -+ if (used) -+ return errh->error("duplicate reader for device '%s'", _devname.c_str()); -+ used = this; -+ } -+ -+ if (!registered_readers) { -+#ifdef HAVE_CLICK_KERNEL -+ packet_notifier.next = 0; -+ register_net_in(&packet_notifier); -+#else -+ errh->warning("can't get packets: not compiled for a Click kernel"); -+#endif -+ } -+ registered_readers++; -+ -+ _drops = 0; -+ reset_counts(); -+ -+ ScheduleInfo::initialize_task(this, &_task, _dev != 0, errh); -+#ifdef HAVE_STRIDE_SCHED -+ // user specifies max number of tickets; we start with default -+ _max_tickets = _task.tickets(); -+ _task.set_tickets(Task::DEFAULT_TICKETS); -+#endif -+ -+ // set true queue size (now we can start receiving packets) -+ _capacity = QSIZE; -+ -+ return 0; -+} -+ -+void -+FromDevice::cleanup(CleanupStage stage) -+{ -+ if (stage >= CLEANUP_INITIALIZED) { -+ registered_readers--; -+#ifdef HAVE_CLICK_KERNEL -+ if (registered_readers == 0) -+ unregister_net_in(&packet_notifier); -+#endif -+ } -+ -+ clear_device(&from_device_map); -+ -+ if (stage >= CLEANUP_INITIALIZED) -+ for (unsigned i = _head; i != _tail; i = next_i(i)) -+ _queue[i]->kill(); -+ _head = _tail = 0; -+} -+ -+void -+FromDevice::take_state(Element *e, ErrorHandler *errh) -+{ -+ if (FromDevice *fd = (FromDevice *)e->cast("FromDevice")) { -+ SpinlockIRQ::flags_t flags; -+ local_irq_save(flags); -+ -+ unsigned fd_i = fd->_head; -+ while (fd_i != fd->_tail) { -+ unsigned next = next_i(_tail); -+ if (next == _head) -+ break; -+ _queue[_tail] = fd->_queue[fd_i]; -+ fd_i = fd->next_i(fd_i); -+ _tail = next; -+ } -+ for (; fd_i != fd->_tail; fd_i = fd->next_i(fd_i)) -+ fd->_queue[fd_i]->kill(); -+ if (_head != _tail) -+ _task.reschedule(); -+ -+ fd->_head = fd->_tail = fd->_capacity = 0; -+ -+ local_irq_restore(flags); -+ } -+} -+ -+/* -+ * Called by Linux net_bh[2.2]/net_rx_action[2.4] with each packet. -+ */ -+extern "C" { -+ -+#ifdef HAVE_CLICK_KERNEL -+static int -+packet_notifier_hook(struct notifier_block *nb, unsigned long backlog_len, void *v) -+{ -+ struct sk_buff *skb = (struct sk_buff *)v; -+ int stolen = 0; -+ FromDevice *fd = 0; -+ from_device_map.lock(false); -+ while (stolen == 0 && (fd = (FromDevice *)from_device_map.lookup(skb->dev, fd))) -+ stolen = fd->got_skb(skb); -+ from_device_map.unlock(false); -+ return (stolen ? NOTIFY_STOP_MASK : 0); -+} -+#endif -+ -+static int -+device_notifier_hook(struct notifier_block *nb, unsigned long flags, void *v) -+{ -+#ifdef NETDEV_GOING_DOWN -+ if (flags == NETDEV_GOING_DOWN) -+ flags = NETDEV_DOWN; -+#endif -+ if (flags == NETDEV_DOWN || flags == NETDEV_UP) { -+ bool down = (flags == NETDEV_DOWN); -+ net_device* dev = (net_device*)v; -+ Vector es; -+ from_device_map.lock(true); -+ from_device_map.lookup_all(dev, down, es); -+ for (int i = 0; i < es.size(); i++) -+ ((FromDevice*)(es[i]))->set_device(down ? 0 : dev, &from_device_map, true); -+ from_device_map.unlock(true); -+ } -+ return 0; -+} -+ -+} -+ -+/* -+ * Per-FromDevice packet input routine. -+ */ -+int -+FromDevice::got_skb(struct sk_buff *skb) -+{ -+ unsigned next = next_i(_tail); -+ -+ if (next != _head) { /* ours */ -+ assert(skb_shared(skb) == 0); /* else skb = skb_clone(skb, GFP_ATOMIC); */ -+ -+ /* Retrieve the MAC header. */ -+ skb_push(skb, skb->data - skb->mac.raw); -+ -+ Packet *p = Packet::make(skb); -+ _queue[_tail] = p; /* hand it to run_task */ -+ -+#if CLICK_DEBUG_SCHEDULING -+ click_gettimeofday(&_schinfo[_tail].enq_time); -+ RouterThread *rt = _task.thread(); -+ _schinfo[_tail].enq_state = rt->thread_state(); -+ int enq_process_asleep = rt->sleeper() && rt->sleeper()->state != TASK_RUNNING; -+ _schinfo[_tail].enq_task_scheduled = _task.scheduled(); -+ _schinfo[_tail].enq_epoch = rt->driver_epoch(); -+ _schinfo[_tail].enq_task_epoch = rt->driver_task_epoch(); -+#endif -+ -+ _tail = next; -+ _task.reschedule(); -+ -+#if CLICK_DEBUG_SCHEDULING -+ _schinfo[_tail].enq_woke_process = enq_process_asleep && rt->sleeper()->state == TASK_RUNNING; -+#endif -+ -+ } else if (_capacity > 0) { -+ /* queue full, drop */ -+ kfree_skb(skb); -+ _drops++; -+ -+ } else // not yet initialized -+ return 0; -+ -+ return 1; -+} -+ -+#if CLICK_DEBUG_SCHEDULING -+void -+FromDevice::emission_report(int idx) -+{ -+ struct timeval now; -+ click_gettimeofday(&now); -+ RouterThread *rt = _task.thread(); -+ StringAccum sa; -+ sa << "dt " << (now - _schinfo[idx].enq_time); -+ if (_schinfo[idx].enq_state != RouterThread::S_RUNNING) { -+ struct timeval etime = rt->task_epoch_time(_schinfo[idx].enq_task_epoch + 1); -+ if (timerisset(&etime)) -+ sa << " dt_thread " << (etime - _schinfo[idx].enq_time); -+ } -+ sa << " arrst " << RouterThread::thread_state_name(_schinfo[idx].enq_state) -+ << " depoch " << (rt->driver_epoch() - _schinfo[idx].enq_epoch) -+ << " dtepoch " << (rt->driver_task_epoch() - _schinfo[idx].enq_task_epoch); -+ if (_schinfo[idx].enq_woke_process) -+ sa << " woke"; -+ if (_schinfo[idx].enq_task_scheduled) -+ sa << " tasksched"; -+ -+ click_chatter("%s packet: %s", name().c_str(), sa.c_str()); -+} -+#endif -+ -+bool -+FromDevice::run_task(Task *) -+{ -+ _runs++; -+ int npq = 0; -+ while (npq < _burst && _head != _tail) { -+ Packet *p = _queue[_head]; -+#if CLICK_DEBUG_SCHEDULING -+ emission_report(_head); -+#endif -+ _head = next_i(_head); -+ output(0).push(p); -+ npq++; -+ _pushes++; -+ } -+ if (npq == 0) -+ _empty_runs++; -+ // 9/18/06: Frederic Van Quickenborne reports (1/24/05) that ticket -+ // adjustments in FromDevice+ToDevice cause odd behavior. The ticket -+ // adjustments actually don't feel necessary to me in From/ToDevice any -+ // more, since FromDevice's interrupt handler will reschedule FromDevice -+ // as necessary; now "ticket adjustment" is subsumed by "scheduled or not -+ // scheduled". So commenting this out. -+ // adjust_tickets(npq); -+ if (npq > 0) -+ _task.fast_reschedule(); -+ return npq > 0; -+} -+ -+void -+FromDevice::reset_counts() -+{ -+ _runs = 0; -+ _empty_runs = 0; -+ _pushes = 0; -+} -+ -+static int -+FromDevice_write_stats(const String &, Element *e, void *, ErrorHandler *) -+{ -+ FromDevice *fd = (FromDevice *) e; -+ fd->reset_counts(); -+ return 0; -+} -+ -+static String -+FromDevice_read_stats(Element *e, void *thunk) -+{ -+ FromDevice *fd = (FromDevice *) e; -+ switch (reinterpret_cast(thunk)) { -+ case 0: return String(fd->drops()); break; -+ case 1: { -+ StringAccum sa; -+ sa << "calls to run_task(): " << fd->runs() << "\n" -+ << "calls to push(): " << fd->pushes() << "\n" -+ << "empty runs: " << fd->empty_runs() << "\n" -+ << "drops: " << fd->drops() << "\n"; -+ return sa.take_string(); -+ break; -+ } -+ default: -+ return String(); -+ } -+} -+ -+void -+FromDevice::add_handlers() -+{ -+ add_task_handlers(&_task); -+ add_read_handler("drops", FromDevice_read_stats, (void *) 0); -+ add_read_handler("calls", FromDevice_read_stats, (void *) 1); -+ add_write_handler("reset_counts", FromDevice_write_stats, 0); -+} -+ -+ELEMENT_REQUIRES(AnyDevice linuxmodule) -+EXPORT_ELEMENT(FromDevice) -diff -Nurb click-1.6.0/elements/linuxmodule/fromhost.cc click-1.6.0-27/elements/linuxmodule/fromhost.cc ---- click-1.6.0/elements/linuxmodule/fromhost.cc 2007-07-16 19:47:50.000000000 -0400 -+++ click-1.6.0-27/elements/linuxmodule/fromhost.cc 2009-01-26 15:16:05.000000000 -0500 -@@ -121,7 +121,7 @@ - used = this; - - // check for existing device -- _dev = dev_get_by_name(_devname.c_str()); -+ _dev = dev_get_by_name(&init_net, _devname.c_str()); - if (_dev) { - if (_dev->open != fl_open) { - dev_put(_dev); -@@ -175,16 +175,16 @@ - - ifr.ifr_hwaddr.sa_family = _dev->type; - memcpy(ifr.ifr_hwaddr.sa_data, _macaddr.data(), 6); -- if ((res = dev_ioctl(SIOCSIFHWADDR, &ifr)) < 0) -+ if ((res = dev_ioctl(&init_net, SIOCSIFHWADDR, &ifr)) < 0) - errh->error("error %d setting hardware address for device '%s'", res, _devname.c_str()); - - sin->sin_family = AF_INET; - sin->sin_addr = _destaddr; -- if (res >= 0 && (res = devinet_ioctl(SIOCSIFADDR, &ifr)) < 0) -+ if (res >= 0 && (res = devinet_ioctl(&init_net,SIOCSIFADDR, &ifr)) < 0) - errh->error("error %d setting address for device '%s'", res, _devname.c_str()); - - sin->sin_addr = _destmask; -- if (res >= 0 && (res = devinet_ioctl(SIOCSIFNETMASK, &ifr)) < 0) -+ if (res >= 0 && (res = devinet_ioctl(&init_net,SIOCSIFNETMASK, &ifr)) < 0) - errh->error("error %d setting netmask for device '%s'", res, _devname.c_str()); - - set_fs(oldfs); -@@ -202,9 +202,9 @@ - mm_segment_t oldfs = get_fs(); - set_fs(get_ds()); - -- (void) dev_ioctl(SIOCGIFFLAGS, &ifr); -+ (void) dev_ioctl(&init_net, SIOCGIFFLAGS, &ifr); - ifr.ifr_flags = (up > 0 ? ifr.ifr_flags | flags : ifr.ifr_flags & ~flags); -- if ((res = dev_ioctl(SIOCSIFFLAGS, &ifr)) < 0 && errh) -+ if ((res = dev_ioctl(&init_net, SIOCSIFFLAGS, &ifr)) < 0 && errh) - errh->error("error %d bringing %s device '%s'", res, (up > 0 ? "up" : "down"), dev->name); - - set_fs(oldfs); -diff -Nurb click-1.6.0/elements/linuxmodule/fromhost.cc.orig click-1.6.0-27/elements/linuxmodule/fromhost.cc.orig ---- click-1.6.0/elements/linuxmodule/fromhost.cc.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/elements/linuxmodule/fromhost.cc.orig 2007-07-16 19:47:50.000000000 -0400 -@@ -0,0 +1,345 @@ -+// -*- mode: c++; c-basic-offset: 4 -*- -+/* -+ * fromhost.{cc,hh} -- receives packets from Linux -+ * Max Poletto, Eddie Kohler -+ * -+ * Copyright (c) 1999-2000 Massachusetts Institute of Technology -+ * Copyright (c) 2000 Mazu Networks, Inc. -+ * Copyright (c) 2001-2003 International Computer Science Institute -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, subject to the conditions -+ * listed in the Click LICENSE file. These conditions include: you must -+ * preserve this copyright notice, and you cannot mention the copyright -+ * holders in advertising related to the Software without their permission. -+ * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+ * notice is a summary of the Click LICENSE file; the license in that file is -+ * legally binding. -+ */ -+ -+#include -+#include -+#include "fromhost.hh" -+#include -+#include -+#include -+ -+#include -+CLICK_CXX_PROTECT -+#include -+#include -+#include -+#include -+#include -+CLICK_CXX_UNPROTECT -+#include -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0) -+# define netif_start_queue(dev) do { dev->start=1; dev->tbusy=0; } while (0) -+# define netif_stop_queue(dev) do { dev->tbusy=1; } while (0) -+# define netif_wake_queue(dev) do { dev->tbusy=0; } while (0) -+#endif -+ -+static int fl_open(net_device *); -+static int fl_close(net_device *); -+static net_device_stats *fl_stats(net_device *); -+static void fl_wakeup(Timer *, void *); -+ -+static int from_linux_count; -+static AnyDeviceMap fromlinux_map; -+ -+void -+FromHost::static_initialize() -+{ -+ fromlinux_map.initialize(); -+} -+ -+FromHost::FromHost() -+ : _macaddr((const unsigned char *)"\000\001\002\003\004\005"), -+ _task(this), _wakeup_timer(fl_wakeup, this), _queue(0) -+{ -+ memset(&_stats, 0, sizeof(_stats)); -+} -+ -+FromHost::~FromHost() -+{ -+} -+ -+net_device * -+FromHost::new_device(const char *name) -+{ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) -+ read_lock(&dev_base_lock); -+#endif -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) -+ net_device *dev = alloc_netdev(0, name, ether_setup); -+#else -+ int errcode; -+ net_device *dev = dev_alloc(name, &errcode); -+#endif -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) -+ read_unlock(&dev_base_lock); -+#endif -+ if (!dev) -+ return 0; -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0) -+ // need to zero out the dev structure -+ char *nameptr = dev->name; -+ memset(dev, 0, sizeof(*dev)); -+ dev->name = nameptr; -+#endif -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) -+ ether_setup(dev); -+#endif -+ dev->open = fl_open; -+ dev->stop = fl_close; -+ dev->hard_start_xmit = fl_tx; -+ dev->get_stats = fl_stats; -+ return dev; -+} -+ -+int -+FromHost::configure(Vector &conf, ErrorHandler *errh) -+{ -+ if (cp_va_parse(conf, this, errh, -+ cpString, "device name", &_devname, -+ cpIPPrefix, "destination IP prefix", &_destaddr, &_destmask, -+ cpKeywords, -+ "ETHER", cpEthernetAddress, "fake device Ethernet address", &_macaddr, -+ cpEnd) < 0) -+ return -1; -+ if (_devname.length() > IFNAMSIZ - 1) -+ return errh->error("device name '%s' too long", _devname.c_str()); -+ -+ // check for duplicate element -+ void *&used = router()->force_attachment("FromHost_" + _devname); -+ if (used) -+ return errh->error("duplicate FromHost for device '%s'", _devname.c_str()); -+ used = this; -+ -+ // check for existing device -+ _dev = dev_get_by_name(_devname.c_str()); -+ if (_dev) { -+ if (_dev->open != fl_open) { -+ dev_put(_dev); -+ _dev = 0; -+ return errh->error("device '%s' already exists", _devname.c_str()); -+ } else { -+ fromlinux_map.insert(this, false); -+ return 0; -+ } -+ } -+ -+ // if not found, create new device -+ int res; -+ _dev = new_device(_devname.c_str()); -+ if (!_dev) -+ return errh->error("out of memory!", res, _devname.c_str()); -+ else if ((res = register_netdev(_dev)) < 0) { -+ kfree(_dev); -+ _dev = 0; -+ return errh->error("error %d registering device '%s'", res, _devname.c_str()); -+ } -+ -+ dev_hold(_dev); -+ fromlinux_map.insert(this, false); -+ return 0; -+} -+ -+#if 0 /* Why was this code here? */ -+static void -+dev_locks(int up) -+{ -+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) -+ if (up > 0) -+ rtnl_lock(); -+ else -+ rtnl_unlock(); -+# endif -+} -+#endif -+ -+int -+FromHost::set_device_addresses(ErrorHandler *errh) -+{ -+ int res; -+ struct ifreq ifr; -+ strncpy(ifr.ifr_name, _dev->name, IFNAMSIZ); -+ struct sockaddr_in *sin = (struct sockaddr_in *)&ifr.ifr_addr; -+ -+ mm_segment_t oldfs = get_fs(); -+ set_fs(get_ds()); -+ -+ ifr.ifr_hwaddr.sa_family = _dev->type; -+ memcpy(ifr.ifr_hwaddr.sa_data, _macaddr.data(), 6); -+ if ((res = dev_ioctl(SIOCSIFHWADDR, &ifr)) < 0) -+ errh->error("error %d setting hardware address for device '%s'", res, _devname.c_str()); -+ -+ sin->sin_family = AF_INET; -+ sin->sin_addr = _destaddr; -+ if (res >= 0 && (res = devinet_ioctl(SIOCSIFADDR, &ifr)) < 0) -+ errh->error("error %d setting address for device '%s'", res, _devname.c_str()); -+ -+ sin->sin_addr = _destmask; -+ if (res >= 0 && (res = devinet_ioctl(SIOCSIFNETMASK, &ifr)) < 0) -+ errh->error("error %d setting netmask for device '%s'", res, _devname.c_str()); -+ -+ set_fs(oldfs); -+ return res; -+} -+ -+static int -+dev_updown(net_device *dev, int up, ErrorHandler *errh) -+{ -+ struct ifreq ifr; -+ strncpy(ifr.ifr_name, dev->name, IFNAMSIZ); -+ uint32_t flags = IFF_UP | IFF_RUNNING; -+ int res; -+ -+ mm_segment_t oldfs = get_fs(); -+ set_fs(get_ds()); -+ -+ (void) dev_ioctl(SIOCGIFFLAGS, &ifr); -+ ifr.ifr_flags = (up > 0 ? ifr.ifr_flags | flags : ifr.ifr_flags & ~flags); -+ if ((res = dev_ioctl(SIOCSIFFLAGS, &ifr)) < 0 && errh) -+ errh->error("error %d bringing %s device '%s'", res, (up > 0 ? "up" : "down"), dev->name); -+ -+ set_fs(oldfs); -+ return res; -+} -+ -+int -+FromHost::initialize(ErrorHandler *errh) -+{ -+ ScheduleInfo::initialize_task(this, &_task, _dev != 0, errh); -+ _nonfull_signal = Notifier::downstream_full_signal(this, 0, &_task); -+ if (_dev->flags & IFF_UP) { -+ _wakeup_timer.initialize(this); -+ _wakeup_timer.schedule_now(); -+ return 0; -+ } else if (set_device_addresses(errh) < 0) -+ return -1; -+ else -+ return dev_updown(_dev, 1, errh); -+} -+ -+void -+FromHost::cleanup(CleanupStage) -+{ -+ fromlinux_map.remove(this, false); -+ -+ if (_queue) { -+ _queue->kill(); -+ _queue = 0; -+ } -+ -+ if (_dev) { -+ dev_put(_dev); -+ fromlinux_map.lock(false); -+ if (fromlinux_map.lookup(_dev, 0)) -+ // do not free device if it is in use -+ _dev = 0; -+ fromlinux_map.unlock(false); -+ if (_dev) { -+ if (_dev->flags & IFF_UP) -+ dev_updown(_dev, -1, 0); -+ unregister_netdev(_dev); -+ kfree(_dev); -+ _dev = 0; -+ } -+ } -+} -+ -+static void -+fl_wakeup(Timer *, void *thunk) -+{ -+ FromHost *fl = (FromHost *)thunk; -+ PrefixErrorHandler errh(ErrorHandler::default_handler(), fl->declaration() + ": "); -+ net_device *dev = fl->device(); -+ -+ if (dev->flags & IFF_UP) -+ dev_updown(dev, -1, &errh); -+ -+ fl->set_device_addresses(&errh); -+ -+ dev_updown(dev, 1, &errh); -+} -+ -+/* -+ * Device callbacks -+ */ -+ -+static int -+fl_open(net_device *dev) -+{ -+ netif_start_queue(dev); -+ return 0; -+} -+ -+static int -+fl_close(net_device *dev) -+{ -+ netif_stop_queue(dev); -+ return 0; -+} -+ -+int -+FromHost::fl_tx(struct sk_buff *skb, net_device *dev) -+{ -+ /* 8.May.2003 - Doug and company had crashes with FromHost configurations. -+ We eventually figured out this was because fl_tx was called at -+ interrupt time -- at bottom-half time, to be exact -- and then pushed -+ a packet through the configuration. Whoops: if Click was interrupted, -+ and during the bottom-half FromHost emitted a packet into Click, -+ DISASTER -- we assume that, when running single-threaded, at most one -+ Click thread is active at a time; so there were race conditions, -+ particularly with the task list. The solution is a single-packet-long -+ queue in FromHost. fl_tx puts a packet onto the queue, a regular -+ Click Task takes the packet off the queue. We could have implemented -+ a larger queue, but why bother? Linux already maintains a queue for -+ the device. */ -+ fromlinux_map.lock(false); -+ if (FromHost *fl = (FromHost *)fromlinux_map.lookup(dev, 0)) -+ if (!fl->_queue) { -+ fl->_queue = Packet::make(skb); -+ fl->_stats.tx_packets++; -+ fl->_stats.tx_bytes += fl->_queue->length(); -+ fl->_task.reschedule(); -+ fromlinux_map.unlock(false); -+ netif_stop_queue(dev); -+ return 0; -+ } -+ fromlinux_map.unlock(false); -+ return -1; -+} -+ -+static net_device_stats * -+fl_stats(net_device *dev) -+{ -+ net_device_stats *stats = 0; -+ fromlinux_map.lock(false); -+ if (FromHost *fl = (FromHost *)fromlinux_map.lookup(dev, 0)) -+ stats = fl->stats(); -+ fromlinux_map.unlock(false); -+ return stats; -+} -+ -+bool -+FromHost::run_task(Task *) -+{ -+ if (!_nonfull_signal) -+ return false; -+ else if (Packet *p = _queue) { -+ _queue = 0; -+ netif_wake_queue(_dev); -+ output(0).push(p); -+ return true; -+ } else -+ return false; -+} -+ -+ELEMENT_REQUIRES(AnyDevice linuxmodule) -+EXPORT_ELEMENT(FromHost) -diff -Nurb click-1.6.0/elements/linuxmodule/todevice.cc click-1.6.0-27/elements/linuxmodule/todevice.cc ---- click-1.6.0/elements/linuxmodule/todevice.cc 2007-09-14 12:19:28.000000000 -0400 -+++ click-1.6.0-27/elements/linuxmodule/todevice.cc 2009-01-26 16:50:39.000000000 -0500 -@@ -21,6 +21,8 @@ - * legally binding. - */ - -+#include -+#include - #include - #include - #include "polldevice.hh" -@@ -243,12 +245,12 @@ - } - # else - local_bh_disable(); -- if (!spin_trylock(&_dev->xmit_lock)) { -+ if (!spin_trylock(&_dev->_tx[0]._xmit_lock)) { - local_bh_enable(); - _task.fast_reschedule(); - return false; - } -- _dev->xmit_lock_owner = smp_processor_id(); -+ _dev->_tx[0].xmit_lock_owner = smp_processor_id(); - # endif - #endif - -@@ -316,7 +318,7 @@ - // (or until Linux sends another packet) unless we poke - // net_bh(), which calls qdisc_restart(). We are not allowed - // to call qdisc_restart() ourselves, outside of net_bh(). -- if (is_polling && !busy && _dev->qdisc->q.qlen) { -+ if (is_polling && !busy && _dev->_tx[0].qdisc->q.qlen) { - _dev->tx_eob(_dev); - netif_wake_queue(_dev); - } -@@ -349,8 +351,8 @@ - # if HAVE_NETIF_TX_LOCK - netif_tx_unlock_bh(_dev); - # else -- _dev->xmit_lock_owner = -1; -- spin_unlock(&_dev->xmit_lock); -+ _dev->_tx[0].xmit_lock_owner = -1; -+ spin_unlock(&_dev->_tx[0]._xmit_lock); - local_bh_enable(); - # endif - #endif -diff -Nurb click-1.6.0/elements/linuxmodule/todevice.cc.orig click-1.6.0-27/elements/linuxmodule/todevice.cc.orig ---- click-1.6.0/elements/linuxmodule/todevice.cc.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/elements/linuxmodule/todevice.cc.orig 2007-09-14 12:19:28.000000000 -0400 -@@ -0,0 +1,562 @@ -+// -*- mode: c++; c-basic-offset: 4 -*- -+/* -+ * todevice.{cc,hh} -- element sends packets to Linux devices. -+ * Robert Morris -+ * Eddie Kohler: register once per configuration -+ * Benjie Chen: polling -+ * -+ * Copyright (c) 1999-2000 Massachusetts Institute of Technology -+ * Copyright (c) 2000 Mazu Networks, Inc. -+ * Copyright (c) 2001 International Computer Science Institute -+ * Copyright (c) 2005-2007 Regents of the University of California -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, subject to the conditions -+ * listed in the Click LICENSE file. These conditions include: you must -+ * preserve this copyright notice, and you cannot mention the copyright -+ * holders in advertising related to the Software without their permission. -+ * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+ * notice is a summary of the Click LICENSE file; the license in that file is -+ * legally binding. -+ */ -+ -+#include -+#include -+#include "polldevice.hh" -+#include "todevice.hh" -+#include -+#include -+#include -+#include -+#include -+ -+#include -+CLICK_CXX_PROTECT -+#include -+#if __i386__ -+#include -+#endif -+CLICK_CXX_UNPROTECT -+#include -+ -+/* for watching when devices go offline */ -+static AnyDeviceMap to_device_map; -+static struct notifier_block device_notifier; -+extern "C" { -+static int device_notifier_hook(struct notifier_block *nb, unsigned long val, void *v); -+#if HAVE_CLICK_KERNEL_TX_NOTIFY -+static struct notifier_block tx_notifier; -+static int registered_tx_notifiers; -+static int tx_notifier_hook(struct notifier_block *nb, unsigned long val, void *v); -+#endif -+} -+ -+void -+ToDevice::static_initialize() -+{ -+ to_device_map.initialize(); -+#if HAVE_CLICK_KERNEL_TX_NOTIFY -+ tx_notifier.notifier_call = tx_notifier_hook; -+ tx_notifier.priority = 1; -+ tx_notifier.next = 0; -+#endif -+ device_notifier.notifier_call = device_notifier_hook; -+ device_notifier.priority = 1; -+ device_notifier.next = 0; -+ register_netdevice_notifier(&device_notifier); -+ -+} -+ -+void -+ToDevice::static_cleanup() -+{ -+ unregister_netdevice_notifier(&device_notifier); -+#if HAVE_CLICK_KERNEL_TX_NOTIFY -+ if (registered_tx_notifiers) -+ unregister_net_tx(&tx_notifier); -+#endif -+} -+ -+inline void -+ToDevice::tx_wake_queue(net_device *dev) -+{ -+ //click_chatter("%{element}::%s for dev %s\n", this, __func__, dev->name); -+ _task.reschedule(); -+} -+ -+#if HAVE_CLICK_KERNEL_TX_NOTIFY -+extern "C" { -+static int -+tx_notifier_hook(struct notifier_block *nb, unsigned long val, void *v) -+{ -+ struct net_device *dev = (struct net_device *)v; -+ if (!dev) { -+ return 0; -+ } -+ Vector es; -+ bool down = true; -+ to_device_map.lock(false); -+ to_device_map.lookup_all(dev, down, es); -+ for (int i = 0; i < es.size(); i++) -+ ((ToDevice *)(es[i]))->tx_wake_queue(dev); -+ to_device_map.unlock(false); -+ return 0; -+} -+} -+#endif -+ -+ToDevice::ToDevice() -+ : _dev_idle(0), _rejected(0), _hard_start(0), _no_pad(false) -+{ -+} -+ -+ToDevice::~ToDevice() -+{ -+} -+ -+ -+int -+ToDevice::configure(Vector &conf, ErrorHandler *errh) -+{ -+ _burst = 16; -+ bool allow_nonexistent = false, quiet = false; -+ if (cp_va_parse(conf, this, errh, -+ cpString, "device name", &_devname, -+ cpOptional, -+ cpUnsigned, "burst size", &_burst, -+ cpKeywords, -+ "BURST", cpUnsigned, "burst size", &_burst, -+ "QUIET", cpBool, "suppress up/down messages?", &quiet, -+ "ALLOW_NONEXISTENT", cpBool, "allow nonexistent device?", &allow_nonexistent, -+ "NO_PAD", cpBool, "don't pad packets to 60 bytes?", &_no_pad, -+ cpEnd) < 0) -+ return -1; -+ set_device_flags(false, true, allow_nonexistent, quiet); -+ return find_device(&to_device_map, errh); -+} -+ -+int -+ToDevice::initialize(ErrorHandler *errh) -+{ -+#ifndef HAVE_CLICK_KERNEL -+ errh->warning("not compiled for a Click kernel"); -+#endif -+ -+ // check for duplicate writers -+ if (ifindex() >= 0) { -+ void *&used = router()->force_attachment("device_writer_" + String(ifindex())); -+ if (used) -+ return errh->error("duplicate writer for device '%s'", _devname.c_str()); -+ used = this; -+ } -+ -+#if HAVE_CLICK_KERNEL_TX_NOTIFY -+ if (!registered_tx_notifiers) { -+ tx_notifier.next = 0; -+ register_net_tx(&tx_notifier); -+ } -+ registered_tx_notifiers++; -+#endif -+ -+ ScheduleInfo::initialize_task(this, &_task, _dev != 0, errh); -+ _signal = Notifier::upstream_empty_signal(this, 0, &_task); -+ -+#ifdef HAVE_STRIDE_SCHED -+ // user specifies max number of tickets; we start with default -+ _max_tickets = _task.tickets(); -+ _task.set_tickets(Task::DEFAULT_TICKETS); -+#endif -+ -+ reset_counts(); -+ return 0; -+} -+ -+void -+ToDevice::reset_counts() -+{ -+ _npackets = 0; -+ -+ _busy_returns = 0; -+ _too_short = 0; -+ _runs = 0; -+ _pulls = 0; -+#if CLICK_DEVICE_STATS -+ _activations = 0; -+ _time_clean = 0; -+ _time_freeskb = 0; -+ _time_queue = 0; -+ _perfcnt1_pull = 0; -+ _perfcnt1_clean = 0; -+ _perfcnt1_freeskb = 0; -+ _perfcnt1_queue = 0; -+ _perfcnt2_pull = 0; -+ _perfcnt2_clean = 0; -+ _perfcnt2_freeskb = 0; -+ _perfcnt2_queue = 0; -+#endif -+#if CLICK_DEVICE_THESIS_STATS || CLICK_DEVICE_STATS -+ _pull_cycles = 0; -+#endif -+} -+ -+void -+ToDevice::cleanup(CleanupStage stage) -+{ -+#if HAVE_CLICK_KERNEL_TX_NOTIFY -+ if (stage >= CLEANUP_INITIALIZED) { -+ registered_tx_notifiers--; -+ if (registered_tx_notifiers == 0) -+ unregister_net_tx(&tx_notifier); -+ } -+#endif -+ clear_device(&to_device_map); -+} -+ -+/* -+ * Problem: Linux drivers aren't required to -+ * accept a packet even if they've marked themselves -+ * as idle. What do we do with a rejected packet? -+ */ -+ -+#if LINUX_VERSION_CODE < 0x020400 -+# define netif_queue_stopped(dev) ((dev)->tbusy) -+# define netif_wake_queue(dev) mark_bh(NET_BH) -+#endif -+ -+bool -+ToDevice::run_task(Task *) -+{ -+ int busy = 0; -+ int sent = 0; -+ -+ _runs++; -+ -+#if LINUX_VERSION_CODE >= 0x020400 -+# if HAVE_NETIF_TX_LOCK -+ int ok = spin_trylock_bh(&_dev->_xmit_lock); -+ if (likely(ok)) -+ _dev->xmit_lock_owner = smp_processor_id(); -+ else { -+ _task.fast_reschedule(); -+ return false; -+ } -+# else -+ local_bh_disable(); -+ if (!spin_trylock(&_dev->xmit_lock)) { -+ local_bh_enable(); -+ _task.fast_reschedule(); -+ return false; -+ } -+ _dev->xmit_lock_owner = smp_processor_id(); -+# endif -+#endif -+ -+#if CLICK_DEVICE_STATS -+ unsigned low00, low10; -+ uint64_t time_now; -+ SET_STATS(low00, low10, time_now); -+#endif -+ -+#if HAVE_LINUX_POLLING -+ bool is_polling = (_dev->polling > 0); -+ if (is_polling) { -+ struct sk_buff *skbs = _dev->tx_clean(_dev); -+# if CLICK_DEVICE_STATS -+ if (_activations > 0 && skbs) -+ GET_STATS_RESET(low00, low10, time_now, -+ _perfcnt1_clean, _perfcnt2_clean, _time_clean); -+# endif -+ if (skbs) -+ skbmgr_recycle_skbs(skbs); -+# if CLICK_DEVICE_STATS -+ if (_activations > 0 && skbs) -+ GET_STATS_RESET(low00, low10, time_now, -+ _perfcnt1_freeskb, _perfcnt2_freeskb, _time_freeskb); -+# endif -+ } -+#endif -+ -+ /* try to send from click */ -+ while (sent < _burst && (busy = netif_queue_stopped(_dev)) == 0) { -+#if CLICK_DEVICE_THESIS_STATS && !CLICK_DEVICE_STATS -+ click_cycles_t before_pull_cycles = click_get_cycles(); -+#endif -+ -+ _pulls++; -+ -+ Packet *p = input(0).pull(); -+ if (!p) -+ break; -+ -+ _npackets++; -+#if CLICK_DEVICE_THESIS_STATS && !CLICK_DEVICE_STATS -+ _pull_cycles += click_get_cycles() - before_pull_cycles - CLICK_CYCLE_COMPENSATION; -+#endif -+ -+ GET_STATS_RESET(low00, low10, time_now, -+ _perfcnt1_pull, _perfcnt2_pull, _pull_cycles); -+ -+ busy = queue_packet(p); -+ -+ GET_STATS_RESET(low00, low10, time_now, -+ _perfcnt1_queue, _perfcnt2_queue, _time_queue); -+ -+ if (busy) -+ break; -+ sent++; -+ } -+ -+#if HAVE_LINUX_POLLING -+ if (is_polling && sent > 0) -+ _dev->tx_eob(_dev); -+ -+ // If Linux tried to send a packet, but saw tbusy, it will -+ // have left it on the queue. It'll just sit there forever -+ // (or until Linux sends another packet) unless we poke -+ // net_bh(), which calls qdisc_restart(). We are not allowed -+ // to call qdisc_restart() ourselves, outside of net_bh(). -+ if (is_polling && !busy && _dev->qdisc->q.qlen) { -+ _dev->tx_eob(_dev); -+ netif_wake_queue(_dev); -+ } -+#endif -+ -+#if CLICK_DEVICE_STATS -+ if (sent > 0) -+ _activations++; -+#endif -+ -+ if (busy && sent == 0) -+ _busy_returns++; -+ -+#if HAVE_LINUX_POLLING -+ if (is_polling) { -+ if (busy && sent == 0) { -+ _dev_idle++; -+ if (_dev_idle == 1024) { -+ /* device didn't send anything, ping it */ -+ _dev->tx_start(_dev); -+ _dev_idle = 0; -+ _hard_start++; -+ } -+ } else -+ _dev_idle = 0; -+ } -+#endif -+ -+#if LINUX_VERSION_CODE >= 0x020400 -+# if HAVE_NETIF_TX_LOCK -+ netif_tx_unlock_bh(_dev); -+# else -+ _dev->xmit_lock_owner = -1; -+ spin_unlock(&_dev->xmit_lock); -+ local_bh_enable(); -+# endif -+#endif -+ -+ // If we're polling, never go to sleep! We're relying on ToDevice to clean -+ // the transmit ring. -+ // Otherwise, don't go to sleep if the signal isn't active and -+ // we didn't just send any packets -+#if HAVE_CLICK_KERNEL_TX_NOTIFY -+ bool reschedule = (!busy && (sent > 0 || _signal.active())); -+#else -+ bool reschedule = (busy || sent > 0 || _signal.active()); -+#endif -+ -+#if HAVE_LINUX_POLLING -+ if (is_polling) { -+ reschedule = true; -+ // 9/18/06: Frederic Van Quickenborne reports (1/24/05) that ticket -+ // adjustments in FromDevice+ToDevice cause odd behavior. The ticket -+ // adjustments actually don't feel necessary to me in From/ToDevice -+ // any more, as described in FromDevice. So adjusting tickets now -+ // only if polling. -+ adjust_tickets(sent); -+ } -+#endif /* HAVE_LINUX_POLLING */ -+ -+ // 5.Feb.2007: Incorporate a version of a patch from Jason Park. If the -+ // device is "busy", perhaps there is no carrier! Don't spin on no -+ // carrier; instead, rely on Linux's notifer_hook to wake us up again. -+ if (busy && sent == 0 && !netif_carrier_ok(_dev)) -+ reschedule = false; -+ -+ if (reschedule) -+ _task.fast_reschedule(); -+ return sent > 0; -+} -+ -+int -+ToDevice::queue_packet(Packet *p) -+{ -+ struct sk_buff *skb1 = p->skb(); -+ -+ /* -+ * Ensure minimum ethernet packet size (14 hdr + 46 data). -+ * I can't figure out where Linux does this, so I don't -+ * know the correct procedure. -+ */ -+ if (!_no_pad && skb1->len < 60) { -+ if (skb_tailroom(skb1) < 60 - skb1->len) { -+ if (++_too_short == 1) -+ printk("<1>ToDevice %s packet too small (len %d, tailroom %d), had to copy\n", skb1->len, skb_tailroom(skb1)); -+ struct sk_buff *nskb = skb_copy_expand(skb1, skb_headroom(skb1), skb_tailroom(skb1) + 60 - skb1->len, GFP_ATOMIC); -+ kfree_skb(skb1); -+ if (!nskb) -+ return -1; -+ skb1 = nskb; -+ } -+ skb_put(skb1, 60 - skb1->len); -+ } -+ -+ // set the device annotation; -+ // apparently some devices in Linux 2.6 require it -+ skb1->dev = _dev; -+ -+ int ret; -+#if HAVE_LINUX_POLLING -+ if (_dev->polling > 0) -+ ret = _dev->tx_queue(_dev, skb1); -+ else -+#endif -+ { -+ ret = _dev->hard_start_xmit(skb1, _dev); -+ _hard_start++; -+ } -+ if (ret != 0) { -+ if (++_rejected == 1) -+ printk("<1>ToDevice %s rejected a packet!\n", _dev->name); -+ kfree_skb(skb1); -+ } -+ return ret; -+} -+ -+void -+ToDevice::change_device(net_device *dev) -+{ -+ _task.strong_unschedule(); -+ -+ set_device(dev, &to_device_map, true); -+ -+ if (_dev) -+ _task.strong_reschedule(); -+} -+ -+extern "C" { -+static int -+device_notifier_hook(struct notifier_block *nb, unsigned long flags, void *v) -+{ -+#ifdef NETDEV_GOING_DOWN -+ if (flags == NETDEV_GOING_DOWN) -+ flags = NETDEV_DOWN; -+#endif -+ if (flags == NETDEV_DOWN || flags == NETDEV_UP) { -+ bool down = (flags == NETDEV_DOWN); -+ net_device *dev = (net_device *)v; -+ Vector es; -+ to_device_map.lock(true); -+ to_device_map.lookup_all(dev, down, es); -+ for (int i = 0; i < es.size(); i++) -+ ((ToDevice *)(es[i]))->change_device(down ? 0 : dev); -+ to_device_map.unlock(true); -+ } else if (flags == NETDEV_CHANGE) { -+ net_device *dev = (net_device *)v; -+ Vector es; -+ to_device_map.lock(false); -+ to_device_map.lookup_all(dev, true, es); -+ for (int i = 0; i < es.size(); i++) -+ ((ToDevice *)(es[i]))->tx_wake_queue(dev); -+ to_device_map.unlock(false); -+ } -+ return 0; -+} -+} -+ -+static String -+ToDevice_read_calls(Element *f, void *) -+{ -+ ToDevice *td = (ToDevice *)f; -+ return -+ String(td->_rejected) + " packets rejected\n" + -+ String(td->_hard_start) + " hard start xmit\n" + -+ String(td->_busy_returns) + " device busy returns\n" + -+ String(td->_npackets) + " packets sent\n" + -+ String(td->_runs) + " calls to run_task()\n" + -+ String(td->_pulls) + " pulls\n" + -+#if CLICK_DEVICE_STATS -+ String(td->_pull_cycles) + " cycles pull\n" + -+ String(td->_time_clean) + " cycles clean\n" + -+ String(td->_time_freeskb) + " cycles freeskb\n" + -+ String(td->_time_queue) + " cycles queue\n" + -+ String(td->_perfcnt1_pull) + " perfctr1 pull\n" + -+ String(td->_perfcnt1_clean) + " perfctr1 clean\n" + -+ String(td->_perfcnt1_freeskb) + " perfctr1 freeskb\n" + -+ String(td->_perfcnt1_queue) + " perfctr1 queue\n" + -+ String(td->_perfcnt2_pull) + " perfctr2 pull\n" + -+ String(td->_perfcnt2_clean) + " perfctr2 clean\n" + -+ String(td->_perfcnt2_freeskb) + " perfctr2 freeskb\n" + -+ String(td->_perfcnt2_queue) + " perfctr2 queue\n" + -+ String(td->_activations) + " transmit activations\n" -+#else -+ String() -+#endif -+ ; -+} -+ -+enum { H_COUNT, H_DROPS, H_PULL_CYCLES, H_TIME_QUEUE, H_TIME_CLEAN }; -+ -+static String -+ToDevice_read_stats(Element *e, void *thunk) -+{ -+ ToDevice *td = (ToDevice *)e; -+ switch ((uintptr_t) thunk) { -+ case H_COUNT: -+ return String(td->_npackets); -+ case H_DROPS: -+ return String(td->_rejected); -+#if CLICK_DEVICE_THESIS_STATS || CLICK_DEVICE_STATS -+ case H_PULL_CYCLES: -+ return String(td->_pull_cycles); -+#endif -+#if CLICK_DEVICE_STATS -+ case H_TIME_QUEUE: -+ return String(td->_time_queue); -+ case H_TIME_CLEAN: -+ return String(td->_time_clean); -+#endif -+ default: -+ return String(); -+ } -+} -+ -+static int -+ToDevice_write_stats(const String &, Element *e, void *, ErrorHandler *) -+{ -+ ToDevice *td = (ToDevice *)e; -+ td->reset_counts(); -+ return 0; -+} -+ -+void -+ToDevice::add_handlers() -+{ -+ add_read_handler("calls", ToDevice_read_calls, 0); -+ add_read_handler("count", ToDevice_read_stats, (void *)H_COUNT); -+ add_read_handler("drops", ToDevice_read_stats, (void *)H_DROPS); -+ // XXX deprecated -+ add_read_handler("packets", ToDevice_read_stats, (void *)H_COUNT); -+#if CLICK_DEVICE_THESIS_STATS || CLICK_DEVICE_STATS -+ add_read_handler("pull_cycles", ToDevice_read_stats, (void *)H_PULL_CYCLES); -+#endif -+#if CLICK_DEVICE_STATS -+ add_read_handler("enqueue_cycles", ToDevice_read_stats, (void *)H_TIME_QUEUE); -+ add_read_handler("clean_dma_cycles", ToDevice_read_stats, (void *)H_TIME_CLEAN); -+#endif -+ add_write_handler("reset_counts", ToDevice_write_stats, 0); -+ add_task_handlers(&_task); -+} -+ -+ELEMENT_REQUIRES(AnyDevice linuxmodule) -+EXPORT_ELEMENT(ToDevice) -diff -Nurb click-1.6.0/elements/linuxmodule/tohost.cc click-1.6.0-27/elements/linuxmodule/tohost.cc ---- click-1.6.0/elements/linuxmodule/tohost.cc 2007-08-31 11:21:55.000000000 -0400 -+++ click-1.6.0-27/elements/linuxmodule/tohost.cc 2009-01-26 16:52:00.000000000 -0500 -@@ -143,7 +143,7 @@ - - // do not call eth_type_trans; it changes pkt_type! Instead, do its work - // directly. -- skb->mac.raw = skb->data; -+ skb->mac_header = skb->data; - skb_pull(skb, 14); - - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) -diff -Nurb click-1.6.0/elements/linuxmodule/tohost.cc.orig click-1.6.0-27/elements/linuxmodule/tohost.cc.orig ---- click-1.6.0/elements/linuxmodule/tohost.cc.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/elements/linuxmodule/tohost.cc.orig 2007-08-31 11:21:55.000000000 -0400 -@@ -0,0 +1,230 @@ -+// -*- mode: c++; c-basic-offset: 4 -*- -+/* -+ * tohost.{cc,hh} -- element sends packets to Linux for default processing -+ * Eddie Kohler, Robert Morris -+ * -+ * Copyright (c) 1999-2000 Massachusetts Institute of Technology -+ * Copyright (C) 2003 International Computer Science Institute -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, subject to the conditions -+ * listed in the Click LICENSE file. These conditions include: you must -+ * preserve this copyright notice, and you cannot mention the copyright -+ * holders in advertising related to the Software without their permission. -+ * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+ * notice is a summary of the Click LICENSE file; the license in that file is -+ * legally binding. -+ */ -+ -+#include -+#include "tohost.hh" -+#include -+#include -+ -+#include -+CLICK_CXX_PROTECT -+#include -+#include -+#include -+#include -+#include -+#if LINUX_VERSION_CODE >= 0x020400 && LINUX_VERSION_CODE < 0x020600 -+# include -+#endif -+CLICK_CXX_UNPROTECT -+#include -+ -+// for watching when devices go offline -+static AnyDeviceMap to_host_map; -+static struct notifier_block device_notifier; -+extern "C" { -+static int device_notifier_hook(struct notifier_block *nb, unsigned long val, void *v); -+} -+ -+void -+ToHost::static_initialize() -+{ -+ to_host_map.initialize(); -+ device_notifier.notifier_call = device_notifier_hook; -+ device_notifier.priority = 1; -+ device_notifier.next = 0; -+ register_netdevice_notifier(&device_notifier); -+} -+ -+void -+ToHost::static_cleanup() -+{ -+ unregister_netdevice_notifier(&device_notifier); -+} -+ -+ToHost::ToHost() -+ : _sniffers(false), _drops(0) -+{ -+} -+ -+ToHost::~ToHost() -+{ -+} -+ -+int -+ToHost::configure(Vector &conf, ErrorHandler *errh) -+{ -+ bool allow_nonexistent = false, quiet = false; -+ if (cp_va_parse(conf, this, errh, -+ cpOptional, -+ cpString, "device name", &_devname, -+ cpKeywords, -+ "SNIFFERS", cpBool, "send packets to sniffers only?", &_sniffers, -+ "QUIET", cpBool, "suppress up/down messages?", &quiet, -+ "ALLOW_NONEXISTENT", cpBool, "allow nonexistent device?", &allow_nonexistent, -+ cpEnd) < 0) -+ return -1; -+ set_device_flags(false, true, allow_nonexistent, quiet); -+ return 0; -+} -+ -+int -+ToHost::initialize(ErrorHandler *errh) -+{ -+ // We find the device here, rather than in 'initialize', to avoid warnings -+ // about "device down" with FromHost devices -- FromHost brings up its -+ // device during initialize(). -+ return (_devname ? find_device(&to_host_map, errh) : 0); -+} -+ -+void -+ToHost::cleanup(CleanupStage) -+{ -+ clear_device(&to_host_map); -+} -+ -+extern "C" { -+static int -+device_notifier_hook(struct notifier_block *nb, unsigned long flags, void *v) -+{ -+#ifdef NETDEV_GOING_DOWN -+ if (flags == NETDEV_GOING_DOWN) -+ flags = NETDEV_DOWN; -+#endif -+ if (flags == NETDEV_DOWN || flags == NETDEV_UP) { -+ bool down = (flags == NETDEV_DOWN); -+ net_device *dev = (net_device *)v; -+ Vector es; -+ to_host_map.lock(true); -+ to_host_map.lookup_all(dev, down, es); -+ for (int i = 0; i < es.size(); i++) -+ ((ToHost *)(es[i]))->set_device((down ? 0 : dev), &to_host_map, true); -+ to_host_map.unlock(true); -+ } -+ return 0; -+} -+} -+ -+void -+ToHost::push(int port, Packet *p) -+{ -+ struct sk_buff *skb = p->skb(); -+ -+ // set device if specified -+ if (_dev) -+ skb->dev = _dev; -+ -+ // check that device exists -+ if (!skb->dev) { -+ if (++_drops == 1) -+ click_chatter("%{element}: dropped a packet with null skb->dev", this); -+ p->kill(); -+ return; -+ } -+ -+ // remove PACKET_CLEAN bit -- packet is becoming dirty -+ skb->pkt_type &= PACKET_TYPE_MASK; -+ -+ // do not call eth_type_trans; it changes pkt_type! Instead, do its work -+ // directly. -+ skb->mac.raw = skb->data; -+ skb_pull(skb, 14); -+ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) -+ const ethhdr *eth = eth_hdr(skb); -+#else -+ const ethhdr *eth = skb->mac.ethernet; -+#endif -+ if (ntohs(eth->h_proto) >= 1536) -+ skb->protocol = eth->h_proto; -+ else { -+ const unsigned short *crap = (const unsigned short *)skb->data; -+ // "magic hack to spot IPX packets" -+ skb->protocol = (*crap == 0xFFFF ? htons(ETH_P_802_3) : htons(ETH_P_802_2)); -+ } -+ -+ // skb->dst may be set if the packet came from Linux originally. In this -+ // case, we must clear skb->dst so Linux finds the correct dst. -+ if (skb->dst) { -+ dst_release(skb->dst); -+ skb->dst = 0; -+ } -+ -+ // get protocol to pass to Linux -+ int protocol = (_sniffers ? 0xFFFF : skb->protocol); -+ -+ // pass packet to Linux -+#ifdef HAVE_NETIF_RECEIVE_SKB // from Linux headers -+ struct net_device *dev = skb->dev; -+ local_bh_disable(); -+ dev_hold(dev); -+# if HAVE___NETIF_RECEIVE_SKB -+ __netif_receive_skb(skb, protocol, -1); -+# else -+ netif_receive_skb(skb, protocol, -1); -+# endif -+ dev_put(dev); -+ local_bh_enable(); -+#else -+ // be nice to libpcap -+ if (skb->stamp.tv_sec == 0) { -+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 18) -+ do_gettimeofday(&skb->stamp); -+# elif !defined(CONFIG_CPU_IS_SLOW) -+ get_fast_time(&skb->stamp); -+# else -+ skb->stamp = xtime; -+# endif -+ } -+ -+# ifdef HAVE_CLICK_KERNEL -+ skb->h.raw = skb->nh.raw = skb->data; -+# if LINUX_VERSION_CODE >= 0x020400 -+ local_bh_disable(); -+ br_read_lock(BR_NETPROTO_LOCK); -+ struct net_device *dev = skb->dev; -+ dev_hold(dev); -+ ptype_dispatch(skb, protocol); -+ dev_put(dev); -+ br_read_unlock(BR_NETPROTO_LOCK); -+ local_bh_enable(); -+# else -+ lock_kernel(); -+ ptype_dispatch(skb, protocol); -+ unlock_kernel(); -+# endif -+# endif -+#endif -+} -+ -+String -+ToHost::read_handler(Element *e, void *) -+{ -+ ToHost *th = static_cast(e); -+ return String(th->_drops); -+} -+ -+void -+ToHost::add_handlers() -+{ -+ add_read_handler("drops", read_handler, 0); -+} -+ -+ELEMENT_REQUIRES(linuxmodule AnyDevice) -+EXPORT_ELEMENT(ToHost) -diff -Nurb click-1.6.0/elements/standard/addressinfo.cc click-1.6.0-27/elements/standard/addressinfo.cc ---- click-1.6.0/elements/standard/addressinfo.cc 2007-09-12 02:14:04.000000000 -0400 -+++ click-1.6.0-27/elements/standard/addressinfo.cc 2009-01-21 13:08:40.000000000 -0500 -@@ -272,7 +272,7 @@ - // if it's a device name, return a primary IP address - #if CLICK_LINUXMODULE - # if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) -- net_device *dev = dev_get_by_name(s.c_str()); -+ net_device *dev = dev_get_by_name(&init_net,s.c_str()); - if (dev) { - bool found = false; - in_device *in_dev = in_dev_get(dev); -@@ -383,7 +383,7 @@ - # if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0) - # define dev_put(dev) /* nada */ - # endif -- net_device *dev = dev_get_by_name(s.c_str()); -+ net_device *dev = dev_get_by_name(&init_net,s.c_str()); - if (dev && (dev->type == ARPHRD_ETHER || dev->type == ARPHRD_80211)) { - memcpy(store, dev->dev_addr, 6); - dev_put(dev); -diff -Nurb click-1.6.0/elements/standard/addressinfo.cc.orig click-1.6.0-27/elements/standard/addressinfo.cc.orig ---- click-1.6.0/elements/standard/addressinfo.cc.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/elements/standard/addressinfo.cc.orig 2007-09-12 02:14:04.000000000 -0400 -@@ -0,0 +1,413 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../include/click/standard/addressinfo.hh" -*- -+/* -+ * addressinfo.{cc,hh} -- element stores address information -+ * Eddie Kohler -+ * -+ * Copyright (c) 2000 Mazu Networks, Inc. -+ * Copyright (c) 2004 The Regents of the University of California -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, subject to the conditions -+ * listed in the Click LICENSE file. These conditions include: you must -+ * preserve this copyright notice, and you cannot mention the copyright -+ * holders in advertising related to the Software without their permission. -+ * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+ * notice is a summary of the Click LICENSE file; the license in that file is -+ * legally binding. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#if CLICK_NS -+# include -+#endif -+#if CLICK_USERLEVEL -+# include -+#endif -+#if CLICK_USERLEVEL && defined(__linux__) -+# include -+# include -+# include -+# include -+# include -+#elif CLICK_USERLEVEL && (defined(__APPLE__) || defined(__FreeBSD__)) -+# include -+# include -+# include -+# include -+# include -+#endif -+#if CLICK_LINUXMODULE -+# include -+CLICK_CXX_PROTECT -+# include -+# include -+# include -+# include -+CLICK_CXX_UNPROTECT -+# include -+#endif -+CLICK_DECLS -+ -+AddressInfo::AddressInfo() -+{ -+} -+ -+AddressInfo::~AddressInfo() -+{ -+} -+ -+int -+AddressInfo::configure(Vector &conf, ErrorHandler *errh) -+{ -+ int before = errh->nerrors(); -+ -+ for (int i = 0; i < conf.size(); i++) { -+ Vector parts; -+ cp_spacevec(conf[i], parts); -+ if (parts.size() == 0) -+ // allow empty arguments -+ continue; -+ if (parts.size() < 2) -+ errh->error("expected 'NAME [ADDRS]', got '%s'", conf[i].c_str()); -+ -+ for (int j = 1; j < parts.size(); j++) { -+ uint8_t d[24]; -+ if (cp_ip_address(parts[j], &d[0])) -+ NameInfo::define(NameInfo::T_IP_ADDR, this, parts[0], &d[0], 4); -+ else if (cp_ip_prefix(parts[j], &d[0], &d[4], false)) { -+ NameInfo::define(NameInfo::T_IP_PREFIX, this, parts[0], &d[0], 8); -+ if (*(uint32_t*)(&d[0]) & ~*((uint32_t*)(&d[4]))) -+ NameInfo::define(NameInfo::T_IP_ADDR, this, parts[0], &d[0], 4); -+ } else if (cp_ethernet_address(parts[j], &d[0])) -+ NameInfo::define(NameInfo::T_ETHERNET_ADDR, this, parts[0], &d[0], 6); -+#ifdef HAVE_IP6 -+ else if (cp_ip6_address(parts[j], &d[0])) -+ NameInfo::define(NameInfo::T_IP6_ADDR, this, parts[0], &d[0], 16); -+ else if (cp_ip6_prefix(parts[j], &d[0], (int *) &d[16], false)) { -+ NameInfo::define(NameInfo::T_IP6_PREFIX, this, parts[0], &d[0], 16 + sizeof(int)); -+ if (*((IP6Address*) &d[0]) & ~IP6Address::make_prefix(*(int*) &d[16])) -+ NameInfo::define(NameInfo::T_IP6_ADDR, this, parts[0], &d[0], 16); -+ } -+#endif -+ else -+ errh->error("\"%s\" '%s' is not a recognizable address", parts[0].c_str(), parts[j].c_str()); -+ } -+ } -+ -+ return (errh->nerrors() == before ? 0 : -1); -+} -+ -+ -+#if CLICK_USERLEVEL && !CLICK_NS && (defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__)) -+# define CLICK_QUERY_NETDEVICE 1 -+#endif -+ -+#if CLICK_QUERY_NETDEVICE -+ -+static bool -+query_netdevice(const String &s, unsigned char *store, int type, int len) -+ // type: should be 'e' (Ethernet) or 'i' (ipv4) -+{ -+ // 5 Mar 2004 - Don't call ioctl for every attempt to look up an Ethernet -+ // device name, because this causes the kernel to try to load weird kernel -+ // modules. -+ static time_t read_time = 0; -+ static Vector device_names; -+ static Vector device_addrs; -+ -+ // XXX magic time constant -+ if (!read_time || read_time + 30 < time(0)) { -+ device_names.clear(); -+ device_addrs.clear(); -+ -+# ifdef __linux__ -+ int query_fd = socket(AF_INET, SOCK_DGRAM, 0); -+ if (query_fd < 0) -+ return false; -+ struct ifreq ifr; -+ -+ String f = file_string("/proc/net/dev"); -+ const char *begin = f.begin(), *end = f.end(); -+ while (begin < end) { -+ const char *colon = find(begin, end, ':'); -+ const char *nl = find(begin, end, '\n'); -+ if (colon > begin && colon < nl) { -+ const char *word = colon; -+ while (word > begin && !isspace(word[-1])) -+ word--; -+ if ((size_t) (colon - word) < sizeof(ifr.ifr_name)) { -+ // based on patch from Jose Vasconcellos -+ // -+ String dev_name = f.substring(word, colon); -+ strcpy(ifr.ifr_name, dev_name.c_str()); -+ if (ioctl(query_fd, SIOCGIFHWADDR, &ifr) >= 0 -+ && ifr.ifr_hwaddr.sa_family == ARPHRD_ETHER) { -+ device_names.push_back(dev_name); -+ device_addrs.push_back(String('e') + String(ifr.ifr_hwaddr.sa_data, 6)); -+ } -+ if (ioctl(query_fd, SIOCGIFADDR, &ifr) >= 0) { -+ device_names.push_back(dev_name); -+ device_addrs.push_back(String('i') + String((const char *)&((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr, 4)); -+ } -+ } -+ } -+ begin = nl + 1; -+ } -+ -+ close(query_fd); -+# elif defined(__APPLE__) || defined(__FreeBSD__) -+ // get list of interfaces (this code borrowed, with changes, from -+ // FreeBSD ifconfig(8)) -+ int mib[8]; -+ mib[0] = CTL_NET; -+ mib[1] = PF_ROUTE; -+ mib[2] = 0; -+ mib[3] = 0; // address family -+ mib[4] = NET_RT_IFLIST; -+ mib[5] = 0; // ifindex -+ -+ size_t if_needed; -+ char* buf = 0; -+ while (!buf) { -+ if (sysctl(mib, 6, 0, &if_needed, 0, 0) < 0) -+ return false; -+ if ((buf = new char[if_needed]) == 0) -+ return false; -+ if (sysctl(mib, 6, buf, &if_needed, 0, 0) < 0) { -+ if (errno == ENOMEM) { -+ delete[] buf; -+ buf = 0; -+ } else -+ return false; -+ } -+ } -+ -+ for (char* pos = buf; pos < buf + if_needed; ) { -+ // grab next if_msghdr -+ struct if_msghdr* ifm = reinterpret_cast(pos); -+ if (ifm->ifm_type != RTM_IFINFO) -+ break; -+ int datalen = sizeof(struct if_data); -+# if HAVE_IF_DATA_IFI_DATALEN -+ if (ifm->ifm_data.ifi_datalen) -+ datalen = ifm->ifm_data.ifi_datalen; -+# endif -+ -+ // extract interface name from 'ifm' -+ struct sockaddr_dl* sdl = reinterpret_cast(pos + sizeof(struct if_msghdr) - sizeof(struct if_data) + datalen); -+ String name(sdl->sdl_data, sdl->sdl_nlen); -+ -+ // Ethernet address is stored in 'sdl' -+ if (sdl->sdl_type == IFT_ETHER && sdl->sdl_alen == 6) { -+ device_names.push_back(name); -+ device_addrs.push_back(String('e') + String((const char*)(LLADDR(sdl)), 6)); -+ } -+ -+ // parse all addresses, looking for IP -+ pos += ifm->ifm_msglen; -+ while (pos < buf + if_needed) { -+ struct if_msghdr* nextifm = reinterpret_cast(pos); -+ if (nextifm->ifm_type != RTM_NEWADDR) -+ break; -+ -+ struct ifa_msghdr* ifam = reinterpret_cast(nextifm); -+ char* sa_buf = reinterpret_cast(ifam + 1); -+ pos += nextifm->ifm_msglen; -+ for (int i = 0; i < RTAX_MAX && sa_buf < pos; i++) { -+ if (!(ifam->ifam_addrs & (1 << i))) -+ continue; -+ struct sockaddr* sa = reinterpret_cast(sa_buf); -+ if (sa->sa_len) -+ sa_buf += 1 + ((sa->sa_len - 1) | (sizeof(long) - 1)); -+ else -+ sa_buf += sizeof(long); -+ if (i != RTAX_IFA) -+ continue; -+ if (sa->sa_family == AF_INET) { -+ device_names.push_back(name); -+ device_addrs.push_back(String('i') + String((const char *)&((struct sockaddr_in*)sa)->sin_addr, 4)); -+ } -+ } -+ } -+ } -+ -+ delete[] buf; -+# endif /* defined(__APPLE__) || defined(__FreeBSD__) */ -+ read_time = time(0); -+ } -+ -+ for (int i = 0; i < device_names.size(); i++) -+ if (device_names[i] == s && device_addrs[i][0] == type) { -+ memcpy(store, device_addrs[i].data() + 1, len); -+ return true; -+ } -+ -+ return false; -+} -+ -+#endif /* CLICK_QUERY_NETDEVICE */ -+ -+ -+bool -+AddressInfo::query_ip(String s, unsigned char *store, Element *e) -+{ -+ int colon = s.find_right(':'); -+ if (colon >= 0 && s.substring(colon).lower() != ":ip" -+ && s.substring(colon).lower() != ":ip4") -+ return false; -+ else if (colon >= 0) -+ s = s.substring(0, colon); -+ -+ if (NameInfo::query(NameInfo::T_IP_ADDR, e, s, store, 4)) -+ return true; -+ -+ // if it's a device name, return a primary IP address -+#if CLICK_LINUXMODULE -+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) -+ net_device *dev = dev_get_by_name(s.c_str()); -+ if (dev) { -+ bool found = false; -+ in_device *in_dev = in_dev_get(dev); -+ if (in_dev) { -+ for_primary_ifa(in_dev) { -+ memcpy(store, &ifa->ifa_local, 4); -+ found = true; -+ break; -+ } -+ endfor_ifa(in_dev); -+ in_dev_put(in_dev); -+ } -+ dev_put(dev); -+ if (found) -+ return true; -+ } -+# endif -+#elif CLICK_NS -+ if (e) { -+ char tmp[255]; -+ int r = simclick_sim_command(e->router()->master()->simnode(), SIMCLICK_IPADDR_FROM_NAME, s.c_str(), tmp, 255); -+ if (r >= 0 && tmp[0] && cp_ip_address(tmp, store)) -+ return true; -+ } -+#elif CLICK_QUERY_NETDEVICE -+ if (query_netdevice(s, store, 'i', 4)) -+ return true; -+#endif -+ -+ return false; -+} -+ -+bool -+AddressInfo::query_ip_prefix(String s, unsigned char *store, -+ unsigned char *mask_store, Element *e) -+{ -+ int colon = s.find_right(':'); -+ if (colon >= 0 && s.substring(colon).lower() != ":ipnet" -+ && s.substring(colon).lower() != ":ip4net") -+ return false; -+ else if (colon >= 0) -+ s = s.substring(0, colon); -+ -+ uint8_t data[8]; -+ if (NameInfo::query(NameInfo::T_IP_PREFIX, e, s, &data[0], 8)) { -+ memcpy(store, &data[0], 4); -+ memcpy(mask_store, &data[4], 4); -+ return true; -+ } -+ -+ return false; -+} -+ -+ -+#ifdef HAVE_IP6 -+ -+bool -+AddressInfo::query_ip6(String s, unsigned char *store, Element *e) -+{ -+ int colon = s.find_right(':'); -+ if (colon >= 0 && s.substring(colon).lower() != ":ip6") -+ return false; -+ else if (colon >= 0) -+ s = s.substring(0, colon); -+ -+ return NameInfo::query(NameInfo::T_IP6_ADDR, e, s, store, 16); -+} -+ -+bool -+AddressInfo::query_ip6_prefix(String s, unsigned char *store, -+ int *bits_store, Element *e) -+{ -+ int colon = s.find_right(':'); -+ if (colon >= 0 && s.substring(colon).lower() != ":ip6net") -+ return false; -+ else if (colon >= 0) -+ s = s.substring(0, colon); -+ -+ uint8_t data[16 + sizeof(int)]; -+ if (NameInfo::query(NameInfo::T_IP6_PREFIX, e, s, data, 16 + sizeof(int))) { -+ memcpy(store, &data[0], 16); -+ *bits_store = *(int *) &data[16]; -+ return true; -+ } -+ -+ return false; -+} -+ -+#endif /* HAVE_IP6 */ -+ -+ -+bool -+AddressInfo::query_ethernet(String s, unsigned char *store, Element *e) -+{ -+ int colon = s.find_right(':'); -+ if (colon >= 0 && s.substring(colon).lower() != ":eth" -+ && s.substring(colon).lower() != ":ethernet") -+ return false; -+ else if (colon >= 0) -+ s = s.substring(0, colon); -+ -+ if (NameInfo::query(NameInfo::T_ETHERNET_ADDR, e, s, store, 6)) -+ return true; -+ -+ // if it's a device name, return its Ethernet address -+#if CLICK_LINUXMODULE -+ // in the Linux kernel, just look at the device list -+# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0) -+# define dev_put(dev) /* nada */ -+# endif -+ net_device *dev = dev_get_by_name(s.c_str()); -+ if (dev && (dev->type == ARPHRD_ETHER || dev->type == ARPHRD_80211)) { -+ memcpy(store, dev->dev_addr, 6); -+ dev_put(dev); -+ return true; -+ } else if (dev) -+ dev_put(dev); -+#elif CLICK_NS -+ if (e) { -+ char tmp[255]; -+ int r = simclick_sim_command(e->router()->master()->simnode(), SIMCLICK_MACADDR_FROM_NAME, s.c_str(), tmp, 255); -+ if (r >= 0 && tmp[0] && cp_ethernet_address(tmp, store)) -+ return true; -+ } -+#elif CLICK_QUERY_NETDEVICE -+ if (query_netdevice(s, store, 'e', 6)) -+ return true; -+#endif -+ -+ return false; -+} -+ -+EXPORT_ELEMENT(AddressInfo) -+ELEMENT_HEADER() -+ -+// template instance -+#include -+CLICK_ENDDECLS -diff -Nurb click-1.6.0/etc/libclick/Makefile click-1.6.0-27/etc/libclick/Makefile ---- click-1.6.0/etc/libclick/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/etc/libclick/Makefile 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,81 @@ -+# Warning: this file must be usable by regular make -+# (unlike the Makefiles in subdirectories). -+ -+SHELL = /bin/sh -+ -+ -+PACKAGE = click -+VERSION = 1.6.0 -+ -+top_srcdir = ../.. -+srcdir = . -+top_builddir = ../.. -+subdir = etc/libclick -+conf_auxdir = $(top_srcdir) -+ -+AUTOCONF = autoconf -+ACLOCAL = aclocal -I m4 -+PERL = perl -+INSTALL = /usr/bin/install -c -+INSTALL_IF_CHANGED = $(top_builddir)/installch -+INSTALL_DATA = /usr/bin/install -c -m 644 -+INSTALL_DATA_IF_CHANGED = $(top_builddir)/installch -m 644 -+mkinstalldirs = $(conf_auxdir)/mkinstalldirs -+ -+prefix = /d/click/click-1.6.0-27/inst -+exec_prefix = /d/click/click-1.6.0-27/inst -+bindir = /d/click/click-1.6.0-27/inst/bin -+ -+all: -+ @echo This Makefile does not build anything. -+ @echo Its only important target is '`make dist'"'". -+ -+Makefile: $(top_builddir)/config.status $(srcdir)/Makefile.in -+ cd $(top_builddir) && \ -+ CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status -+ -+distdir = libclick-$(VERSION) -+top_distdir = $(distdir) -+ -+clean: -+ -rm -rf $(distdir) $(distdir).tar.gz -+distclean: clean -+ -rm -f Makefile -+ -+dist: $(distdir).tar.gz -+ -rm -rf $(distdir) -+$(distdir).tar.gz: distdir -+ tar czf $(distdir).tar.gz $(distdir) -+distdir: always -+ @if test `grep 'CLICK_VERSION=' $(top_srcdir)/configure.in` != `grep 'CLICK_VERSION=' $(srcdir)/lc-configure.in`; then \ -+ echo 'ERROR: Bad libclick CLICK_VERSION!'; exit 1; \ -+ fi -+ -rm -rf $(distdir) -+ mkdir $(distdir) -+ @-chmod 777 $(distdir) -+ @echo Copying library, documentation, configuration, and driver files... -+ @echo DISTFILES >>$(distdir)/DISTFILES -+ @for file in `cat $(srcdir)/DISTFILES`; do \ -+ d=$(top_srcdir); \ -+ sf=`echo "$$file:$$file:" | sed 's/^\([^:]*\):.*/\1/'`; \ -+ df=`echo "$$file:$$file:" | sed 's/^[^:]*:\([^:]*\):.*/\1/'`; \ -+ if test -d "$$d/$$sf"; then \ -+ mkdir $(distdir)/$$df; \ -+ chmod 777 $(distdir)/$$df; \ -+ else \ -+ test -f "$(distdir)/$$df" \ -+ || ln $$d/$$sf $(distdir)/$$df 2>/dev/null \ -+ || cp -p $$d/$$sf $(distdir)/$$df \ -+ || echo "Could not copy $$d/$$sf!" 1>&2; \ -+ fi; \ -+ echo $$df >>$(distdir)/DISTFILES; \ -+ done -+ cd $(distdir) && $(PERL) -pi -e 's/enable_linuxmodule=yes/enable_linuxmodule=no/;' configure.in -+ cd $(distdir) && $(ACLOCAL) && $(AUTOCONF) -+ cd $(distdir) && rm -rf autom4te* -+ echo configure >>$(distdir)/DISTFILES -+ -+always: -+ @: -+ -+.PHONY: all dist distdir always -diff -Nurb click-1.6.0/etc/pkg-config.mk click-1.6.0-27/etc/pkg-config.mk ---- click-1.6.0/etc/pkg-config.mk 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/etc/pkg-config.mk 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,43 @@ -+# pkg-config.mk -- build tools for Click -+# Eddie Kohler -+# -+# Copyright (c) 2006 Regents of the University of California -+# -+# Permission is hereby granted, free of charge, to any person obtaining a -+# copy of this software and associated documentation files (the "Software"), -+# to deal in the Software without restriction, subject to the conditions -+# listed in the Click LICENSE file. These conditions include: you must -+# preserve this copyright notice, and you cannot mention the copyright -+# holders in advertising related to the Software without their permission. -+# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+# notice is a summary of the Click LICENSE file; the license in that file is -+# legally binding. -+ -+CLICKCC = gcc -W -Wall -+CLICKCPP = gcc -W -Wall -E -+CLICKCXX = g++ -W -Wall -+CLICKCXXCPP = g++ -W -Wall -E -+ -+CLICKAR_CREATE = ar cru -+CLICKRANLIB = ranlib -+CLICKSTRIP = strip -+ -+CLICKKERNEL_CC = gcc -w -W -Wall -+CLICKKERNEL_CXX = g++ -w -W -Wall -fno-exceptions -fno-rtti -D__SMP__ -+ -+CLICKCPPFLAGS = -+CLICKCFLAGS = -g -O2 -+CLICKCFLAGS_NDEBUG = -O2 -+CLICKCXXFLAGS = -g -O2 -+CLICKCXXFLAGS_NDEBUG = -O2 -+CLICKDEPCFLAGS = -MD -+ -+CLICKDEFS = -DHAVE_CONFIG_H -+CLICKINCLUDES = -I$(clickincludedir) -I$(clicksrcdir) -+CLICKLDFLAGS = -+CLICKLDMODULEFLAGS = -shared -+ -+CLICKAUTOCONF = autoconf -+CLICKGMAKE = make -+CLICKINSTALL = /usr/bin/install -c -+ -diff -Nurb click-1.6.0/include/click/config-bsdmodule.h click-1.6.0-27/include/click/config-bsdmodule.h ---- click-1.6.0/include/click/config-bsdmodule.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/include/click/config-bsdmodule.h 2009-01-19 15:07:24.000000000 -0500 -@@ -0,0 +1,52 @@ -+/* include/click/config-bsdmodule.h. Generated from config-bsdmodule.h.in by configure. */ -+/* Process this file with configure to produce config-bsdmodule.h. -*- mode: c -*- */ -+#ifndef CLICK_CONFIG_BSDMODULE_H -+#define CLICK_CONFIG_BSDMODULE_H -+ -+/* Define stuff under a FreeBSD module. */ -+#ifndef __FreeBSD__ -+# error "I must be compiled on a FreeBSD machine" -+#endif -+#define KERNEL 1 -+#define _KERNEL 1 -+#define KLD_MODULE 1 -+ -+/* Define if your BSD kernel has Click extensions. */ -+/* #undef HAVE_CLICK_BSD_KERNEL */ -+ -+/* Define if your BSD kernel has polling extensions. */ -+/* #undef HAVE_BSD_POLLING */ -+ -+/* Define if Click should use an adaptive scheduler to share the CPU(s) more -+ fairly with the kernel. */ -+/* #undef HAVE_ADAPTIVE_SCHEDULER */ -+ -+/* Include integer and other type definitions. */ -+#include -+ -+/* Define assert macro. */ -+#define assert(x) /* nada */ -+ -+/* Define likely and unlikely macros. */ -+#define likely(x) (x) -+#define unlikely(x) (x) -+ -+#ifdef __cplusplus -+ -+/* Declare operator new. */ -+void *operator new(size_t) throw (); -+void *operator new[](size_t) throw (); -+ -+/* Provide placement new. */ -+inline void *operator new(size_t, void *v) throw () { return v; } -+#define HAVE_PLACEMENT_NEW 1 -+ -+/* Define macros that surround Click declarations. */ -+#define CLICK_DECLS namespace Click { -+#define CLICK_ENDDECLS } -+#define CLICK_USING_DECLS using namespace Click; -+#define CLICK_NAME(name) ::Click::name -+ -+#endif /* __cplusplus */ -+ -+#endif /* CLICK_CONFIG_BSDMODULE_H */ -diff -Nurb click-1.6.0/include/click/config-linuxmodule.h click-1.6.0-27/include/click/config-linuxmodule.h ---- click-1.6.0/include/click/config-linuxmodule.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/include/click/config-linuxmodule.h 2009-02-11 16:38:55.000000000 -0500 -@@ -0,0 +1,165 @@ -+/* include/click/config-linuxmodule.h. Generated from config-linuxmodule.h.in by configure. */ -+/* Process this file with configure to produce config-linuxmodule.h. -*- mode: c -*- */ -+#ifndef CLICK_CONFIG_LINUXMODULE_H -+#define CLICK_CONFIG_LINUXMODULE_H -+ -+/* Define stuff under a Linux module. */ -+#ifndef __linux__ -+# error "I must be compiled on a Linux machine" -+#endif -+#define __KERNEL__ 1 -+#define MODULE 1 -+ -+/* Define if your Linux kernel is running in SMP mode. */ -+#define __SMP__ 1 -+ -+/* Define if Click should use an adaptive scheduler to share the CPU(s) more -+ fairly with the kernel. */ -+/* #undef HAVE_ADAPTIVE_SCHEDULER */ -+ -+/* Define if your Linux kernel has Click extensions. */ -+#define HAVE_CLICK_KERNEL 1 -+ -+/* Define if your Linux kernel has Click transmit notification extensions. */ -+/* #undef HAVE_CLICK_KERNEL_TX_NOTIFY */ -+ -+/* Define if fast checksum functions available. */ -+#define HAVE_FAST_CHECKSUM 1 -+ -+/* Define if 'int64_t' is typedefed to 'long' in linuxmodule. */ -+/* #undef HAVE_INT64_IS_LONG_LINUXMODULE */ -+ -+/* Define if 'int64_t' is typedefed to 'long long' in linuxmodule. */ -+#define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1 -+ -+/* Define to enable assertion checking. Failed assertions will print a message -+ and optionally stop the router. */ -+/* #undef HAVE_KERNEL_ASSERT */ -+ -+/* Define if you have the header file. */ -+#define HAVE_LINUX_ASM_ALTERNATIVE_H 1 -+ -+/* Define if your Linux kernel architecture defines atomic_set_mask. */ -+/* #undef HAVE_LINUX_ATOMIC_SET_MASK */ -+ -+/* Define if your Linux kernel has polling extensions. */ -+#define HAVE_LINUX_POLLING 1 -+ -+/* Define if your Linux kernel has read_net_skbcount. */ -+/* #undef HAVE_LINUX_READ_NET_SKBCOUNT */ -+ -+/* Define if 'struct skb_shared_info' has a 'gso_size' member. */ -+/* #undef HAVE_LINUX_SKB_SHINFO_GSO_SIZE */ -+ -+/* Define if 'struct skb_shared_info' has an 'ip6_frag_id' member. */ -+/* #undef HAVE_LINUX_SKB_SHINFO_IP6_FRAG_ID */ -+ -+/* Define if 'struct skb_shared_info' has a 'tso_size' member. */ -+/* #undef HAVE_LINUX_SKB_SHINFO_TSO_SIZE */ -+ -+/* Define if 'struct skb_shared_info' has a 'ufo_size' member. */ -+/* #undef HAVE_LINUX_SKB_SHINFO_UFO_SIZE */ -+ -+/* Define if 'struct sk_buff' has an 'fclone' member. */ -+/* #undef HAVE_LINUX_SKBUFF_FCLONE */ -+ -+/* Define if 'struct sk_buff' has a 'security' member. */ -+/* #undef HAVE_LINUX_SKBUFF_SECURITY */ -+ -+/* Define if your Linux kernel exposes strlen. */ -+#define HAVE_LINUX_STRLEN_EXPOSED 1 -+ -+/* Define if your Linux kernel has tulip_interrupt_hook. */ -+/* #undef HAVE_LINUX_TULIP_INTERRUPT_HOOK */ -+ -+/* Define if the Click linuxmodule is compiled for a 2.6 kernel. */ -+#define HAVE_LINUXMODULE_2_6 1 -+ -+/* Define if you have the net_enable_timestamp function. */ -+/* #undef HAVE_NET_ENABLE_TIMESTAMP */ -+ -+/* Define if you have the netif_tx_lock function. */ -+/* #undef HAVE_NETIF_TX_LOCK */ -+ -+/* Define if fast checksum functions require correct alignment. */ -+#ifndef __i386__ -+# define FAST_CHECKSUM_ALIGNED 1 -+#endif -+ -+/* Include integer type definitions. */ -+#include -+CLICK_CXX_PROTECT -+#include -+#include -+CLICK_CXX_UNPROTECT -+#include -+ -+typedef ptrdiff_t intptr_t; -+//typedef unsigned long uintptr_t; /* XXX? */ -+ -+/* Define HAVE_INT64_IS_LONG based on HAVE_INT64_IS_LONG_LINUXMODULE. */ -+#ifdef HAVE_INT64_IS_LONG_LINUXMODULE -+# define HAVE_INT64_IS_LONG HAVE_INT64_IS_LONG_LINUXMODULE -+#endif -+ -+/* Define HAVE_INT64_IS_LONG_LONG based on HAVE_INT64_IS_LONG_LONG_LINUXMODULE. */ -+#if HAVE_LONG_LONG && defined(HAVE_INT64_IS_LONG_LONG_LINUXMODULE) -+# define HAVE_INT64_IS_LONG_LONG HAVE_INT64_IS_LONG_LONG_LINUXMODULE -+#endif -+ -+/* Define KBUILD symbols. */ -+#if !defined(KBUILD_STR) && HAVE_LINUXMODULE_2_6 -+# define KBUILD_STR(s) #s -+# define KBUILD_BASENAME KBUILD_STR(click) -+# define KBUILD_MODNAME KBUILD_STR(click) -+#endif -+ -+#ifdef __cplusplus -+ -+/* Declare operator new. */ -+void *operator new(size_t) throw (); -+void *operator new[](size_t) throw (); -+ -+/* Provide placement new. */ -+inline void *operator new(size_t, void *v) { return v; } -+#define HAVE_PLACEMENT_NEW 1 -+ -+/* Define macros that surround Click declarations. */ -+#define CLICK_DECLS /* */ -+#define CLICK_ENDDECLS /* */ -+#define CLICK_USING_DECLS /* */ -+#define CLICK_NAME(name) ::name -+ -+/* Fix incompatibilities between some Linux versions and Click/C++. */ -+ -+/* Include integer type definitions. */ -+#include -+CLICK_CXX_PROTECT -+#include -+CLICK_CXX_UNPROTECT -+#include -+ -+ -+#endif /* __cplusplus */ -+ -+/* Define assert macro. */ -+# ifdef __cplusplus -+extern "C" { -+# endif -+void click_assert_failed(const char *file, int line, const char *problem_text); -+# ifdef __cplusplus -+} -+# endif -+ -+#ifdef HAVE_KERNEL_ASSERT -+# define assert(x) ((x) ? (void)0 : click_assert_failed(__FILE__, __LINE__, #x)) -+#else -+# define assert(x) /* nada */ -+#endif -+ -+/* Some architectures do not have builtin integer functions in kernel. */ -+#if defined(__MIPSEL__) || defined(__MIPSEB__) -+# define HAVE_NO_INTEGER_BUILTINS 1 -+#endif -+ -+#endif /* CLICK_CONFIG_LINUXMODULE_H */ -diff -Nurb click-1.6.0/include/click/config-linuxmodule.h.orig click-1.6.0-27/include/click/config-linuxmodule.h.orig ---- click-1.6.0/include/click/config-linuxmodule.h.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/include/click/config-linuxmodule.h.orig 2009-01-19 15:07:24.000000000 -0500 -@@ -0,0 +1,155 @@ -+/* include/click/config-linuxmodule.h. Generated from config-linuxmodule.h.in by configure. */ -+/* Process this file with configure to produce config-linuxmodule.h. -*- mode: c -*- */ -+#ifndef CLICK_CONFIG_LINUXMODULE_H -+#define CLICK_CONFIG_LINUXMODULE_H -+ -+/* Define stuff under a Linux module. */ -+#ifndef __linux__ -+# error "I must be compiled on a Linux machine" -+#endif -+#define __KERNEL__ 1 -+#define MODULE 1 -+ -+/* Define if your Linux kernel is running in SMP mode. */ -+#define __SMP__ 1 -+ -+/* Define if Click should use an adaptive scheduler to share the CPU(s) more -+ fairly with the kernel. */ -+/* #undef HAVE_ADAPTIVE_SCHEDULER */ -+ -+/* Define if your Linux kernel has Click extensions. */ -+#define HAVE_CLICK_KERNEL 1 -+ -+/* Define if your Linux kernel has Click transmit notification extensions. */ -+/* #undef HAVE_CLICK_KERNEL_TX_NOTIFY */ -+ -+/* Define if fast checksum functions available. */ -+#define HAVE_FAST_CHECKSUM 1 -+ -+/* Define if 'int64_t' is typedefed to 'long' in linuxmodule. */ -+#define HAVE_INT64_IS_LONG_LINUXMODULE 1 -+ -+/* Define if 'int64_t' is typedefed to 'long long' in linuxmodule. */ -+#define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1 -+ -+/* Define to enable assertion checking. Failed assertions will print a message -+ and optionally stop the router. */ -+/* #undef HAVE_KERNEL_ASSERT */ -+ -+/* Define if you have the header file. */ -+#define HAVE_LINUX_ASM_ALTERNATIVE_H 1 -+ -+/* Define if your Linux kernel architecture defines atomic_set_mask. */ -+/* #undef HAVE_LINUX_ATOMIC_SET_MASK */ -+ -+/* Define if your Linux kernel has polling extensions. */ -+#define HAVE_LINUX_POLLING 1 -+ -+/* Define if your Linux kernel has read_net_skbcount. */ -+/* #undef HAVE_LINUX_READ_NET_SKBCOUNT */ -+ -+/* Define if 'struct skb_shared_info' has a 'gso_size' member. */ -+/* #undef HAVE_LINUX_SKB_SHINFO_GSO_SIZE */ -+ -+/* Define if 'struct skb_shared_info' has an 'ip6_frag_id' member. */ -+/* #undef HAVE_LINUX_SKB_SHINFO_IP6_FRAG_ID */ -+ -+/* Define if 'struct skb_shared_info' has a 'tso_size' member. */ -+/* #undef HAVE_LINUX_SKB_SHINFO_TSO_SIZE */ -+ -+/* Define if 'struct skb_shared_info' has a 'ufo_size' member. */ -+/* #undef HAVE_LINUX_SKB_SHINFO_UFO_SIZE */ -+ -+/* Define if 'struct sk_buff' has an 'fclone' member. */ -+/* #undef HAVE_LINUX_SKBUFF_FCLONE */ -+ -+/* Define if 'struct sk_buff' has a 'security' member. */ -+/* #undef HAVE_LINUX_SKBUFF_SECURITY */ -+ -+/* Define if your Linux kernel exposes strlen. */ -+#define HAVE_LINUX_STRLEN_EXPOSED 1 -+ -+/* Define if your Linux kernel has tulip_interrupt_hook. */ -+/* #undef HAVE_LINUX_TULIP_INTERRUPT_HOOK */ -+ -+/* Define if the Click linuxmodule is compiled for a 2.6 kernel. */ -+#define HAVE_LINUXMODULE_2_6 1 -+ -+/* Define if you have the net_enable_timestamp function. */ -+/* #undef HAVE_NET_ENABLE_TIMESTAMP */ -+ -+/* Define if you have the netif_tx_lock function. */ -+/* #undef HAVE_NETIF_TX_LOCK */ -+ -+/* Define if fast checksum functions require correct alignment. */ -+#ifndef __i386__ -+# define FAST_CHECKSUM_ALIGNED 1 -+#endif -+ -+/* Include integer type definitions. */ -+#if !HAVE_LINUXMODULE_2_6 -+# include -+#endif -+#include -+typedef ptrdiff_t intptr_t; -+typedef unsigned long uintptr_t; /* XXX? */ -+ -+/* Define HAVE_INT64_IS_LONG based on HAVE_INT64_IS_LONG_LINUXMODULE. */ -+#ifdef HAVE_INT64_IS_LONG_LINUXMODULE -+# define HAVE_INT64_IS_LONG HAVE_INT64_IS_LONG_LINUXMODULE -+#endif -+ -+/* Define HAVE_INT64_IS_LONG_LONG based on HAVE_INT64_IS_LONG_LONG_LINUXMODULE. */ -+#if HAVE_LONG_LONG && defined(HAVE_INT64_IS_LONG_LONG_LINUXMODULE) -+# define HAVE_INT64_IS_LONG_LONG HAVE_INT64_IS_LONG_LONG_LINUXMODULE -+#endif -+ -+/* Define KBUILD symbols. */ -+#if !defined(KBUILD_STR) && HAVE_LINUXMODULE_2_6 -+# define KBUILD_STR(s) #s -+# define KBUILD_BASENAME KBUILD_STR(click) -+# define KBUILD_MODNAME KBUILD_STR(click) -+#endif -+ -+#ifdef __cplusplus -+ -+/* Declare operator new. */ -+void *operator new(size_t) throw (); -+void *operator new[](size_t) throw (); -+ -+/* Provide placement new. */ -+inline void *operator new(size_t, void *v) { return v; } -+#define HAVE_PLACEMENT_NEW 1 -+ -+/* Define macros that surround Click declarations. */ -+#define CLICK_DECLS /* */ -+#define CLICK_ENDDECLS /* */ -+#define CLICK_USING_DECLS /* */ -+#define CLICK_NAME(name) ::name -+ -+/* Fix incompatibilities between some Linux versions and Click/C++. */ -+#include -+ -+#endif /* __cplusplus */ -+ -+/* Define assert macro. */ -+# ifdef __cplusplus -+extern "C" { -+# endif -+void click_assert_failed(const char *file, int line, const char *problem_text); -+# ifdef __cplusplus -+} -+# endif -+ -+#ifdef HAVE_KERNEL_ASSERT -+# define assert(x) ((x) ? (void)0 : click_assert_failed(__FILE__, __LINE__, #x)) -+#else -+# define assert(x) /* nada */ -+#endif -+ -+/* Some architectures do not have builtin integer functions in kernel. */ -+#if defined(__MIPSEL__) || defined(__MIPSEB__) -+# define HAVE_NO_INTEGER_BUILTINS 1 -+#endif -+ -+#endif /* CLICK_CONFIG_LINUXMODULE_H */ -diff -Nurb click-1.6.0/include/click/config-ns.h click-1.6.0-27/include/click/config-ns.h ---- click-1.6.0/include/click/config-ns.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/include/click/config-ns.h 2009-01-19 15:07:24.000000000 -0500 -@@ -0,0 +1,20 @@ -+/* include/click/config-ns.h. Generated from config-ns.h.in by configure. */ -+/* Process this file with configure to produce config-ns.h. -*- mode: c -*- */ -+#ifndef CLICK_CONFIG_NS_H -+#define CLICK_CONFIG_NS_H -+ -+#ifdef __cplusplus -+ -+/* Define macros that surround Click declarations. */ -+#define CLICK_DECLS namespace Click { -+#define CLICK_ENDDECLS } -+#define CLICK_USING_DECLS using namespace Click; -+#define CLICK_NAME(name) ::Click::name -+ -+#endif /* __cplusplus */ -+ -+/* Include userlevel configuration. */ -+#define CLICK_USERLEVEL 1 -+#include -+ -+#endif /* CLICK_CONFIG_NS_H */ -diff -Nurb click-1.6.0/include/click/config-userlevel.h click-1.6.0-27/include/click/config-userlevel.h ---- click-1.6.0/include/click/config-userlevel.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/include/click/config-userlevel.h 2009-01-19 15:07:24.000000000 -0500 -@@ -0,0 +1,249 @@ -+/* include/click/config-userlevel.h. Generated from config-userlevel.h.in by configure. */ -+/* Process this file with configure to produce config-userlevel.h. -*- mode: c -*- */ -+#ifndef CLICK_CONFIG_USERLEVEL_H -+#define CLICK_CONFIG_USERLEVEL_H -+ -+/* Define if accept() uses socklen_t. */ -+#define HAVE_ACCEPT_SOCKLEN_T 1 -+ -+/* Define if uses bpf_timeval. */ -+/* #undef HAVE_BPF_TIMEVAL */ -+ -+/* Define if you have the header file. */ -+#define HAVE_BYTESWAP_H 1 -+ -+/* Define to 1 if you have the declaration -+ of 'madvise', and to 0 if you don't. */ -+#define HAVE_DECL_MADVISE 1 -+ -+/* Define to 1 if you have the declaration -+ of 'pcap_setnonblock', and to 0 if you don't. */ -+#define HAVE_DECL_PCAP_SETNONBLOCK 1 -+ -+/* Define if you have the header file. */ -+#define HAVE_DLFCN_H 1 -+ -+/* Define if dynamic linking is possible. */ -+#define HAVE_DYNAMIC_LINKING 1 -+ -+/* Define if you have the ffs function. */ -+#define HAVE_FFS 1 -+ -+/* Define if you have the ffsl function. */ -+#define HAVE_FFSL 1 -+ -+/* Define if you have the ffsll function. */ -+#define HAVE_FFSLL 1 -+ -+/* Floating point arithmetic is allowed. */ -+#define HAVE_FLOAT_TYPES 1 -+ -+/* Define if you have the header file. */ -+#define HAVE_GRP_H 1 -+ -+/* Define if the last argument to EV_SET has pointer type. */ -+/* #undef HAVE_EV_SET_UDATA_POINTER */ -+ -+/* Define if 'struct if_data' has an 'ifi_datalen' member. */ -+/* #undef HAVE_IF_DATA_IFI_DATALEN */ -+ -+/* Define if 'int64_t' is typedefed to 'long' at user level. */ -+/* #undef HAVE_INT64_IS_LONG_USERLEVEL */ -+ -+/* Define if 'int64_t' is typedefed to 'long long' at user level. */ -+#define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+ -+/* Define if you have the header file. */ -+#define HAVE_INTTYPES_H 1 -+ -+/* Define if you have the kqueue function. */ -+/* #undef HAVE_KQUEUE */ -+ -+/* Define if your C library contains large file support. */ -+#define HAVE_LARGE_FILE_SUPPORT 1 -+ -+/* Define if you have the header file. */ -+#define HAVE_LINUX_IF_TUN_H 1 -+ -+/* Define if you have the madvise function. */ -+#define HAVE_MADVISE 1 -+ -+/* Define if you have the mmap function. */ -+#define HAVE_MMAP 1 -+ -+/* Define if you have the header file. */ -+/* #undef HAVE_NET_BPF_H */ -+ -+/* Define if you have the header file. */ -+/* #undef HAVE_NET_IF_TAP_H */ -+ -+/* Define if you have the header file. */ -+/* #undef HAVE_NET_IF_TUN_H */ -+ -+/* Define if you have the header file. */ -+#define HAVE_NETDB_H 1 -+ -+/* Define if exists and works. */ -+/* #undef HAVE_NEW_H */ -+ -+/* Define if exists and works. */ -+#define HAVE_NEW_HDR 1 -+ -+/* Define if you have -lpcap and pcap.h. */ -+#define HAVE_PCAP 1 -+ -+/* Define if you have the pcap_setnonblock function. */ -+#define HAVE_PCAP_SETNONBLOCK 1 -+ -+/* Define if you have -lproper and prop.h, and proper operations should be -+ preferred to their non-proper counterparts. */ -+/* #undef HAVE_PROPER */ -+ -+/* Define if you have a non-emulated header file. */ -+#define HAVE_POLL_H 1 -+ -+/* Placement new is always provided below. */ -+#define HAVE_PLACEMENT_NEW 1 -+ -+/* Define if you have the header file. */ -+#define HAVE_PWD_H 1 -+ -+/* Define if you have the sigaction function. */ -+#define HAVE_SIGACTION 1 -+ -+/* Define if you have the snprintf function. */ -+#define HAVE_SNPRINTF 1 -+ -+/* Define if 'struct sockaddr_in' has a 'sin_len' member. */ -+/* #undef HAVE_SOCKADDR_IN_SIN_LEN */ -+ -+/* Define if you have the strerror function. */ -+#define HAVE_STRERROR 1 -+ -+/* Define if you have the header file. */ -+#define HAVE_STRINGS_H 1 -+ -+/* Define if you have the strtoul function. */ -+#define HAVE_STRTOUL 1 -+ -+/* Define if you have the header file. */ -+/* #undef HAVE_SYS_EVENT_H */ -+ -+/* Define if you have the header file. */ -+#define HAVE_SYS_MMAN_H 1 -+ -+/* Define if you have the tcgetpgrp function. */ -+#define HAVE_TCGETPGRP 1 -+ -+/* Define if you have the header file. */ -+#define HAVE_TERMIO_H 1 -+ -+/* Define if you have u_intXX_t types but not uintXX_t types. */ -+/* #undef HAVE_U_INT_TYPES */ -+ -+/* Define if you have the header file. */ -+#define HAVE_UNISTD_H 1 -+ -+/* Define if a Click user-level driver might run multiple threads. */ -+/* #undef HAVE_USER_MULTITHREAD */ -+ -+/* Define if you have the vsnprintf function. */ -+#define HAVE_VSNPRINTF 1 -+ -+/* The size of a `off_t', as computed by sizeof. */ -+#define SIZEOF_OFF_T 8 -+ -+ -+/* Set feature test macros before anything is included. */ -+#if HAVE_LARGE_FILE_SUPPORT && HAVE_INT64_TYPES -+# define _LARGEFILE_SOURCE 1 -+# define _FILE_OFFSET_BITS 64 -+#endif -+ -+/* Include integer type definitions. */ -+#ifdef HAVE_INTTYPES_H -+# include -+#endif -+#include -+ -+/* Define uint types in terms of u_int types, if necessary. */ -+#ifdef HAVE_U_INT_TYPES -+typedef u_int8_t uint8_t; -+typedef u_int16_t uint16_t; -+typedef u_int32_t uint32_t; -+# ifdef HAVE_INT64_TYPES -+typedef u_int64_t uint64_t; -+# endif -+typedef long intptr_t; /* XXX? */ -+typedef unsigned long uintptr_t; -+#endif -+ -+/* Define HAVE_INT64_IS_LONG based on HAVE_INT64_IS_LONG_USERLEVEL. */ -+#ifdef HAVE_INT64_IS_LONG_USERLEVEL -+# define HAVE_INT64_IS_LONG HAVE_INT64_IS_LONG_USERLEVEL -+#endif -+ -+/* Define HAVE_INT64_IS_LONG_LONG based on HAVE_INT64_IS_LONG_LONG_USERLEVEL. */ -+#ifdef HAVE_INT64_IS_LONG_LONG_USERLEVEL -+# define HAVE_INT64_IS_LONG_LONG HAVE_INT64_IS_LONG_LONG_USERLEVEL -+#endif -+ -+/* Define HAVE_MULTITHREAD based on HAVE_USER_MULTITHREAD. */ -+#ifdef HAVE_USER_MULTITHREAD -+# define HAVE_MULTITHREAD HAVE_USER_MULTITHREAD -+#endif -+ -+/* Include assert macro. */ -+#include -+ -+/* Define likely and unlikely macros. */ -+#if __GNUC__ >= 3 -+# define likely(x) __builtin_expect(!!(x), 1) -+# define unlikely(x) __builtin_expect(!!(x), 0) -+#else -+# define likely(x) (x) -+# define unlikely(x) (x) -+#endif -+ -+/* Define if mmap is allowed. */ -+#if defined(HAVE_SYS_MMAN_H) && defined(HAVE_MMAP) -+# define ALLOW_MMAP 1 -+#endif -+ -+/* Prototype strerror if we don't have it. */ -+#ifndef HAVE_STRERROR -+char *strerror(int errno); -+#endif -+ -+/* Use nanosecond-granularity timestamps if they are enabled. */ -+#ifdef HAVE_NANOTIMESTAMP_ENABLED -+#define HAVE_NANOTIMESTAMP 1 -+#endif -+ -+#ifdef __cplusplus -+ -+/* Provide placement new. */ -+#if HAVE_NEW_HDR -+# include -+#elif HAVE_NEW_H -+# include -+#else -+inline void *operator new(size_t, void *v) { return v; } -+#endif -+ -+/* Prototype madvise if we have it, but not the prototype. */ -+#if ALLOW_MMAP && HAVE_MADVISE && !HAVE_DECL_MADVISE -+extern "C" int madvise(void *addr, size_t len, int behav); -+#endif -+ -+/* Define macros that surround Click declarations. */ -+#ifndef CLICK_DECLS -+# define CLICK_DECLS /* */ -+# define CLICK_ENDDECLS /* */ -+# define CLICK_USING_DECLS /* */ -+# define CLICK_NAME(name) ::name -+#endif -+ -+#endif /* __cplusplus */ -+ -+#endif /* CLICK_CONFIG_USERLEVEL_H */ -diff -Nurb click-1.6.0/include/click/config.h click-1.6.0-27/include/click/config.h ---- click-1.6.0/include/click/config.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/include/click/config.h 2009-01-19 15:07:24.000000000 -0500 -@@ -0,0 +1,168 @@ -+/* include/click/config.h. Generated from config.h.in by configure. */ -+/* Process this file with configure to produce config.h. -*- mode: c -*- */ -+#ifndef CLICK_CONFIG_H -+#define CLICK_CONFIG_H -+ -+/* Define to byte order of target machine. */ -+#define CLICK_BYTE_ORDER 1234 -+#define CLICK_BIG_ENDIAN 4321 -+#define CLICK_LITTLE_ENDIAN 1234 -+#define CLICK_NO_ENDIAN 0 -+ -+/* Define for Click memory allocation debugging. */ -+/* #undef CLICK_DMALLOC */ -+ -+/* Version number of package */ -+#define CLICK_VERSION "1.6.0" -+ -+/* Define if PollDevice should run fast to get good benchmark numbers */ -+/* #undef CLICK_WARP9 */ -+ -+/* Define if you have the __builtin_clz function. */ -+#define HAVE___BUILTIN_CLZ 1 -+ -+/* Define if you have the __builtin_clzl function. */ -+#define HAVE___BUILTIN_CLZL 1 -+ -+/* Define if you have the __builtin_clzll function. */ -+#define HAVE___BUILTIN_CLZLL 1 -+ -+/* Define if you have the __builtin_ffs function. */ -+#define HAVE___BUILTIN_FFS 1 -+ -+/* Define if you have the __builtin_ffsl function. */ -+#define HAVE___BUILTIN_FFSL 1 -+ -+/* Define if you have the __builtin_ffsll function. */ -+#define HAVE___BUILTIN_FFSLL 1 -+ -+/* Define if the va_list type is addressable. */ -+#define HAVE_ADDRESSABLE_VA_LIST 1 -+ -+/* Define if right shift of signed integers acts by sign extension. */ -+#define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+ -+/* Define if the machine is indifferent to alignment. */ -+#define HAVE_INDIFFERENT_ALIGNMENT 1 -+ -+/* Define if you want to use Intel-specific instructions. */ -+/* #undef HAVE_INTEL_CPU */ -+ -+/* Define if 64-bit integer types are enabled. */ -+#define HAVE_INT64_TYPES 1 -+ -+/* Define if IPv6 support is enabled. */ -+/* #undef HAVE_IP6 */ -+ -+/* Define if IPsec support is enabled. */ -+/* #undef HAVE_IPSEC */ -+ -+/* Define to 1 if the system has the type `long long'. */ -+#define HAVE_LONG_LONG 1 -+ -+/* Define if nanosecond-granularity timestamps are enabled. */ -+/* #undef HAVE_NANOTIMESTAMP_ENABLED */ -+ -+/* Define if you want to use the stride scheduler. */ -+#define HAVE_STRIDE_SCHED 1 -+ -+/* Define to 1 since we have Strings. */ -+#define HAVE_STRING 1 -+ -+/* Define to 1 if the system has the type `struct timespec'. */ -+#define HAVE_STRUCT_TIMESPEC 1 -+ -+#ifdef HAVE_STRIDE_SCHED -+/* Define if you want task scheduling to use a heap, not a linked list. */ -+/* #undef HAVE_TASK_HEAP */ -+#endif -+ -+/* The size of a `int', as computed by sizeof. */ -+#define SIZEOF_INT 4 -+ -+/* The size of a `long', as computed by sizeof. */ -+#define SIZEOF_LONG 4 -+ -+/* The size of a `long long', as computed by sizeof. */ -+#define SIZEOF_LONG_LONG 8 -+ -+/* The size of a `struct timespec', as computed by sizeof. */ -+#define SIZEOF_STRUCT_TIMESPEC 8 -+ -+/* The size of a `struct timeval', as computed by sizeof. */ -+#define SIZEOF_STRUCT_TIMEVAL 8 -+ -+/* Define if you want to run multithreaded Click. */ -+/* #undef __MTCLICK__ */ -+#define NUM_CLICK_CPUS 1 -+ -+#ifndef __cplusplus -+/* Define inline, if necessary. C only. */ -+/* #undef inline */ -+#endif -+ -+#ifdef __cplusplus -+/* Explicit template instances? */ -+#if __GNUC__ == 2 && __GNUC_MINOR__ < 90 -+#define EXPLICIT_TEMPLATE_INSTANCES 1 -+#endif -+#endif /* __cplusplus */ -+ -+/* Define macros for declaring packed structures. */ -+#ifdef __GNUC__ -+#define CLICK_PACKED_STRUCTURE(open, close) open close __attribute__((packed)) -+#define CLICK_SIZE_PACKED_STRUCTURE(open, close) open close __attribute__((packed)) -+#else -+#define CLICK_PACKED_STRUCTURE(open, close) _Cannot_pack_structure__Use_GCC -+#define CLICK_SIZE_PACKED_STRUCTURE(open, close) open close -+#endif -+ -+/* Define macro for deprecated functions. */ -+#if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ == 0) -+#define CLICK_DEPRECATED -+#else -+#define CLICK_DEPRECATED __attribute__((deprecated)) -+#endif -+ -+/* Define ARCH_IS_BIG_ENDIAN based on CLICK_BYTE_ORDER. */ -+#if CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN -+#define ARCH_IS_BIG_ENDIAN 1 -+#elif CLICK_BYTE_ORDER == CLICK_LITTLE_ENDIAN -+#define ARCH_IS_BIG_ENDIAN 0 -+#endif -+ -+/* EXPORT_ELEMENT, ELEMENT_REQUIRES, ELEMENT_PROVIDES, ELEMENT_HEADER, -+ ELEMENT_LIBS, and ELEMENT_MT_SAFE are noops. */ -+#define EXPORT_ELEMENT(x) -+#define ELEMENT_REQUIRES(x) -+#define ELEMENT_PROVIDES(x) -+#define ELEMENT_HEADER(x) -+#define ELEMENT_LIBS(x) -+#define ELEMENT_MT_SAFE(x) -+ -+/* Assume CLICK_USERLEVEL unless otherwise defined. */ -+#if !defined(CLICK_USERLEVEL) && !defined(CLICK_TOOL) && !defined(CLICK_LINUXMODULE) && !defined(CLICK_BSDMODULE) -+# define CLICK_USERLEVEL 1 -+#endif -+ -+/* Define stuff under a Linux module. */ -+#ifdef CLICK_LINUXMODULE -+# include -+#endif -+ -+/* Define stuff under a FreeBSD module. */ -+#ifdef CLICK_BSDMODULE -+# include -+#endif -+ -+/* Define stuff under nsclick. */ -+#ifdef CLICK_NS -+# include -+#endif -+ -+/* Define stuff under tools or a user-level driver. */ -+#if defined(CLICK_USERLEVEL) || defined(CLICK_TOOL) -+# include -+#endif -+ -+#endif /* CLICK_CONFIG_H */ -diff -Nurb click-1.6.0/include/click/cxxprotect.h click-1.6.0-27/include/click/cxxprotect.h ---- click-1.6.0/include/click/cxxprotect.h 2007-07-16 19:47:50.000000000 -0400 -+++ click-1.6.0-27/include/click/cxxprotect.h 2009-02-11 15:24:13.000000000 -0500 -@@ -11,6 +11,8 @@ - #define namespace xxx_namespace - #endif - -+#define CXX_PROTECTED -+ - #ifndef CLICK_CXX_PROTECT - # ifdef __cplusplus - # define CLICK_CXX_PROTECT extern "C" { -diff -Nurb click-1.6.0/include/click/cxxprotect.h.orig click-1.6.0-27/include/click/cxxprotect.h.orig ---- click-1.6.0/include/click/cxxprotect.h.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/include/click/cxxprotect.h.orig 2007-07-16 19:47:50.000000000 -0400 -@@ -0,0 +1,22 @@ -+#ifdef __cplusplus -+#define new xxx_new -+#define this xxx_this -+#define delete xxx_delete -+#define class xxx_class -+#define virtual xxx_virtual -+#define typename xxx_typename -+#define private xxx_private -+#define protected xxx_protected -+#define public xxx_public -+#define namespace xxx_namespace -+#endif -+ -+#ifndef CLICK_CXX_PROTECT -+# ifdef __cplusplus -+# define CLICK_CXX_PROTECT extern "C" { -+# define CLICK_CXX_UNPROTECT } -+# else -+# define CLICK_CXX_PROTECT /* nothing */ -+# define CLICK_CXX_UNPROTECT /* nothing */ -+# endif -+#endif -diff -Nurb click-1.6.0/include/click/cxxunprotect.h click-1.6.0-27/include/click/cxxunprotect.h ---- click-1.6.0/include/click/cxxunprotect.h 2007-07-16 19:47:50.000000000 -0400 -+++ click-1.6.0-27/include/click/cxxunprotect.h 2009-02-11 15:24:33.000000000 -0500 -@@ -1,3 +1,4 @@ -+#undef CXX_PROTECTED - #ifdef __cplusplus - #undef new - #undef this -diff -Nurb click-1.6.0/include/click/cxxunprotect.h.orig click-1.6.0-27/include/click/cxxunprotect.h.orig ---- click-1.6.0/include/click/cxxunprotect.h.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/include/click/cxxunprotect.h.orig 2007-07-16 19:47:50.000000000 -0400 -@@ -0,0 +1,12 @@ -+#ifdef __cplusplus -+#undef new -+#undef this -+#undef delete -+#undef class -+#undef virtual -+#undef typename -+#undef private -+#undef protected -+#undef public -+#undef namespace -+#endif -diff -Nurb click-1.6.0/include/click/glue.hh.orig click-1.6.0-27/include/click/glue.hh.orig ---- click-1.6.0/include/click/glue.hh.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/include/click/glue.hh.orig 2007-09-12 18:24:50.000000000 -0400 -@@ -0,0 +1,420 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/glue.cc" -*- -+#ifndef CLICK_GLUE_HH -+#define CLICK_GLUE_HH -+// Removes many common #include
s and abstracts differences between -+// kernel and user space, and between operating systems. -+ -+// HEADERS -+ -+#if CLICK_LINUXMODULE -+ -+# define _LOOSE_KERNEL_NAMES 1 /* define ino_t, off_t, etc. */ -+# undef __KERNEL_STRICT_NAMES -+# ifndef __OPTIMIZE__ -+# define __OPTIMIZE__ 1 /* get ntohl() macros. otherwise undefined. */ -+# endif -+# include -+CLICK_CXX_PROTECT -+# ifdef WANT_MOD_USE_COUNT -+# define __NO_VERSION__ -+# include -+# define HAVE_MOD_USE_COUNT 1 -+# endif -+# include -+# include -+# include -+# include -+# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) -+# include -+# include -+# include -+# else -+# include -+# endif -+# include -+# include -+# include -+CLICK_CXX_UNPROTECT -+# include -+ -+#elif CLICK_BSDMODULE -+ -+# include -+CLICK_CXX_PROTECT -+# include -+# include -+# include -+# include -+# include -+# include -+# include -+# include -+# include -+# include -+CLICK_CXX_UNPROTECT -+# include -+ -+#else /* CLICK_USERLEVEL */ -+ -+# include -+# include -+# include -+# include -+# include -+# include -+# include -+# include -+# include -+# ifdef CLICK_NS -+extern "C" int simclick_gettimeofday(struct timeval *); -+# endif -+ -+#endif -+ -+ -+// DEBUGGING OUTPUT -+extern "C" { -+void click_chatter(const char *fmt, ...); -+} -+ -+ -+// DEBUG MALLOC -+ -+#if CLICK_DMALLOC && (CLICK_LINUXMODULE || CLICK_BSDMODULE) -+extern uint32_t click_dmalloc_where; -+# define CLICK_DMALLOC_REG(s) do { const unsigned char *__str = reinterpret_cast(s); click_dmalloc_where = (__str[0]<<24) | (__str[1]<<16) | (__str[2]<<8) | __str[3]; } while (0) -+#else -+# define CLICK_DMALLOC_REG(s) -+#endif -+ -+ -+// LALLOC -+ -+#if CLICK_LINUXMODULE -+# define CLICK_LALLOC(size) (click_lalloc((size))) -+# define CLICK_LFREE(p, size) (click_lfree((p), (size))) -+extern "C" { -+void *click_lalloc(size_t size); -+void click_lfree(volatile void *p, size_t size); -+} -+#else -+# define CLICK_LALLOC(size) ((void *)(new uint8_t[(size)])) -+# define CLICK_LFREE(p, size) delete[] ((uint8_t *)(p)) -+#endif -+ -+ -+// RANDOMNESS -+ -+CLICK_DECLS -+extern void click_random_srandom(); // srand(), but use true randomness -+CLICK_ENDDECLS -+ -+#if CLICK_LINUXMODULE -+extern "C" { -+extern uint32_t click_random_seed; -+extern void srandom(uint32_t); -+#define RAND_MAX 2147483647 -+inline uint32_t -+random() -+{ -+ click_random_seed = click_random_seed*69069L + 1; -+ return (click_random_seed ^ jiffies) & RAND_MAX; -+} -+} -+#endif -+ -+ -+// SORTING -+ -+int click_qsort(void *base, size_t n, size_t size, int (*compar)(const void *, const void *, void *), void *thunk); -+int click_qsort(void *base, size_t n, size_t size, int (*compar)(const void *, const void *)); -+ -+ -+// OTHER -+ -+#if CLICK_LINUXMODULE -+ -+// current processor -+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) -+# define click_current_processor() (current_thread_info()->cpu) -+# else -+# define click_current_processor() (current->processor) -+# endif -+ -+// provide a definition for net_device for kernel compatibility -+# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0) -+typedef struct device net_device; -+# define dev_get_by_name dev_get -+# endif -+ -+extern "C" { -+ -+long strtol(const char *, char **, int); -+ -+inline unsigned long -+strtoul(const char *nptr, char **endptr, int base) -+{ -+ return simple_strtoul(nptr, endptr, base); -+} -+ -+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) && __GNUC__ == 2 && __GNUC_MINOR__ == 96 -+int click_strcmp(const char *, const char *); -+ -+inline int -+strcmp(const char *a, const char *b) -+{ -+ return click_strcmp(a, b); -+} -+# endif -+ -+} -+ -+#elif CLICK_BSDMODULE -+ -+/* Char-type glue */ -+ -+# define _U 0x01 /* upper */ -+# define _L 0x02 /* lower */ -+# define _D 0x04 /* digit */ -+# define _C 0x08 /* cntrl */ -+# define _P 0x10 /* punct */ -+# define _S 0x20 /* white space (space/lf/tab) */ -+# define _X 0x40 /* hex digit */ -+# define _SP 0x80 /* hard space (0x20) */ -+ -+extern unsigned char _ctype[]; -+ -+# define __ismask(x) (_ctype[(int)(unsigned char)(x)]) -+# define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0) -+ -+# define strchr(s, c) index(s, c) -+ -+# define memmove(dst, src, len) bcopy((src), (dst), (len)) -+ -+typedef struct ifnet net_device; -+ -+#else /* not CLICK_LINUXMODULE || CLICK_BSDMODULE */ -+ -+// provide a definition for net_device -+typedef struct device net_device; -+ -+#endif /* CLICK_LINUXMODULE */ -+ -+ -+// COMPILE-TIME ASSERTION CHECKING -+ -+#define static_assert(c) switch (c) case 0: case (c): -+ -+ -+// TIMEVALS AND JIFFIES -+ -+#if CLICK_LINUXMODULE -+# define click_gettimeofday(tvp) (do_gettimeofday(tvp)) -+# define click_jiffies() ((unsigned)jiffies) -+# define CLICK_HZ HZ -+#elif CLICK_BSDMODULE -+# define click_gettimeofday(tvp) (getmicrotime(tvp)) -+# define click_jiffies() ((unsigned)ticks) -+# define CLICK_HZ hz -+#else -+#ifndef CLICK_NS -+# define click_gettimeofday(tvp) (gettimeofday(tvp, (struct timezone *)0)) -+#else -+# define click_gettimeofday(tvp) (simclick_gettimeofday(tvp)) -+#endif -+CLICK_DECLS -+unsigned click_jiffies(); -+CLICK_ENDDECLS -+# define CLICK_HZ 100 -+#endif -+ -+ -+// TIMEVAL OPERATIONS -+ -+#ifndef timercmp -+// Convenience macros for operations on timevals. -+// NOTE: 'timercmp' does not work for >= or <=. -+# define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) -+# define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0) -+# define timercmp(a, b, CMP) \ -+ (((a)->tv_sec == (b)->tv_sec) ? \ -+ ((a)->tv_usec CMP (b)->tv_usec) : \ -+ ((a)->tv_sec CMP (b)->tv_sec)) -+#endif -+#ifndef timeradd -+# define timeradd(a, b, result) \ -+ do { \ -+ (result)->tv_sec = (a)->tv_sec + (b)->tv_sec; \ -+ (result)->tv_usec = (a)->tv_usec + (b)->tv_usec; \ -+ if ((result)->tv_usec >= 1000000) \ -+ { \ -+ ++(result)->tv_sec; \ -+ (result)->tv_usec -= 1000000; \ -+ } \ -+ } while (0) -+#endif -+#ifndef timersub -+# define timersub(a, b, result) \ -+ do { \ -+ (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \ -+ (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \ -+ if ((result)->tv_usec < 0) { \ -+ --(result)->tv_sec; \ -+ (result)->tv_usec += 1000000; \ -+ } \ -+ } while (0) -+#endif -+ -+#ifndef CLICK_TIMEVAL_OPERATORS -+ -+inline struct timeval -+make_timeval(int sec, int usec) -+{ -+ struct timeval tv; -+ tv.tv_sec = sec; -+ tv.tv_usec = usec; -+ return tv; -+} -+ -+inline bool -+operator==(const struct timeval &a, const struct timeval &b) -+{ -+ return a.tv_sec == b.tv_sec && a.tv_usec == b.tv_usec; -+} -+ -+inline bool -+operator!=(const struct timeval &a, const struct timeval &b) -+{ -+ return a.tv_sec != b.tv_sec || a.tv_usec != b.tv_usec; -+} -+ -+inline bool -+operator<(const struct timeval &a, const struct timeval &b) -+{ -+ return a.tv_sec < b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec < b.tv_usec); -+} -+ -+inline bool -+operator<=(const struct timeval &a, const struct timeval &b) -+{ -+ return a.tv_sec < b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec <= b.tv_usec); -+} -+ -+inline bool -+operator>=(const struct timeval &a, const struct timeval &b) -+{ -+ return a.tv_sec > b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec >= b.tv_usec); -+} -+ -+inline bool -+operator>(const struct timeval &a, const struct timeval &b) -+{ -+ return a.tv_sec > b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec > b.tv_usec); -+} -+ -+inline struct timeval & -+operator+=(struct timeval &a, const struct timeval &b) -+{ -+ a.tv_sec += b.tv_sec; -+ a.tv_usec += b.tv_usec; -+ if (a.tv_usec >= 1000000) { -+ a.tv_sec++; -+ a.tv_usec -= 1000000; -+ } -+ return a; -+} -+ -+inline struct timeval & -+operator-=(struct timeval &a, const struct timeval &b) -+{ -+ a.tv_sec -= b.tv_sec; -+ a.tv_usec -= b.tv_usec; -+ if (a.tv_usec < 0) { -+ a.tv_sec--; -+ a.tv_usec += 1000000; -+ } -+ return a; -+} -+ -+inline struct timeval -+operator+(struct timeval a, const struct timeval &b) -+{ -+ a += b; -+ return a; -+} -+ -+inline struct timeval -+operator-(struct timeval a, const struct timeval &b) -+{ -+ a -= b; -+ return a; -+} -+ -+#endif -+ -+CLICK_DECLS -+class StringAccum; -+StringAccum &operator<<(StringAccum &, const struct timeval &); -+CLICK_ENDDECLS -+ -+ -+// BYTE ORDER -+ -+#if CLICK_BYTE_ORDER == CLICK_LITTLE_ENDIAN -+# define le16_to_cpu(x) (x) -+# define cpu_to_le16(x) (x) -+# define le32_to_cpu(x) (x) -+# define cpu_to_le32(x) (x) -+#elif CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN && defined(__APPLE__) -+# include -+# define le16_to_cpu(x) NXSwapShort((x)) -+# define cpu_to_le16(x) NXSwapShort((x)) -+# define le32_to_cpu(x) NXSwapInt((x)) -+# define cpu_to_le32(x) NXSwapInt((x)) -+#elif CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN && HAVE_BYTESWAP_H -+# include -+# define le16_to_cpu(x) bswap_16((x)) -+# define cpu_to_le16(x) bswap_16((x)) -+# define le32_to_cpu(x) bswap_32((x)) -+# define cpu_to_le32(x) bswap_32((x)) -+#else -+/* leave them undefined */ -+#endif -+ -+ -+// CYCLE COUNTS -+ -+CLICK_DECLS -+ -+#if HAVE_INT64_TYPES -+typedef uint64_t click_cycles_t; -+#else -+typedef uint32_t click_cycles_t; -+#endif -+ -+inline click_cycles_t -+click_get_cycles() -+{ -+#if CLICK_LINUXMODULE && HAVE_INT64_TYPES && __i386__ -+ uint64_t x; -+ __asm__ __volatile__ ("rdtsc" : "=A" (x)); -+ return x; -+#elif CLICK_LINUXMODULE && HAVE_INT64_TYPES && __x86_64__ -+ uint32_t xlo, xhi; -+ __asm__ __volatile__ ("rdtsc" : "=a" (xlo), "=d" (xhi)); -+ return xlo | (((uint64_t) xhi) << 32); -+#elif CLICK_LINUXMODULE && __i386__ -+ uint32_t xlo, xhi; -+ __asm__ __volatile__ ("rdtsc" : "=a" (xlo), "=d" (xhi)); -+ return xhi ? 0xFFFFFFFF : xlo; -+#elif CLICK_BSDMODULE -+ return rdtsc(); -+#else -+ // add other architectures here -+ return 0; -+#endif -+} -+ -+CLICK_ENDDECLS -+ -+#endif -diff -Nurb click-1.6.0/include/click/packet.hh click-1.6.0-27/include/click/packet.hh ---- click-1.6.0/include/click/packet.hh 2007-09-07 16:11:26.000000000 -0400 -+++ click-1.6.0-27/include/click/packet.hh 2009-01-27 10:13:43.000000000 -0500 -@@ -452,7 +452,7 @@ - Packet::mac_header() const - { - #if CLICK_LINUXMODULE -- return skb()->mac.raw; -+ return skb_mac_header(skb()); - #else - return _mac; - #endif -@@ -462,7 +462,7 @@ - Packet::network_header() const - { - #if CLICK_LINUXMODULE -- return skb()->nh.raw; -+ return skb_network_header(skb()); - #else - return _nh; - #endif -@@ -472,7 +472,7 @@ - Packet::transport_header() const - { - #if CLICK_LINUXMODULE -- return skb()->h.raw; -+ return skb_transport_header(skb()); - #else - return _h; - #endif -@@ -567,7 +567,7 @@ - # if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 13) - memcpy(&skb()->stamp, ×tamp, 8); - # else -- skb_set_timestamp(skb(), ×tamp.timeval()); -+ memcpy(&skb()->tstamp, ×tamp, 8); - # endif - #else - _timestamp = timestamp; -@@ -904,7 +904,7 @@ - Packet::set_mac_header(const unsigned char *h) - { - #if CLICK_LINUXMODULE /* Linux kernel module */ -- skb()->mac.raw = const_cast(h); -+ skb()->mac_header = const_cast(h); - #else /* User-space and BSD kernel module */ - _mac = const_cast(h); - #endif -@@ -914,8 +914,8 @@ - Packet::set_mac_header(const unsigned char *h, uint32_t len) - { - #if CLICK_LINUXMODULE /* Linux kernel module */ -- skb()->mac.raw = const_cast(h); -- skb()->nh.raw = const_cast(h) + len; -+ skb()->mac_header = const_cast(h); -+ skb()->network_header = const_cast(h) + len; - #else /* User-space and BSD kernel module */ - _mac = const_cast(h); - _nh = const_cast(h) + len; -@@ -956,8 +956,8 @@ - Packet::set_network_header(const unsigned char *h, uint32_t len) - { - #if CLICK_LINUXMODULE /* Linux kernel module */ -- skb()->nh.raw = const_cast(h); -- skb()->h.raw = const_cast(h) + len; -+ skb()->network_header = const_cast(h); -+ skb()->transport_header = const_cast(h) + len; - #else /* User-space and BSD kernel module */ - _nh = const_cast(h); - _h = const_cast(h) + len; -@@ -968,7 +968,7 @@ - Packet::set_network_header_length(uint32_t len) - { - #if CLICK_LINUXMODULE /* Linux kernel module */ -- skb()->h.raw = skb()->nh.raw + len; -+ skb()->transport_header = skb()->network_header + len; - #else /* User-space and BSD kernel module */ - _h = _nh + len; - #endif -@@ -1076,9 +1076,9 @@ - _h += (_h ? shift : 0); - #else - struct sk_buff *mskb = skb(); -- mskb->mac.raw += (mskb->mac.raw ? shift : 0); -- mskb->nh.raw += (mskb->nh.raw ? shift : 0); -- mskb->h.raw += (mskb->h.raw ? shift : 0); -+ mskb->mac_header += (mskb->mac_header ? shift : 0); -+ mskb->network_header += (mskb->network_header ? shift : 0); -+ mskb->transport_header += (mskb->transport_header ? shift : 0); - #endif - } - -diff -Nurb click-1.6.0/include/click/packet.hh.orig click-1.6.0-27/include/click/packet.hh.orig ---- click-1.6.0/include/click/packet.hh.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/include/click/packet.hh.orig 2007-09-07 16:11:26.000000000 -0400 -@@ -0,0 +1,1171 @@ -+// -*- related-file-name: "../../lib/packet.cc" -*- -+#ifndef CLICK_PACKET_HH -+#define CLICK_PACKET_HH -+#include -+#include -+#include -+#include -+#if CLICK_LINUXMODULE -+# include -+#else -+# include -+#endif -+struct click_ether; -+struct click_ip; -+struct click_icmp; -+struct click_ip6; -+struct click_tcp; -+struct click_udp; -+ -+#if CLICK_NS -+# include -+#endif -+ -+ -+CLICK_DECLS -+ -+class IP6Address; -+class WritablePacket; -+ -+class Packet { public: -+ -+ // PACKET CREATION -+ enum { DEFAULT_HEADROOM = 28, MIN_BUFFER_LENGTH = 64 }; -+ -+ static WritablePacket *make(uint32_t); -+ static WritablePacket *make(const char *, uint32_t); -+ static WritablePacket *make(const unsigned char *, uint32_t); -+ static WritablePacket *make(uint32_t, const unsigned char *, uint32_t, uint32_t); -+ -+#if CLICK_LINUXMODULE -+ // Packet::make(sk_buff *) wraps a Packet around an existing sk_buff. -+ // Packet now owns the sk_buff (ie we don't increment skb->users). -+ static Packet *make(struct sk_buff *); -+ struct sk_buff *skb() { return (struct sk_buff *)this; } -+ const struct sk_buff *skb() const { return (const struct sk_buff*)this; } -+#elif CLICK_BSDMODULE -+ // Packet::make(mbuf *) wraps a Packet around an existing mbuf. -+ // Packet now owns the mbuf. -+ static Packet *make(struct mbuf *); -+ struct mbuf *m() { return _m; } -+ const struct mbuf *m() const { return (const struct mbuf *)_m; } -+ struct mbuf *steal_m(); -+#else /* User-space */ -+ static WritablePacket *make(unsigned char *, uint32_t, void (*destructor)(unsigned char *, size_t)); -+#endif -+ -+ inline void kill(); -+ -+ inline bool shared() const; -+ Packet *clone(); -+ WritablePacket *uniqueify(); -+ -+ inline const unsigned char *data() const; -+ inline const unsigned char *end_data() const; -+ inline uint32_t length() const; -+ inline uint32_t headroom() const; -+ inline uint32_t tailroom() const; -+ inline const unsigned char *buffer() const; -+ inline const unsigned char *end_buffer() const; -+ inline uint32_t buffer_length() const; -+ -+ WritablePacket *push(uint32_t nb); // Add more space before packet. -+ WritablePacket *push_mac_header(uint32_t nb); -+ Packet *nonunique_push(uint32_t nb); -+ void pull(uint32_t nb); // Get rid of initial bytes. -+ WritablePacket *put(uint32_t nb); // Add bytes to end of pkt. -+ Packet *nonunique_put(uint32_t nb); -+ void take(uint32_t nb); // Delete bytes from end of pkt. -+ -+ Packet *shift_data(int offset, bool free_on_failure = true); -+#if CLICK_USERLEVEL -+ inline void shrink_data(const unsigned char *, uint32_t length); -+ inline void change_headroom_and_length(uint32_t headroom, uint32_t length); -+#endif -+ -+ // HEADER ANNOTATIONS -+ inline const unsigned char *mac_header() const; -+ inline void set_mac_header(const unsigned char *); -+ inline void set_mac_header(const unsigned char *, uint32_t); -+ inline int mac_header_offset() const; -+ inline uint32_t mac_header_length() const; -+ inline int mac_length() const; -+ -+ inline const unsigned char *network_header() const; -+ inline void set_network_header(const unsigned char *, uint32_t); -+ inline void set_network_header_length(uint32_t); -+ inline int network_header_offset() const; -+ inline uint32_t network_header_length() const; -+ inline int network_length() const; -+ -+ inline const unsigned char *transport_header() const; -+ inline int transport_header_offset() const; -+ inline int transport_length() const; -+ -+ // CONVENIENCE HEADER ANNOTATIONS -+ inline const click_ether *ether_header() const; -+ inline void set_ether_header(const click_ether *); -+ -+ inline const click_ip *ip_header() const; -+ inline void set_ip_header(const click_ip *, uint32_t); -+ inline int ip_header_offset() const; -+ inline uint32_t ip_header_length() const; -+ -+ inline const click_ip6 *ip6_header() const; -+ inline void set_ip6_header(const click_ip6 *); -+ inline void set_ip6_header(const click_ip6 *, uint32_t); -+ inline int ip6_header_offset() const; -+ inline uint32_t ip6_header_length() const; -+ -+ inline const click_icmp *icmp_header() const; -+ inline const click_tcp *tcp_header() const; -+ inline const click_udp *udp_header() const; -+ -+ // LINKS -+ inline Packet *next() const; -+ inline Packet *&next(); -+ inline void set_next(Packet *p); -+ -+ // ANNOTATIONS -+ -+ private: -+ struct Anno; -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ const Anno *anno() const { return (const Anno *)skb()->cb; } -+ Anno *anno() { return (Anno *)skb()->cb; } -+#else /* User-space and BSD kernel module */ -+ const Anno *anno() const { return (const Anno *)_cb; } -+ Anno *anno() { return (Anno *)_cb; } -+#endif -+ public: -+ -+ enum PacketType { // must agree with if_packet.h -+ HOST = 0, BROADCAST = 1, MULTICAST = 2, OTHERHOST = 3, OUTGOING = 4, -+ LOOPBACK = 5, FASTROUTE = 6 -+ }; -+ -+ enum { ADDR_ANNO_SIZE = 16 }; -+ -+ uint8_t *addr_anno() { return anno()->addr.c; } -+ const uint8_t *addr_anno() const { return anno()->addr.c; } -+ IPAddress dst_ip_anno() const; -+ void set_dst_ip_anno(IPAddress); -+ const IP6Address &dst_ip6_anno() const; -+ void set_dst_ip6_anno(const IP6Address &); -+ -+ inline const Timestamp ×tamp_anno() const; -+ inline Timestamp ×tamp_anno(); -+ inline void set_timestamp_anno(const Timestamp &); -+ -+ inline net_device *device_anno() const; -+ inline void set_device_anno(net_device *); -+ -+ inline PacketType packet_type_anno() const; -+ inline void set_packet_type_anno(PacketType); -+ -+#if CLICK_LINUXMODULE -+# ifdef HAVE_INT64_TYPES -+ uint64_t perfctr_anno() const { return anno()->perfctr; } -+ void set_perfctr_anno(uint64_t pc) { anno()->perfctr = pc; } -+# endif -+ -+#else /* User-space and BSD kernel module */ -+ -+#if CLICK_NS -+ class SimPacketinfoWrapper { -+ public: -+ simclick_simpacketinfo _pinfo; -+ SimPacketinfoWrapper() { -+ // The uninitialized value for the simulator packet data can't be -+ // all zeros (0 is a valid packet id) or random junk out of memory -+ // since the simulator will look at this info to see if the packet -+ // was originally generated by it. Accidental collisions with other -+ // packet IDs or bogus packet IDs can cause weird things to happen. So we -+ // set it to all -1 here to keep the simulator from getting confused. -+ memset(&_pinfo,-1,sizeof(_pinfo)); -+ } -+ }; -+ simclick_simpacketinfo* get_sim_packetinfo() { -+ return &(_sim_packetinfo._pinfo); -+ } -+ void set_sim_packetinfo(simclick_simpacketinfo* pinfo) { -+ _sim_packetinfo._pinfo = *pinfo; -+ } -+#endif -+#endif -+ -+ enum { USER_ANNO_SIZE = 24, -+ USER_ANNO_US_SIZE = 12, -+ USER_ANNO_S_SIZE = 12, -+ USER_ANNO_U_SIZE = 6, -+ USER_ANNO_I_SIZE = 6 }; -+ -+ uint8_t user_anno_c(int i) const { return anno()->user.c[i]; } -+ void set_user_anno_c(int i, uint8_t v) { anno()->user.c[i] = v; } -+ uint16_t user_anno_us(int i) const { return anno()->user.us[i]; } -+ void set_user_anno_us(int i, uint16_t v) { anno()->user.us[i] = v; } -+ int16_t user_anno_s(int i) const { return anno()->user.us[i]; } -+ void set_user_anno_s(int i, int16_t v) { anno()->user.s[i] = v; } -+ uint32_t user_anno_u(int i) const { return anno()->user.u[i]; } -+ void set_user_anno_u(int i, uint32_t v) { anno()->user.u[i] = v; } -+ int32_t user_anno_i(int i) const { return anno()->user.i[i]; } -+ void set_user_anno_i(int i, int32_t v) { anno()->user.i[i] = v; } -+ -+ const uint8_t *all_user_anno() const { return &anno()->user.c[0]; } -+ uint8_t *all_user_anno() { return &anno()->user.c[0]; } -+ const uint32_t *all_user_anno_u() const { return &anno()->user.u[0]; } -+ uint32_t *all_user_anno_u() { return &anno()->user.u[0]; } -+ -+ void clear_annotations(); -+ void copy_annotations(const Packet *); -+ -+ inline const unsigned char *buffer_data() const CLICK_DEPRECATED; -+ -+ private: -+ -+ // Anno must fit in sk_buff's char cb[48]. -+ struct Anno { -+ union { -+ char ch[ADDR_ANNO_SIZE]; -+ uint8_t c[ADDR_ANNO_SIZE]; -+ uint32_t ip4; -+ } addr; -+ -+ union { -+ uint8_t c[USER_ANNO_SIZE]; -+ uint16_t us[USER_ANNO_US_SIZE]; -+ int16_t s[USER_ANNO_S_SIZE]; -+ uint32_t u[USER_ANNO_U_SIZE]; -+ int32_t i[USER_ANNO_I_SIZE]; -+ } user; -+ // flag allocations: see packet_anno.hh -+ -+#if (CLICK_LINUXMODULE || CLICK_BSDMODULE) && defined(HAVE_INT64_TYPES) -+ uint64_t perfctr; -+#endif -+ }; -+ -+#if !CLICK_LINUXMODULE -+ // User-space and BSD kernel module implementations. -+ atomic_uint32_t _use_count; -+ Packet *_data_packet; -+ /* mimic Linux sk_buff */ -+ unsigned char *_head; /* start of allocated buffer */ -+ unsigned char *_data; /* where the packet starts */ -+ unsigned char *_tail; /* one beyond end of packet */ -+ unsigned char *_end; /* one beyond end of allocated buffer */ -+# if CLICK_USERLEVEL -+ void (*_destructor)(unsigned char *, size_t); -+# endif -+ unsigned char _cb[48]; -+ unsigned char *_mac; -+ unsigned char *_nh; -+ unsigned char *_h; -+ PacketType _pkt_type; -+ Timestamp _timestamp; -+# if CLICK_BSDMODULE -+ struct mbuf *_m; -+# endif -+ Packet *_next; -+# if CLICK_NS -+ SimPacketinfoWrapper _sim_packetinfo; -+# endif -+#endif -+ -+ Packet(); -+ Packet(const Packet &); -+ ~Packet(); -+ Packet &operator=(const Packet &); -+ -+#if !CLICK_LINUXMODULE -+ Packet(int, int, int) { } -+ static WritablePacket *make(int, int, int); -+ bool alloc_data(uint32_t, uint32_t, uint32_t); -+#endif -+#if CLICK_BSDMODULE -+ static void assimilate_mbuf(Packet *p); -+ void assimilate_mbuf(); -+#endif -+ -+ inline void shift_header_annotations(int32_t shift); -+ WritablePacket *expensive_uniqueify(int32_t extra_headroom, int32_t extra_tailroom, bool free_on_failure); -+ WritablePacket *expensive_push(uint32_t nbytes); -+ WritablePacket *expensive_put(uint32_t nbytes); -+ -+ friend class WritablePacket; -+ -+}; -+ -+ -+class WritablePacket : public Packet { public: -+ -+ inline unsigned char *data() const; -+ inline unsigned char *end_data() const; -+ inline unsigned char *buffer() const; -+ inline unsigned char *end_buffer() const; -+ inline unsigned char *mac_header() const; -+ inline click_ether *ether_header() const; -+ inline unsigned char *network_header() const; -+ inline click_ip *ip_header() const; -+ inline click_ip6 *ip6_header() const; -+ inline unsigned char *transport_header() const; -+ inline click_icmp *icmp_header() const; -+ inline click_tcp *tcp_header() const; -+ inline click_udp *udp_header() const; -+ -+ inline unsigned char *buffer_data() const CLICK_DEPRECATED; -+ -+ private: -+ -+ WritablePacket() { } -+ WritablePacket(const Packet &) { } -+ ~WritablePacket() { } -+ -+ friend class Packet; -+ -+}; -+ -+ -+ -+inline const unsigned char * -+Packet::data() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->data; -+#else -+ return _data; -+#endif -+} -+ -+inline const unsigned char * -+Packet::end_data() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->tail; -+#else -+ return _tail; -+#endif -+} -+ -+inline uint32_t -+Packet::length() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->len; -+#else -+ return _tail - _data; -+#endif -+} -+ -+inline uint32_t -+Packet::headroom() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->data - skb()->head; -+#else -+ return _data - _head; -+#endif -+} -+ -+inline uint32_t -+Packet::tailroom() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->end - skb()->tail; -+#else -+ return _end - _tail; -+#endif -+} -+ -+inline const unsigned char * -+Packet::buffer() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->head; -+#else -+ return _head; -+#endif -+} -+ -+inline const unsigned char * -+Packet::end_buffer() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->end; -+#else -+ return _end; -+#endif -+} -+ -+inline uint32_t -+Packet::buffer_length() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->end - skb()->head; -+#else -+ return _end - _head; -+#endif -+} -+ -+inline const unsigned char * -+Packet::buffer_data() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->head; -+#else -+ return _head; -+#endif -+} -+ -+ -+inline Packet * -+Packet::next() const -+{ -+#if CLICK_LINUXMODULE -+ return (Packet *)(skb()->next); -+#else -+ return _next; -+#endif -+} -+ -+inline Packet *& -+Packet::next() -+{ -+#if CLICK_LINUXMODULE -+ return (Packet *&)(skb()->next); -+#else -+ return _next; -+#endif -+} -+ -+inline void -+Packet::set_next(Packet *p) -+{ -+#if CLICK_LINUXMODULE -+ skb()->next = p->skb(); -+#else -+ _next = p; -+#endif -+} -+ -+inline const unsigned char * -+Packet::mac_header() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->mac.raw; -+#else -+ return _mac; -+#endif -+} -+ -+inline const unsigned char * -+Packet::network_header() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->nh.raw; -+#else -+ return _nh; -+#endif -+} -+ -+inline const unsigned char * -+Packet::transport_header() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->h.raw; -+#else -+ return _h; -+#endif -+} -+ -+inline const click_ether * -+Packet::ether_header() const -+{ -+ return reinterpret_cast(mac_header()); -+} -+ -+inline const click_ip * -+Packet::ip_header() const -+{ -+ return reinterpret_cast(network_header()); -+} -+ -+inline const click_ip6 * -+Packet::ip6_header() const -+{ -+ return reinterpret_cast(network_header()); -+} -+ -+inline const click_icmp * -+Packet::icmp_header() const -+{ -+ return reinterpret_cast(transport_header()); -+} -+ -+inline const click_tcp * -+Packet::tcp_header() const -+{ -+ return reinterpret_cast(transport_header()); -+} -+ -+inline const click_udp * -+Packet::udp_header() const -+{ -+ return reinterpret_cast(transport_header()); -+} -+ -+inline int -+Packet::mac_length() const -+{ -+ return end_data() - mac_header(); -+} -+ -+inline int -+Packet::network_length() const -+{ -+ return end_data() - network_header(); -+} -+ -+inline int -+Packet::transport_length() const -+{ -+ return end_data() - transport_header(); -+} -+ -+inline const Timestamp & -+Packet::timestamp_anno() const -+{ -+#if CLICK_LINUXMODULE -+# if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 13) -+ return *(const Timestamp *) &skb()->stamp; -+# else -+ return *(const Timestamp *) &skb()->tstamp; -+# endif -+#else -+ return _timestamp; -+#endif -+} -+ -+inline Timestamp & -+Packet::timestamp_anno() -+{ -+#if CLICK_LINUXMODULE -+# if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 13) -+ return *(Timestamp *) &skb()->stamp; -+# else -+ return *(Timestamp *) &skb()->tstamp; -+# endif -+#else -+ return _timestamp; -+#endif -+} -+ -+inline void -+Packet::set_timestamp_anno(const Timestamp ×tamp) -+{ -+#if CLICK_LINUXMODULE -+# if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 13) -+ memcpy(&skb()->stamp, ×tamp, 8); -+# else -+ skb_set_timestamp(skb(), ×tamp.timeval()); -+# endif -+#else -+ _timestamp = timestamp; -+#endif -+} -+ -+inline net_device * -+Packet::device_anno() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->dev; -+#elif CLICK_BSDMODULE -+ if (m()) -+ return m()->m_pkthdr.rcvif; -+ else -+ return 0; -+#else -+ return 0; -+#endif -+} -+ -+inline void -+Packet::set_device_anno(net_device *dev) -+{ -+#if CLICK_LINUXMODULE -+ skb()->dev = dev; -+#elif CLICK_BSDMODULE -+ if (m()) -+ m()->m_pkthdr.rcvif = dev; -+#else -+ (void) dev; -+#endif -+} -+ -+inline Packet::PacketType -+Packet::packet_type_anno() const -+{ -+#if CLICK_LINUXMODULE -+ return (PacketType)(skb()->pkt_type & PACKET_TYPE_MASK); -+#else -+ return _pkt_type; -+#endif -+} -+ -+inline void -+Packet::set_packet_type_anno(PacketType p) -+{ -+#if CLICK_LINUXMODULE -+ skb()->pkt_type = (skb()->pkt_type & PACKET_CLEAN) | p; -+#else -+ _pkt_type = p; -+#endif -+} -+ -+inline WritablePacket * -+Packet::make(uint32_t len) -+{ -+ return make(DEFAULT_HEADROOM, (const unsigned char *)0, len, 0); -+} -+ -+inline WritablePacket * -+Packet::make(const char *s, uint32_t len) -+{ -+ return make(DEFAULT_HEADROOM, (const unsigned char *)s, len, 0); -+} -+ -+inline WritablePacket * -+Packet::make(const unsigned char *s, uint32_t len) -+{ -+ return make(DEFAULT_HEADROOM, (const unsigned char *)s, len, 0); -+} -+ -+#if CLICK_LINUXMODULE -+inline Packet * -+Packet::make(struct sk_buff *skb) -+{ -+ if (atomic_read(&skb->users) == 1) { -+ skb_orphan(skb); -+ return reinterpret_cast(skb); -+ } else { -+ Packet *p = reinterpret_cast(skb_clone(skb, GFP_ATOMIC)); -+ atomic_dec(&skb->users); -+ return p; -+ } -+} -+#endif -+ -+ -+inline void -+Packet::kill() -+{ -+#if CLICK_LINUXMODULE -+ struct sk_buff *b = skb(); -+ b->next = b->prev = 0; -+# if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 15) -+ b->list = 0; -+# endif -+ skbmgr_recycle_skbs(b); -+#else -+ if (_use_count.dec_and_test()) -+ delete this; -+#endif -+} -+ -+ -+#if CLICK_BSDMODULE /* BSD kernel module */ -+inline void -+Packet::assimilate_mbuf(Packet *p) -+{ -+ struct mbuf *m = p->m(); -+ -+ if (!m) return; -+ -+ p->_head = (unsigned char *) -+ (m->m_flags & M_EXT ? m->m_ext.ext_buf : -+ m->m_flags & M_PKTHDR ? m->m_pktdat : -+ m->m_dat); -+ p->_data = (unsigned char *)m->m_data; -+ p->_tail = (unsigned char *)(m->m_data + m->m_len); -+ p->_end = p->_head + ( -+ m->m_flags & M_EXT ? MCLBYTES : -+ m->m_flags & M_PKTHDR ? MHLEN : -+ MLEN); -+} -+ -+inline void -+Packet::assimilate_mbuf() -+{ -+ assimilate_mbuf(this); -+} -+ -+inline Packet * -+Packet::make(struct mbuf *m) -+{ -+ if (!(m->m_flags & M_PKTHDR)) -+ panic("trying to construct Packet from a non-packet mbuf"); -+ -+ Packet *p = new Packet; -+ if (m->m_pkthdr.len != m->m_len) { -+ /* click needs contiguous data */ -+ // click_chatter("m_pulldown, Click needs contiguous data"); -+ -+ if (m_pulldown(m, 0, m->m_pkthdr.len, NULL) == NULL) -+ panic("m_pulldown failed"); -+ } -+ p->_m = m; -+ assimilate_mbuf(p); -+ -+ return p; -+} -+#endif -+ -+inline bool -+Packet::shared() const -+{ -+#if CLICK_LINUXMODULE -+ return skb_cloned(const_cast(skb())); -+#else -+ return (_data_packet || _use_count > 1); -+#endif -+} -+ -+inline WritablePacket * -+Packet::uniqueify() -+{ -+ if (!shared()) -+ return static_cast(this); -+ else -+ return expensive_uniqueify(0, 0, true); -+} -+ -+inline WritablePacket * -+Packet::push(uint32_t nbytes) -+{ -+ if (headroom() >= nbytes && !shared()) { -+ WritablePacket *q = (WritablePacket *)this; -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ __skb_push(q->skb(), nbytes); -+#else /* User-space and BSD kernel module */ -+ q->_data -= nbytes; -+# if CLICK_BSDMODULE -+ q->m()->m_data -= nbytes; -+ q->m()->m_len += nbytes; -+ q->m()->m_pkthdr.len += nbytes; -+# endif -+#endif -+ return q; -+ } else -+ return expensive_push(nbytes); -+} -+ -+inline Packet * -+Packet::nonunique_push(uint32_t nbytes) -+{ -+ if (headroom() >= nbytes) { -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ __skb_push(skb(), nbytes); -+#else /* User-space and BSD kernel module */ -+ _data -= nbytes; -+# if CLICK_BSDMODULE -+ m()->m_data -= nbytes; -+ m()->m_len += nbytes; -+ m()->m_pkthdr.len += nbytes; -+# endif -+#endif -+ return this; -+ } else -+ return expensive_push(nbytes); -+} -+ -+/* Get rid of some bytes at the start of a packet */ -+inline void -+Packet::pull(uint32_t nbytes) -+{ -+ if (nbytes > length()) { -+ click_chatter("Packet::pull %d > length %d\n", nbytes, length()); -+ nbytes = length(); -+ } -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ __skb_pull(skb(), nbytes); -+#else /* User-space and BSD kernel module */ -+ _data += nbytes; -+# if CLICK_BSDMODULE -+ m()->m_data += nbytes; -+ m()->m_len -= nbytes; -+ m()->m_pkthdr.len -= nbytes; -+# endif -+#endif -+} -+ -+inline WritablePacket * -+Packet::put(uint32_t nbytes) -+{ -+ if (tailroom() >= nbytes && !shared()) { -+ WritablePacket *q = (WritablePacket *)this; -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ __skb_put(q->skb(), nbytes); -+#else /* User-space and BSD kernel module */ -+ q->_tail += nbytes; -+# if CLICK_BSDMODULE -+ q->m()->m_len += nbytes; -+ q->m()->m_pkthdr.len += nbytes; -+# endif -+#endif -+ return q; -+ } else -+ return expensive_put(nbytes); -+} -+ -+inline Packet * -+Packet::nonunique_put(uint32_t nbytes) -+{ -+ if (tailroom() >= nbytes) { -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ __skb_put(skb(), nbytes); -+#else /* User-space and BSD kernel module */ -+ _tail += nbytes; -+# if CLICK_BSDMODULE -+ m()->m_len += nbytes; -+ m()->m_pkthdr.len += nbytes; -+# endif -+#endif -+ return this; -+ } else -+ return expensive_put(nbytes); -+} -+ -+/* Get rid of some bytes at the end of a packet */ -+inline void -+Packet::take(uint32_t nbytes) -+{ -+ if (nbytes > length()) { -+ click_chatter("Packet::take %d > length %d\n", nbytes, length()); -+ nbytes = length(); -+ } -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ skb()->tail -= nbytes; -+ skb()->len -= nbytes; -+#else /* User-space and BSD kernel module */ -+ _tail -= nbytes; -+# if CLICK_BSDMODULE -+ m()->m_len -= nbytes; -+ m()->m_pkthdr.len -= nbytes; -+# endif -+#endif -+} -+ -+#if CLICK_USERLEVEL -+inline void -+Packet::shrink_data(const unsigned char *d, uint32_t length) -+{ -+ assert(_data_packet); -+ if (d >= _head && d + length >= d && d + length <= _end) { -+ _head = _data = const_cast(d); -+ _tail = _end = const_cast(d + length); -+ } -+} -+ -+inline void -+Packet::change_headroom_and_length(uint32_t headroom, uint32_t length) -+{ -+ if (headroom + length <= buffer_length()) { -+ _data = _head + headroom; -+ _tail = _data + length; -+ } -+} -+#endif -+ -+inline const IP6Address & -+Packet::dst_ip6_anno() const -+{ -+ return *reinterpret_cast(anno()->addr.ch); -+} -+ -+inline void -+Packet::set_dst_ip6_anno(const IP6Address &a) -+{ -+ memcpy(anno()->addr.ch, &a, 16); -+} -+ -+inline IPAddress -+Packet::dst_ip_anno() const -+{ -+ return IPAddress(anno()->addr.ip4); -+} -+ -+inline void -+Packet::set_dst_ip_anno(IPAddress a) -+{ -+ anno()->addr.ip4 = a.addr(); -+} -+ -+inline void -+Packet::set_mac_header(const unsigned char *h) -+{ -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ skb()->mac.raw = const_cast(h); -+#else /* User-space and BSD kernel module */ -+ _mac = const_cast(h); -+#endif -+} -+ -+inline void -+Packet::set_mac_header(const unsigned char *h, uint32_t len) -+{ -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ skb()->mac.raw = const_cast(h); -+ skb()->nh.raw = const_cast(h) + len; -+#else /* User-space and BSD kernel module */ -+ _mac = const_cast(h); -+ _nh = const_cast(h) + len; -+#endif -+} -+ -+inline void -+Packet::set_ether_header(const click_ether *h) -+{ -+ set_mac_header(reinterpret_cast(h), 14); -+} -+ -+inline WritablePacket * -+Packet::push_mac_header(uint32_t nbytes) -+{ -+ WritablePacket *q; -+ if (headroom() >= nbytes && !shared()) { -+ q = (WritablePacket *)this; -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ __skb_push(q->skb(), nbytes); -+#else /* User-space and BSD kernel module */ -+ q->_data -= nbytes; -+# if CLICK_BSDMODULE -+ q->m()->m_data -= nbytes; -+ q->m()->m_len += nbytes; -+ q->m()->m_pkthdr.len += nbytes; -+# endif -+#endif -+ } else if ((q = expensive_push(nbytes))) -+ /* nada */; -+ else -+ return 0; -+ q->set_mac_header(q->data(), nbytes); -+ return q; -+} -+ -+inline void -+Packet::set_network_header(const unsigned char *h, uint32_t len) -+{ -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ skb()->nh.raw = const_cast(h); -+ skb()->h.raw = const_cast(h) + len; -+#else /* User-space and BSD kernel module */ -+ _nh = const_cast(h); -+ _h = const_cast(h) + len; -+#endif -+} -+ -+inline void -+Packet::set_network_header_length(uint32_t len) -+{ -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ skb()->h.raw = skb()->nh.raw + len; -+#else /* User-space and BSD kernel module */ -+ _h = _nh + len; -+#endif -+} -+ -+inline void -+Packet::set_ip_header(const click_ip *iph, uint32_t len) -+{ -+ set_network_header(reinterpret_cast(iph), len); -+} -+ -+inline void -+Packet::set_ip6_header(const click_ip6 *ip6h, uint32_t len) -+{ -+ set_network_header(reinterpret_cast(ip6h), len); -+} -+ -+inline void -+Packet::set_ip6_header(const click_ip6 *ip6h) -+{ -+ set_ip6_header(ip6h, 40); -+} -+ -+inline int -+Packet::mac_header_offset() const -+{ -+ return mac_header() - data(); -+} -+ -+inline uint32_t -+Packet::mac_header_length() const -+{ -+ return network_header() - mac_header(); -+} -+ -+inline int -+Packet::network_header_offset() const -+{ -+ return network_header() - data(); -+} -+ -+inline uint32_t -+Packet::network_header_length() const -+{ -+ return transport_header() - network_header(); -+} -+ -+inline int -+Packet::ip_header_offset() const -+{ -+ return network_header_offset(); -+} -+ -+inline uint32_t -+Packet::ip_header_length() const -+{ -+ return network_header_length(); -+} -+ -+inline int -+Packet::ip6_header_offset() const -+{ -+ return network_header_offset(); -+} -+ -+inline uint32_t -+Packet::ip6_header_length() const -+{ -+ return network_header_length(); -+} -+ -+inline int -+Packet::transport_header_offset() const -+{ -+ return transport_header() - data(); -+} -+ -+inline void -+Packet::clear_annotations() -+{ -+ memset(anno(), '\0', sizeof(Anno)); -+ set_packet_type_anno(HOST); -+ set_device_anno(0); -+ set_timestamp_anno(Timestamp()); -+ set_mac_header(0); -+ set_network_header(0, 0); -+ set_next(0); -+} -+ -+inline void -+Packet::copy_annotations(const Packet *p) -+{ -+ *anno() = *p->anno(); -+ set_packet_type_anno(p->packet_type_anno()); -+ set_device_anno(p->device_anno()); -+ set_timestamp_anno(p->timestamp_anno()); -+} -+ -+inline void -+Packet::shift_header_annotations(int32_t shift) -+{ -+#if CLICK_USERLEVEL || CLICK_BSDMODULE -+ _mac += (_mac ? shift : 0); -+ _nh += (_nh ? shift : 0); -+ _h += (_h ? shift : 0); -+#else -+ struct sk_buff *mskb = skb(); -+ mskb->mac.raw += (mskb->mac.raw ? shift : 0); -+ mskb->nh.raw += (mskb->nh.raw ? shift : 0); -+ mskb->h.raw += (mskb->h.raw ? shift : 0); -+#endif -+} -+ -+ -+inline unsigned char * -+WritablePacket::data() const -+{ -+ return const_cast(Packet::data()); -+} -+ -+inline unsigned char * -+WritablePacket::end_data() const -+{ -+ return const_cast(Packet::end_data()); -+} -+ -+inline unsigned char * -+WritablePacket::buffer() const -+{ -+ return const_cast(Packet::buffer()); -+} -+ -+inline unsigned char * -+WritablePacket::end_buffer() const -+{ -+ return const_cast(Packet::end_buffer()); -+} -+ -+inline unsigned char * -+WritablePacket::buffer_data() const -+{ -+ return const_cast(Packet::buffer()); -+} -+ -+inline unsigned char * -+WritablePacket::mac_header() const -+{ -+ return const_cast(Packet::mac_header()); -+} -+ -+inline unsigned char * -+WritablePacket::network_header() const -+{ -+ return const_cast(Packet::network_header()); -+} -+ -+inline unsigned char * -+WritablePacket::transport_header() const -+{ -+ return const_cast(Packet::transport_header()); -+} -+ -+inline click_ether * -+WritablePacket::ether_header() const -+{ -+ return const_cast(Packet::ether_header()); -+} -+ -+inline click_ip * -+WritablePacket::ip_header() const -+{ -+ return const_cast(Packet::ip_header()); -+} -+ -+inline click_ip6 * -+WritablePacket::ip6_header() const -+{ -+ return const_cast(Packet::ip6_header()); -+} -+ -+inline click_icmp * -+WritablePacket::icmp_header() const -+{ -+ return const_cast(Packet::icmp_header()); -+} -+ -+inline click_tcp * -+WritablePacket::tcp_header() const -+{ -+ return const_cast(Packet::tcp_header()); -+} -+ -+inline click_udp * -+WritablePacket::udp_header() const -+{ -+ return const_cast(Packet::udp_header()); -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/include/click/pathvars.h click-1.6.0-27/include/click/pathvars.h ---- click-1.6.0/include/click/pathvars.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/include/click/pathvars.h 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,39 @@ -+/* include/click/pathvars.h. Generated from pathvars.h.in by configure. */ -+/* Process this file with configure to produce pathvars.h. -*- mode: c -*- */ -+#ifndef CLICK_PATHVARS_H -+#define CLICK_PATHVARS_H -+ -+/* Directory for binaries. */ -+#define CLICK_BINDIR "/d/click/click-1.6.0-27/inst/bin" -+ -+/* Directory for packages and kernel module. */ -+#define CLICK_LIBDIR "/d/click/click-1.6.0-27/inst/lib" -+ -+/* Directory for shared files. */ -+#define CLICK_DATADIR "/d/click/click-1.6.0-27/inst/share/click" -+ -+/* FreeBSD kernel include directory. */ -+#define FREEBSD_INCLUDEDIR "/usr/include" -+ -+/* Define if the BSD kernel module driver was compiled. */ -+/* #undef HAVE_BSDMODULE_DRIVER */ -+ -+/* Define if the Click kernel module should provide clickfs. */ -+#define HAVE_CLICKFS 1 -+ -+/* Define if the expat library is available. */ -+#define HAVE_EXPAT 1 -+ -+/* Define if the Click linuxmodule is compiled for a 2.6 kernel. */ -+#define HAVE_LINUXMODULE_2_6 1 -+ -+/* Define if the Linux kernel module driver was compiled. */ -+#define HAVE_LINUXMODULE_DRIVER 1 -+ -+/* Define if the user-level driver was compiled. */ -+#define HAVE_USERLEVEL_DRIVER 1 -+ -+/* Directory containing Linux sources. */ -+#define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+ -+#endif -diff -Nurb click-1.6.0/include/clicknet/ip.h click-1.6.0-27/include/clicknet/ip.h ---- click-1.6.0/include/clicknet/ip.h 2007-07-16 19:47:50.000000000 -0400 -+++ click-1.6.0-27/include/clicknet/ip.h 2009-01-19 16:01:43.000000000 -0500 -@@ -5,6 +5,7 @@ - #include - CLICK_CXX_PROTECT - #if CLICK_LINUXMODULE -+#include - # include - # include - #else -diff -Nurb click-1.6.0/include/clicknet/ip.h.orig click-1.6.0-27/include/clicknet/ip.h.orig ---- click-1.6.0/include/clicknet/ip.h.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/include/clicknet/ip.h.orig 2007-07-16 19:47:50.000000000 -0400 -@@ -0,0 +1,156 @@ -+/* -*- mode: c; c-basic-offset: 4 -*- */ -+#ifndef CLICKNET_IP_H -+#define CLICKNET_IP_H -+/* get struct in_addr */ -+#include -+CLICK_CXX_PROTECT -+#if CLICK_LINUXMODULE -+# include -+# include -+#else -+# include -+# include -+#endif -+ -+/* -+ * -- IP header definitions, based on one of the BSDs. -+ * -+ * Relevant RFCs include: -+ * RFC791 Internet Protocol -+ * RFC3168 The Addition of Explicit Congestion Notification (ECN) to IP -+ */ -+ -+struct click_ip { -+#if CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN -+ unsigned ip_v : 4; /* 0 version == 4 */ -+ unsigned ip_hl : 4; /* header length */ -+#elif CLICK_BYTE_ORDER == CLICK_LITTLE_ENDIAN -+ unsigned ip_hl : 4; /* 0 header length */ -+ unsigned ip_v : 4; /* version == 4 */ -+#else -+# error "unknown byte order" -+#endif -+ uint8_t ip_tos; /* 1 type of service */ -+#define IP_DSCPMASK 0xFC /* diffserv code point */ -+#define IP_ECNMASK 0x03 /* ECN code point */ -+#define IP_ECN_NOT_ECT 0x00 /* not ECN capable transport */ -+#define IP_ECN_ECT1 0x01 /* ECN capable transport */ -+#define IP_ECN_ECT2 0x02 /* ECN capable transport */ -+#define IP_ECN_CE 0x03 /* ECN congestion exp'd */ -+ uint16_t ip_len; /* 2-3 total length */ -+ uint16_t ip_id; /* 4-5 identification */ -+ uint16_t ip_off; /* 6-7 fragment offset field */ -+#define IP_RF 0x8000 /* reserved fragment flag */ -+#define IP_DF 0x4000 /* don't fragment flag */ -+#define IP_MF 0x2000 /* more fragments flag */ -+#define IP_OFFMASK 0X1FFF /* mask for fragmenting bits */ -+ uint8_t ip_ttl; /* 8 time to live */ -+ uint8_t ip_p; /* 9 protocol */ -+ uint16_t ip_sum; /* 10-11 checksum */ -+ struct in_addr ip_src; /* 12-15 source address */ -+ struct in_addr ip_dst; /* 16-19 destination address */ -+}; -+ -+/* ip_protocol */ -+#define IP_PROTO_ICMP 1 -+#define IP_PROTO_IGMP 2 -+#define IP_PROTO_GGP 3 -+#define IP_PROTO_IPIP 4 -+#define IP_PROTO_ST 5 -+#define IP_PROTO_TCP 6 -+#define IP_PROTO_UCL 7 -+#define IP_PROTO_EGP 8 -+#define IP_PROTO_IGP 9 -+#define IP_PROTO_BBN 10 -+#define IP_PROTO_NVPII 11 -+#define IP_PROTO_PUP 12 -+#define IP_PROTO_ARGUS 13 -+#define IP_PROTO_EMCON 14 -+#define IP_PROTO_XNET 15 -+#define IP_PROTO_CHAOS 16 -+#define IP_PROTO_UDP 17 -+#define IP_PROTO_MUX 18 -+#define IP_PROTO_DCN 19 -+#define IP_PROTO_HMP 20 -+#define IP_PROTO_PRM 21 -+#define IP_PROTO_XNS 22 -+#define IP_PROTO_TRUNK1 23 -+#define IP_PROTO_TRUNK2 24 -+#define IP_PROTO_LEAF1 25 -+#define IP_PROTO_LEAF2 26 -+#define IP_PROTO_RDP 27 -+#define IP_PROTO_IRTP 28 -+#define IP_PROTO_ISOTP4 29 -+#define IP_PROTO_NETBLT 30 -+#define IP_PROTO_MFENSP 31 -+#define IP_PROTO_MERIT 32 -+#define IP_PROTO_DCCP 33 -+#define IP_PROTO_ICMP6 58 -+#define IP_PROTO_CFTP 62 -+#define IP_PROTO_SATNET 64 -+#define IP_PROTO_MITSUBNET 65 -+#define IP_PROTO_RVD 66 -+#define IP_PROTO_IPPC 67 -+#define IP_PROTO_SATMON 69 -+#define IP_PROTO_IPCV 71 -+#define IP_PROTO_BRSATMON 76 -+#define IP_PROTO_WBMON 78 -+#define IP_PROTO_WBEXPAK 79 -+#define IP_PROTO_SCTP 132 -+ -+#define IP_PROTO_NONE 257 -+#define IP_PROTO_TRANSP 258 -+#define IP_PROTO_TCP_OR_UDP 256 -+#define IP_PROTO_PAYLOAD 259 -+ -+#define IPOPT_EOL 0 /* end of option list */ -+#define IPOPT_NOP 1 /* no operation */ -+#define IPOPT_RR 7 /* record packet route */ -+#define IPOPT_TS 68 /* timestamp */ -+#define IPOPT_SECURITY 130 /* provide s,c,h,tcc */ -+#define IPOPT_LSRR 131 /* loose source route */ -+#define IPOPT_SATID 136 /* satnet id */ -+#define IPOPT_SSRR 137 /* strict source route */ -+#define IPOPT_RA 148 /* router alert */ -+ -+#define IP_ISFRAG(iph) (((iph)->ip_off & htons(IP_MF | IP_OFFMASK)) != 0) -+#define IP_FIRSTFRAG(iph) (((iph)->ip_off & htons(IP_OFFMASK)) == 0) -+ -+ -+/* checksum functions */ -+ -+#if !CLICK_LINUXMODULE -+uint16_t click_in_cksum(const unsigned char *addr, int len); -+uint16_t click_in_cksum_pseudohdr_raw(uint32_t csum, uint32_t src, uint32_t dst, int proto, int packet_len); -+#else -+# define click_in_cksum(addr, len) \ -+ ip_compute_csum((unsigned char *)(addr), (len)) -+# define click_in_cksum_pseudohdr_raw(csum, src, dst, proto, transport_len) \ -+ csum_tcpudp_magic((src), (dst), (transport_len), (proto), ~(csum) & 0xFFFF) -+#endif -+uint16_t click_in_cksum_pseudohdr_hard(uint32_t csum, const struct click_ip *iph, int packet_len); -+ -+/* use if you're not sure whether there are source routing options */ -+static inline uint16_t -+click_in_cksum_pseudohdr(uint32_t csum, const struct click_ip *iph, -+ int transport_len) -+{ -+ if (iph->ip_hl == 5) -+ return click_in_cksum_pseudohdr_raw(csum, iph->ip_src.s_addr, iph->ip_dst.s_addr, iph->ip_p, transport_len); -+ else -+ return click_in_cksum_pseudohdr_hard(csum, iph, transport_len); -+} -+ -+static inline void -+click_update_in_cksum(uint16_t *csum, uint16_t old_hw, uint16_t new_hw) -+{ -+ /* incrementally update IP checksum according to RFC1624: -+ new_sum = ~(~old_sum + ~old_halfword + new_halfword) */ -+ uint32_t sum = (~*csum & 0xFFFF) + (~old_hw & 0xFFFF) + new_hw; -+ sum = (sum & 0xFFFF) + (sum >> 16); -+ *csum = ~(sum + (sum >> 16)); -+} -+ -+CLICK_CXX_UNPROTECT -+#include -+#endif -Files click-1.6.0/inst/bin/click and click-1.6.0-27/inst/bin/click differ -Files click-1.6.0/inst/bin/click-align and click-1.6.0-27/inst/bin/click-align differ -diff -Nurb click-1.6.0/inst/bin/click-buildtool click-1.6.0-27/inst/bin/click-buildtool ---- click-1.6.0/inst/bin/click-buildtool 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/bin/click-buildtool 2009-02-05 10:20:40.000000000 -0500 -@@ -0,0 +1,1326 @@ -+#! /bin/sh -+ -+# click-buildtool -- build tools for Click -+# Eddie Kohler -+# -+# Copyright (c) 2000-2001 Massachusetts Institute of Technology -+# Copyright (c) 2000-2006 Mazu Networks, Inc. -+# Copyright (c) 2001-2003 International Computer Science Institute -+# Copyright (c) 2004-2007 Regents of the University of California -+# -+# Permission is hereby granted, free of charge, to any person obtaining a -+# copy of this software and associated documentation files (the "Software"), -+# to deal in the Software without restriction, subject to the conditions -+# listed in the Click LICENSE file. These conditions include: you must -+# preserve this copyright notice, and you cannot mention the copyright -+# holders in advertising related to the Software without their permission. -+# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+# notice is a summary of the Click LICENSE file; the license in that file is -+# legally binding. -+ -+prefix=/d/click/click-1.6.0-27/inst -+exec_prefix=/d/click/click-1.6.0-27/inst -+bindir=/d/click/click-1.6.0-27/inst/bin -+datarootdir=/d/click/click-1.6.0-27/inst/share -+datadir=/d/click/click-1.6.0-27/inst/share -+clickdatadir=/d/click/click-1.6.0-27/inst/share/click -+LINUXMODULE_2_6=1 -+gmake=make -+ -+verbose="" -+elem2="" -+default_provisions="i686 i386 i586 int64 linux linux_2_6 pcap" -+driver_provisions=" userlevel linuxmodule" -+ -+trap "exit 1" HUP -+ -+# find a good version of awk -+if test -x /usr/bin/gawk; then -+ awk=gawk -+elif test -x /usr/bin/nawk; then -+ awk=nawk -+else -+ awk=awk -+fi -+ -+echo_n () { -+ # suns can't echo -n, and Mac OS X can't echo "x\c" -+ echo "$@" | tr -d ' -+' -+} -+ -+ -+############ -+# FINDELEM # -+############ -+ -+findelem_usage () { -+ echo "Usage: click-buildtool findelem [-a] [-V] [-p PREFIX] < [FILES AND DIRECTORIES] -+Try 'click-buildtool findelem --help' for more information." 1>&2 -+ exit 1 -+} -+ -+elementmap_provisions () { -+ elementmap="$1" -+ grep "^&2 -+'Click-buildtool findelem' locates valid Click element source code. It starts -+with a collection of source code, then eliminates files whose requirements -+are not available until reaching a stable set of sources. It expects a list of -+files and directories on standard input. Directories are searched for .cc/.c -+source files. Only files containing EXPORT_ELEMENT() or ELEMENT_PROVIDES() are -+considered. The initial list of available requirements is the list of -+requirements specified with '-r', plus the list of EXPORT_ELEMENT() and -+ELEMENT_PROVIDES() keywords. -+ -+Usage: click-buildtool findelem [OPTIONS] < [FILES AND DIRECTORIES] -+ -+Options: -+ -a, --all Include all subdirectories of 'elements' rather -+ than reading standard input, and pretend all -+ requirements are available (except for '-x'). -+ -V, --verbose Print more information about dependency checking. -+ -p, --prefix PREFIX Prepend PREFIX to every file and/or directory. -+ -r, --provide REQ Provide requirement(s) in REQ. -+ -e, --elementmap EMAP Provide requirement(s) from EMAP. -+ -P, --package Provide requirement(s) from default elementmap. -+ -S, --standards Mark standard elements as available. -+ -x, --unprovide REQ Mark requirement(s) REQ as unavailable. -+ -f, --filenames Output filenames only. -+ -F, --filename-pairs Output "sourcefile:headerfile" pairs for elements. -+ -h, --help Print this message and exit. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ *) -+ findelem_usage;; -+ esac -+ done -+ -+ if test -n "$verbose" -a -n "$pfx"; then -+ echo "Prefix: $pfx" 1>&2 -+ fi -+ -+ # add defaults to provisions -+ provisions="$provisions $default_provisions" -+ -+ # add standards to provisions if necessary -+ if test "x$standards" != x; then -+ provisions="$provisions AddressInfo AlignmentInfo ErrorElement PortInfo ScheduleInfo Storage" -+ fi -+ -+ # expand provisions and unprovisions: require one per line -+ provisions=`echo "$provisions" | tr -s ' \011\015\014\013' '\012'` -+ unprovisions=`echo "$unprovisions" | tr -s ' \011\015\014\013' '\012'` -+ if test -n "$verbose" -a -n "$provisions"; then -+ echo 1>&2 -+ echo "Provisions: $provisions" 1>&2 -+ fi -+ if test -n "$verbose" -a -n "$unprovisions"; then -+ echo 1>&2 -+ echo "Unprovisions: $unprovisions" 1>&2 -+ fi -+ -+ # expand list of files -+ if test -n "$all"; then -+ fdir=${pfx} -+ test -d ${pfx}elements && fdir=${pfx}elements -+ first_files=`cd $fdir >/dev/null && ls` -+ bad_first_files=`echo "$first_files -+$unprovisions" | sort | uniq -d` -+ first_files=`echo "$first_files -+$bad_first_files" | sort | uniq -u` -+ else -+ first_files=`cat` -+ fi -+ -+ files="" -+ for i in $first_files; do -+ ppfx="$pfx" -+ if test -d "${pfx}elements/$i" && echo "$i" | grep -v '^\.' >/dev/null; then -+ ppfx="${pfx}elements/" -+ fi -+ if test -d "${ppfx}$i"; then -+ files="$files -+"`find ${ppfx}$i -follow \( -name \*.cc -o -name \*.c \) -print | grep -v '/[.,][^/]*$'` -+ elif test -r "${ppfx}$i"; then -+ files="$files -+${ppfx}$i" -+ fi -+ done -+ files=`echo "$files" | sort | uniq | grep .` -+ -+ # die if no files -+ if test -z "$files"; then -+ echo "no files found" 1>&2 -+ exit 1 -+ fi -+ -+ # if '$all', then accept all dependencies except the unprovisions -+ dep_test='<=' -+ if test -n "$all"; then -+ dep_test='<' -+ fi -+ -+ # check dependencies: generate a list of bad files, then remove those files -+ # from the list of good files -+ -+ # first remove files that provide an unprovision -+ awk_exports=`echo "$unprovisions" | sed 's/\(..*\)/dep["\1"]=-1;/'` -+ bad_files=`egrep '^EXPORT_ELEMENT|^ELEMENT_PROVIDES' $files | sed 's/EXPORT_ELEMENT[ ]*(\(.*\)).*/\1/ -+s/ELEMENT_PROVIDES[ ]*(\(.*\)).*/\1/' | $awk -F: 'BEGIN {OFS="";'"$awk_exports"'} -+{ -+ split($2, deps, / +/); -+ for (j in deps) { -+ if (dep[deps[j]] < 0) { -+ print $1; -+ break; -+ } -+ } -+}' | sort | uniq` -+ if test -n "$verbose" -a -n "$bad_files"; then -+ echo 1>&2 -+ echo "Files: $files" 1>&2 -+ echo 1>&2 -+ echo "Bad files: $bad_files" 1>&2 -+ fi -+ if test -n "$bad_files"; then -+ files=`echo "$files -+$bad_files" | sort | uniq -u` -+ fi -+ -+ # then cycle, removing files that require something not provided -+ while true; do -+ provides=`egrep '^EXPORT_ELEMENT|^ELEMENT_PROVIDES' $files | sed 's/.*(\(.*\)).*/\1/' | tr ' \011' '\012'` -+ awk_exports=`echo "$provides"' -+'"$provisions" | sed 's/\(..*\)/dep["\1"]=1;/'`" -+"`echo "$unprovisions" | sed 's/\(..*\)/dep["\1"]=-1;/'` -+ new_bad_files=`grep '^ELEMENT_REQUIRES' $files | sed 's/ELEMENT_REQUIRES[ ]*(\(.*\)).*/\1/' | $awk -F: 'BEGIN {OFS="";'"$awk_exports"'dep["true"]=1; dep["1"]=1;} -+{ -+ split($2, deps, / +/); -+ for (j in deps) { -+ i = deps[j] -+ if (dep[i] <= 0) { -+ bad = 1; -+ split(i, or_deps, /\|+/); -+ for (k in or_deps) { -+ if (!(dep[or_deps[k]] '"$dep_test"' 0)) -+ bad = 0; -+ } -+ if (bad) { -+ print $1; -+ break; -+ } -+ } -+ } -+}' | sort | uniq` -+ if test -n "$verbose"; then -+ echo 1>&2 -+ echo "Files: $files" 1>&2 -+ echo 1>&2 -+ echo "Bad files: $new_bad_files" 1>&2 -+ fi -+ if test -z "$new_bad_files"; then -+ break -+ else -+ files=`echo "$files -+$new_bad_files" | sort | uniq -u` -+ bad_files="$new_bad_files -+$bad_files" -+ fi -+ done -+ -+ header_files=`echo "$files" | sed 's/\.cc/\.hh/'` -+ -+ # generate output -+ if test "$filenames" = f; then -+ outscriptlet=i -+ elif test "$filenames" = F; then -+ outscriptlet='i, ":", header[i]' -+ else -+ echo "# Generated by 'click-buildtool findelem' on" `date` -+ outscriptlet='i, "\t", header[i], "\t", ex' -+ fi -+ -+ egrep '^ELEMENT_PROVIDES|^EXPORT_ELEMENT|^ELEMENT_HEADER|^ELEMENT_LIBS|^class|^[ ]*const *char *\* *class_name|^[ ]*static *void *static_[ic]|^}' $files $header_files /dev/null 2>/dev/null | $awk -F: 'BEGIN { -+ OFS = ""; cur_class = ""; line_warned = 0; nexports = 0 -+} -+/:class[ ]/ { -+ sub(/^class[ ]*/, "", $2); -+ sub(/[ ]*$/, "", $2); -+ cur_class = $2; -+ next -+} -+/:}/ { -+ cur_class = ""; -+ next -+} -+/:EXPORT_ELEMENT/ { -+ sub(/.*EXPORT_ELEMENT[ ]*\([ ]*/, "", $2); -+ sub(/[ ]*\).*/, "", $2); -+ if (exports[$1] != "") { -+ exports[$1] = exports[$1] " " $2 -+ } else { -+ exports[$1] = $2; nexports++ -+ } -+ next -+} -+/:ELEMENT_PROVIDES/ { -+ if (!($1 in exports)) { -+ exports[$1] = ""; nexports++ -+ } -+ next -+} -+/:ELEMENT_HEADER/ { -+ sub(/.*ELEMENT_HEADER[ ]*\(/, "", $2) -+ sub(/\).*/, "", $2) -+ header[$1] = $2 -+ next -+} -+/:ELEMENT_LIBS/ { -+ sub(/.*ELEMENT_LIBS[ ]*\(\(?/, "", $2) -+ sub(/\)?\).*/, "", $2) -+ gsub(/[ ][ ]*/, ";", $2) -+ gsub(/-L;/, "-L", $2) -+ libs[$1] = $2 -+ next -+} -+/class_name.*return[ ]"/ { -+ sub(/.*return[ ]*"/, "", $0); -+ sub(/".*/, "", $0); -+ class_name[cur_class] = $0 -+ next -+} -+/class_name/ { -+ print $1, ": ", cur_class, "::class_name method malformed" | "cat 1>&2" -+ if (++line_warned == 1) -+ print " (class_name methods must be written on a single line.)" | "cat 1>&2" -+} -+/static_initialize/ { -+ static_initialize[cur_class] = 1 -+ next -+} -+/static_cleanup/ { -+ static_cleanup[cur_class] = 1 -+ next -+} -+END { -+ if (nexports == 0) -+ print "click-buildtool: No elements found" | "cat 1>&2" -+ if (line_warned || nexports == 0) -+ system("kill -HUP '$$'") -+ for (i in exports) { -+ ex = exports[i] -+ if (ex == "") { -+ print i -+ } else { -+ if (header[i] == "") { -+ header[i] = "\"" i "\""; sub(/\.cc/, ".hh", header[i]) -+ } -+ split(ex, exes, / /); ex = "" -+ for (j in exes) { -+ dash = index(exes[j], "-") -+ if (dash == 0) { -+ dash = length(exes[j]); -+ if (class_name[exes[j]] == "") -+ exes[j] = exes[j] "-" exes[j]; -+ else -+ exes[j] = exes[j] "-" class_name[exes[j]]; -+ } -+ ex = ex exes[j] " "; -+ klass = substr(exes[j], 1, dash) -+ if (static_initialize[klass]) { -+ ex = ex klass "-!si "; -+ static_initialize[klass] = 0 -+ } -+ if (static_cleanup[klass]) { -+ ex = ex klass "-!sc "; -+ static_cleanup[klass] = 0 -+ } -+ } -+ if (libs[i]) -+ ex = ex "-!lib" libs[i] " "; -+ print '"$outscriptlet"' -+ } -+ } -+}' | sort -+ -+ exit $? -+} -+ -+ -+ -+########################## -+# ELEM2MAKE/ELEM2PACKAGE # -+########################## -+ -+elem2xxx_usage () { -+ echo_n "Usage: click-buildtool elem2$elem2 [-p PREFIX] [-V]" 1>&2 -+ if test "$elem2" = package; then echo_n " PKGNAME" 1>&2; fi -+ echo " < elements.conf -+Try 'click-buildtool elem2$elem2 --help' for more information." 1>&2 -+ exit 1 -+} -+ -+elem2make () { -+ driver="" -+ makevar="" -+ date=`date` -+ linux26=x -+ while [ x"$1" != x ]; do -+ case $1 in -+ -t|--d|--dr|--dri|--driv|--drive|--driver) -+ if test $# -lt 2; then elem2xxx_usage; fi -+ shift 1; driver="$1"; shift 1;; -+ -t*) -+ driver=`echo "$1" | sed 's/^-D//'`; shift 1;; -+ --d=*|--dr=*|--dri=*|--driv=*|--drive=*|--driver=*) -+ driver=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;; -+ --t|--ta|--tar|--targ|--targe|--target) -+ if test $# -lt 2; then elem2xxx_usage; fi -+ shift 1; driver="$1"; shift 1;; -+ --t=*|--ta=*|--tar=*|--targ=*|--targe=*|--target=*) -+ driver=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;; -+ -v|--m|--ma|--mak|--make|--make-|--make-v|--make-va|--make-var|--make-vari|--make-varia|--make-variab|--make-variabl|--make-variable) -+ if test $# -lt 2; then elem2xxx_usage; fi -+ shift 1; makevar="$1"; shift 1;; -+ -v*) -+ makevar=`echo "$1" | sed 's/^-v//'`; shift 1;; -+ --m=*|--ma=*|--mak=*|--make=*|--make-=*|--make-v=*|--make-va=*|--make-var=*|--make-vari=*|--make-varia=*|--make-variab=*|--make-variabl=*|--make-variable=*) -+ makevar=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;; -+ -x|--e|--ex|--exc|--excl|--exclu|--exclud|--exclude) -+ if test $# -lt 2; then elem2xxx_usage; fi -+ shift 1 -+ for i in $1; do excludes=";/^$i"' \\$'"/d$excludes"; done -+ shift 1;; -+ -x*) -+ this_exclude=`echo "$1" | sed 's/^-p//'` -+ for i in $this_exclude; do excludes=";/^$i"' \\$'"/d$excludes"; done -+ shift 1;; -+ --e=*|--ex=*|--exc=*|--excl=*|--exclu=*|--exclud=*|--exclude=*) -+ this_exclude=`echo "$1" | sed 's/^[^=]*=//'` -+ for i in $this_exclude; do excludes=";/^$i"' \\$'"/d$excludes"; done -+ shift 1;; -+ --l|--li|--lin|--linu|--linux|--linux2|--linux26) -+ linux26=1; shift 1;; -+ --no-l|--no-li|--no-lin|--no-linu|--no-linux|--no-linux2|--no-linux26) -+ linux26=0; shift 1;; -+ -V|--verb|--verbo|--verbos|--verbose) -+ verbose=1; shift 1;; -+ -h|--h|--he|--hel|--help) -+ cat <<'EOF' 1>&2 -+'Click-buildtool elem2make' reads an 'elements.conf' file generated by -+'click-buildtool findelem' on the standard input, and writes a Makefile -+fragment defining the ELEMENT_OBJS variable to the standard output. -+ -+Usage: click-buildtool elem2make [-t DRIVER] [-V] < elements.conf -+ -+Options: -+ -t, --driver DRIVER Set target driver to DRIVER ('userlevel', -+ 'linuxmodule', 'bsdmodule', 'ns', or 'tool'). -+ -v, --make-variable N Use make variable N. -+ --linux26 Generate Linux 2.6-style makefile fragment. -+ -x, --exclude FILE Do not include FILE. -+ -V, --verbose Print more information. -+ -h, --help Print this message and exit. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ *) -+ elem2xxx_usage;; -+ esac -+ done -+ -+ L= -+ defmakevar="ELEMENT_OBJS" -+ if test -n "$driver"; then -+ if test "$driver" = 'user' -o "$driver" = 'userlevel'; then -+ L=u -+ elif test "$driver" = 'kernel' -o "$driver" = 'linuxmodule'; then -+ L=k -+ test "$linux26" = x && linux26="$LINUXMODULE_2_6" -+ elif test "$driver" = 'bsdmodule'; then -+ L=b -+ elif test "$driver" = 'ns' -o "$driver" = 'nsmodule'; then -+ L=n -+ elif test "$driver" = 'tool'; then -+ L=t -+ else -+ echo "Unknown driver $driver" 1>&2 -+ exit 1 -+ fi -+ fi -+ osuffix=".${L}o" -+ if test -z "$makevar"; then -+ makevar=$defmakevar -+ fi -+ -+ # expand list of files -+ elemconf=`cat` -+ files=`echo "$elemconf" | grep -v '^#' | sed 's/[ ].*//'` -+ -+ # find libraries -+ libs=`echo "$elemconf" | sed '/-!lib/!d;s/^.*-!lib//g;s/;/ /g' | grep .` -+ if test -n "$libs"; then -+ libs=`echo "$libs" | sed 's/^\([^ ][^ ]*\) *$/\1 \1/'` -+ while echo "$libs" | grep ' [^ ].* [^ ]' >/dev/null; do -+ libs=`echo "$libs" | sed '/ [^ ].* [^ ]/s/^\([^ ][^ ]*\) *\([^ ][^ ]*\) /\1 \2\\ -+\2 /'` -+ done -+ fi -+ test -n "$libs" && libs=`echo "$libs" | tsort` -+ -+ # massage awk script based on Linux 2.6 or not -+ if test "$linux26" = 1; then -+ set_subdir_scriptlet=' -+ if (dir != "" && substr(dir, 1, 1) == "/") -+ subdirs[dirid] = dir; -+ else -+ subdirs[dirid] = "$(obj)/" dir; -+ ' -+ pattern_scriptlet='$(addprefix $(obj)/,$('"$makevar"'__", i, ")): $(obj)/%'"$osuffix" -+ ccaction=' $(call if_changed_dep,cxxcompile)' -+ caction=' $(call if_changed_dep,ccompile)' -+ else -+ set_subdir_scriptlet='subdirs[dirid] = dir;' -+ pattern_scriptlet='$('"$makevar"'__", i, "): %'"$osuffix" -+ ccaction=' $(call cxxcompile,-c $< -o $@,CXX)' -+ caction=' $(call ccompile,-c $< -o $@,CC)' -+ if test -n "$L"; then -+ ccaction="$ccaction"'\n $(FIXDEP)' -+ caction="$caction"'\n $(FIXDEP)' -+ fi -+ fi -+ -+ # output -+ echo "# Generated by 'click-buildtool elem2make' on" `date` -+ echo "$files" | $awk ' -+BEGIN { OFS = "" -+ action["c"] = "'"$caction"'"; -+ action["cc"] = "'"$ccaction"'"; -+} -+{ filetype = ($0 ~ /\.c$/ ? "c" : "cc"); -+ sub(/\.cc*$/, "'"$osuffix"'"); -+ i = match($0, /\/[^\/]*$/); -+ if (i == 0) { -+ dir = ""; -+ file = $0; -+ } else { -+ dir = substr($0, 1, RSTART); -+ file = substr($0, RSTART + 1); -+ } -+ decdir = filetype dir; -+ if (decdir in subdirid) -+ dirid = subdirid[decdir]; -+ else { -+ dirid = nsubdirs++; -+ subdirid[decdir] = dirid; -+ subdirtype[dirid] = filetype; -+ '"$set_subdir_scriptlet"' -+ } -+ elements[dirid] = elements[dirid] file " \\\n"; -+} -+END { -+ for (i = 0; i < nsubdirs; i++) { -+ print "'"$makevar"'__", i, " = \\\n", elements[i]; -+ allsubdirs = allsubdirs "$('"$makevar"'__" i ") \\\n"; -+ } -+ print "'"$makevar"' = \\\n", allsubdirs; -+ for (i = 0; i < nsubdirs; i++) { -+ print "'"$pattern_scriptlet"': ", subdirs[i], "%.", subdirtype[i]; -+ print action[subdirtype[i]]; -+ } -+}' | sed "$excludes" -+ echo -+ -+ if test -n "$libs"; then -+ libvar=`echo $makevar | sed 's/OBJS$/LIBS/'` -+ echo $libvar = $libs -+ fi -+} -+ -+elem2xxx () { -+ package="" -+ date=`date` -+ standards='' -+ includes='' -+ while [ x"$1" != x ]; do -+ case $1 in -+ -S|--s|--st|--sta|--stan|--stand|--standa|--standar|--standard|--standards) -+ standards=1; shift 1;; -+ -V|--verb|--verbo|--verbos|--verbose) -+ verbose=1; shift 1;; -+ -i|--i|--in|--inc|--incl|--inclu|--includ|--include) -+ if test $# -lt 2; then elem2xxx_usage; fi -+ includes="$includes print '#include $2';"; shift 2;; -+ -i*) -+ this_include=`echo "$1" | sed 's/^-i//'` -+ includes="$includes print '#include $this_include';"; shift 1;; -+ --i=*|--in=*|--inc=*|--incl=*|--inclu=*|--includ=*|--include=*) -+ this_include=`echo "$1" | sed 's/^[^=]*=//'` -+ includes="$includes print '#include $this_include';"; shift 1;; -+ -h|--h|--he|--hel|--help) -+ if test "$elem2" = export; then -+ cat <<'EOF' 1>&2 -+'Click-buildtool elem2export' reads an 'elements.conf' file generated by -+'click-buildtool findelem' on the standard input, examines those files for -+exported elements, and writes a C++ source file defining the -+click_export_elements() function to the standard output. -+ -+Usage: click-buildtool elem2export [-V] < elements.conf -+EOF -+ elif test "$elem2" = package; then -+ cat <<'EOF' 1>&2 -+'Click-buildtool elem2package' reads an 'elements.conf' file generated by -+'click-buildtool findelem' on the standard input, examines those files for -+exported elements, and writes a C++ source file suitable for creating a -+dynamically linked package with those elements to the standard output. PKGNAME -+is the name of the package. -+ -+Usage: click-buildtool elem2package [-p PREFIX] [-V] PKGNAME < elements.conf -+EOF -+ fi -+ cat <<'EOF' 1>&2 -+ -+Options: -+ -S, --standards Export standard required elements as well. -+ -i, --include HDR Emit "#include HDR" at top of file. -+ -V, --verbose Print more information. -+ -h, --help Print this message and exit. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ -*) -+ elem2xxx_usage;; -+ *) -+ if test -z "$package" -a "$elem2" = package; then package="$1"; shift 1; else elem2xxx_usage; fi;; -+ esac -+ done -+ -+ # set up awk program -+ if test -n "$package"; then -+ includes=" $includes "'print "#define WANT_MOD_USE_COUNT 1\n#include \n#include \n#include "; -+ for (file in INCLUDES) { -+ if (file != "-") print "#include ", file; -+ }' -+ awk_program='BEGIN { -+ OFS = ""; nrebecca = 0; packname="'"$package"'"; -+} -+/^#/ { next; } -+{ -+ if (NF == 1) -+ next; -+ INCLUDES[$2] = 1; -+ for (i = 3; i <= NF; i++) { -+ split($i, ans, /-/); -+ if (ans[2] == "!si") -+ B = B " " ans[1] "::static_initialize();\n"; -+ else if (ans[2] == "!sc") -+ C = C " " ans[1] "::static_cleanup();\n"; -+ else if (ans[2] !~ /^!/) { -+ B = B " hatred_of_rebecca[" nrebecca "] = click_add_element_type(\"" ans[2] "\", beetlemonkey, " nrebecca ");\n" -+ C = C " click_remove_element_type(hatred_of_rebecca[" nrebecca "]);\n"; -+ D = D " case " nrebecca ": return new " ans[1] ";\n"; -+ nrebecca++; -+ } -+ } -+} -+END { -+ print "/* Generated by \"click-buildtool elem2package\" on '"$date"' */"; -+ print "/* Package name: ", packname, " */\n"; -+'"$includes"' -+ print "\nCLICK_USING_DECLS"; -+ print "static int hatred_of_rebecca[", nrebecca, "];"; -+ print "static Element *\nbeetlemonkey(uintptr_t heywood)\n{\n switch (heywood) {\n", D, " default: return 0;\n }\n}\n"; -+ print "#ifdef CLICK_LINUXMODULE\n#define click_add_element_type(n, f, t) click_add_element_type((n), (f), (t), THIS_MODULE)\n#endif"; -+ print "#ifdef CLICK_BSDMODULE\nstatic int\nmodevent(module_t, int t, void *)\n{\n if (t == MOD_LOAD) {\n#else\nextern \"C\" int\ninit_module()\n{\n#endif"; -+ print " click_provide(\"", packname, "\");\n", B, " CLICK_DMALLOC_REG(\"nXXX\");\n return 0;"; -+ print "#ifdef CLICK_BSDMODULE\n } else if (t == MOD_UNLOAD) {\n#else\n}\nextern \"C\" void\ncleanup_module()\n{\n#endif"; -+ print C, " click_unprovide(\"", packname, "\");"; -+ print "#ifdef CLICK_BSDMODULE\n return 0;\n } else\n return 0;\n}\nstatic moduledata_t modinfo = {\n \"", packname, "\", modevent, 0\n};\nDECLARE_MODULE(", packname, ", modinfo, SI_SUB_PSEUDO, SI_ORDER_ANY);\n#else\n}\n#endif"; -+} -+' -+ -+ else -+ includes="$includes"' print "#include \n#include "; -+ for (file in INCLUDES) { -+ if (file != "-") print "#include ", file; -+ }' -+ awk_program='BEGIN { -+ OFS = ""; nrebecca = 0; -+} -+/^#/ { next; } -+{ -+ if (NF == 1) -+ next; -+ INCLUDES[$2] = 1; -+ for (i = 3; i <= NF; i++) { -+ split($i, ans, /-/); -+ if (ans[2] == "!si") -+ B = B " " ans[1] "::static_initialize();\n"; -+ else if (ans[2] == "!sc") -+ C = C " " ans[1] "::static_cleanup();\n"; -+ else if (ans[2] !~ /^!/) { -+ B = B " (void) click_add_element_type(\"" ans[2] "\", beetlemonkey, " nrebecca ");\n"; -+ D = D " case " nrebecca ": return new " ans[1] ";\n"; -+ } -+ nrebecca++; -+ } -+} -+END { -+ print "/* Generated by \"click-buildtool elem2export\" on '"$date"' */\n"; -+'"$includes"' -+ print "CLICK_USING_DECLS"; -+ print "static Element *\nbeetlemonkey(uintptr_t heywood)\n{\n switch (heywood) {\n", D, " default: return 0;\n }\n}\n"; -+ print "#ifdef CLICK_LINUXMODULE\n#define click_add_element_type(n, f, t) click_add_element_type((n), (f), (t), 0)\n#endif"; -+ print "void\nclick_export_elements()\n{\n", B, " CLICK_DMALLOC_REG(\"nXXX\");\n}\n"; -+ print "void\nclick_unexport_elements()\n{\n", C, "}"; -+} -+' -+ fi -+ -+ # Actually generate the command! -+ if test -z "$standards"; then -+ $awk "$awk_program" -+ else -+ cat </tmp/click-buildtool-standards.$$ -+- AddressInfo-AddressInfo -+- AlignmentInfo-AlignmentInfo -+- ErrorElement-ErrorElement -+- PortInfo-PortInfo -+- ScheduleInfo-ScheduleInfo -+EOF -+ cat - /tmp/click-buildtool-standards.$$ | $awk "$awk_program" -+ /bin/rm -f /tmp/click-buildtool-standards.$$ -+ fi -+} -+ -+ -+ -+############ -+# PROVIDES # -+############ -+ -+provides_usage () { -+ echo "Usage: click-buildtool provides [REQS]" 1>&2 -+ echo "Try 'click-buildtool provides --help' for more information." 1>&2 -+ exit 1 -+} -+ -+provides () { -+ provisions="$default_provisions -+$driver_provisions -+"`elementmap_provisions ${clickdatadir}/elementmap.xml` -+ requirements="" -+ stdin=n; query=n; print=n -+ while [ x"$1" != x ]; do -+ case $1 in -+ -q|--q|--qu|--que|--quer|--query) -+ query=y; shift 1;; -+ -l|--pri|--prin|--print) -+ print=y; shift 1;; -+ -r|--pro|--prov|--provi|--provid|--provide) -+ if test $# -lt 2; then provides_usage; fi -+ shift 1; provisions="$1 -+$provisions"; shift 1;; -+ -r*) -+ provisions=`echo "$1" | sed 's/^-r//'`" -+$provisions"; shift 1;; -+ --p=*|--pr=*|--pro=*|--prov=*|--provi=*|--provid=*|--provide=*) -+ provisions=`echo "$1" | sed 's/^[^=]*=//'`" -+$provisions"; shift 1;; -+ -e|--e|--el|--ele|--elem|--eleme|--elemen|--element|--elementm|--elementma|--elementmap) -+ if test $# -lt 2; then provides_usage; fi -+ shift 1; provisions=`elementmap_provisions $1`" -+$provisions"; shift 1;; -+ -e*) -+ emap=`echo "$1" | sed 's/^-e//'` -+ provisions=`elementmap_provisions $emap`" -+$provisions"; shift 1;; -+ --e=*|--el=*|--ele=*|--elem=*|--eleme=*|--elemen=*|--element=*|--elementm=*|--elementma=*|--elementmap=*) -+ emap=`echo "$1" | sed 's/^[^=]*=//'` -+ provisions=`elementmap_provisions $emap`" -+$provisions"; shift 1;; -+ -h|--h|--he|--hel|--help) -+ cat <<'EOF' 1>&2 -+'Click-buildtool provides' exits with status 0 if the Click installation -+provides all requirement(s) in REQ arguments, and status 1 otherwise. -+ -+Usage: click-buildtool provides [OPTIONS] [REQ...] -+ -+Options: -+ -q, --query Print provisions to standard output. -+ -r, --provide REQ Provide requirement(s) in REQ. -+ -e, --elementmap EMAP Provide requirement(s) from EMAP. -+ -l, --print Print 0 (REQs not provided) or 1 (REQs provided). -+ -h, --help Print this message and exit. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ -) -+ stdin=y; shift 1;; -+ -*) -+ provides_usage;; -+ *) -+ requirements="$1 -+$requirements"; shift 1;; -+ esac -+ done -+ -+ [ $stdin = y ] && requirements="`cat` $requirements" -+ provisions="`echo "$provisions" | tr -s ' \011\015\014\013' '\012' | grep . | sort | uniq`" -+ [ $query = y ] && echo "$provisions" -+ requirements="`echo "$requirements" | tr -s ' \011\015\014\013' '\012' | grep . | sort | uniq`" -+ awk_provisions="`echo "$provisions" | sed 's/\(..*\)/dep["\1"]=1;/'`" -+ echo "$requirements" | $awk -F: 'BEGIN { -+'"$awk_provisions"' -+} -+/./ { if (!dep[$1]) exit 1; }' >/dev/null 2>&1 -+ status=$? -+ [ $print = y ] && expr 1 - $status -+ exit $status -+} -+ -+ -+############# -+# QUIETLINK # -+############# -+ -+quietlink_usage () { -+ echo "Usage: click-buildtool quietlink" 1>&2 -+ echo "Try 'click-buildtool quietlink --help' for more information." 1>&2 -+ exit 1 -+} -+ -+quietlink () { -+ while [ x"$1" != x ]; do -+ case $1 in -+ -h|--h|--he|--hel|--help) -+ cat <<'EOF' 1>&2 -+'Click-buildtool quietlink' quiets the GNU linker when linking an element -+package. Specifically, it removes undefined reference complaints. -+ -+Usage: ld ... 2>&1 | click-buildtool quietlink -+ -+Options: -+ -h, --help Print this message and exit. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ *) -+ quietlink_usage;; -+ esac -+ done -+ -+ $awk -F: 'BEGIN { -+ context = "" -+} -+/: In function/ { -+ context = $0 -+ next -+} -+/: undefined reference to/ { -+ next -+} -+/: more undefined references to/ { -+ next -+} -+{ -+ if (context != "") { -+ print context -+ context = "" -+ } -+ print $0 -+}' 1>&2 -+} -+ -+ -+ -+########## -+# PREFIX # -+########## -+ -+prefix_usage () { -+ echo "Usage: click-buildtool prefix" 1>&2 -+ echo "Try 'click-buildtool prefix --help' for more information." 1>&2 -+ exit 1 -+} -+ -+prefix () { -+ while [ x"$1" != x ]; do -+ case $1 in -+ -h|--h|--he|--hel|--help) -+ cat <<'EOF' 1>&2 -+'Click-buildtool prefix' prints the Click prefix directory. -+ -+Usage: click-buildtool prefix -+ -+Options: -+ -h, --help Print this message and exit. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ *) -+ prefix_usage;; -+ esac -+ done -+ echo $prefix -+} -+ -+ -+ -+############ -+# KVERSION # -+############ -+ -+kversion_usage () { -+ echo_n "Usage: click-buildtool kversion [--gpl] > kversion.c" 1>&2 -+ echo "Try 'click-buildtool kversion --help' for more information." 1>&2 -+ exit 1 -+} -+ -+kversion () { -+ gpl=0 -+ linux26=$LINUXMODULE_2_6 -+ while [ x"$1" != x ]; do -+ case $1 in -+ --g|--gp|--gpl) -+ gpl=1; shift 1;; -+ -h|--h|--he|--hel|--help) -+ cat <<'EOF' 1>&2 -+'Click-buildtool kversion' writes a kversion.c file, to be used for building -+a Click kernel package, on the standard output. -+ -+Usage: click-buildtool kversion [--gpl] > kversion.c -+ -+Options: -+ --gpl The package is dual-licensed BSD/GPL (otherwise -+ no license). -+ -h, --help Print this message and exit. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ *) -+ kversion_usage;; -+ esac -+ done -+ -+ cat < -+#include -+#include -+ -+/* a new version of EXPORT_NO_SYMBOLS that works */ -+const int __ksymtab_nothing[0] __attribute__((section("__ksymtab"))) = { }; -+EOF -+ test $gpl = 1 && cat < Kbuild" 1>&2 -+ echo "Try 'click-buildtool kbuild --help' for more information." 1>&2 -+ exit 1 -+} -+ -+kbuild () { -+ while [ x"$1" != x ]; do -+ case $1 in -+ -h|--h|--he|--hel|--help) -+ cat <<'EOF' 1>&2 -+'Click-buildtool kbuild' writes a Kbuild file, to be used for building -+a Click kernel package for Linux 2.6 kernels, on the standard output. -+ -+Usage: click-buildtool kbuild > Kbuild -+ -+Options: -+ -h, --help Print this message and exit. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ *) -+ kversion_usage;; -+ esac -+ done -+ -+ echo "include ${clickdatadir}/pkg-linuxmodule-26.mk" -+} -+ -+ -+ -+############### -+# MAKEPACKAGE # -+############### -+ -+makepackage_usage () { -+ echo "Usage: click-buildtool makepackage [-t DRIVER] PACKAGENAME SRCFILES..." 1>&2 -+ echo "Try 'click-buildtool makepackage for more information." 1>&2 -+ exit 1 -+} -+ -+makepackage () { -+ driver="" -+ date=`date` -+ dir= -+ pkg= -+ srcs= -+ quiet= -+ cflags= -+ while [ x"$1" != x ]; do -+ case $1 in -+ -t|--d|--dr|--dri|--driv|--drive|--driver) -+ test $# -lt 2 && makepackage_usage -+ shift 1; driver="$1"; shift 1;; -+ -t*) -+ driver=`echo "$1" | sed 's/^-D//'`; shift 1;; -+ --dr=*|--dri=*|--driv=*|--drive=*|--driver=*) -+ driver=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;; -+ --t|--ta|--tar|--targ|--targe|--target) -+ test $# -lt 2 && makepackage_usage -+ shift 1; driver="$1"; shift 1;; -+ --t=*|--ta=*|--tar=*|--targ=*|--targe=*|--target=*) -+ driver=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;; -+ -C|--di|--dir|--dire|--direc|--direct|--directo|--director|--directory) -+ test $# -lt 2 && makepackage_usage -+ shift 1; dir="$1"; shift 1;; -+ -C*) -+ dir="`echo "$1" | sed 's/^-C//'`"/; shift 1;; -+ --di=*|--dir=*|--dire=*|--direc=*|--direct=*|--directo=*|--director=*|--directory=*) -+ dir="`echo "$1" | sed 's/^[^=]*=//'`"/; shift 1;; -+ -q|--q|--qu|--qui|--quie|--quiet) -+ quiet="-s"; shift 1;; -+ -h|--h|--he|--hel|--help) -+ cat <<'EOF' 1>&2 -+'Click-buildtool makepackage' builds a Click package for the specified -+driver from sources listed on the command line. -+ -+Usage: click-buildtool makepackage [-t DRIVER] PACKAGENAME SRCFILES... -+ -+Options: -+ -t, --driver DRIVER Set target driver to DRIVER ('userlevel', -+ 'linuxmodule', 'bsdmodule', 'ns', or 'tool'). -+ -q, --quiet Build quietly (may be ignored). -+ -C, --directory DIR Switch to DIR directory before building. -+ -h, --help Print this message and exit. -+ -[other options] Passed to the C/C++ compiler. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ -*) -+ cflags="$cflags $1"; shift 1;; -+ *) -+ if test -z "$pkg"; then -+ pkg="$1"; shift 1 -+ else -+ srcs="$srcs -+$1"; shift 1 -+ fi;; -+ esac -+ done -+ -+ test -z "$srcs" && makepackage_usage -+ -+ objs= -+ objsvar=OBJS -+ if test -z "$driver" -o "$driver" = 'user' -o "$driver" = 'userlevel'; then -+ L=u -+ elif test "$driver" = 'kernel' -o "$driver" = 'linuxmodule'; then -+ L=k -+ elif test "$driver" = 'bsdmodule'; then -+ L=b -+ elif test "$driver" = 'ns' -o "$driver" = 'nsmodule'; then -+ L=n -+ elif test "$driver" = 'tool'; then -+ L=t -+ else -+ echo "Unknown driver $driver" 1>&2 -+ exit 1 -+ fi -+ osuffix=".${L}o" -+ -+ if test -n "$dir"; then cd "$dir"; fi -+ echo > ${L}elements.conf -+ echo "$srcs" | grep . | elem2make -t $driver > ${L}elements.mk -+ echo "PACKAGE_OBJS :=" >> ${L}elements.mk -+ -+ echo "package = $pkg -+ -+srcdir = . -+top_srcdir = . -+builddir = . -+top_builddir = . -+PACKAGE_CFLAGS = $cflags -+PACKAGE_CXXFLAGS = $cflags -+ -+include ${clickdatadir}/config.mk -+include ${clickdatadir}/pkg-Makefile" > Makefile -+ -+ test -z "$quiet" && echo "+" $gmake $pkg$osuffix -+ $gmake $quiet $pkg$osuffix -+} -+ -+ -+ -+######### -+# KSYMS # -+######### -+ -+ksyms_usage () { -+ echo "Usage: click-buildtool ksyms OBJ... > KSYMS" 1>&2 -+ echo "Try 'click-buildtool ksyms --help' for more information." 1>&2 -+ exit 1 -+} -+ -+ksyms () { -+ driver="" -+ date=`date` -+ dir= -+ objs= -+ exclude= -+ while [ x"$1" != x ]; do -+ case $1 in -+ -C|--di|--dir|--dire|--direc|--direct|--directo|--director|--directory) -+ test $# -lt 2 && ksyms_usage -+ shift 1; dir="$1"; shift 1;; -+ -C*) -+ dir="`echo "$1" | sed 's/^-C//'`"/; shift 1;; -+ --di=*|--dir=*|--dire=*|--direc=*|--direct=*|--directo=*|--director=*|--directory=*) -+ dir="`echo "$1" | sed 's/^[^=]*=//'`"/; shift 1;; -+ -x|--e|--ex|--exc|--excl|--exclu|--exclud|--exclude) -+ test $# -lt 2 && ksyms_usage -+ shift 1; exclude="$exclude -+$1"; shift 1;; -+ -x*) -+ exclude="$exclude -+`echo "$1" | sed 's/^-x//'`"; shift 1;; -+ --e=*|--ex=*|--exc=*|--excl=*|--exclu=*|--exclud=*|--exclude=*) -+ exclude="$exclude -+`echo "$1" | sed 's/^[^=]*=//'`"; shift 1;; -+ -h|--h|--he|--hel|--help) -+ cat <<'EOF' 1>&2 -+'Click-buildtool ksyms' creates a C file that exports all symbols for the -+Click objects listed on the command line. -+ -+Usage: click-buildtool ksyms OBJ... > KSYMS -+ -+Options: -+ -x, --exclude=FILE Ignore OBJ even if it is supplied as an argument. -+ -C, --directory DIR Switch to DIR directory before running. -+ -h, --help Print this message and exit. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ *) -+ objs="$objs -+$1"; shift 1;; -+ esac -+ done -+ -+ test -z "$objs" && ksyms_usage -+ objs=`echo "$objs" | sort | uniq` -+ test -n "$exclude" && objs=`echo "$objs -+$exclude" | sort | uniq -u` -+ -+ if test -n "$dir"; then cd "$dir"; fi -+ echo "// Created by 'click-buildtool ksyms' on $date" -+ echo "#include " -+ echo "#include " -+ echo "#include " -+ nm -g $objs | $awk ' -+BEGIN { -+ printed["init_module"] = printed["cleanup_module"] = 1; -+} -+/^[ ]/ { -+ next -+} -+/........[ ][ABCDGRSTVW]/ { -+ x = $3; -+ if (x ~ /^[_A-Za-z][_A-Za-z0-9]*$/ && !printed[x]) { -+ printed[x] = 1; -+ if (x != "click_assert_failed") -+ print "extern char " x "[];"; -+ print "EXPORT_SYMBOL(" x ");"; -+ } -+}' -+} -+ -+ -+ -+################ -+# MAIN PROGRAM # -+################ -+ -+if test $# = 0; then -+ # force usage message -+ set crapfunc -+fi -+ -+while [ x"$1" != x ]; do -+case $1 in -+ --vers|--versi|--versio|--version) -+ cat <<'EOF' -+click-buildtool (Click) 1.6.0 -+Copyright (c) 2000-2001 Massachusetts Institute of Technology -+Copyright (c) 2000-2004 Mazu Networks, Inc. -+Copyright (c) 2001-2003 International Computer Science Institute -+Copyright (c) 2004-2007 Regents of the University of California -+This is free software; see the source for copying conditions. -+There is NO warranty, not even for merchantability or fitness for a -+particular purpose. -+EOF -+ exit 0;; -+ -V|--verb|--verbo|--verbos|--verbose) -+ verbose=1; shift 1;; -+ -h|--h|--he|--hel|--help) -+ cat <<'EOF' 1>&2 -+'Click-buildtool' is a set of tools used when building Click. For information -+on a particular tool, run 'click-buildtool TOOLNAME --help'. -+ -+Usage: click-buildtool elem2make [-V] [-p PREFIX] < [ELEMENTS] -+ or: click-buildtool elem2export [-V] [-p PREFIX] < [ELEMENTS] -+ or: click-buildtool elem2package [-V] [-p PREFIX] PACKAGENAME < [ELEMENTS] -+ or: click-buildtool findelem [-a] [-V] [-p PREFIX] < [FILES AND DIRECTORIES] -+ or: click-buildtool makepackage [-t DRIVER] PACKAGENAME SRCFILES... -+ or: click-buildtool prefix -+ or: click-buildtool provides [REQS] -+ or: click-buildtool quietlink -+ or: click-buildtool kbuild -+ or: click-buildtool kversion [--gpl] -+ or: click-buildtool ksyms OBJS > KSYMSFILE -+ -+Options: -+ -V, --verbose Print more information. -+ -h, --help Print this message and exit. -+ --version Print version number and exit. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ findelem) -+ shift 1; findelem "$@"; exit 0;; -+ elem2make) -+ elem2="make"; shift 1; elem2make "$@"; exit 0;; -+ elem2export) -+ elem2="export"; shift 1; elem2xxx "$@"; exit 0;; -+ elem2package) -+ elem2="package"; shift 1; elem2xxx "$@"; exit 0;; -+ makepackage) -+ shift 1; makepackage "$@"; exit 0;; -+ prefix) -+ shift 1; prefix "$@"; exit 0;; -+ provides) -+ shift 1; provides "$@"; exit 0;; -+ quietlink) -+ shift 1; quietlink "$@"; exit 0;; -+ kversion) -+ shift 1; kversion "$@"; exit 0;; -+ kbuild) -+ shift 1; kbuild "$@"; exit 0;; -+ ksyms) -+ shift 1; ksyms "$@"; exit 0;; -+ *) -+ echo "Usage: click-buildtool TOOLNAME [ARGUMENTS] -+Try 'click-buildtool --help' for more information." 1>&2 -+ exit 1;; -+esac -+done -Files click-1.6.0/inst/bin/click-check and click-1.6.0-27/inst/bin/click-check differ -Files click-1.6.0/inst/bin/click-combine and click-1.6.0-27/inst/bin/click-combine differ -diff -Nurb click-1.6.0/inst/bin/click-compile click-1.6.0-27/inst/bin/click-compile ---- click-1.6.0/inst/bin/click-compile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/bin/click-compile 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,302 @@ -+#! /bin/sh -+ -+# click-compile.in -- script compiles Click elements -+# Eddie Kohler -+# -+# Copyright (c) 1999 Massachusetts Institute of Technology -+# Copyright (c) 2001 International Computer Science Institute -+# Copyright (c) 2005 Regents of the University of California -+# -+# Permission is hereby granted, free of charge, to any person obtaining a -+# copy of this software and associated documentation files (the "Software"), -+# to deal in the Software without restriction, subject to the conditions -+# listed in the Click LICENSE file. These conditions include: you must -+# preserve this copyright notice, and you cannot mention the copyright -+# holders in advertising related to the Software without their permission. -+# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+# notice is a summary of the Click LICENSE file; the license in that file is -+# legally binding. -+ -+prefix=/d/click/click-1.6.0-27/inst -+exec_prefix=/d/click/click-1.6.0-27/inst -+includedir=/d/click/click-1.6.0-27/inst/include -+libdir=/d/click/click-1.6.0-27/inst/lib -+datarootdir=/d/click/click-1.6.0-27/inst/share -+datadir=/d/click/click-1.6.0-27/inst/share -+srcdir=${datadir}/click/src -+linuxdir=/d/kernels/linux-2.6.27.10-clickport -+freebsd_includedir=/usr/include -+CLICK_VERSION=1.6.0 -+ -+# determine mode -+directory=. -+driver= -+package=NONE -+cflags= -+compileflag=-c -+quiet= -+gpl=y -+while true; do -+ bad=x -+ case $1 in -+ -t|--dr|--dri|--driv|--drive|--driver) -+ driver=$2; shift 2;; -+ -t*) -+ driver=`echo "$1" | sed 's/^-t//'`; shift 1;; -+ --dr=*|--dri=*|--driv=*|--drive=*|--driver=*) -+ driver=`echo "$1" | sed 's/[-a-z]*=//'`; shift 1;; -+ --c|--cf|--cfl|--cfla|--cflag|--cflags|--de|--def|--defs) -+ echo -I$includedir -+ exit 0;; -+ --l|--li|--lib|--libs) -+ echo -L$libdir -lclick -lpcap -ldl -+ exit 0;; -+ --toolc|--toolcf|--toolcfl|--toolcfla|--toolcflag|--toolcflags) -+ echo -DCLICK_TOOL -I$includedir -+ exit 0;; -+ --tooll|--toolli|--toollib|--toollibs) -+ echo -L$libdir -lclicktool -ldl -+ exit 0;; -+ --o|--ot|--oth|--othe|--other|--otherl|--otherli|--otherlib|--otherlibs) -+ echo -lpcap -ldl -+ exit 0;; -+ -d|--di|--dir|--dire|--direc|--direct|--directo|--director|--directory) -+ directory=$2; shift 2;; -+ -d*) -+ directory=`echo "$1" | sed 's/^-d//'`; shift 1;; -+ --di=*|--dir=*|--dire=*|--direc=*|--direct=*|--directo=*|--director=*|--directory=*) -+ directory=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;; -+ --t|--ta|--tar|--targ|--targe|--target) -+ echo "click-compile: '--target' is obsolete; change your script to use '--driver'" 1>&2 -+ driver=$2; shift 2;; -+ --t=*|--ta=*|--tar=*|--targ=*|--targe=*|--target=*) -+ echo "click-compile: '--target' is obsolete; change your script to use '--driver'" 1>&2 -+ driver=`echo "$1" | sed 's/[-a-z]*=//'`; shift 1;; -+ -p|--p|--pa|--pac|--pack|--packa|--packag|--package) -+ package=$2; shift 2;; -+ -p*) -+ package=`echo "$1" | sed 's/^-p//'`; shift 1;; -+ --p=*|--pa=*|--pac=*|--pack=*|--packa=*|--packag=*|--package=*) -+ package=`echo "$1" | sed 's/[-a-z]*=//'`; shift 1;; -+ -q|--q|--qu|--qui|--quie|--quiet) -+ quiet=y; shift 1;; -+ --no-g|--no-gp|--no-gpl) -+ gpl=n; shift 1;; -+ -h|--h|--he|--hel|--help) -+ cat <<'EOF' -+'Click-compile' compiles a Click source file, or outputs any compiler options -+relevant for userlevel Click drivers. -+ -+Usage: click-compile -t DRIVER [OPTIONS] SOURCEFILE... -+ -+Options: -+ --defs Outputs preprocessor options for userlevel drivers. -+ --libs Outputs link options for userlevel drivers. -+ --otherlibs Like '--libs' minus the Click library. -+ --toolcflags Outputs C/C++ flags options for tools. -+ --toollibs Outputs link options for tools. -+ -t, --driver DRIVER Sets target driver to 'bsdmodule', 'linuxmodule', -+ 'userlevel', 'ns', or 'tool'. -+ -p, --package PACKAGE Build a dynamically loadable package named PACKAGE. -+ -d, --directory DIR Change to directory DIR. -+ -q, --quiet Be quiet (don't echo commands or print warnings). -+ --no-gpl Omit "BSD/GPL" declaration from kernel package. -+ -h, --help Print this message and exit. -+ -v, --version Print version number and exit. -+ Other options are passed to the compiler unchanged. -+ -+Report bugs to . -+EOF -+ exit 0;; -+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version) -+ echo click-compile '(Click)' $CLICK_VERSION -+ cat <<"EOF" -+Copyright (C) 1999-2001 Massachusetts Institute of Technology -+Copyright (C) 2002 International Computer Science Institute -+Copyright (C) 2004 Regents of the University of California -+This is free software; see the source for copying conditions. -+There is NO warranty, not even for merchantability or fitness for any -+particular purpose. -+EOF -+ exit 0;; -+ -*) -+ if test "$1" = -E -o "$1" = -c -o "$1" = -S; then -+ compileflag=$1 -+ else -+ cflags="$cflags '$1'" -+ fi -+ shift 1;; -+ *) -+ bad=;; -+ esac -+ if test -z "$bad"; then break; fi -+done -+ -+cd $directory -+ -+# test directory function -+test_dir () { -+ test -d "$1" -a -d "$1/elements" -a -d "$1/lib" -+} -+ -+# analyze CLICKPATH to find sources -+path=${CLICKPATH-:} -+tried_defaults= -+include_source= -+while true; do -+ case $path in -+ :*) -+ if test -z "$tried_defaults" && test_dir "$srcdir"; then -+ include_source="-I$srcdir" -+ else -+ tried_defaults=y -+ fi -+ path=`echo "$path" | sed 's/://'` -+ ;; -+ *:*) -+ dir=`echo "$path" | sed 's/:.*//'` -+ if test_dir "$dir"; then include_source="-I$dir"; fi -+ path=`echo "$path" | sed 's/[^:]*://'` -+ ;; -+ *:) -+ dir=`echo "$path" | sed 's/:.*//'` -+ if test_dir "$dir"; then include_source="-I$dir"; fi -+ path=":" -+ ;; -+ *) -+ if test_dir "$path"; then include_source="-I$path"; fi -+ path="" -+ ;; -+ esac -+ if test -z "$path" -o -n "$include_source"; then break; fi -+done -+ -+if test ! -d "$includedir"; then -+ echo "click-compile: Cannot find Click include directory!" 1>&2 -+ echo " (Have you installed Click yet?)" 1>&2 -+ exit 1 -+elif test -z "$include_source"; then -+ if test -z "$quiet"; then -+ echo "click-compile: warning: cannot find full Click source" 1>&2 -+ fi -+fi -+ -+ -+case $driver in -+ u|us|use|user|userl|userle|userlev|userleve|userlevel) -+ idefs="-DHAVE_CONFIG_H -DCLICK_USERLEVEL" -+ iincludes="${include_source} -I${includedir}" -+ icppflags="" -+ icxxflags="-fPIC -g -O2 -MD" -+ icflags="-fPIC -g -O2 -MD" -+ command="${CXX-g++ -W -Wall } ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CXXFLAGS-$icxxflags} $cflags $compileflag" -+ c_command="${CC-gcc -W -Wall} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CFLAGS-$icflags} $cflags $compileflag" -+ driver=userlevel;; -+ k|ke|ker|kern|kerne|kernel|l|li|lin|linu|linux|linuxm|linuxmo|linuxmod|linuxmodu|linuxmodul|linuxmodule) -+ idefs="-DHAVE_CONFIG_H -DCLICK_LINUXMODULE" -+ iincludes="${include_source} -I${includedir} -I${linuxdir}/include" -+ icppflags="" -+ icxxflags=" -O2 -MD" -+ icflags=" -O2 -MD" -+ command="${CXX-g++ -w -W -Wall -fno-exceptions -fno-rtti -D__SMP__} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CXXFLAGS-$icxxflags} $cflags $compileflag" -+ c_command="${CC-gcc -W -Wall} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CFLAGS-$icflags} $cflags $compileflag" -+ driver=linuxmodule;; -+ b|bs|bsd|bsdm|bsdmo|bsdmod|bsdmodu|bsdmodul|bsdmodule) -+ idefs="-DHAVE_CONFIG_H -DCLICK_BSDMODULE" -+ iincludes="-nostdinc ${include_source} -I${includedir}" -+ icppflags="" -+ icxxflags=" -O2 -MD" -+ icflags=" -O2 -MD" -+ command="${CXX-g++ -w -W -Wall -fno-exceptions -fno-rtti -D__SMP__} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CXXFLAGS-$icxxflags} $cflags $compileflag" -+ c_command="${CC-gcc -W -Wall} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CFLAGS-$icflags} $cflags $compileflag" -+ driver=bsdmodule;; -+ ns|nsm|nsmo|nsmod|nsmodu|nsmodul|nsmodule) -+ idefs="-DHAVE_CONFIG_H -DCLICK_NS" -+ iincludes="${include_source} -I${includedir}" -+ icppflags="" -+ icxxflags="-fPIC -g -O2 -MD" -+ icflags="-fPIC -g -O2 -MD" -+ command="${CXX-g++ -W -Wall } ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CXXFLAGS-$icxxflags} $cflags $compileflag" -+ c_command="${CC-gcc -W -Wall} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CFLAGS-$icflags} $cflags $compileflag" -+ driver=ns;; -+ t|to|too|tool) -+ idefs="-DHAVE_CONFIG_H -DCLICK_TOOL" -+ iincludes="${include_source} -I${includedir}" -+ icppflags="" -+ icxxflags="-fPIC -g -O2 -MD" -+ icflags="-fPIC -g -O2 -MD" -+ command="${CXX-g++ -W -Wall } ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CXXFLAGS-$icxxflags} $cflags $compileflag" -+ c_command="${CC-gcc -W -Wall} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CFLAGS-$icflags} $cflags $compileflag" -+ driver=tool;; -+ "") -+ echo "click-compile: you must specify a driver" 1>&2; exit 1;; -+ *) -+ echo "click-compile: acceptable drivers are 'userlevel', 'linuxmodule'," 1>&2 -+ echo "click-compile: 'bsdmodule', and 'tool'" 1>&2; exit 1;; -+esac -+ -+exec_command () { -+ if test -z "$quiet"; then -+ echo "$@" 1>&2 -+ fi -+ eval "$@" || exit 1 -+} -+ -+compile_file () { -+ option= -+ source="$1"; shift -+ if test -r "$source"; then -+ option=`head -n 5 $source | grep '^/\*\* click-compile:' | sed -e 's/\/\*\* click-compile://g' -e 's/\*\///g'` -+ fi -+ exec_command $command $option $source "$@" -+} -+ -+# do stuff -+if test "x$package" != "xNONE"; then -+ command="$command -DCLICK_PACKAGE" -+ files=; rmfiles= -+ trap 'rm -f $rmfiles' 0 -+ trap 'rm -f $rmfiles; exit 1' 1 2 15 -+ for file; do -+ if echo "$file" | grep '\.cc*$' >/dev/null 2>&1; then -+ objfile=`echo "$file" | sed 's/\.c*$/'"$$"'\.o/;s/^.*\///'` -+ compile_file $file -o $objfile -+ rmfiles="$rmfiles $objfile "`echo $objfile | sed 's/\.o/\.d/'` -+ else -+ objfile="$file" -+ fi -+ files="$files $objfile" -+ done -+ if test $driver = linuxmodule; then -+ vfile=kernelversion$$ -+ test -f $vfile.c && echo "click-compile: A file '$vfile.c' already exists in this directory!" 1>&2 && echo "click-compile: You must remove it, or run me somewhere else." 1>&2 && exit 1 -+ files="$files $vfile.o" -+ rmfiles="$rmfiles $vfile.o $vfile.c $vfile.d" -+ cat > $vfile.c < -+#include -+/* a new version of EXPORT_NO_SYMBOLS that works */ -+const int __ksymtab_nothing[0] __attribute__((section("__ksymtab"))) = { }; -+EOF -+ if test $gpl = y; then -+ cat >> $vfile.c < 1, 'c' => 1, 's' => 1, -+ 'io' => 1, 'processing' => 1, 'drivers' => 1, -+ 'd' => 1, 'n' => 1, 'e' => 1, 'h' => 1, 'a' => 1, 'title' => 1, -+ 'deprecated' => 1, 'package' => 1 ); -+my(%section_takes_args) = -+ ( 'head1' => 1, 'c' => 0, 's' => 2, -+ 'io' => 2, 'processing' => 2, 'drivers' => 2, -+ 'd' => 0, 'n' => 0, 'e' => 0, 'h' => 1, 'a' => 2, 'title' => 1, -+ 'deprecated' => 1, 'package' => 2 ); -+my(%section_takes_text) = -+ ( 'head1' => 2, 'c' => 1, 's' => 1, -+ 'io' => 2, 'processing' => 2, 'drivers' => 2, -+ 'd' => 1, 'n' => 1, 'e' => 1, 'h' => 1, 'a' => 2, 'title' => 0, -+ 'deprecated' => 0, 'package' => 1 ); -+my(%xsection_takes_args) = -+ ( 'head1' => 1, 'head2' => 1, 'item' => 1, 'over' => 1, 'back' => 0, -+ 'for' => 1, 'begin' => 1, 'end' => 1, 'start!' => 1, 'name!' => 1, -+ 'end!' => 0, 'text' => 0 ); -+my(%infosection_name) = -+ ( 'package' => 'Package', 'io' => 'Ports', 'processing' => 'Processing', -+ 'drivers' => 'Drivers' ); -+ -+my $section = 'n'; -+my $package; -+my $uninstall = 0; -+my(@all_outnames, %all_outsections, %summaries_by_section, %all_roff_summaries); -+ -+my(%processing_constants) = -+ ( 'AGNOSTIC' => 'a/a', 'PUSH' => 'h/h', 'PULL' => 'l/l', -+ 'PUSH_TO_PULL' => 'h/l', 'PULL_TO_PUSH' => 'l/h' ); -+my(%processing_text) = -+ ( 'a/a' => 'agnostic', 'h/h' => 'push', 'l/l' => 'pull', -+ 'h/l' => 'push inputs, pull outputs', -+ 'l/h' => 'pull inputs, push outputs', -+ 'a/ah' => 'agnostic, but output 1 is push' ); -+ -+my(@section_headers) = -+ ( 'basicsources' => 'Basic Sources and Sinks', -+ 'classification' => 'Basic Classification and Selection', -+ 'basictransfer' => 'Basic Packet Transfer', -+ 'counters' => 'Counters', -+ 'timestamps' => 'Timestamps', -+ 'basicmod' => 'Basic Packet Modification', -+ 'storage' => 'Packet Storage', -+ 'aqm' => 'Active Queue Management', -+ 'scheduling' => 'Packet Scheduling', -+ 'shaping' => 'Traffic Shaping', -+ 'information' => 'Information Elements', -+ 'netdevices' => 'Network Devices', -+ 'comm' => 'Host and Socket Communication', -+ 'ethernet' => 'Ethernet', -+ 'arp' => 'ARP', -+ 'ip' => 'IPv4', -+ 'iproute' => 'IPv4 Routing', -+ 'icmp' => 'ICMP', -+ 'nat' => 'Network Address Translation', -+ 'tcp' => 'TCP', -+ 'udp' => 'UDP', -+ 'app' => 'Applications', -+ 'traces' => 'Trace Manipulation', -+ 'ipmeasure' => 'TCP/IP Measurement', -+ 'aggregates' => 'Aggregates', -+ 'ip6' => 'IPv6', -+ 'ipsec' => 'IPsec', -+ 'crc' => 'CRCs', -+ 'paint' => 'Paint Annotations', -+ 'annotations' => 'Annotations', -+ 'debugging' => 'Debugging', -+ 'control' => 'Control', -+ 'smpclick' => 'Multithreaded Click', -+ 'test' => 'Regression Tests' -+ ); -+my(%section_headers); -+for (my $i = 0; $i < @section_headers; $i += 2) { -+ $section_headers{$section_headers[$i]} = $section_headers[$i+1]; -+} -+ -+my(%default_packages) = -+ ( 'analysis' => 'analysis (core)', -+ 'app' => 'app (core)', -+ 'aqm' => 'aqm (core)', -+ 'bsdmodule' => 'bsdmodule (core)', -+ 'ethernet' => 'ethernet (core)', -+ 'etherswitch' => 'etherswitch (core)', -+ 'grid' => 'grid (core)', -+ 'icmp' => 'icmp (core)', -+ 'ip' => 'ip (core)', -+ 'ip6' => 'ip6 (core)', -+ 'ipsec' => 'ipsec (core)', -+ 'linuxmodule' => 'linuxmodule (core)', -+ 'local' => 'local (core)', -+ 'ns' => 'ns (core)', -+ 'radio' => 'radio (core)', -+ 'simple' => 'simple (core)', -+ 'standard' => 'standard (core)', -+ 'tcpudp' => 'tcpudp (core)', -+ 'test' => 'test (core)', -+ 'userlevel' => 'userlevel (core)', -+ 'wifi' => 'wifi (core)' -+ ); -+ -+# find date -+my($today) = ''; -+if (localtime =~ /\w*\s+(\w*)\s+(\d*)\s+\S*\s+(\d*)/) { -+ $today = "$2/$1/$3"; -+} -+ -+# Unrolling [^A-Z>]|[A-Z](?!<) gives: // MRE pp 165. -+my $nonest = '(?:[^A-Z>]*(?:[A-Z](?!<)[^A-Z>]*)*)'; -+ -+ -+# XXX one paragraph at a time -+ -+my($Filename, $PrimaryElement, @Related, %RelatedSource, @Over, $Begun); -+ -+ -+############ -+## shared ## -+ -+sub textize_add_links ($$) { -+ my($t, $selfref) = @_; -+ my($pos); -+ -+ # embolden & manpageize -+ foreach my $r (@Related) { -+ my $l = length($r); -+ my $result = ($r eq $PrimaryElement ? "$selfref<$r>" : "L<$r>"); -+ for ($pos = index($t, $r); $pos >= 0; $pos = index($t, $r, $pos + 1)) { -+ if (($pos == 0 || substr($t, $pos - 1, 1) =~ /^[^\w@\/<]$/s) -+ && (substr($t, $pos + $l, 1) =~ /^[^\w@\/]$/s)) { -+ substr($t, $pos, $l) = $result; -+ $pos += 2 + $l; -+ } -+ } -+ } -+ $t; -+} -+ -+sub quote_unquoted_gt ($) { -+ my($t) = @_; -+ my($tt, $nest, $pos) = ('', 0); -+ for ($pos = index($t, ">"); $pos >= 0; $pos = index($t, ">")) { -+ my($w) = substr($t, 0, $pos); -+ $nest++ while $w =~ m|[A-Z]<|g; -+ if ($nest) { -+ $tt .= $w . ">"; -+ $nest--; -+ } else { -+ $tt .= $w . "E"; -+ } -+ $t = substr($t, $pos + 1); -+ } -+ $tt . $t; -+} -+ -+ -+########### -+## nroff ## -+ -+my $nroff_prologue = <<'EOD;'; -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+EOD; -+chomp $nroff_prologue; -+ -+my(%nroff_podentities) = -+ ( 'lt' => '<', 'gt' => '>', 'amp' => '&', 'solid' => '/', -+ 'verbar' => '|', 'eq' => '=', 'star' => '*', 'lparen' => '(', -+ 'rparen' => ')', 'lbrack' => '[', 'rbrack' => ']', 'lbrace' => '{', -+ 'rbrace' => '}' ); -+ -+sub nroff_quote ($) { -+ my($x) = @_; -+ $x =~ tr/\000-\177/\200-\377/; -+ $x; -+} -+ -+sub nroff_unentity ($) { -+ my($x) = @_; -+ $x =~ tr/\200-\377/\000-\177/; -+ if ($x =~ /^\d+$/) { -+ chr($x); -+ } elsif ($nroff_podentities{$x}) { -+ $nroff_podentities{$x}; -+ } else { -+ print STDERR "click-elem2man: $Filename: unknown entity E<$x>\n"; -+ ""; -+ } -+} -+ -+sub nroff_fixfP ($$) { -+ my($x, $f) = @_; -+ $x =~ s/\\fP/\\f$f/g; -+ $x; -+} -+ -+sub nroffize_text ($) { -+ my($t) = @_; -+ my($s); -+ -+ # embolden & manpageize -+ $t = textize_add_links($t, 'L'); -+ -+ $t =~ s/\\/\\\\/g; -+ $t =~ s/^\./\\&./gm; -+ $t =~ s/^'/\\&'/gm; -+ $t =~ s/^\s*$/.PP\n/gm; -+ $t =~ s/^\.PP\n(?:\.PP\n)+/.PP\n/gm; -+ $t =~ s{\A\s*(?:\.PP\n)?}{}s; -+ if (@Over > 0) { -+ $t =~ s/^\.PP$/.IP \"\" $Over[-1]/gm; -+ } -+ -+ # get rid of entities -+ $t =~ s{[\200-\377]}{"E<" . ord($1) . ">"}ge; -+ $t =~ s{(E<[^>]*>)}{nroff_quote($1)}ge; -+ -+ my $maxnest = 10; -+ while ($maxnest-- && $t =~ /[A-Z]/"\\f$1" . nroff_fixfP($2, $1) . "\\fP"/eg; -+ $t =~ s/[PU]<($nonest)>/$1/g; -+ -+ # files and filelike refs in italics -+ $t =~ s/F<($nonest)>/I<$1>/g; -+ -+ # LREF: man page references -+ $t =~ s{L<($nonest)\(([\dln])\)>(\S*)(\s*)}{\n.M $1 $2 $3\n}g; -+ -+ $t =~ s/V<($nonest)>//g; -+ -+ # LREF: a la HREF L -+ $t =~ s{L<($nonest)>(\S*)(\s*)}{ -+ if (($s = $RelatedSource{$1})) { -+ "\n.M $1 \"$s\" $2\n"; -+ } else { -+ my $i = index($1, "|"); -+ ($i >= 0 ? substr($1, 0, $i) . $2 . $3 : "\\fB$1\\fP$2$3"); -+ } -+ }eg; -+ -+ $t =~ s/Z<>/\\&/g; -+ $t =~ s/N<>(\n?)/\n.br\n/g; -+ -+ # comes last because not subject to reprocessing -+ $t =~ s/C<($nonest)>/"\\f(CW" . nroff_fixfP($1, 'R') . "\\fP"/eg; -+ } -+ -+ # replace entities -+ $t =~ s/\305\274([^\276]*)\276/nroff_unentity($1)/ge; -+ -+ # fix fonts -+ $t =~ s/\\fP/\\fR/g; -+ -+ # fix manual -+ $t =~ s/\n\.M (\S+) \"(\S+)\" (\(\2\))/\n.M $1 \"$2\" /sg; -+ -+ $t =~ s/\n+/\n/sg; -+ $t =~ s/^\n+//; -+ $t =~ s/\n+$//; -+ -+ $t; -+} -+ -+sub nroffize ($) { -+ my($t) = @_; -+ # $t cannot contain \t, as all \ts have been expanded to spaces below -+ -+ #$t =~ s{\n[ \r]+$}{\n}gm; -+ -+ if ($t =~ /^ /m) { -+ # worry about verbatims -+ $t =~ s/^( .*)\n(\n+)(?= )/$1 . "\n" . (" \n" x length($2))/mge; -+ my(@x) = split(/(^ .*$)/m, $t); -+ my($o, $i) = ''; -+ for ($i = 0; $i < @x; $i += 2) { -+ if ($x[$i]) { -+ $o .= nroffize_text($x[$i]) . "\n"; -+ } -+ if ($x[$i+1]) { -+ $x[$i+1] =~ s/\\/\\e/g; -+ $o .= ".nf\n\\&" . $x[$i+1] . "\n.fi\n.PP\n"; -+ } -+ } -+ $o =~ s/\n\.fi\n\.PP\n\n\.nf\n/\n/g; -+ if (@Over > 0) { -+ $o =~ s/^\.PP$/.IP \"\" $Over[-1]/gm; -+ } -+ $o; -+ } else { -+ nroffize_text($t); -+ } -+} -+ -+sub nroff_do_section ($$$) { -+ my($name, $args, $text) = @_; -+ if (!exists($xsection_takes_args{$name})) { -+ print STDERR "click-elem2man: $Filename: unknown section '=$name' ignored\n"; -+ return; -+ } -+ print STDERR "click-elem2man: $Filename: section '=$name' requires arguments\n" -+ if ($xsection_takes_args{$name} && !$args); -+ -+ # handle '=begin' .. '=end' -+ if ($name eq 'end') { -+ undef $Begun; -+ } elsif ($Begun && ($Begun eq 'man' || $Begun eq 'roff')) { -+ print OUT '=', $name, ($args ? ' ' . $args : ''), "\n", $text; -+ return; -+ } elsif ($Begun) { -+ return; -+ } -+ -+ if ($name eq 'head1') { -+ print OUT ".SH \"", nroffize($args), "\"\n"; -+ } elsif ($name eq 'head2') { -+ print OUT ".SS \"", nroffize($args), "\"\n"; -+ } elsif ($name eq 'over') { -+ if ($args =~ /^\s*(\d+)\s*$/s) { -+ print OUT ".RS $Over[-1]\n" if @Over; -+ push @Over, $1; -+ } else { -+ print STDERR "click-elem2man: $Filename: bad arguments to '=over'\n"; -+ } -+ } elsif ($name eq 'item') { -+ if (@Over == 0) { -+ print STDERR "click-elem2man: $Filename: '=item' outside any '=over' section\n"; -+ } else { -+ print OUT ".IP \"", nroffize($args), "\" $Over[-1]\n"; -+ } -+ } elsif ($name eq 'back') { -+ my($overarg); -+ if ($args =~ /^\s*(\d+)\s*$/s) { -+ $overarg = $1; -+ } elsif ($args !~ /^\s*$/s) { -+ print STDERR "click-elem2man: $Filename: bad arguments to '=back'\n"; -+ } -+ if (@Over == 0) { -+ print STDERR "click-elem2man: $Filename: too many '=back's\n"; -+ } else { -+ my($over) = pop @Over; -+ print OUT ".RE\n" if @Over; -+ print OUT (@Over ? ".IP \"\" $Over[-1]\n" : ".PP\n"); -+ print STDERR "click-elem2man: $Filename: '=back $overarg' paired with '=over $over'\n" -+ if defined($overarg) && $over != $overarg; -+ } -+ } elsif ($name eq 'for') { -+ my($fortext); -+ if ($text =~ /^(.*)\n\s*\n(.*)$/s) { -+ ($fortext, $text) = ($1, $2); -+ } else { -+ ($fortext, $text) = ($text, ''); -+ } -+ if ($args =~ /^\s*(man|roff)\s*(.*)/) { -+ print OUT $2, $fortext; -+ } -+ } elsif ($name eq 'begin') { -+ $Begun = $args; -+ $Begun =~ s/^\s*(\S+).*/$1/; -+ if ($Begun eq 'man' || $Begun eq 'roff') { -+ print OUT $text; -+ } -+ return; -+ } elsif ($name eq 'start!') { -+ print OUT <<"EOD;"; -+.\\" -*- mode: nroff -*- -+.\\" Generated by 'click-elem2man' from '$Filename' -+$nroff_prologue -+.TH "\U$text\E" $args "$today" "Click" -+EOD; -+ return; -+ } elsif ($name eq 'name!') { -+ print OUT <<"EOD;"; -+.SH "NAME" -+$args \\- $text -+EOD; -+ return; -+ } elsif ($name eq 'end!') { -+ return; -+ } -+ -+ print OUT nroffize($text), "\n"; -+ print OUT "\n" if $name eq 'head1'; -+} -+ -+ -+############## -+## dokuwiki ## -+ -+my($dokuwiki_dl); -+ -+my(%dokuwiki_podentities) = -+ ( 'lt' => '<', 'gt' => "\xFF\xFF", 'amp' => '&', 'solid' => '/', -+ 'verbar' => '|', 'eq' => '=', 'star' => '*', 'lparen' => '(', -+ 'rparen' => ')', 'lbrack' => '[', 'rbrack' => ']', 'lbrace' => '{', -+ 'rbrace' => '}' ); -+my($dokuwiki_sensitive_char) = "[!%'\\(\\)\\*\\+/?\\[\\\\\\]_\\{\\}]"; -+ -+sub dokuwiki_unentity ($) { -+ my($x) = @_; -+ if ($x =~ /^\d+$/) { -+ $x = pack 'U', $x; -+ if ($x =~ /\A$dokuwiki_sensitive_char\Z/) { -+ "%%$x%%"; -+ } else { -+ $x; -+ } -+ } elsif ($dokuwiki_podentities{$x}) { -+ $dokuwiki_podentities{$x}; -+ } else { -+ print STDERR "click-elem2man: $Filename: unknown entity E<$x>\n"; -+ ""; -+ } -+} -+ -+sub dokuwiki_quotedbl ($) { -+ my($x) = @_; -+ $x =~ s/^(.)/\%\%$1\%\%/; -+ $x; -+} -+ -+sub dokuwiki_surround ($$) { -+ my($text, $chr) = @_; -+ my($re) = "\\$chr\\$chr"; -+ $text =~ s{$re}{}g; -+ "$chr$chr$text$chr$chr"; -+} -+ -+sub dokuwikiize_text ($) { -+ my($t) = @_; -+ -+ # embolden & manpageize -+ $t = textize_add_links($t, 'P'); -+ -+ # get rid of entities -+ $t =~ s{E<([^>]*)>}{dokuwiki_unentity($1)}ge; -+ $t =~ s{($dokuwiki_sensitive_char)}{^$1^}g; -+ -+ my $maxnest = 10; -+ while ($maxnest-- && $t =~ /[A-Z]/dokuwiki_surround($1, "*")/eg; -+ $t =~ s.I<($nonest)>.dokuwiki_surround($1, "/").eg; -+ $t =~ s.U<($nonest)>.dokuwiki_surround($1, "_").eg; -+ $t =~ s/P<($nonest)>/$1/g; -+ $t =~ s/C<($nonest)>/dokuwiki_surround($1, "'")/eg; -+ -+ # files and filelike refs in italics -+ $t =~ s/F<($nonest)>/I<$1>/g; -+ -+ # LREF: man page references -+ $t =~ s{L<($nonest)\^\(\^[\dln]\^\)\^>}{[[$1]]}g; -+ $t =~ s{L<($nonest)>\^\(\^[\dln]\^\)\^}{[[$1]]}g; -+ -+ # LREF: a la HREF L -+ $t =~ s{L<($nonest)\|($nonest)>}{[[$2|$1]]}g; -+ $t =~ s{L<($nonest)>}{[[$1]]}g; -+ -+ $t =~ s/V<($nonest)>//g; -+ $t =~ s/Z<>//g; -+ $t =~ s/N<>(\n?)/\\\\ /g; -+ } -+ -+ $t =~ s/\n+/\n/sg; -+ $t =~ s/^\n+//; -+ $t =~ s/\n+$//; -+ $t =~ s/\xFF\xFF/>/g; -+ -+ $t =~ s{^(\s*)\^([?!])\^}{$1 . dokuwiki_quotedbl($2)}egm; -+ $t =~ s{($dokuwiki_sensitive_char)\^\1\^}{$1 . dokuwiki_quotedbl($1)}eg; -+ $t =~ s{\^($dokuwiki_sensitive_char)\^\1}{dokuwiki_quotedbl($1) . $1}eg; -+ $t =~ s{\^($dokuwiki_sensitive_char)\^}{$1}g; -+ -+ # remove self references -+ $t =~ s{\[\[$PrimaryElement\]\]}{$PrimaryElement}g; -+ -+ $t; -+} -+ -+sub dokuwikiize ($) { -+ my($t) = @_; -+ # $t cannot contain \t, as all \ts have been expanded to spaces below -+ -+ if ($t =~ /^ /m) { -+ # worry about verbatims -+ $t =~ s/^( .*)\n(\n+)(?= )/$1 . "\n" . (" \n" x length($2))/mge; -+ my(@x) = split(/(^ .*$)/m, $t); -+ my($o, $i) = ''; -+ for ($i = 0; $i < @x; $i += 2) { -+ if ($x[$i]) { -+ $o .= dokuwikiize_text($x[$i]); -+ $o .= "\n" if $o !~ /\n\Z/; -+ } -+ if ($x[$i+1]) { -+ $o .= " " . $x[$i+1] . "\n"; -+ } -+ } -+ $o; -+ } else { -+ dokuwikiize_text($t); -+ } -+} -+ -+sub dokuwiki_do_section ($$$) { -+ my($name, $args, $text) = @_; -+ if (!exists($xsection_takes_args{$name})) { -+ print STDERR "click-elem2man: $Filename: unknown section '=$name' ignored\n"; -+ return; -+ } -+ print STDERR "click-elem2man: $Filename: section '=$name' requires arguments\n" -+ if ($xsection_takes_args{$name} && !$args); -+ -+ # handle '=begin' .. '=end' -+ if ($name eq 'end') { -+ undef $Begun; -+ } elsif ($Begun && $Begun eq 'dokuwiki') { -+ print OUT '=', $name, ($args ? ' ' . $args : ''), "\n", $text; -+ return; -+ } elsif ($Begun) { -+ return; -+ } -+ -+ if ($name eq 'head1') { -+ print OUT "\n===== ", dokuwikiize($args), " =====\n\n"; -+ } elsif ($name eq 'head2') { -+ print OUT "\n==== ", dokuwikiize($args), " ====\n\n"; -+ } elsif ($name eq 'over') { -+ if ($args =~ /^\s*(\d+)\s*$/s) { -+ push @Over, $1; -+ } else { -+ print STDERR "click-elem2man: $Filename: bad arguments to '=over'\n"; -+ } -+ } elsif ($name eq 'item') { -+ if (@Over == 0) { -+ print STDERR "click-elem2man: $Filename: '=item' outside any '=over' section\n"; -+ } else { -+ print OUT "\n", ' ' x @Over, "? " if $dokuwiki_dl; -+ print OUT dokuwikiize("B<" . quote_unquoted_gt($args) . ">"); -+ print OUT ($dokuwiki_dl ? "\n" : "\n\n"); -+ } -+ } elsif ($name eq 'back') { -+ my($overarg); -+ if ($args =~ /^\s*(\d+)\s*$/s) { -+ $overarg = $1; -+ } elsif ($args !~ /^\s*$/s) { -+ print STDERR "click-elem2man: $Filename: bad arguments to '=back'\n"; -+ } -+ if (@Over == 0) { -+ print STDERR "click-elem2man: $Filename: too many '=back's\n"; -+ } else { -+ my($over) = pop @Over; -+ print STDERR "click-elem2man: $Filename: '=back $overarg' paired with '=over $over'\n" -+ if defined($overarg) && $over != $overarg; -+ } -+ } elsif ($name eq 'for') { -+ my($fortext); -+ if ($text =~ /^(.*)\n\s*\n(.*)$/s) { -+ ($fortext, $text) = ($1, $2); -+ } else { -+ ($fortext, $text) = ($text, ''); -+ } -+ if ($args =~ /^\s*dokuwiki\s*(.*)/) { -+ print OUT $2, $fortext; -+ } -+ } elsif ($name eq 'begin') { -+ $Begun = $args; -+ $Begun =~ s/^\s*(\S+).*/$1/; -+ if ($Begun eq 'dokuwiki') { -+ print OUT $text; -+ } -+ return; -+ } elsif ($name eq 'start!') { -+ return; -+ } elsif ($name eq 'name!') { -+ print OUT <<"EOD;"; -+====== $args Element Documentation ====== -+ -+===== NAME ===== -+ -+**$args** -- $text -+EOD; -+ return; -+ } elsif ($name eq 'end!') { -+ print OUT "\n\nGenerated by 'click-elem2man' from '$Filename' on $today.\n"; -+ return; -+ } -+ -+ print OUT ' ' x @Over, "! " if $text =~ /\S/ && @Over && $dokuwiki_dl; -+ print OUT dokuwikiize($text), "\n"; -+ print OUT "\n" if $name eq 'head1'; -+} -+ -+ -+########### -+## main ## -+ -+my $do_section_func = \&nroff_do_section; -+my $do_text_func = \&nroffize; -+my $filename_func; -+ -+sub do_section ($$$) { -+ my($name, $args, $text) = @_; -+ my(@text) = split(/^(=\w.*)$/m, $text); -+ push @text, '' if !@text; -+ my($i); -+ @Over = (); -+ undef $Begun; -+ for ($i = 0; $i < @text; ) { -+ &$do_section_func($name, $args, $text[$i]); -+ ($name, $args) = ($text[$i+1] =~ /=(\w+)\s*(.*)/) -+ if ($i < @text - 1); -+ $i += 2; -+ } -+ &$do_section_func('back', '', '') while @Over; -+ print STDERR "click-elem2man: $Filename: '=begin' not closed by end of section\n" -+ if $Begun; -+} -+ -+sub process_processing ($) { -+ my($t) = @_; -+ return undef if !defined($t); -+ if (exists($processing_constants{$t})) { -+ $t = $processing_constants{$t}; -+ } -+ $t =~ tr/\" \t//d; -+ $t =~ s{\A([^/]*)\Z}{$1/$1}; -+ $processing_text{$t}; -+} -+ -+sub process_one_portcount ($$) { -+ my($t, $type) = @_; -+ if ($t eq '0') { -+ "no ${type}s"; -+ } elsif ($t eq '-') { -+ "any number of ${type}s"; -+ } elsif ($t eq '1') { -+ "1 $type"; -+ } elsif ($t eq '=') { -+ "the same number of ${type}s"; -+ } elsif ($t =~ /^=(\++)$/) { -+ length($1) . " more $type"; -+ } elsif ($t =~ /^0?-1$/) { -+ "at most 1 $type"; -+ } elsif ($t =~ /^0?-(.*)/) { -+ "at most $1 ${type}s"; -+ } elsif ($t =~ /^(\d+)-$/) { -+ "$1 or more ${type}s"; -+ } else { -+ "$t ${type}s"; -+ } -+} -+ -+sub process_portcount ($) { -+ my($t) = @_; -+ $t = "$t/$t" if $t !~ /\//; -+ return 'none' if $t eq '0/0'; -+ my($i, $o) = split(/\//, $t); -+ process_one_portcount($i, "input") . ", " . process_one_portcount($o, "output"); -+} -+ -+sub process_summary_section ($$) { -+ my($summary, $file) = @_; -+ my($i); -+ foreach $i (split(/,/, $summary)) { -+ $i =~ s/^\s*//; -+ $i =~ s/\s*$//; -+ $i = $section_headers{$i} if exists $section_headers{$i}; -+ next if !$i; -+ push @{$summaries_by_section{$i}}, $file; -+ } -+} -+ -+sub process_drivers ($) { -+ my($driv) = @_; -+ my(@d, $d); -+ foreach $d ('userlevel', 'linuxmodule', 'bsdmodule', 'ns') { -+ push @d, $d if $driv =~ /\b$d\b/; -+ } -+ join(', ', @d); -+} -+ -+sub insert_section (\@\@\@$$$$) { -+ my($sn, $sa, $st, $i, $n, $a, $t) = @_; -+ splice @$sn, $i, 0, $n; -+ splice @$sa, $i, 0, $a; -+ splice @$st, $i, 0, $t; -+} -+ -+sub insert_section2 (\@\@\@$$$\%@) { -+ my($sn, $sa, $st, $n, $a, $t, $fis, @x) = @_; -+ my($pos); -+ foreach $pos (@x) { -+ if (exists $fis->{$pos}) { -+ insert_section(@$sn, @$sa, @$st, $fis->{$pos} + 1, $n, $a, $t); -+ $fis->{$n} = $fis->{$pos} + 1; -+ return; -+ } -+ } -+} -+ -+sub process_comment ($$) { -+ my($t, $filename) = @_; -+ my($i); -+ $Filename = $filename; -+ -+ # split document into sections -+ my(@section_text, @section_args, @section_name, $bad_section, $ref); -+ $ref = \$bad_section; -+ while ($t =~ m{^=(\w+)( *)(.*)([\0-\377]*?)(?=^=\w|\Z)}mg) { -+ if ($section_break{$1}) { -+ insert_section(@section_name, @section_args, @section_text, -+ @section_name, $1, $3, $4); -+ $ref = \$section_text[-1]; -+ } else { -+ $$ref .= '=' . $1 . $2 . $3 . $4; -+ } -+ } -+ -+ # check document for sectioning errors -+ print STDERR "click-elem2man: $Filename: warning: comment does not start with section\n" -+ if $bad_section; -+ my(%num_sections, %first_in_section); -+ foreach $i (0..$#section_name) { -+ my($n) = $section_name[$i]; -+ print STDERR "click-elem2man: $Filename: warning: section '=$n' requires arguments\n" -+ if $section_takes_args{$n} == 1 && !$section_args[$i]; -+ print STDERR "click-elem2man: $Filename: warning: section '=$n' arguments ignored\n" -+ if $section_takes_args{$n} == 0 && $section_args[$i]; -+ print STDERR "click-elem2man: $Filename: warning: empty section '=$n'\n" -+ if $section_takes_text{$n} == 1 && !$section_text[$i]; -+ print STDERR "click-elem2man: $Filename: warning: section '=$n' text ignored\n" -+ if $section_takes_text{$n} == 0 && $section_text[$i] =~ /\S/; -+ $num_sections{$n}++; -+ $first_in_section{$n} = $i if $num_sections{$n} == 1; -+ } -+ foreach $i ('a', 'c', 'd', 'n', 'e', 'title', 'io', 'processing', 'drivers') { -+ print STDERR "click-elem2man: $Filename: warning: multiple '=$i' sections; some may be ignored\n" -+ if $num_sections{$i} && $num_sections{$i} > 1; -+ } -+ -+ # read class names from configuration arguments section -+ $i = $first_in_section{'c'}; -+ if (!defined($i)) { -+ print STDERR "click-elem2man: $Filename: section '=c' missing; cannot continue\n"; -+ return; -+ } -+ my(@classes, %classes); -+ while ($section_text[$i] =~ /^\s*(\w+)\(/mg) { -+ push @classes, $1 if !exists $classes{$1}; -+ $classes{$1} = 1; -+ } -+ if (!@classes && $section_text[$i] =~ /^\s*([\w@]+)\s*$/) { -+ push @classes, $1; -+ $classes{$1} = 1; -+ } -+ if (!@classes) { -+ print STDERR "click-elem2man: $Filename: no class definitions\n (did you forget '()' in the =c section?)\n"; -+ return; -+ } -+ my($Title) = $classes[0]; -+ -+ # output filenames might be specified in 'title' section -+ my(@outfiles, @outsections, $title); -+ if (defined($first_in_section{'title'})) { -+ $title = $section_args[ $first_in_section{'title'} ]; -+ if (!$title) { -+ print STDERR "click-elem2man: $Filename: '=title' section present, but empty\n"; -+ return; -+ } -+ if ($title =~ /[^-.\w@+,]/) { -+ print STDERR "click-elem2man: $Filename: strange characters in '=title', aborting\n"; -+ return; -+ } -+ foreach $i (split(/\s+/, $title)) { -+ if ($i =~ /^(.*)\((.*)\)$/) { -+ push @outfiles, $1; -+ push @outsections, $2; -+ $Title = $1; -+ } else { -+ push @outfiles, $i; -+ push @outsections, $section; -+ $Title = $i; -+ } -+ } -+ } else { -+ $title = join(', ', @classes); -+ @outfiles = @classes; -+ @outsections = ($section) x @classes; -+ } -+ -+ # open new output file if necessary -+ my($main_outname); -+ if ($filename_func) { -+ $main_outname = &$filename_func($outfiles[0], $outsections[0]); -+ if ($uninstall) { -+ print STDERR "Uninstalled $main_outname\n" if $verbose; -+ unlink($main_outname); -+ open(OUT, ">/dev/null"); -+ } elsif (open(OUT, ">$main_outname")) { -+ print STDERR "Writing to $main_outname\n" if $verbose; -+ } else { -+ print STDERR "$main_outname: $!\n"; -+ return; -+ } -+ } -+ push @all_outfiles, $outfiles[0]; -+ $all_outsections{$outfiles[0]} = $outsections[0]; -+ $PrimaryElement = $outfiles[0]; -+ -+ # prepare related -+ %RelatedSource = (); -+ $i = $first_in_section{'a'}; -+ if (defined($i)) { -+ $section_text[$i] = $section_args[$i] . $section_text[$i] -+ if $section_args[$i]; -+ if ($section_text[$i] =~ /\A\s*(.*?)(\n\s*\n.*\Z|\Z)/s) { -+ my($bit, $last) = ($1, $2); -+ while ($bit =~ m{(\b[A-Z][-\w@.+=]+)([,\s]|\Z)}g) { -+ $RelatedSource{$1} = 'n'; -+ } -+ $bit =~ s{([-\w@.+=]+)([,\s]|\Z)}{$1(n)$2}g; -+ while ($bit =~ m{([-\w@.+=]+\(([0-9ln])\))}g) { -+ $RelatedSource{$1} = $2; -+ } -+ $section_text[$i] = $bit . $last; -+ } -+ } -+ map(delete $RelatedSource{$_}, @outfiles); -+ @Related = sort { length($b) <=> length($a) } (keys %RelatedSource, @classes); -+ -+ # front matter -+ my($oneliner) = (@classes == 1 ? "Click element" : "Click elements"); -+ $i = $first_in_section{'s'}; -+ my($summary_section) = ''; -+ if (defined($i)) { -+ $summary_section = $section_args[$i]; -+ process_summary_section($summary_section, $outfiles[0]); -+ $section_text[$i] =~ s/\n\s*\n/\n/g; -+ my($t) = &$do_text_func($section_text[$i]); -+ $oneliner .= ";\n" . $t; -+ $oneliner =~ s/\n(^\.)/ /g; -+ $all_roff_summaries{$outfiles[0]} = $t . "\n"; -+ } else { -+ # avoid uninitialized value warns -+ $all_roff_summaries{$outfiles[0]} = ''; -+ } -+ -+ # deprecation -+ if (defined($first_in_section{'deprecated'})) { -+ $deprecated{$outfiles[0]} = $section_text[$first_in_section{'deprecated'}]; -+ } -+ -+ # package -+ if (!defined($first_in_section{'package'}) && defined($package)) { PACKAGE: { -+ my($pkg) = $package; -+ if ($pkg eq 'DEFAULT') { -+ $pkg = $1 if $Filename =~ m|\belements/(\w+)/|; -+ $pkg = 'standard' if $Filename =~ m|\binclude/click/standard/|; -+ last PACKAGE if $pkg eq 'DEFAULT'; -+ $pkg = exists($default_packages{$pkg}) ? $default_packages{$pkg} : $pkg; -+ } -+ insert_section2(@section_name, @section_args, @section_text, -+ 'package', '', $pkg, -+ %first_in_section, 'drivers', 'processing', 'io', 'c'); -+ }} -+ -+ # drivers -+ my($drivers); -+ if ($docrequires{$Title} -+ && ($drivers = process_drivers($docrequires{$Title})) -+ && !defined($first_in_section{'drivers'})) { -+ insert_section2(@section_name, @section_args, @section_text, -+ 'drivers', '', $drivers, -+ %first_in_section, 'processing', 'io', 'c'); -+ } -+ -+ # processing -+ if (!defined($first_in_section{'processing'})) { PROCESSING: { -+ # can we figure out the processing type? -+ last PROCESSING -+ if (defined($first_in_section{'io'}) && $section_text[$first_in_section{'io'}] =~ /None/i) || (defined($portcount{$Title}) && ($portcount{$Title} eq '0' || $portcount{$Title} eq '0/0')); -+ my($ptype) = process_processing($processing{$Title}); -+ insert_section2(@section_name, @section_args, @section_text, -+ 'processing', '', $ptype, -+ %first_in_section, 'io', 'c') if $ptype; -+ }} -+ -+ # input/output -+ if (!defined($first_in_section{'io'})) { PORTCOUNT: { -+ last PORTCOUNT if !defined($portcount{$Title}); -+ insert_section2(@section_name, @section_args, @section_text, -+ 'io', '', process_portcount($portcount{$Title}), -+ %first_in_section, 'c'); -+ }} -+ -+ # initial sections -+ insert_section(@section_name, @section_args, @section_text, -+ 0, 'start!', $outsections[0], $title); -+ insert_section(@section_name, @section_args, @section_text, -+ 1, 'name!', $title, $oneliner); -+ insert_section(@section_name, @section_args, @section_text, -+ @section_name, 'end!', $outsections[0], $title); -+ -+ # output -+ my($special_section) = 0; -+ for ($i = 0; $i < @section_text; $i++) { -+ my($s) = $section_name[$i]; -+ my($x) = $section_text[$i]; -+ my($was_special_section) = $special_section; -+ $special_section = 0; -+ -+ if ($s eq 'c') { -+ $x =~ s{(\S\s*)\n}{$1N<>\n}g; -+ $x =~ s{N<>\n*\z}{}; -+ do_section('head1', 'SYNOPSIS', $x); -+ } elsif ($s eq 'package' || $s eq 'io' || $s eq 'processing' -+ || $s eq 'drivers') { -+ $x =~ s/\A\s+//; -+ $x =~ s/\s+\Z//; -+ do_section('text', '', 'B<' . $infosection_name{$s} . '>: ' . $x . 'N<>'); -+ } elsif ($s eq 'io') { -+ do_section('head1', 'INPUTS AND OUTPUTS', $x); -+ } elsif ($s eq 'processing') { -+ do_section('head1', 'PROCESSING TYPE', $x); -+ } elsif ($s eq 'd') { -+ do_section('head1', 'DESCRIPTION', $x); -+ } elsif ($s eq 'n') { -+ do_section('head1', 'NOTES', $x); -+ } elsif ($s eq 'e') { -+ do_section('head1', 'EXAMPLES', $x); -+ } elsif ($s eq 'h') { -+ my($t) = "=over 5\n"; -+ while ($i < @section_text && $section_name[$i] eq 'h') { -+ if ($section_args[$i] =~ /\A\s*(.*?)\s*"(.*?)"\s*\Z/ -+ || $section_args[$i] =~ /\A\s*(.*?)\s*(\S+)\s*\Z/) { -+ $t .= "=item B<$1> ($2)\n"; -+ } else { -+ print STDERR "click-elem2man: $Filename: bad handler section arguments ('=h $section_args[$i]')\n"; -+ $t .= "=item B<$section_args[$i]>\n"; -+ } -+ $t .= $section_text[$i] . "\n"; -+ $i++; -+ } -+ $i--; -+ do_section('head1', 'ELEMENT HANDLERS', $t); -+ } elsif ($s eq 'a') { -+ do_section('head1', 'SEE ALSO', $x); -+ } elsif ($s eq 'title' || $s eq 's' || $s eq 'deprecated') { -+ # nada -+ } else { -+ do_section($s, $section_args[$i], $x); -+ } -+ } -+ -+ # close output file & make links if appropriate -+ if ($filename_func) { -+ close OUT; -+ for ($i = 1; $i < @outfiles; $i++) { -+ my($outname) = &$filename_func($outfiles[$i], $outsections[$i]); -+ print STDERR "Unlinking $outname\n" if $verbose; -+ unlink($outname); -+ if ($uninstall) { -+ # do nothing -+ } elsif (link $main_outname, $outname) { -+ print STDERR "Linked $outname\n" if $verbose; -+ push @all_outfiles, $outfiles[$i]; -+ $all_outsections{$outfiles[$i]} = $outsections[$i]; -+ process_summary_section($summary_section, $outfiles[$i]); -+ $all_roff_summaries{$outfiles[$i]} = $all_roff_summaries{$outfiles[0]}; -+ } else { -+ print STDERR "click-elem2man: $outname: $!\n"; -+ } -+ } -+ } -+} -+ -+sub process_file ($;$) { -+ my($filename, $text) = @_; -+ -+ print STDERR "Attempting $filename...\n" if $verbose; -+ $filename = "include/$1" if !-e $filename && $filename =~ /^<(.*)>$/s; -+ $filename = "$PREFIX/$filename" if !-e $filename && defined($PREFIX); -+ return if !-e $filename; -+ print STDERR "Found $filename\n" if $verbose; -+ if (!defined($text)) { -+ if (!open(IN, $filename)) { -+ print STDERR "click-elem2man: $filename: $!\n"; -+ return; -+ } -+ $text = ; -+ close IN; -+ } -+ -+ print "$filename??\n" if !defined $text; -+ foreach $_ (split(m{(/\*.*?\*/)}s, $text)) { -+ if (/^\/\*/m && /^[\/*\s]+=/m) { -+ s/^(.*?)\t/$1 . (' ' x (8 - (length($1) % 8)))/egm while /\t/; -+ s/^\/\*\s*//g; -+ s/\s*\*\/$//g; -+ s/^ ?\* ?//gm; -+ process_comment($_, $filename); -+ } -+ } -+} -+ -+sub xmlunquote ($) { -+ my($x) = @_; -+ if ($x =~ /&/) { -+ $x =~ s/<//g; -+ $x =~ s/&/&/g; -+ $x =~ s/&#([0-9]+);/chr($1)/eg; -+ $x =~ s/&#x([0-9a-zA-Z]+);/chr(oct("0x$1"))/eg; -+ } -+ $x; -+} -+ -+sub read_elementmap_text ($;$) { -+ my($text, $headerhash) = @_; -+ $headerhash = {} if !defined($headerhash); -+ local($_); -+ foreach $_ (split(/\n+/, $text)) { -+ next if !/^{xmlunquote($hf)} = 1 if defined($hf); -+ } -+ } -+} -+ -+sub read_elementmap ($;$) { -+ my($fn, $headerhash) = @_; -+ open(E, $fn) || die "$fn: $!\n"; -+ local($/) = undef; -+ read_elementmap_text(, $headerhash); -+ close E; -+} -+ -+sub process_file_set ($$) { -+ my($fn, $fnhash) = @_; -+ if (open(IN, ($fn eq '-' ? "<&STDIN" : $fn))) { -+ my(@a, @b, $t, $x); -+ $t = ; -+ close IN; -+ -+ # Parse file; click-buildtool gets special treatment -+ if ($t =~ /\A#.*click-buildtool findelem/) { -+ $t =~ s/^#.*//mg; -+ foreach $_ (split(/\n+/, $t)) { -+ if (/^\S+\s+<(\S+?)>/) { -+ $fnhash->{"include/$1"} = 1; -+ } elsif (/^\S+\s+"(\S+?)"/) { -+ $fnhash->{$1} = 1; -+ } else { -+ s/.cc$/.hh/; -+ $fnhash->{$_} = 1; -+ } -+ } -+ } elsif ($t =~ /\A<\?xml/) { -+ read_elementmap_text($t, $fnhash); -+ } elsif ($t =~ /[\(\)]/) { -+ die if $fn eq '-'; -+ $fnhash->{$fn} = 1; -+ } else { -+ $t =~ s/^#.*//mg; -+ foreach $_ (split(/\s+/, $t)) { -+ if ($t =~ /[*?\[]/) { -+ foreach my $x (glob($t)) { -+ $fnhash->{$x} = 1; -+ } -+ } else { -+ $fnhash->{$_} = 1; -+ } -+ } -+ } -+ } else { -+ print STDERR "click-elem2man: $fn: $!\n"; -+ } -+} -+ -+sub uniq (@) { -+ my(@a, $x); -+ foreach $x (@_) { -+ push @a, $x if !@a || $a[-1] ne $x; -+ } -+ @a; -+} -+ -+ -+sub driver_requirement ($) { -+ my($req) = @_; -+ my($d) = 0; -+ $d |= 1 if $req =~ /\buserlevel\b/; -+ $d |= 2 if $req =~ /\blinuxmodule\b/; -+ $d |= 4 if $req =~ /\bbsdmodule\b/; -+ $d |= 8 if $req =~ /\bns\b/; -+ $d ? $d : 15; -+} -+ -+my(%requires_fixed); -+sub fix_one_requires ($) { -+ my($req) = @_; -+ my($driver) = driver_requirement($req); -+ -+ my($t, $i); -+ my($changes) = ''; -+ foreach $t (split(/\s+/, $req)) { -+ if (defined($requires{$t})) { -+ my($treq) = $requires{$t}; -+ if (!$requires_fixed{$t}) { -+ $requires_fixed{$t} = 1; -+ for ($i = 0; $i < @$treq; $i++) { -+ $treq->[$i] = &fix_one_requires($treq->[$i]); -+ } -+ } -+ for ($i = 0; $i < @$treq; $i++) { -+ if ($driver & driver_requirement($treq->[$i])) { -+ $changes .= " " . $treq->[$i]; -+ } -+ } -+ } -+ } -+ -+ if ($changes) { -+ join(' ', uniq(sort {$a cmp $b} split(/\s+/, $req . $changes))); -+ } else { -+ $req; -+ } -+} -+ -+sub fix_requires () { -+ my($k); -+ foreach $k (keys %docrequires) { -+ $docrequires{$k} = fix_one_requires($docrequires{$k}); -+ } -+} -+ -+ -+# main program: parse options -+ -+sub usage () { -+ print STDERR "Usage: click-elem2man [OPTIONS] FILES... -+Try 'click-elem2man --help' for more information.\n"; -+ exit 1; -+} -+ -+sub help () { -+ print STDERR <<"EOD;"; -+'Click-elem2man' translates Click element documentation into manual pages. -+ -+Usage: click-elem2man [-l | -L] [-d DIRECTORY] FILE... -+ -+Each FILE is a Click header file, a list of Click header files, or the -+output of click-mkelemmap. '-' means standard input. -+ -+Options: -+ -f, --files FILE Read header filenames from FILE. -+ -e, --elementmap EMAP Read information about other elements from EMAP. -+ -d, --directory DIR Place generated manual pages in directory DIR. -+ -P, --package PKG Elements are in PKG package, or say 'DEFAULT'. -+ -l, --list Generate the elements(n) manual page as well. -+ -L, --extend-list Extend an existing elements(n) manual page. -+ -p, --prefix PFX Look for header files in PFX after looking in '.'. -+ --dokuwiki Generate dokuwiki source instead of manual pages. -+ --dokuwiki-dl Generate dokuwiki source using dl plugin. -+ -u, --uninstall Remove existing manual pages. -+ -h, --help Print this message and exit. -+ -+Report bugs to . -+EOD; -+ exit 0; -+} -+ -+undef $/; -+my(@files, $fn, $elementlist, $any_files, $directory, $output_type); -+$output_type = 'nroff'; -+ -+while (@ARGV) { -+ $_ = shift @ARGV; -+ if (/^-d$/ || /^--directory$/) { -+ usage() if !@ARGV; -+ $directory = shift @ARGV; -+ } elsif (/^--directory=(.*)$/) { -+ $directory = $1; -+ } elsif (/^-P$/ || /^--package$/) { -+ usage() if !@ARGV; -+ $package = shift @ARGV; -+ } elsif (/^-V$/ || /^--verbose$/) { -+ $verbose = 1; -+ } elsif (/^--package=(.*)$/) { -+ $package = $1; -+ } elsif (/^-f$/ || /^--files$/) { -+ usage() if !@ARGV; -+ push @files, shift @ARGV; -+ $any_files = 1; -+ } elsif (/^--files=(.*)$/) { -+ push @files, $1; -+ $any_files = 1; -+ } elsif (/^-l$/ || /^--list$/) { -+ $elementlist = 1; -+ } elsif (/^-L$/ || /^--extend-list$/) { -+ $elementlist = 2; -+ } elsif (/^-e$/ || /^--elementmap$/) { -+ usage() if !@ARGV; -+ read_elementmap(shift @ARGV); -+ } elsif (/^--elementmap=(.*)$/) { -+ read_elementmap($1); -+ } elsif (/^-p$/ || /^--prefix$/) { -+ usage() if !@ARGV; -+ $PREFIX = shift @ARGV; -+ } elsif (/^--prefix=(.*)$/) { -+ $PREFIX = $1; -+ } elsif (/^-u$/ || /^--uninstall$/) { -+ $uninstall = 1; -+ } elsif (/^-h$/ || /^--help$/) { -+ help(); -+ } elsif (/^--dokuwiki$/ || /^--doku$/) { -+ $do_section_func = \&dokuwiki_do_section; -+ $do_text_func = \&dokuwikiize; -+ $output_type = 'dokuwiki'; -+ } elsif (/^--dokuwiki-dl$/) { -+ $do_section_func = \&dokuwiki_do_section; -+ $do_text_func = \&dokuwikiize; -+ $output_type = 'dokuwiki'; -+ $dokuwiki_dl = 1; -+ } elsif (/^-./) { -+ usage(); -+ } elsif (/^-$/) { -+ push @files, "-"; -+ $any_files = 1; -+ } else { -+ push @files, glob($_); -+ $any_files = 1; -+ } -+} -+push @files, "-" if !$any_files; -+ -+sub nroff_filename_func ($$) { -+ my($name, $sec) = @_; -+ "$directory/$name.$sec"; -+} -+ -+sub dokuwiki_filename_func ($$) { -+ my($name, $sec) = @_; -+ if ($sec eq 'n') { -+ "$directory/" . lc($name) . ".txt"; -+ } else { -+ "$directory/" . lc($name) . "-$sec.txt"; -+ } -+} -+ -+if ($directory) { -+ $filename_func = ($output_type eq 'dokuwiki' ? \&dokuwiki_filename_func : \&nroff_filename_func); -+} -+ -+umask(022); -+if ($uninstall) { -+ open(OUT, ">/dev/null"); -+} elsif (!$directory) { -+ open(OUT, ">&STDOUT"); -+} -+ -+# read file sets -+my(%fnhash); -+foreach $fn (@files) { -+ process_file_set($fn, \%fnhash); -+} -+fix_requires(); -+ -+# process files -+foreach $fn (keys(%fnhash)) { -+ process_file($fn); -+} -+ -+if ($uninstall || !$directory) { -+ close OUT; -+} -+ -+ -+# printing element list -+# -+ -+sub read_elementlist ($) { -+ my($fn) = @_; -+ -+ local($/) = "\n"; -+ if (!open(IN, $fn)) { -+ print STDERR "click-elem2man: $fn: $!\n"; -+ return; -+ } -+ -+ my($section, $active, $cur_name, $cur_section, %new_summary); -+ $active = 0; -+ while () { -+ if (/^\.SS \"(.*)\"/) { -+ $section = $1; -+ } elsif (/^\.TP 20/) { -+ $active = 1; -+ } elsif ($active == 1 && /^\.M (\S+) (\S+)/) { -+ if (!exists $all_outsections{$1}) { -+ $active = 2; -+ $cur_name = $1; -+ $new_summary{$1} = 1; -+ $all_outsections{$1} = $2; -+ $all_roff_summaries{$1} = ''; -+ push @{$summaries_by_section{$section}}, $1; -+ push @all_outfiles, $1; -+ } elsif ($new_summary{$1}) { -+ push @{$summaries_by_section{$section}}, $1; -+ $active = 3; -+ } else { -+ $active = 3; -+ } -+ } elsif (/^\.PD/) { -+ $active = 0; -+ } elsif (/^\.SH \"ALPHABETICAL/) { -+ last; -+ } elsif ($active == 2) { -+ $all_roff_summaries{$cur_name} .= $_; -+ } -+ } -+} -+ -+my(%el_generated); -+sub one_elementlist (@) { -+ my($t); -+ $t .= ".PP\n.PD 0\n"; -+ foreach $_ (sort { lc($a) cmp lc($b) } @_) { -+ $t .= ".TP 20\n.M " . $_ . " " . $all_outsections{$_}; -+ $t .= " \" (deprecated)\"" if $deprecated{$_}; -+ $t .= "\n"; -+ $t .= $all_roff_summaries{$_} if $all_roff_summaries{$_}; -+ $el_generated{$_} = 1; -+ } -+ $t . ".PD\n"; -+} -+ -+my(@Links, $Text); -+ -+sub one_summary ($@) { -+ my($name, @elts) = @_; -+ print STDERR "click-elem2man: warning: category '", $name, "' begins with a lowercase letter (used in @elts)\n" if $name =~ /^[a-z]/; -+ my($a) = $name; -+ $a =~ s{([+\&\#\"\000-\037\177-\377])}{sprintf("%%%02X", $1)}eg; -+ $a =~ tr/ /+/; -+ my($x) = $name; -+ $x =~ s{ }{ }g; -+ if (@elts) { -+ push @Links, "$x"; -+ $Text .= ".SS \"$name\"\n"; -+ $Text .= one_elementlist(@elts); -+ } -+} -+ -+sub write_elementlist ($$) { -+ my($enamebase, $l_uninstall) = @_; -+ if ($filename_func) { -+ my($fn) = &$filename_func($enamebase, $section); -+ if ($l_uninstall) { -+ print STDERR "Removing $fn\n" if $verbose; -+ unlink($fn); -+ return; -+ } -+ if (!open(OUT, ">$fn")) { -+ print STDERR "click-elem2man: $fn: $!\n"; -+ return; -+ } -+ } elsif ($uninstall) { -+ return; -+ } -+ -+ print OUT <<"EOD;"; -+.\\" -*- mode: nroff -*- -+.\\" Generated by 'click-elem2man' -+$nroff_prologue -+.TH "\U$enamebase\E" $section "$today" "Click" -+.SH "NAME" -+$enamebase \- documented Click element classes -+.SH "DESCRIPTION" -+This page lists all Click element classes that have manual page documentation. -+EOD; -+ -+ $Text = ""; -+ my(%did_section, $sec); -+ # erase 'Miscellaneous' section, if any -+ delete $summaries_by_section{'Miscellaneous'}; -+ my($i) = 0; -+ foreach $sec ((map { $i++ % 2 ? ($_) : () } @section_headers), -+ (sort { lc($a) cmp lc($b) } keys(%summaries_by_section))) { -+ next if $did_section{$sec}; -+ one_summary($sec, @{$summaries_by_section{$sec}}); -+ $did_section{$sec} = 1; -+ } -+ one_summary('Miscellaneous', grep { !$el_generated{$_} } @all_outfiles); -+ -+ my($links) = join(" - ", @Links); -+ print OUT <<"EOD;"; -+.\\"html

By Function: -+.\\"html $links
-+.\\"html Alphabetical List

-+EOD; -+ -+ print OUT ".SH \"BY FUNCTION\"\n"; -+ print OUT $Text; -+ print OUT ".SH \"ALPHABETICAL LIST\"\n"; -+ print OUT one_elementlist(@all_outfiles); -+ -+ close OUT if $filename_func; -+} -+ -+sub read_main_elementlist () { -+ if ($filename_func) { -+ my($fn) = &$filename_func('elements', $section); -+ $fn = &$filename_func('elements-click', $section) if !-r $fn; -+ read_elementlist($fn) if -r $fn && $elementlist > 1; -+ } -+} -+ -+if ($elementlist && @all_outfiles) { -+ # erase record of elements added on uninstall -+ if ($elementlist > 1 && $uninstall) { -+ %summaries_by_section = (); -+ @all_outfiles = (); -+ } -+ -+ # package-specific elementlist -+ if (defined($package)) { -+ my($fename) = ($package eq "DEFAULT" ? "elements-click" : "elements-$package"); -+ write_elementlist($fename, $uninstall); -+ } -+ read_main_elementlist(); -+ write_elementlist("elements", 0); -+} -Files click-1.6.0/inst/bin/click-fastclassifier and click-1.6.0-27/inst/bin/click-fastclassifier differ -Files click-1.6.0/inst/bin/click-flatten and click-1.6.0-27/inst/bin/click-flatten differ -diff -Nurb click-1.6.0/inst/bin/click-mkelemmap click-1.6.0-27/inst/bin/click-mkelemmap ---- click-1.6.0/inst/bin/click-mkelemmap 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/bin/click-mkelemmap 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,535 @@ -+#! /usr/bin/perl -w -+ -+# click-mkelemmap -- make map of element name to C++ class and file -+# Eddie Kohler -+# -+# Copyright (c) 1999-2001 Massachusetts Institute of Technology -+# Copyright (c) 2004-2006 Regents of the University of California -+# -+# Permission is hereby granted, free of charge, to any person obtaining a -+# copy of this software and associated documentation files (the "Software"), -+# to deal in the Software without restriction, subject to the conditions -+# listed in the Click LICENSE file. These conditions include: you must -+# preserve this copyright notice, and you cannot mention the copyright -+# holders in advertising related to the Software without their permission. -+# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+# notice is a summary of the Click LICENSE file; the license in that file is -+# legally binding. -+ -+my(%port_count_constants) = -+ ('PORTS_0_0' => '0/0', 'PORTS_0_1' => '0/1', 'PORTS_1_0' => '1/0', -+ 'PORTS_1_1' => '1/1'); -+my(%processing_constants) = -+ ('AGNOSTIC' => 'a/a', 'PUSH' => 'h/h', 'PULL' => 'l/l', -+ 'PUSH_TO_PULL' => 'h/l', 'PULL_TO_PUSH' => 'l/h'); -+my(%flow_code_constants) = -+ ('COMPLETE_FLOW' => 'x/x'); -+my(@source_file, @header_file, @click_name, @cxx_name, @doc_name, -+ @parents, @port_count, @processing, @flow_code, @flags, @requirements, -+ @element_methods, @element_libs, @provisions, -+ %click_name_to_id, %cxx_name_to_id); -+my(@includes) = ( ); -+ -+sub driver_mask ($) { -+ my($m) = 0; -+ # XXX "|" syntax? -+ $m |= 1 if $_[0] =~ /\buserlevel\b/; -+ $m |= 2 if $_[0] =~ /\blinuxmodule\b/; -+ $m |= 4 if $_[0] =~ /\bbsdmodule\b/; -+ $m |= 8 if $_[0] =~ /\bns\b/; -+ ($m ? $m : 15); -+} -+ -+sub filecontents ($) { -+ my $text = ""; -+ if (open(IN, $_[0])) { -+ $text = ; -+ close IN; -+ } -+ $text; -+} -+ -+sub process_file ($) { -+ my($filename) = @_; -+ my($headername, $headerfile, $i, $comment); -+ -+ if ($filename =~ /^(.*):"(.*)"$/) { -+ ($filename, $headername) = ($1, $2); -+ $headerfile = $headername; -+ } elsif ($filename =~ /^(.*):<(.*)>$/) { -+ ($filename, $headername) = ($1, "<$2>"); -+ $headerfile = $2; -+ } else { -+ $headername = $filename; -+ $headername =~ s/\.cc$/.hh/; -+ $headerfile = $headername; -+ } -+ -+ my($text) = ""; -+ if ($headerfile =~ m|^/|) { -+ $text = filecontents($headerfile); -+ } else { -+ for ($i = 0; $i < @includes && $text eq ""; $i++) { -+ $text = filecontents($includes[$i] . "/" . $headerfile); -+ } -+ } -+ $headername = "" if $text eq ""; -+ -+ my $first; -+ $first = @cxx_name; -+ foreach $_ (split(m{^class(?=.*[\n\s]*\{)}m, $text)) { -+ my($cxx_class) = (/^\s*(\w+)(\s|:\s).*[\n\s]*\{/); -+ my($click_name) = (/class_name.*return\s*\"([^\"]+)\"/); -+ next if !$click_name; -+ push @cxx_name, $cxx_class; -+ push @source_file, $filename; -+ push @header_file, $headername; -+ $cxx_name_to_id{$cxx_class} = @cxx_name - 1 if $cxx_class; -+ if (/\A\s*\w*\s*:\s*([\w\s,]+)/) { -+ my $p = $1; -+ $p =~ s/\bpublic\b//g; -+ push @parents, [ split(/[\s,]+/, $p) ]; -+ } else { -+ push @parents, []; -+ } -+ if (/class_name.*return\s*\"([^\"]+)\"/) { -+ push @click_name, $1; -+ } else { -+ push @click_name, ""; -+ } -+ if (/port_count.*return\s*(.*?);/) { -+ my $p = $1; -+ $p = $port_count_constants{$p} if exists($port_count_constants{$p}); -+ $p =~ tr/\" \t\r\n//d; -+ push @port_count, $p; -+ } else { -+ push @port_count, ""; -+ } -+ if (/processing.*return\s*(.*?);/) { -+ my $p = $1; -+ $p = $processing_constants{$p} if exists($processing_constants{$p}); -+ $p =~ tr/\" \t\r\n//d; -+ push @processing, $p; -+ } else { -+ push @processing, ""; -+ } -+ if (/flow_code.*return\s*(.*?);/) { -+ my $p = $1; -+ $p = $flow_code_constants{$p} if exists($flow_code_constants{$p}); -+ $p =~ tr/\" \t\r\n//d; -+ push @flow_code, $p; -+ } else { -+ push @flow_code, ""; -+ } -+ if (/\bflags\(\).*return\s*"(.*?)";/) { -+ push @flags, $1; -+ } else { -+ push @flags, undef; -+ } -+ my($methods) = ''; -+ $methods .= "static_initialize " if /\n\s*static\s+void\s+static_initialize/; -+ $methods .= "static_cleanup " if /\n\s*static\s+void\s+static_cleanup/; -+ $methods =~ s/\s+\Z//; -+ push @element_methods, $methods; -+ } -+ -+ # process element documentation -+ my(%doc_titles); -+ foreach $comment (split(m{(/\*.*?\*/)}s, $text)) { -+ if ($comment =~ /^\/\*/ && $comment =~ /^[\/*\s]+=/) { -+ $comment =~ s/^\/\*\s*//g; -+ $comment =~ s/\s*\*\/$//g; -+ $comment =~ s/^ ?\* ?//gm; -+ my($title, $count); -+ while ($comment =~ m{^=(\w+)( *)(.*)([\0-\377]*?)(?=^=\w|\Z)}mg) { -+ if ($1 eq 'title') { -+ $title = $3; -+ } elsif ($1 eq 'c') { -+ $_ = $4; -+ while (/^\s*(\w+)\(/mg) { -+ $doc_titles{$1} = ($title ? $title : $1); -+ } -+ if (!%doc_titles && /^\s*([\w@]+)\s*$/) { -+ $doc_titles{$1} = ($title ? $title : $1); -+ } -+ last; -+ } -+ } -+ } -+ } -+ -+ # apply element documentation to element names -+ for ($i = $first; $i < @processing; $i++) { -+ push @doc_name, $doc_titles{$click_name[$i]}; -+ } -+ -+ # check titles -+ if (@processing == 0 && keys(%doc_titles) > 1) { -+ print STDERR "$filename: more than 1 documentation class for requirement\n"; -+ } -+ -+ # process ELEMENT_REQUIRES, ELEMENT_PROVIDES, and EXPORT_ELEMENT -+ if (!open(IN, $filename)) { -+ print STDERR "$filename: $!\n"; -+ return; -+ } -+ $text = ; -+ close IN; -+ -+ my($req, $prov, $exp, $libs) = ('', '', '', ''); -+ $req .= " " . $1 while $text =~ /^ELEMENT_REQUIRES\s*\((.*)\)/mg; -+ $prov .= " " . $1 while $text =~ /^ELEMENT_PROVIDES\s*\((.*)\)/mg; -+ $exp .= " " . $1 while $text =~ /^EXPORT_ELEMENT\s*\((.*)\)/mg; -+ $libs .= " " . $1 while $text =~ /^ELEMENT_LIBS\s*\((.*)\)/mg; -+ $req =~ s/^\s+//; -+ $prov =~ s/^\s+//; -+ $libs =~ s/^\s+//; -+ -+ # make copies of classes as required -+ while ($exp =~ /(\S+)-(\S+)/g) { -+ my($cxx, $click) = ($1, $2); -+ for ($i = $first; $i < @processing; $i++) { -+ if ($cxx_name[$i] eq $cxx) { -+ push @click_name, $click; -+ push @cxx_name, $cxx; -+ push @doc_name, $doc_name[$i]; -+ push @source_file, $source_file[$i]; -+ push @header_file, $header_file[$i]; -+ push @parents, $parents[$i]; -+ push @port_count, $port_count[$i]; -+ push @processing, $processing[$i]; -+ push @flow_code, $flow_code[$i]; -+ push @flags, $flags[$i]; -+ push @element_methods, $element_methods[$i]; -+ last; -+ } -+ } -+ } -+ -+ # add a fake class if there were no classes -+ if (@cxx_name == $first && $prov) { -+ push @click_name, ""; -+ push @cxx_name, ""; -+ push @doc_name, (%doc_titles ? keys(%doc_titles) : ("")); -+ push @source_file, $filename; -+ push @header_file, $headername; -+ push @parents, []; -+ push @port_count, ""; -+ push @processing, ""; -+ push @flow_code, ""; -+ push @flags, undef; -+ push @element_methods, ""; -+ } -+ -+ # apply requirements and provisions -+ for ($i = $first; $i < @processing; $i++) { -+ push @requirements, $req; -+ push @provisions, $prov; -+ push @element_libs, $libs; -+ -+ # check to see if overloading is valid -+ if ($click_name[$i] && exists($click_name_to_id{$click_name[$i]})) { -+ my($j) = $click_name_to_id{$click_name[$i]}; -+ my($dm_a) = driver_mask($requirements[$i]); -+ my($dm_b) = driver_mask($requirements[$j]); -+ if (($dm_a & $dm_b) == 0) { -+ # ok -+ } else { -+ print STDERR "invalid multiple definition of element class '$click_name[$i]'\n"; -+ print STDERR $header_file[$j], ": first definition here\n"; -+ print STDERR $header_file[$i], ": second definition here\n"; -+ print STDERR "(Two classes may share a name only if they work in disjoint drivers.\nAdd explicit ELEMENT_REQUIRES() statements.)\n"; -+ } -+ } -+ $click_name_to_id{$click_name[$i]} = $i; -+ } -+} -+ -+sub parents_port_count ($) { -+ my($classid) = @_; -+ return undef if !defined $classid; -+ if (!$port_count[$classid]) { -+ my($parent); -+ foreach $parent (@{$parents[$classid]}) { -+ if ($parent eq 'Element') { -+ $port_count[$classid] = '0/0'; -+ last; -+ } elsif ($parent ne '') { -+ $port_count[$classid] = &parents_port_count($cxx_name_to_id{$parent}); -+ last if $port_count[$classid]; -+ } -+ } -+ } -+ return $port_count[$classid]; -+} -+ -+sub parents_processing ($) { -+ my($classid) = @_; -+ return undef if !defined $classid; -+ if (!$processing[$classid]) { -+ my($parent); -+ foreach $parent (@{$parents[$classid]}) { -+ if ($parent eq 'Element') { -+ $processing[$classid] = 'a/a'; -+ last; -+ } elsif ($parent ne '') { -+ $processing[$classid] = &parents_processing($cxx_name_to_id{$parent}); -+ last if $processing[$classid]; -+ } -+ } -+ } -+ return $processing[$classid]; -+} -+ -+sub parents_flow_code ($) { -+ my($classid) = @_; -+ return undef if !defined $classid; -+ if (!$flow_code[$classid]) { -+ my($parent); -+ foreach $parent (@{$parents[$classid]}) { -+ if ($parent eq 'Element') { -+ $flow_code[$classid] = 'x/x'; -+ last; -+ } elsif ($parent ne '') { -+ $flow_code[$classid] = &parents_flow_code($cxx_name_to_id{$parent}); -+ last if $flow_code[$classid]; -+ } -+ } -+ } -+ return $flow_code[$classid]; -+} -+ -+sub parents_flags ($) { -+ my($classid) = @_; -+ return undef if !defined $classid; -+ if (!defined $flags[$classid]) { -+ my($parent); -+ foreach $parent (@{$parents[$classid]}) { -+ if ($parent eq 'Element') { -+ last; -+ } elsif ($parent ne '') { -+ $flags[$classid] = &parents_flags($cxx_name_to_id{$parent}); -+ last if defined $flags[$classid]; -+ } -+ } -+ } -+ return $flags[$classid]; -+} -+ -+sub xml_quote ($) { -+ my($x) = @_; -+ $x =~ s/&/&/g; -+ $x =~ s/; -+ close IN; -+ -+ # Parse file; click-buildtool gets special treatment -+ if ($t =~ /\A#.*click-(buildtool findelem|mkmindriver)/) { -+ $t =~ s/^#.*//mg; -+ @a = map { -+ if (/^(\S+)\s+(\S+)/) { -+ "$1:$2"; -+ } else { -+ $_; -+ } -+ } split(/\n+/, $t); -+ } else { -+ $t =~ s/^#.*//mg; -+ @a = split(/\s+/, $t); -+ } -+ -+ foreach $t (@a) { -+ next if $t eq ''; -+ if ($t =~ /[*?\[]/) { -+ push @b, glob($t); -+ } else { -+ push @b, $t; -+ } -+ } -+ -+ @b; -+ } else { -+ print STDERR "$fn: $!\n"; -+ (); -+ } -+} -+ -+sub long_option_match ($$$) { -+ my($have, $want, $len) = @_; -+ $have = $1 if $have =~ /^(--[^=]*)=/; -+ my($hl) = length($have); -+ ($hl <= length($want) && $hl >= $len && $have eq substr($want, 0, $hl)); -+} -+ -+sub help () { -+ print STDERR <<"EOD;"; -+'Click-mkelemmap' creates an elementmap file from a collection of Click -+elements. -+ -+Usage: click-mkelemmap [OPTIONS] [-f FILE | SRCFILE]... -+ -+Each SRCFILE is a Click header file. '-' means standard input. Default is -+'-f -' if no '-f' or 'SRCFILE' options are supplied. -+ -+Options: -+ -f, --files FILE Read header filenames, or an 'elements.conf' file, -+ from FILE. -+ -r, --provide PROV Record provisions PROV in output. -+ -t, --drivers DRIVERS Record drivers DRIVERS in output. -+ --dochref DOCSTR Record documentation URL pattern DOCSTR in output. -+ -p, --prefix PFX Remove PFX from filenames in output. -+ -I, --include DIR Look for header files in DIR. -+ -s, --sourcedir DIR Record DIR as source directory in output. -+ -h, --help Print this message and exit. -+ -+Report bugs to . -+EOD; -+ exit 0; -+} -+ -+undef $/; -+my(@files, @provides, @drivers, $fn, $prefix, $any_files, $dochref, $sourcedir); -+$prefix = ""; -+ -+while (@ARGV) { -+ $_ = shift @ARGV; -+ if (long_option_match($_, '--files', 3) && /^[^=]*=(.*)$/) { -+ push @files, read_files_from($1); -+ $any_files = 1; -+ } elsif (/^-f$/ || long_option_match($_, '--files', 3)) { -+ die "not enough arguments" if !@ARGV; -+ push @files, read_files_from(shift @ARGV); -+ $any_files = 1; -+ } elsif (long_option_match($_, '--prefix', 5) && /^[^=]*=(.*)$/) { -+ $prefix = $1; -+ $prefix .= "/" if $prefix !~ m|/\Z|; -+ } elsif (/^-p$/ || long_option_match($_, '--prefix', 5)) { -+ die "not enough arguments" if !@ARGV; -+ $prefix = shift @ARGV; -+ $prefix .= "/" if $prefix !~ m|/\Z|; -+ } elsif (long_option_match($_, '--provide', 5) && /^[^=]*=(.*)$/) { -+ push @provides, split(/\s+/, $1); -+ } elsif (/^-r$/ || long_option_match($_, '--provide', 5)) { -+ die "not enough arguments" if !@ARGV; -+ push @provides, split(/\s+/, shift @ARGV); -+ } elsif (long_option_match($_, '--drivers', 4) && /^[^=]*=(.*)$/) { -+ push @drivers, split(/\s+/, $1); -+ } elsif (/^-t$/ || long_option_match($_, '--drivers', 4)) { -+ die "not enough arguments" if !@ARGV; -+ push @drivers, split(/\s+/, shift @ARGV); -+ } elsif (long_option_match($_, '--include', 3) && /^[^=]*=(.*)$/) { -+ push @includes, $prefix . $1; -+ } elsif (/^-I$/ || long_option_match($_, '--include', 3)) { -+ die "not enough arguments" if !@ARGV; -+ push @includes, $prefix . shift @ARGV; -+ } elsif (/^-I(.+)$/) { -+ push @includes, $prefix . $1; -+ } elsif (long_option_match($_, '--sourcedir', 3) && /^[^=]*=(.*)$/) { -+ $sourcedir = xml_quote($1); -+ } elsif (/^-s$/ || long_option_match($_, '--sourcedir', 3)) { -+ die "not enough arguments" if !@ARGV; -+ $sourcedir = xml_quote(shift @ARGV); -+ } elsif (/^-s(.+)$/) { -+ $sourcedir = xml_quote($1); -+ } elsif ((long_option_match($_, '--dochref', 4) || long_option_match($_, '--webdoc', 3)) -+ && /^[^=]*=(.*)$/) { -+ die "repeated --dochref" if defined($dochref); -+ $dochref = $1; -+ } elsif (long_option_match($_, '--dochref', 4) || long_option_match($_, '--webdoc', 3)) { -+ die "not enough arguments" if !@ARGV; -+ die "repeated --dochref" if defined($dochref); -+ $dochref = shift @ARGV; -+ } elsif (/^-h$/ || long_option_match($_, '--help', 3)) { -+ help(); -+ } elsif (/^-./) { -+ die "unknown option '$_'\n"; -+ } elsif (/^-$/) { -+ push @files, "-"; -+ $any_files = 1; -+ } else { -+ push @files, glob($_); -+ $any_files = 1; -+ } -+} -+push @files, read_files_from("-") if !$any_files; -+push @includes, ($prefix eq '' ? "." : $prefix); -+ -+foreach $fn (@files) { -+ process_file($fn); -+} -+ -+umask(022); -+open(OUT, ">&STDOUT"); -+ -+print OUT " -+\n"; -+print OUT "\n" if defined($sourcedir) && $sourcedir =~ m|^/|; -+print OUT "\n"; -+ -+sub sorter { -+ my($xa, $xb) = ($click_name[$a], $click_name[$b]); -+ if ($xa && $xb) { -+ $xa cmp $xb; -+ } elsif ($xa || $xb) { -+ ($xa ? -1 : 1); -+ } else { -+ $provisions[$a] cmp $provisions[$b]; -+ } -+} -+ -+foreach $id (sort sorter 0..$#click_name) { -+ print OUT "\n"; -+} -+ -+print OUT "\n"; -+close OUT; -Files click-1.6.0/inst/bin/click-mkmindriver and click-1.6.0-27/inst/bin/click-mkmindriver differ -Files click-1.6.0/inst/bin/click-pretty and click-1.6.0-27/inst/bin/click-pretty differ -Files click-1.6.0/inst/bin/click-uncombine and click-1.6.0-27/inst/bin/click-uncombine differ -Files click-1.6.0/inst/bin/click-undead and click-1.6.0-27/inst/bin/click-undead differ -Files click-1.6.0/inst/bin/click-xform and click-1.6.0-27/inst/bin/click-xform differ -Files click-1.6.0/inst/bin/click2xml and click-1.6.0-27/inst/bin/click2xml differ -diff -Nurb click-1.6.0/inst/bin/testie click-1.6.0-27/inst/bin/testie ---- click-1.6.0/inst/bin/testie 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/bin/testie 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,1206 @@ -+#! /usr/bin/perl -w -+use Symbol 'qualify_to_ref'; -+no locale; -+use bytes; -+require 5.006; -+ -+($attempts, $internal_errors, $errors, $require_errors) = (0, 0, 0, 0); -+($preserve_temporaries, $expand_mode) = (0, 0); -+ -+## utilities -+ -+sub index2 ($$;$) { -+ my($result) = (defined($_[2]) ? index($_[0], $_[1], $_[2]) : index($_[0], $_[1])); -+ $result = length $_[0] if $result < 0; -+ $result; -+} -+ -+sub shquote ($) { -+ my($t) = @_; -+ $t =~ s/\'/\'\"\'\"\'/g; -+ "'$t'"; -+} -+ -+sub min (@) { -+ my($m) = pop @_; -+ foreach my $mm (@_) { -+ $m = $mm if $mm < $m; -+ } -+ $m; -+} -+ -+ -+## read file -+ -+package Testie; -+ -+my %_special_filerefs = ('stdin' => 1, 'stdout' => 2, 'stderr' => 2); -+%_variables = (); -+ -+# return filename -+sub filename ($) { -+ $_[0]->{'filename'}; -+} -+ -+# return line number text -+sub lineno ($$) { -+ my($tt, $lineno) = @_; -+ my($fn) = $tt->{'filename'}; -+ $fn = 'line ' if !defined($fn); -+ $fn .= ':' if $fn !~ /[ :]$/; -+ "$fn$lineno"; -+} -+ -+# return a command at a given line number -+sub command_at ($$;$) { -+ my($tt, $lineno, $script_type) = @_; -+ return undef if !defined($lineno); -+ $lineno =~ s/^\s*|\s*$//g; -+ if ($lineno =~ /^(.*):(.*)$/) { -+ return undef if $1 ne $tt->{'filename'}; -+ $lineno = $2; -+ } elsif ($lineno =~ /^line (.*)$/) { -+ $lineno = $2; -+ } -+ -+ $script_type = 'script' if !defined($script_type); -+ my($lineno_arr) = $tt->{$script_type . '_lineno'}; -+ for ($i = 0; $i < @$lineno_arr; $i++) { -+ return $tt->{$script_type}->[$i] if $lineno_arr->[$i] == $lineno; -+ } -+ undef; -+} -+ -+# report an error -+sub file_err ($$) { -+ my($tt, $text) = @_; -+ $text .= "\n" if $text !~ /\n$/s; -+ print STDERR $tt->lineno($.), ': ', $text; -+ $tt->{'err'}++; -+} -+ -+sub _shell_split (\@\@$$;$) { -+ my($arr, $lineno_arr, $text, $lineno, $rewrite_sub) = @_; -+ $rewrite_sub = sub { $_[0] } if !defined($rewrite_sub); -+ my($qf, $qb, $func, $out) = (0, 0, 0, ''); -+ my($sq, $dq, $bq, $nl, $hh, $lb, $rb) = (-2, -2, -2, -2, -2, -2, -2); -+ my($first, $pos) = (0, 0); -+ $lineno -= ($text =~ tr/\n//); -+ -+ while ($pos < length $text) { -+ $sq = ::index2($text, "\'", $pos) if $sq < $pos; -+ $dq = ::index2($text, "\"", $pos) if $dq < $pos; -+ $bq = ::index2($text, "\`", $pos) if $bq < $pos; -+ $nl = ::index2($text, "\n", $pos) if $nl < $pos; -+ $hh = ::index2($text, "#", $pos) if $hh < $pos; -+ $lb = ::index2($text, "{", $pos) if $lb < $pos; -+ $rb = ::index2($text, "}", $pos) if $rb < $pos; -+ -+ if ($qf == 1) { -+ $qf = 0 if $sq < length $text; -+ $out .= substr($text, $pos, $sq + 1 - $pos); -+ $pos = $sq + 1; -+ next; -+ } elsif ($qf == 2) { -+ $qf = 0 if $dq < length $text; -+ $out .= $rewrite_sub->(substr($text, $pos, $dq - $pos), 2) . '"'; -+ $pos = $dq + 1; -+ next; -+ } -+ -+ # find minimum -+ my($min) = ::min($sq, $dq, $bq, $nl, $hh, $lb, $rb); -+ $out .= $rewrite_sub->(substr($text, $pos, $min - $pos), 0) . substr($text, $min, 1); -+ -+ if ($sq == $min) { -+ $qf = 1; -+ $pos = $sq + 1; -+ } elsif ($dq == $min) { -+ $qf = 2; -+ $pos = $dq + 1; -+ } elsif ($bq == $min) { -+ $qb = !$qb; -+ $pos = $bq + 1; -+ } elsif ($lb == $min) { -+ $func++; -+ $pos = $lb + 1; -+ } elsif ($rb == $min) { -+ $func--; -+ $pos = $rb + 1; -+ } elsif ($hh == $min) { -+ $out .= substr($text, $min + 1, $nl - $min); -+ $lineno++; -+ $pos = $nl + 1; -+ } elsif (!$qb && !$func && ($nl == $pos || substr($text, $nl - 1, 1) ne "\\")) { -+ push @$arr, $out; -+ push @$lineno_arr, $lineno; -+ $out = ''; -+ $lineno += (substr($text, $first, $nl - $first + 1) =~ tr/\n//); -+ $first = $pos = $nl + 1; -+ } else { -+ $pos = $nl + 1; -+ } -+ } -+ -+ if ($first < length $text) { -+ push @$arr, $out; -+ push @$lineno_arr, $lineno; -+ } -+ -+ if ($qf == 1) { -+ "unmatched single quote"; -+ } elsif ($qf == 2) { -+ "unmatched double quote"; -+ } elsif ($qb) { -+ "unmatched backquote"; -+ } else { -+ ""; -+ } -+} -+ -+sub _read_text ($) { -+ my($fh) = @_; -+ my($r, $t) = (''); -+ while (defined($t = <$fh>)) { -+ last if $t =~ /^\%/; -+ $t =~ s/^\\\%/\%/; -+ $r .= $t; -+ } -+ ($r, $t); -+} -+ -+sub _read_text_into ($$$) { -+ my($fh, $tt, $section) = @_; -+ my($r, $t) = _read_text($fh); -+ $tt->{$section} = '' if !defined($tt->{$section}); -+ $tt->{$section} .= $r; -+ $t; -+} -+ -+sub _read_script_section ($$$$) { -+ my($fh, $tt, $args, $script_type) = @_; -+ -+ my($lineno_type, $quiet_type) = ($script_type . '_lineno', $script_type . '_quietline'); -+ $tt->{$lineno_type} = [] if !exists $tt->{$lineno_type}; -+ $tt->{$quiet_type} = {} if !exists $tt->{$quiet_type}; -+ -+ my($quiet); -+ if ($script_type eq 'require' & $args eq '-q') { -+ $quiet = 1; -+ } elsif ($args ne '') { -+ $tt->file_err("arguments to '\%$script_type' ignored"); -+ } -+ #$tt->file_err("multiple '\%$script_type' sections defined") if $tt->{$script_type}; -+ my($r, $t) = _read_text($fh); -+ my $count = @{$tt->{$lineno_type}}; -+ my($what) = _shell_split(@{$tt->{$script_type}}, @{$tt->{$lineno_type}}, $r, $.); -+ $tt->file_err("$what in '\%$script_type'") if $what ne ''; -+ while ($quiet && $count < @{$tt->{$lineno_type}}) { -+ my($line) = $tt->{$lineno_type}->[$count++]; -+ $tt->{$quiet_type}->{$line} = 1; -+ } -+ $t; -+} -+ -+sub braces_to_regex ($) { -+ my($x) = @_; -+ my(@a) = split(/(\{\{.*?\}\})/, $x); -+ my($d, $i) = ''; -+ for ($i = 0; $i < @a; $i++) { -+ $d .= ($i % 2 ? substr($a[$i], 2, -2) : quotemeta($a[$i])); -+ } -+ $d; -+} -+ -+sub _read_file_section ($$$$$) { -+ my($fh, $tt, $args, $secname, $prefix) = @_; -+ $args =~ s/\s+$//; -+ -+ # split arguments to get fileref -+ my(@args) = split(/\s+/, $args); -+ -+ # assert that we understand $secname -+ die if $secname ne 'file' && $secname ne 'expect' && $secname ne 'expectv' && $secname ne 'expectx' && $secname ne 'ignore' && $secname ne 'ignorex' && $secname ne 'ignorev'; -+ -+ # check for alternates and length -+ my($alternate, $delfirst, $regex_opts, $length) = (0, 0, '', undef); -+ while (@args) { -+ if ($args[0] eq '-a') { -+ $alternate = 1; -+ } elsif ($args[0] eq '-d') { -+ $delfirst = 1; -+ } elsif ($args[0] eq '-i') { -+ $regex_opts .= "(?i)"; -+ } elsif ($args[0] =~ /^\+(\d+)$/) { -+ $length = $1; -+ } else { -+ last; -+ } -+ shift @args; -+ } -+ -+ # make sure there are filerefs -+ if (!@args) { -+ push @args, "stdin" if $secname eq 'file'; -+ push @args, "stdout" if $secname eq 'expect' || $secname eq 'expectv' || $secname eq 'expectx'; -+ push @args, "all" if $secname eq 'ignore' || $secname eq 'ignorev' || $secname eq 'ignorex'; -+ } -+ -+ # complain about '%file -a' -+ if (($secname eq 'file' || $secname eq 'ignore' || $secname eq 'ignorev' || $secname eq 'ignorex') && $alternate) { -+ $tt->file_err("'\%file -a' is illegal"); -+ } elsif (($secname eq 'file' || $secname eq 'expectv') && $regex_opts) { -+ $tt->file_err("'\%file -i' is illegal"); -+ } -+ -+ # read contents -+ my($t, $file_data); -+ if (defined($length)) { -+ read $fh, $file_data, $length; -+ $tt->file_err("file too short") if length($file_data) != $length; -+ $t = <$fh>; -+ } else { -+ ($file_data, $t) = _read_text($fh); -+ } -+ -+ # modify contents based on flags -+ $alternate = 1 if $secname eq 'ignore' || $secname eq 'ignorex' || $secname eq 'ignorev'; # 'ignore' always behaves like -a -+ if ($delfirst) { -+ $file_data =~ s{^.}{}mg; -+ } -+ if ($secname eq 'ignorev') { -+ $file_data =~ s{^(.+)}{quotemeta($1)}meg; -+ } elsif ($secname eq 'ignore') { -+ $file_data =~ s{^(.+)}{braces_to_regex($1)}meg; -+ } -+ if ($regex_opts && $secname eq 'expect') { -+ $file_data =~ s{\{\{}{\{\{$regex_opts}g; -+ } elsif ($regex_opts) { -+ $file_data =~ s{^(?=.)}{$regex_opts}mg; -+ } -+ -+ # stick contents where appropriate -+ my($fn); -+ foreach $fn (@args) { -+ if (($fn eq 'stdin' && $secname ne 'file') -+ || (($fn eq 'stdout' || $fn eq 'stderr') && $secname eq 'file') -+ || ($fn eq 'all' && ($secname ne 'ignore' && $secname ne 'ignorev' && $secname ne 'ignorex'))) { -+ $tt->file_err("'$fn' not meaningful for '\%$secname'"); -+ } -+ -+ my($hashkey) = $prefix . ":" . $fn; -+ if ($fn !~ m/^[A-Za-z_.0-9]+$/) { -+ $tt->file_err("fileref error: '$fn' contains illegal characters"); -+ } elsif (!exists($tt->{$hashkey})) { -+ push @{$tt->{$secname}}, $fn; -+ $tt->{$hashkey} = []; -+ } elsif (!$alternate) { -+ $tt->file_err("'\%$secname $fn' already defined"); -+ } -+ -+ push @{$tt->{$hashkey}}, $file_data; -+ $tt->{"F:$fn"} = 1; -+ } -+ -+ # return next line -+ $t; -+} -+ -+sub _skip_section ($$) { -+ my($fh, $tt) = @_; -+ my($t); -+ while (defined($t = <$fh>)) { -+ last if $t =~ /^%/; -+ } -+ $t; -+} -+ -+sub read (*;$) { -+ my($fh, $fn) = @_; -+ $fh = ::qualify_to_ref($fh, caller); -+ -+ my($tt) = bless { 'filename' => $fn, 'err' => 0, 'errprefix' => $fn . ": " }, Testie; -+ -+ my($t, $read_command) = (undef, 0); -+ $t = <$fh>; -+ while (defined($t)) { -+ if ($t =~ /^%\s*(\w+)\s*(.*?)\s*$/) { -+ my($command) = lc($1); -+ my($args) = $2; -+ if ($command eq 'script' || $command eq 'test') { -+ $t = _read_script_section($fh, $tt, $args, 'script'); -+ } elsif ($command eq 'require') { -+ $t = _read_script_section($fh, $tt, $args, 'require'); -+ } elsif ($command eq 'info') { -+ $tt->file_err("arguments to '\%info' ignored") if $args ne ''; -+ $t = _read_text_into($fh, $tt, 'info'); -+ } elsif ($command eq 'desc') { -+ $tt->file_err("arguments to '\%desc' ignored") if $args ne ''; -+ $t = _read_text_into($fh, $tt, 'desc'); -+ } elsif ($command eq 'cut') { -+ $t = _read_text_into($fh, $tt, 'cut'); -+ } elsif ($command eq 'stdin' || $command eq 'input') { -+ $t = _read_file_section($fh, $tt, $args, 'file', 'f'); -+ } elsif ($command eq 'file') { -+ $t = _read_file_section($fh, $tt, $args, 'file', 'f'); -+ } elsif ($command eq 'stdout' || $command eq 'output') { -+ $t = _read_file_section($fh, $tt, $args, 'expect', 'e'); -+ } elsif ($command eq 'stderr') { -+ $t = _read_file_section($fh, $tt, $args, 'expect', 'e'); -+ } elsif ($command eq 'expect') { -+ $t = _read_file_section($fh, $tt, $args, 'expect', 'e'); -+ } elsif ($command eq 'expectx') { -+ $t = _read_file_section($fh, $tt, $args, 'expectx', 'x'); -+ } elsif ($command eq 'expectv' || $command eq 'expect_verbatim' -+ || $command eq 'verbatim') { -+ $t = _read_file_section($fh, $tt, $args, 'expectv', 'v'); -+ } elsif ($command eq 'ignore') { -+ $t = _read_file_section($fh, $tt, $args, 'ignore', 'i'); -+ } elsif ($command eq 'ignorex') { -+ $t = _read_file_section($fh, $tt, $args, 'ignorex', 'i'); -+ } elsif ($command eq 'ignorev') { -+ $t = _read_file_section($fh, $tt, $args, 'ignorev', 'i'); -+ } elsif ($command eq 'eot') { -+ $tt->{'continue'} = 1; -+ last; -+ } elsif ($command eq 'eof') { -+ last; -+ } else { -+ $tt->file_err("unrecognized command '$command'"); -+ $t = _skip_section($fh, $tt); -+ } -+ $read_command = 1; -+ } else { -+ if ($t =~ /^%/) { -+ $tt->file_err("bad '\%' command"); -+ } elsif ($t !~ /^[\#!]/ && $t =~ /\S/) { -+ $tt->file_err("warning: garbage ignored") if $read_command; -+ $read_command = 0; -+ } -+ $t = <$fh>; -+ } -+ } -+ -+ $tt; -+} -+ -+sub have_file ($$) { -+ my($tt, $fileref) = @_; -+ exists($tt->{"F:$fileref"}); -+} -+ -+sub empty ($) { -+ my($tt) = @_; -+ !exists($tt->{'script'}); -+} -+ -+sub save_files ($&) { -+ my($tt, $fileref_subr) = @_; -+ foreach my $fn (@{$tt->{'file'}}) { -+ my($actual) = $fileref_subr->($fn); -+ next if !defined($actual); -+ open OUT, ">$actual" || die "$actual: $!\n"; -+ print OUT $tt->{"f:$fn"}->[0]; -+ close OUT; -+ } -+} -+ -+sub script_text ($&$) { -+ my($tt, $fileref_subr, $script_type) = @_; -+ my($subbody, $var, $val) = ''; -+ -+ # add variables -+ while (($var, $val) = each %_variables) { -+ $var = quotemeta($var); -+ $val = quotemeta($val); -+ $subbody .= "\$t =~ s/(^|[^\\\\])\\\$$var\\b/\${1}$val/g;\n"; -+ $subbody .= "\$t =~ s/(^|[^\\\\])\\\${$var}\\b/\${1}$val/g;\n"; -+ } -+ -+ my($code) = eval("sub { my(\$t) = \@_; $subbody\$t; }"); -+ -+ my($t) = ''; -+ if (!$::expand_mode) { -+ $t .= <<'EOD;'; -+testie_failed () { -+ exitval=$? -+ test $exitval = 0 || (echo; echo testie_failure:$exitval) >&2 -+ exit $exitval -+} -+trap testie_failed EXIT -+EOD; -+ } -+ -+ my($scriptarr, $linenoarr) = ($tt->{$script_type}, $tt->{$script_type . "_lineno"}); -+ foreach my $i (0..$#{$tt->{$script_type}}) { -+ my($ln, $text) = ($linenoarr->[$i], $scriptarr->[$i]); -+ $t .= "echo >&2; echo testie_lineno:$ln >&2\n" if !$::expand_mode; -+ my(@c, @d); -+ _shell_split(@c, @d, $text, 0, $code); -+ die if @c != 1; -+ chomp $c[0]; -+ next if $c[0] =~ /^\s*$/s; -+ $c[0] =~ s,^(\s*)\./,$1../, if !$::expand_mode; -+ $t .= $c[0] . "\n"; -+ } -+ -+ $t; -+} -+ -+sub output_error ($$$$) { -+ my($tt, $fileref_subr, $script_type, $verbose) = @_; -+ my($fp) = $tt->{'errprefix'}; -+ -+ if (!open(ERR, $fileref_subr->('stderr'))) { -+ print STDERR $fp, $!, "\n"; -+ $::internal_errors++; -+ return; -+ } -+ -+ my($errortext, $t, $lineno, $failure) = (''); -+ while ($t = ) { -+ if ($t =~ /^testie_lineno:(.*)$/) { -+ $lineno = $1; -+ $errortext = ''; -+ } elsif ($t =~ /^testie_failure:(.*)$/) { -+ $failure = $1; -+ } else { -+ $errortext .= $t; -+ } -+ } -+ close ERR; -+ -+ my($failure_text); -+ if (!defined($failure)) { -+ $failure_text = "undefined error"; -+ } elsif ($failure == 1) { -+ $failure_text = "failure"; -+ } else { -+ $failure_text = "error $failure"; -+ } -+ if (defined($script_type) && $script_type eq 'require') { -+ $failure_text = "requirement $failure_text"; -+ $::require_errors++; -+ } else { -+ $::errors++; -+ } -+ -+ $errortext =~ s/\s*\Z//; -+ -+ my($cmd) = $tt->command_at($lineno, $script_type); -+ if ($fp =~ /: $/) { -+ chop $fp; -+ } else { -+ $lineno = "line $lineno"; -+ } -+ $lineno = $tt->filename if !defined($cmd); -+ -+ # exit early if quiet -+ return 1 if $tt->{$script_type . '_quietline'}->{$lineno} && !$verbose; -+ -+ if ($errortext =~ /^testie_error:/) { -+ while ($errortext =~ /^testie_error:([^\n]*)/g) { -+ print STDERR $fp, $lineno, ": ", $1, "\n"; -+ } -+ $errortext =~ s/^testie_error:([^\n]*)//g; -+ $errortext =~ s/\s*//; -+ print STDERR $fp, $lineno, ": (There were other errors as well.)\n" -+ if $errortext ne ''; -+ } elsif (!defined($cmd)) { -+ print STDERR $fp, $lineno, ": $failure_text at undefined point in script\n"; -+ } else { -+ $cmd =~ s/^\s*|\s*$//g; -+ $cmd =~ s/([\000-\037])/'^' . chr(ord($1) + ord('@'))/eg; -+ $cmd =~ s/([\177-\377])/"\\" . sprintf("%03o", ord($1))/eg; -+ if (length($cmd) > 40) { -+ $cmd = substr($cmd, 0, 40) . "..."; -+ } -+ print STDERR $fp, $lineno, ": $failure_text at '$cmd'\n"; -+ while ($errortext =~ /([^\n]*)/g) { -+ print STDERR $fp, $lineno, ": $1\n" if $1 ne ''; -+ } -+ } -+ -+ 1; -+} -+ -+sub _output_expectation_error ($$$$$) { -+ my($fp, $efn, $lineno, $wanted, $got) = @_; -+ -+ # output message -+ if ($efn eq 'stdout') { -+ print STDERR $fp, "standard output has unexpected value starting at line $lineno\n"; -+ } elsif ($efn eq 'stderr') { -+ print STDERR $fp, "standard error has unexpected value starting at line $lineno\n"; -+ } else { -+ print STDERR $fp, "file $efn has unexpected value starting at line $lineno\n"; -+ } -+ -+ # output '$wanted' and '$got' if possible -+ $wanted = "" if $wanted eq "\376"; -+ $wanted =~ s/\r?\n?\Z//; -+ $got = "" if $got eq "\376"; -+ $got =~ s/\r?\n?\Z//; -+ if ($wanted =~ /\A[\t\040-\176]*\Z/ && $got =~ /\A[\t\040-\176]*\Z/) { -+ print STDERR $fp, "$efn:$lineno: expected '$wanted'\n", $fp, "$efn:$lineno: but got '$got'\n"; -+ } -+ -+ # maintain error count -+ $::errors++; -+} -+ -+sub _check_one_expect ($$$) { -+ my($tt, $fileref_subr, $efn) = @_; -+ my($fp) = $tt->{'errprefix'}; -+ my($xtp, $xtl, $xel); -+ -+ # read file text -+ if (!open(IN, $fileref_subr->($efn))) { -+ print STDERR $fp, $efn, ": ", $!, "\n"; -+ $::errors++; -+ return 0; -+ } -+ my($raw_text) = ; -+ $raw_text = '' if !defined($raw_text); -+ close IN; -+ -+ # prepare $ignores -+ my($ignores) = ''; -+ $ignores .= join("\n", @{$tt->{"i:$efn"}}) . "\n" if exists($tt->{"i:$efn"}); -+ $ignores .= join("\n", @{$tt->{"i:all"}}) . "\n" if exists($tt->{"i:all"}); -+ # ignore testie messages -+ $ignores .= "testie_lineno:.*\ntestie_error:.*\n" if $efn eq 'stderr'; -+ if ($ignores ne '') { -+ $ignores =~ s/([!\#<>])/\\$1/g; -+ $ignores =~ s{^([ \t]*\S[^\n]*)}{\$text =~ s<^$1\[ \\t\]*\$><\\377>mg;\n}mg; -+ } -+ -+ # now compare alternates -+ my($mode, $expect_marker) = (0, {}); -+ foreach my $exp (@{$tt->{"v:$efn"}}, $expect_marker, @{$tt->{"e:$efn"}}, $expect_marker, @{$tt->{"x:$efn"}}) { -+ # check for change of mode -+ if (ref($exp)) { -+ $mode++; -+ next; -+ } -+ my($text) = $raw_text; -+ -+ # escape in common case -+ return 0 if $text eq $exp; -+ -+ # check that files really disagree (in later modes) -+ if ($mode > 0) { -+ # ignore differences in amounts of whitespace -+ $text =~ s/\s+\n/\n/g; -+ $text =~ s/\n\n+\Z/\n/; -+ $text =~ s/\A\n//; -+ $exp =~ s/\s+\n/\n/g; -+ $exp =~ s/\n\n\n+/\n\n/g; -+ $exp =~ s/\n\n+\Z/\n/; -+ return 0 if $text eq $exp; -+ -+ # ignore explicitly ignored text -+ eval($ignores) if $ignores ne ''; -+ } -+ -+ # line-by-line comparison -+ my(@tl) = (split(/\n/, $text), "\376"); -+ my(@el) = (split(/\n/, $exp), "\376"); -+ my($tp, $ep) = (0, 0); -+ while ($tp < @tl && $ep < @el) { -+ -+ # a single blank line in $exp matches multiple blank lines -+ # in $text -+ if ($el[$ep] eq '' && $tl[$tp] eq '' && $mode > 0) { -+ $tp++ while $tl[$tp] eq '' || $tl[$tp] eq "\377"; -+ $tp--; -+ } -+ -+ # skip ignored lines -+ $tp++ while $tl[$tp] eq "\377"; -+ -+ # compare lines -+ if ($mode == 2) { -+ last if $tl[$tp] !~ m/\A$el[$ep]\Z/; -+ } elsif ($mode == 1 && $el[$ep] =~ /\{\{/) { -+ my($t, $re) = ($el[$ep], ''); -+ while ($t =~ /\A(.*?)\{\{(.*?)\}\}(.*)\Z/) { -+ $re .= quotemeta($1) . $2; -+ $t = $3; -+ } -+ $re .= quotemeta($t); -+ last if $tl[$tp] !~ m/\A$re\Z/; -+ } elsif ($tl[$tp] ne $el[$ep]) { -+ last; -+ } -+ -+ $tp++, $ep++; -+ } -+ return 0 if $tp >= @tl || $ep >= @el; -+ -+ ($xtp, $xel, $xtl) = ($tp + 1, $el[$ep], $tl[$tp]) -+ if !defined($xtp) || $tp + 1 > $xtp; -+ } -+ -+ # if we get here, none of the attempts matched -+ _output_expectation_error($fp, $efn, $xtp, $xel, $xtl); -+} -+ -+ -+sub check_expects ($$) { -+ my($tt, $fileref_subr) = @_; -+ my($fp) = $tt->{'errprefix'}; -+ local($/) = undef; -+ my($expectx) = 0; -+ my($tp, @tl, $ep, @el); -+ -+ # check expected files -+ my(%done); -+ foreach my $efn (@{$tt->{'expect'}}, @{$tt->{'expectx'}}, @{$tt->{'expectv'}}) { -+ next if $done{$efn}; -+ _check_one_expect($tt, $fileref_subr, $efn); -+ $done{$efn} = 1; -+ } -+ -+ 0; -+} -+ -+ -+package main; -+ -+my($dir, @show, $show_stdout, $show_stderr, $any_tests_done, $can_setpgrp); -+my($SHELL) = "/bin/sh"; -+ -+sub script_fn_to_fn ($) { -+ my($fn) = @_; -+ $fn; -+} -+ -+sub out_script_fn_to_fn ($) { -+ my($fn) = @_; -+ "$dir/$fn"; -+} -+ -+sub _shell ($$$$$) { -+ my($dir, $scriptfn, $stdin, $stdout, $stderr) = @_; -+ $scriptfn = "./$scriptfn" if $scriptfn !~ m|^/|; -+ -+ # Create a new process group so we can (likely) kill any children -+ # processes the script carelessly left behind. Thanks, Chuck Blake! -+ my($child_pid) = fork(); -+ if (!defined($child_pid)) { -+ die "cannot fork: $!\n"; -+ } elsif ($child_pid == 0) { -+ eval { setpgrp() }; -+ chdir($dir); -+ open(STDIN, "<", $stdin) || die "$stdin: $!\n"; -+ open(STDOUT, ">", $stdout) || die "$stdout: $!\n"; -+ open(STDERR, ">", $stderr) || die "$stderr: $!\n"; -+ exec $SHELL, "-e", $scriptfn; -+ } else { -+ waitpid($child_pid, 0); # assume it succeeds -+ my($result) = $?; -+ kill('HUP', -$child_pid); # kill any processes left behind -+ $result; -+ } -+} -+ -+sub execute_test ($$$) { -+ my($tt, $fn, $verbose) = @_; -+ my($f); -+ -+ # count attempt -+ $::attempts++; -+ -+ # print description in superverbose mode -+ if ($verbose > 1) { -+ return 0 if $tt->empty; -+ print STDERR "\n" if $any_tests_done; -+ if ($tt->{'desc'}) { -+ my($desc) = $tt->{'desc'}; -+ $desc =~ s/^(.*?)\t/$1 . (' ' x (8 - (length($1) % 8)))/egm -+ while $desc =~ /\t/; -+ $desc =~ s/^/ /; -+ print STDERR $fn, " Description:\n", $desc; -+ } -+ print STDERR $fn, " Results:\n"; -+ $tt->{'errprefix'} = " "; -+ } -+ -+ # note that we're running the test in verbose mode -+ if ($verbose == 1) { -+ print STDERR $tt->{'errprefix'}, "Running...\n"; -+ } -+ -+ # check requirements -+ if (exists $tt->{'require'}) { -+ open(SCR, ">$dir/+require+") || die "$dir/+require+: $!\n"; -+ print SCR $tt->script_text(\&script_fn_to_fn, 'require'); -+ close SCR; -+ -+ if (!$expand_mode) { -+ my($exitval) = _shell($dir, '+require+', '/dev/null', '/dev/null', script_fn_to_fn('stderr')); -+ -+ # if it exited with a bad value, quit -+ if ($exitval) { -+ return $tt->output_error(\&out_script_fn_to_fn, 'require', $verbose); -+ } elsif ($verbose) { -+ print STDERR $tt->{'errprefix'}, "Requirements OK\n"; -+ } -+ } -+ } -+ -+ # save the files it names -+ $tt->save_files(\&out_script_fn_to_fn); -+ -+ # save the script -+ open(SCR, ">$dir/+script+") || die "$dir/+script+: $!\n"; -+ print SCR $tt->script_text(\&script_fn_to_fn, 'script'); -+ close SCR; -+ -+ # exit if expand mode -+ return 0 if ($expand_mode); -+ -+ # run the script -+ my($actual_stdin) = ($tt->have_file('stdin') ? script_fn_to_fn('stdin') : "/dev/null"); -+ my($actual_stdout) = ($show_stdout || $tt->have_file('stdout') ? script_fn_to_fn('stdout') : "/dev/null"); -+ my($actual_stderr) = script_fn_to_fn('stderr'); -+ my($exitval) = _shell($dir, '+script+', $actual_stdin, $actual_stdout, $actual_stderr); -+ $any_tests_done = 1; -+ -+ # echo files -+ foreach $f (@show) { -+ if (-r out_script_fn_to_fn($f)) { -+ print "$fn: $f\n", "=" x 79, "\n"; -+ local($/) = undef; -+ open(X, out_script_fn_to_fn($f)); -+ $_ = ; -+ close(X); -+ print $_, "=" x 79, "\n"; -+ } else { -+ print "$fn: $f does not exist\n"; -+ } -+ } -+ -+ # if it exited with a bad value, quit -+ if ($exitval) { -+ return $tt->output_error(\&out_script_fn_to_fn, 'script', $verbose); -+ } -+ -+ # check files -+ my $old_errors = $::errors; -+ if ($exitval = $tt->check_expects(\&out_script_fn_to_fn)) { -+ return $exitval; -+ } -+ -+ if ($verbose && !$tt->empty && $old_errors == $::errors) { -+ print STDERR $tt->{'errprefix'}, "Success!\n"; -+ } -+ -+ 0; -+} -+ -+sub run_test (;$$) { -+ my($fn, $verbose) = @_; -+ -+ # read the testie -+ my($tt, $display_fn, $close_in); -+ if (!defined($fn) || $fn eq '-') { -+ if (!open(IN, "<&=STDIN")) { -+ print STDERR ": $!\n"; -+ return -1; -+ } -+ $display_fn = ""; -+ } elsif (-d $fn) { -+ print STDERR "$fn: is a directory\n"; -+ return -1; -+ } else { -+ if (!open(IN, "<", $fn)) { -+ print STDERR "$fn: $!\n"; -+ return -1; -+ } -+ $display_fn = $fn; -+ $close_in = 1; -+ } -+ -+ my($result, $suffix) = (0, ''); -+ -+ while (1) { -+ $tt = Testie::read(IN, $display_fn . $suffix); -+ my($this_result) = execute_test($tt, $display_fn . $suffix, $verbose); -+ $result = $this_result if $this_result; -+ last if !$tt->{'continue'}; -+ if (!($suffix =~ s/^<(\d+)>$/"<" . ($1+1) . ">"/e)) { -+ $suffix = "<2>"; -+ } -+ } -+ -+ close IN if $close_in; -+ $result; -+} -+ -+$SIG{'INT'} = $SIG{'QUIT'} = $SIG{'TERM'} = $SIG{'__DIE__'} = sub { -+ system("/bin/rm -rf $dir 2>/dev/null") if !$preserve_temporaries; -+ exit(1); -+}; -+ -+ -+ -+sub help () { -+ print <<'EOD;'; -+'Testie' is a simple test harness. -+ -+Usage: testie [OPTIONS] [FILE]... -+ -+Options: -+ VARIABLE=VALUE Variable settings for test script. -+ -V, --verbose Print information for successful tests. -+ -VV, --superverbose Print %desc information for all tests. -+ -s, --show TESTIEFILE Show contents of TESTIEFILE on completion. -+ --preserve-temporaries Preserve temporary files. -+ -e, --expand Expand test files into current directory. -+ -v, --version Print version information and exit. -+ --help Print this message and exit. -+ -+Report bugs and suggestions to . -+EOD; -+ exit(0); -+} -+ -+sub usage () { -+ print STDERR <<'EOD;'; -+Usage: testie [-V] [--preserve-temporaries] [FILE]... -+Try 'testie --help' for more information. -+EOD; -+ exit(1); -+} -+ -+sub print_version () { -+ print <<'EOD;'; -+Testie 1.1 -+Copyright (c) 2002-2003 International Computer Science Institute -+This is free software; see the source for copying conditions. -+There is NO warranty, not even for merchantability or fitness for a -+particular purpose. -+EOD; -+ exit(0); -+} -+ -+sub argcmp ($$$;\$) { -+ my($arg, $opt, $min_match, $store) = @_; -+ $$store = undef if defined($store); -+ return 0 if substr($arg, 0, 2 + $min_match) ne substr($opt, 0, 2 + $min_match); -+ my($eq) = index($arg, '='); -+ my($last) = ($eq >= 0 ? $eq : length($arg)); -+ return 0 if $last > length($opt) || substr($arg, 0, $last) ne substr($opt, 0, $last); -+ return 0 if !defined($store) && $eq >= 0; -+ $$store = substr($arg, $eq + 1) if defined($store) && $eq >= 0; -+ 1; -+} -+ -+ -+# directory searching -+ -+sub search_dir ($$) { -+ my($dir, $aref) = @_; -+ $dir =~ s/\/+$//; -+ if (!opendir(DIR, $dir)) { -+ print STDERR "$dir: $!\n"; -+ return; -+ } -+ my(@f) = grep { !/^\.\.?$/ } readdir(DIR); -+ closedir(DIR); -+ foreach my $f (@f) { -+ if (-d "$dir/$f") { -+ &search_dir("$dir/$f", $aref); -+ } elsif ($f =~ /\.testie$/) { -+ push @$aref, "$dir/$f"; -+ } -+ } -+} -+ -+ -+# argument processing -+ -+$dir = "testie$$"; -+ -+my(@tests, $verbose, $arg); -+$verbose = 0; -+ -+while (@ARGV) { -+ $_ = shift @ARGV; -+ if (/^([A-Za-z_]\w*)=(.*)$/s) { -+ $Testie::_variables{$1} = $2; -+ } elsif (/^-$/) { -+ push @tests, $_; -+ } elsif (!/^-/) { -+ if (-d $_) { -+ search_dir($_, \@tests); -+ } else { -+ push @tests, $_; -+ } -+ } elsif (/^-v$/ || argcmp($_, '--version', 4)) { -+ print_version; -+ } elsif (/^-V$/ || argcmp($_, '--verbose', 4)) { -+ $verbose = 1; -+ } elsif (/^-VV$/ || argcmp($_, '--superverbose', 2)) { -+ $verbose = 2; -+ } elsif (/^-e$/ || argcmp($_, '--expand', 1)) { -+ $expand_mode = 1; -+ $preserve_temporaries = 1; -+ $dir = "."; -+ } elsif (argcmp($_, '--help', 1)) { -+ help; -+ } elsif (argcmp($_, '--preserve-temporaries', 1)) { -+ $preserve_temporaries = 1; -+ } elsif (/^-s$/ || argcmp($_, '--show', 2)) { -+ usage if @ARGV == 0; -+ push @show, (shift @ARGV); -+ } elsif (/^-s(.+)$/) { -+ push @show, $1; -+ } elsif (argcmp($_, '--show', 2, $arg)) { -+ push @show, $arg; -+ } else { -+ usage; -+ } -+} -+ -+if (-d $dir && !$expand_mode) { -+ print STDERR "warning: $dir directory exists; removing it\n"; -+ system("/bin/rm -rf $dir"); -+ -d $dir && die "cannot remove $dir directory: $!\n"; -+} -+mkdir $dir || die "cannot create $dir directory: $!\n"; -+ -+# check @show for stdout/stderr -+foreach my $s (@show) { -+ $show_stdout = 1 if $s eq 'stdout'; -+ $show_stderr = 1 if $s eq 'stderr'; -+} -+ -+push @tests, '-' if !@tests; -+foreach my $test (@tests) { -+ run_test($test, $verbose); -+} -+ -+system("/bin/rm -rf $dir") if !$preserve_temporaries; -+if ($internal_errors > 0) { -+ exit(2); -+} elsif ($attempts == 0 -+ || ($errors == 0 && $require_errors < $attempts)) { -+ exit(0); -+} else { -+ exit(1); -+} -+ -+ -+=pod -+ -+=head1 NAME -+ -+testie - simple test harness -+ -+=head1 SYNOPSIS -+ -+ testie [OPTIONS] [FILE]... -+ -+=head1 DESCRIPTION -+ -+Testie is a simple test harness. Each testie test file incorporates a shell -+script to be run and, optionally, input and expected output files for that -+script. Testie runs the script; the test fails if any of the script -+commands fail, or if the script generates unexpected output. -+ -+To run testie, pass it one or more test filenames. It will print useful -+error messages for failed tests. Alternatively, give it directory names; -+the directories are recursively searched for 'F<*.testie>' files. -+ -+Return status is 0 if all tests succeed, 1 if any test fails, and 2 if a -+test fails due to an internal error. Tests whose %require prerequisites -+fail do not affect the return status, except that if all tests' -+prerequisites fail, the return status is 1 instead of 0. -+ -+=head1 OPTIONS -+ -+=over 8 -+ -+=item I=I -+ -+Provide a setting for I. Occurrences in the script of -+'C<$VARIABLE>' or 'C<${VARIABLE}>' will be replaced by I. Note that -+this is not an environment variable setting. Variable references to unset -+variables are left unchanged. -+ -+=item -V, --verbose -+ -+Print information to standard error about successful tests as well as -+unsuccessful tests. -+ -+=item -VV, --superverbose -+ -+Like --verbose, but use a slightly different format, and additionally print -+every test's %desc section before the test results. -+ -+=item -v, --version -+ -+Print version number information and exit. -+ -+=item --help -+ -+Print help information and exit. -+ -+=item --preserve-temporaries -+ -+Preserve the temporary directory created for the test. -+ -+=item -s, --show FILE -+ -+Echo the contents of FILE on completion. FILE should be one of the -+filenames specified by %file or %expect*, or 'stdout' or 'stderr'. -+ -+=item -e, --expand -+ -+Don't run the given test; instead, expand its files into the current -+directory. The script is stored in a file called '+script+'. -+ -+=back -+ -+=head1 FILE FORMAT -+ -+Testie test files consist of several sections, each introduced by a line -+starting with %. There must be, at least, a %script section. -+ -+The %file and %expect* sections define input and/or output files by -+name. Testie runs its script in a private directory in F; any files -+mentioned in %file or %expect* are placed in that directory. -+ -+=over 8 -+ -+=item %script -+ -+The shell script (in sh syntax) that controls the test. Testie will run -+each command in sequence. Every command in the script must succeed, with -+exit status 0, or the test will fail. The script's inputs and outputs are -+defined with the %file and %expect* sections. -+ -+=item %require [-q] -+ -+A shell script (in sh syntax) defining prerequisites that must be satisfied -+before the test can run. Every command in the script must succeed, with -+exit status 0, for the test to run. %require's output is not checked, -+however. The C<-q> flag tells testie not to print an error message if a -+requirement fails. -+ -+=item %desc -+ -+A short description of the test. In --superverbose mode, its contents are -+printed before the test results. -+ -+=item %info -+ -+This section is ignored. It is intended for information about the test. -+ -+=item %cut -+ -+This section is ignored. It is intended to comment out obsolete parts of -+the test. -+ -+=item %file [-d] [+LENGTH] FILENAME... -+ -+Create an input file for the script. FILENAME can be 'stdin', which sets -+the script's standard input. If LENGTH is provided, the file data consists -+of the LENGTH bytes following this line. Otherwise, it consists of the data -+up to the next section. The C<-d> flag tells testie to delete the -+first character of each line in the section; this makes it possible to -+include files that have lines that start with %. FILENAME cannot contain -+slashes. -+ -+=item %expectv [-a] [-d] [+LENGTH] FILENAME... -+ -+An expected output file for the script. FILENAME can be 'stdout', for -+standard output. If LENGTH is provided, the file data consists of the -+LENGTH bytes following this line; otherwise, it consists of the data up to -+the next section. -+ -+Testie will run the script, then compare the script's output file with the -+provided data. They must match exactly or the test fails. -+ -+The C<-a> flag marks this expected output as an alternate. Testie will -+compare the script's output file with each provided alternate; the test -+succeeds if any of the alternates match. The C<-d> flag behaves as in -+%file. -+ -+=item %expect [-a] [-d] [-i] [+LENGTH] FILENAME... -+ -+An expected output file for the script. Arguments are as for %expectv. -+ -+Testie will run the script, then compare the file generated by script -+with the provided data. The files are compared line-by-line. Testie -+ignores trailing whitespace on each line and in the files at large. It also -+ignores lines in the script output that match %ignore patterns (see below). -+Blank lines in the %expect data match one or more blank lines in the -+output. %expect lines can contain Perl regular expressions, enclosed by two -+sets of braces; so the %expect line -+ -+ foo{{(bar)?}} -+ -+matches either 'foo' or 'foobar'. The C<-i> flag makes any regular -+expressions case-insensitive. -+ -+=item %expectx [-a] [-d] [-i] [+LENGTH] FILENAME... -+ -+%expectx is just like %expect, except that every line is treated as a -+regular expression (so there is no need for the "{{ }}" escapes). -+ -+=item %stdin [+LENGTH] -+ -+Same as '%file stdin [ARGS]'. -+ -+=item %stdout [-a] [-d] [-i] [+LENGTH] -+ -+Same as '%expect stdout'. -+ -+=item %stderr [-a] [-d] [-i] [+LENGTH] -+ -+Same as '%expect stderr'. -+ -+=item %ignorex [-d] [-i] [+LENGTH] [FILENAME] -+ -+Each line in the %ignorex section is a Perl regular expression. Lines in -+the supplied FILENAME that match any of those regular expressions will not -+be considered when comparing files with %expect[x] data. The regular -+expression must match the whole line. FILENAME may be 'all', in which case -+the regular expressions will apply to all %expect[x] files. -+ -+=item %ignore, %ignorev -+ -+Like '%ignorex', but '%ignore' parses regular expressions only inside -+double braces ("{{ }}"), and '%ignorev' lines must match exactly. -+ -+=item %eot -+ -+Marks the end of the current test. The rest of the file will be parsed for -+additional tests. -+ -+=item %eof -+ -+The rest of the file is ignored. -+ -+=back -+ -+=head1 EXAMPLE -+ -+This simple testie script checks that 'grep -c' works for a simple output -+file. -+ -+ %script -+ grep -c B. -+ %stdin -+ Bfoo -+ B -+ %stdout -+ 1 -+ -+=head1 AUTHOR -+ -+Eddie Kohler, -Files click-1.6.0/inst/bin/xml2click and click-1.6.0-27/inst/bin/xml2click differ -diff -Nurb click-1.6.0/inst/include/click/algorithm.hh click-1.6.0-27/inst/include/click/algorithm.hh ---- click-1.6.0/inst/include/click/algorithm.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/algorithm.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,24 @@ -+#ifndef CLICK_ALGORITHM_HH -+#define CLICK_ALGORITHM_HH -+CLICK_DECLS -+ -+template -+inline T * -+find(T *begin, T *end, const T &val) -+{ -+ while (begin < end && *begin != val) -+ begin++; -+ return begin; -+} -+ -+template -+inline const T * -+find(const T *begin, const T *end, const T &val) -+{ -+ while (begin < end && *begin != val) -+ begin++; -+ return begin; -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/archive.hh click-1.6.0-27/inst/include/click/archive.hh ---- click-1.6.0/inst/include/click/archive.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/archive.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,29 @@ -+// -*- c-basic-offset: 2; related-file-name: "../../lib/archive.cc" -*- -+#ifndef CLICK_ARCHIVE_HH -+#define CLICK_ARCHIVE_HH -+#include -+#include -+CLICK_DECLS -+class ErrorHandler; -+ -+struct ArchiveElement { -+ -+ String name; -+ int date; -+ int uid; -+ int gid; -+ int mode; -+ String data; -+ -+ bool live() const { return name; } -+ bool dead() const { return !name; } -+ void kill() { name = String(); } -+ -+}; -+ -+int separate_ar_string(const String &, Vector &, -+ ErrorHandler * = 0); -+String create_ar_string(const Vector &, ErrorHandler * = 0); -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/atomic.hh click-1.6.0-27/inst/include/click/atomic.hh ---- click-1.6.0/inst/include/click/atomic.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/atomic.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,433 @@ -+// -*- c-basic-offset: 4 -*- -+#ifndef CLICK_ATOMIC_HH -+#define CLICK_ATOMIC_HH -+#if CLICK_LINUXMODULE -+# include -+#endif -+CLICK_DECLS -+#if CLICK_LINUXMODULE -+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) -+# define CLICK_ATOMIC_VAL _val.counter -+# else -+# define CLICK_ATOMIC_VAL __atomic_fool_gcc(&_val) -+# endif -+# ifdef __SMP__ -+# define CLICK_ATOMIC_LOCK "lock ; " -+# else -+# define CLICK_ATOMIC_LOCK /* nothing */ -+# endif -+#else -+# define CLICK_ATOMIC_VAL _val -+# if HAVE_MULTITHREAD && defined(__i386__) -+# define CLICK_ATOMIC_X86 1 -+# define CLICK_ATOMIC_LOCK "lock ; " -+# else -+# define CLICK_ATOMIC_LOCK /* nothing */ -+# endif -+#endif -+ -+/** @file -+ * @brief An atomic 32-bit integer. -+ */ -+ -+/** @class atomic_uint32_t -+ * @brief A 32-bit integer with support for atomic operations. -+ * -+ * The atomic_uint32_t class represents a 32-bit integer, with support for -+ * atomic operations. The +=, -=, &=, |=, ++, and -- operations are -+ * implemented using atomic instructions. There are also atomic swap(), -+ * fetch_and_add(), dec_and_test(), and compare_and_swap() operations. -+ * -+ * Because of some issues with compiler implementations, atomic_uint32_t has -+ * no explicit constructor; to set an atomic_uint32_t to a value, use -+ * operator=. -+ * -+ * The atomic_uint32_t only provides true atomic semantics when that has been -+ * implemented. It has been implemented in the Linux kernel, and at userlevel -+ * (when --enable-multithread has been defined) for x86 machines. In other -+ * situations, it's not truly atomic (because it doesn't need to be). -+ */ -+class atomic_uint32_t { public: -+ -+ // No constructors because, unfortunately, GCC generates worse code. Use -+ // operator= instead. -+ -+ inline uint32_t value() const; -+ inline operator uint32_t() const; -+ -+ inline atomic_uint32_t &operator=(uint32_t v); -+ -+ inline atomic_uint32_t &operator+=(int32_t delta); -+ inline atomic_uint32_t &operator-=(int32_t delta); -+ inline atomic_uint32_t &operator|=(uint32_t mask); -+ inline atomic_uint32_t &operator&=(uint32_t mask); -+ -+ inline void operator++(); -+ inline void operator++(int); -+ inline void operator--(); -+ inline void operator--(int); -+ -+ inline uint32_t swap(uint32_t v); -+ inline uint32_t fetch_and_add(uint32_t delta); -+ inline bool dec_and_test(); -+ inline bool compare_and_swap(uint32_t test_value, uint32_t new_value); -+ -+ private: -+ -+#if CLICK_LINUXMODULE -+ atomic_t _val; -+#elif HAVE_MULTITHREAD -+ volatile uint32_t _val; -+#else -+ uint32_t _val; -+#endif -+ -+}; -+ -+/** @brief Return the value. */ -+inline uint32_t -+atomic_uint32_t::value() const -+{ -+#if CLICK_LINUXMODULE -+ return atomic_read(&_val); -+#else -+ return CLICK_ATOMIC_VAL; -+#endif -+} -+ -+/** @brief Return the value. */ -+inline -+atomic_uint32_t::operator uint32_t() const -+{ -+ return value(); -+} -+ -+/** @brief Set the value to @a v. */ -+inline atomic_uint32_t & -+atomic_uint32_t::operator=(uint32_t v) -+{ -+#if CLICK_LINUXMODULE -+ atomic_set(&_val, v); -+#else -+ CLICK_ATOMIC_VAL = v; -+#endif -+ return *this; -+} -+ -+/** @brief Atomically add @a delta to the value. */ -+inline atomic_uint32_t & -+atomic_uint32_t::operator+=(int32_t delta) -+{ -+#if CLICK_LINUXMODULE -+ atomic_add(delta, &_val); -+#elif CLICK_ATOMIC_X86 -+ asm volatile (CLICK_ATOMIC_LOCK "addl %1,%0" -+ : "=m" (CLICK_ATOMIC_VAL) -+ : "r" (delta), "m" (CLICK_ATOMIC_VAL) -+ : "cc"); -+#else -+ CLICK_ATOMIC_VAL += delta; -+#endif -+ return *this; -+} -+ -+/** @brief Atomically subtract @a delta from the value. */ -+inline atomic_uint32_t & -+atomic_uint32_t::operator-=(int32_t delta) -+{ -+#if CLICK_LINUXMODULE -+ atomic_sub(delta, &_val); -+#elif CLICK_ATOMIC_X86 -+ asm volatile (CLICK_ATOMIC_LOCK "subl %1,%0" -+ : "=m" (CLICK_ATOMIC_VAL) -+ : "r" (delta), "m" (CLICK_ATOMIC_VAL) -+ : "cc"); -+#else -+ CLICK_ATOMIC_VAL -= delta; -+#endif -+ return *this; -+} -+ -+/** @brief Atomically bitwise-or the value with @a mask. */ -+inline atomic_uint32_t & -+atomic_uint32_t::operator|=(uint32_t mask) -+{ -+#if CLICK_LINUXMODULE && HAVE_LINUX_ATOMIC_SET_MASK -+ atomic_set_mask(mask, &_val); -+#elif CLICK_LINUXMODULE -+ unsigned long flags; -+ local_irq_save(flags); -+ CLICK_ATOMIC_VAL |= mask; -+ local_irq_restore(flags); -+#elif CLICK_ATOMIC_X86 -+ asm volatile (CLICK_ATOMIC_LOCK "orl %1,%0" -+ : "=m" (CLICK_ATOMIC_VAL) -+ : "r" (mask), "m" (CLICK_ATOMIC_VAL) -+ : "cc"); -+#else -+ CLICK_ATOMIC_VAL |= mask; -+#endif -+ return *this; -+} -+ -+/** @brief Atomically bitwise-and the value with @a mask. */ -+inline atomic_uint32_t & -+atomic_uint32_t::operator&=(uint32_t mask) -+{ -+#if CLICK_LINUXMODULE && HAVE_LINUX_ATOMIC_SET_MASK -+ atomic_clear_mask(~mask, &_val); -+#elif CLICK_LINUXMODULE -+ unsigned long flags; -+ local_irq_save(flags); -+ CLICK_ATOMIC_VAL &= mask; -+ local_irq_restore(flags); -+#elif CLICK_ATOMIC_X86 -+ asm volatile (CLICK_ATOMIC_LOCK "andl %1,%0" -+ : "=m" (CLICK_ATOMIC_VAL) -+ : "r" (mask), "m" (CLICK_ATOMIC_VAL) -+ : "cc"); -+#else -+ CLICK_ATOMIC_VAL &= mask; -+#endif -+ return *this; -+} -+ -+/** @brief Atomically increment the value. */ -+inline void -+atomic_uint32_t::operator++() -+{ -+#if CLICK_LINUXMODULE -+ atomic_inc(&_val); -+#elif CLICK_ATOMIC_X86 -+ asm volatile (CLICK_ATOMIC_LOCK "incl %0" -+ : "=m" (CLICK_ATOMIC_VAL) -+ : "m" (CLICK_ATOMIC_VAL) -+ : "cc"); -+#else -+ CLICK_ATOMIC_VAL++; -+#endif -+} -+ -+/** @brief Atomically increment the value. */ -+inline void -+atomic_uint32_t::operator++(int) -+{ -+#if CLICK_LINUXMODULE -+ atomic_inc(&_val); -+#elif CLICK_ATOMIC_X86 -+ asm volatile (CLICK_ATOMIC_LOCK "incl %0" -+ : "=m" (CLICK_ATOMIC_VAL) -+ : "m" (CLICK_ATOMIC_VAL) -+ : "cc"); -+#else -+ CLICK_ATOMIC_VAL++; -+#endif -+} -+ -+/** @brief Atomically decrement the value. */ -+inline void -+atomic_uint32_t::operator--() -+{ -+#if CLICK_LINUXMODULE -+ atomic_dec(&_val); -+#elif CLICK_ATOMIC_X86 -+ asm volatile (CLICK_ATOMIC_LOCK "decl %0" -+ : "=m" (CLICK_ATOMIC_VAL) -+ : "m" (CLICK_ATOMIC_VAL) -+ : "cc"); -+#else -+ CLICK_ATOMIC_VAL--; -+#endif -+} -+ -+/** @brief Atomically decrement the value. */ -+inline void -+atomic_uint32_t::operator--(int) -+{ -+#if CLICK_LINUXMODULE -+ atomic_dec(&_val); -+#elif CLICK_ATOMIC_X86 -+ asm volatile (CLICK_ATOMIC_LOCK "decl %0" -+ : "=m" (CLICK_ATOMIC_VAL) -+ : "m" (CLICK_ATOMIC_VAL) -+ : "cc"); -+#else -+ CLICK_ATOMIC_VAL--; -+#endif -+} -+ -+/** @brief Atomically assign the value to @a v, returning the old value. -+ * -+ * Behaves like this, but in one atomic step: -+ * @code -+ * uint32_t old_value = value(); -+ * *this = v; -+ * return old_value; -+ * @endcode*/ -+inline uint32_t -+atomic_uint32_t::swap(uint32_t v) -+{ -+#if (CLICK_LINUXMODULE && (defined(__i386__) || defined(__arch_um__) || defined(__x86_64__))) || CLICK_ATOMIC_X86 -+ asm ("xchgl %0,%1" -+ : "=r" (v), "=m" (CLICK_ATOMIC_VAL)); -+ return v; -+#elif CLICK_LINUXMODULE -+ unsigned long flags; -+ local_irq_save(flags); -+ uint32_t old_value = value(); -+ CLICK_ATOMIC_VAL = v; -+ local_irq_restore(flags); -+ return old_value; -+#else -+ uint32_t old_value = value(); -+ CLICK_ATOMIC_VAL = v; -+ return old_value; -+#endif -+} -+ -+/** @brief Atomically add @a delta to the value, returning the old value. -+ * -+ * Behaves like this, but in one atomic step: -+ * @code -+ * uint32_t old_value = value(); -+ * *this += delta; -+ * return old_value; -+ * @endcode */ -+inline uint32_t -+atomic_uint32_t::fetch_and_add(uint32_t delta) -+{ -+#if (CLICK_LINUXMODULE && (defined(__i386__) || defined(__arch_um__) || defined(__x86_64__))) || CLICK_ATOMIC_X86 -+ asm volatile (CLICK_ATOMIC_LOCK "xaddl %0,%1" -+ : "=r" (delta), "=m" (CLICK_ATOMIC_VAL) -+ : "0" (delta), "m" (CLICK_ATOMIC_VAL) -+ : "cc"); -+ return delta; -+#elif CLICK_LINUXMODULE -+ unsigned long flags; -+ local_irq_save(flags); -+ uint32_t old_value = value(); -+ CLICK_ATOMIC_VAL += delta; -+ local_irq_restore(flags); -+ return old_value; -+#else -+ uint32_t old_value = value(); -+ CLICK_ATOMIC_VAL += delta; -+ return old_value; -+#endif -+} -+ -+/** @brief Atomically decrement the value, returning true if the new value -+ * is 0. -+ * -+ * Behaves like this, but in one atomic step: -+ * @code -+ * --*this; -+ * return value() == 0; -+ * @endcode */ -+inline bool -+atomic_uint32_t::dec_and_test() -+{ -+#if CLICK_LINUXMODULE -+ return atomic_dec_and_test(&_val); -+#elif CLICK_ATOMIC_X86 -+ uint8_t result; -+ asm volatile (CLICK_ATOMIC_LOCK "decl %0 ; sete %1" -+ : "=m" (CLICK_ATOMIC_VAL), "=qm" (result) -+ : "m" (CLICK_ATOMIC_VAL) -+ : "cc"); -+ return result; -+#else -+ return (--CLICK_ATOMIC_VAL == 0); -+#endif -+} -+ -+/** @brief Perform a compare-and-swap operation. -+ * @param test_value test value -+ * @param new_value new value -+ * @return True if the old value equaled @a test_value (in which case the -+ * value was set to @a new_value), false otherwise. -+ * -+ * Behaves like this, but in one atomic step: -+ * @code -+ * uint32_t old_value = value(); -+ * if (old_value == test_value) -+ * *this = new_value; -+ * return old_value == test_value; -+ * @endcode */ -+inline bool -+atomic_uint32_t::compare_and_swap(uint32_t test_value, uint32_t new_value) -+{ -+#if (CLICK_LINUXMODULE && (defined(__i386__) || defined(__arch_um__) || defined(__x86_64__))) || CLICK_ATOMIC_X86 -+ asm volatile (CLICK_ATOMIC_LOCK "cmpxchgl %2,%0 ; sete %%al" -+ : "=m" (CLICK_ATOMIC_VAL), "=a" (test_value) -+ : "r" (new_value), "m" (CLICK_ATOMIC_VAL), "a" (test_value) -+ : "cc"); -+ return (uint8_t) test_value; -+#elif CLICK_LINUXMODULE -+ unsigned long flags; -+ local_irq_save(flags); -+ uint32_t old_value = value(); -+ if (old_value == test_value) -+ CLICK_ATOMIC_VAL = new_value; -+ local_irq_restore(flags); -+ return old_value == test_value; -+#else -+ uint32_t old_value = value(); -+ if (old_value == test_value) -+ CLICK_ATOMIC_VAL = new_value; -+ return old_value == test_value; -+#endif -+} -+ -+inline uint32_t -+operator+(const atomic_uint32_t &a, const atomic_uint32_t &b) -+{ -+ return a.value() + b.value(); -+} -+ -+inline uint32_t -+operator-(const atomic_uint32_t &a, const atomic_uint32_t &b) -+{ -+ return a.value() - b.value(); -+} -+ -+inline bool -+operator==(const atomic_uint32_t &a, const atomic_uint32_t &b) -+{ -+ return a.value() == b.value(); -+} -+ -+inline bool -+operator!=(const atomic_uint32_t &a, const atomic_uint32_t &b) -+{ -+ return a.value() != b.value(); -+} -+ -+inline bool -+operator>(const atomic_uint32_t &a, const atomic_uint32_t &b) -+{ -+ return a.value() > b.value(); -+} -+ -+inline bool -+operator<(const atomic_uint32_t &a, const atomic_uint32_t &b) -+{ -+ return a.value() < b.value(); -+} -+ -+inline bool -+operator>=(const atomic_uint32_t &a, const atomic_uint32_t &b) -+{ -+ return a.value() >= b.value(); -+} -+ -+inline bool -+operator<=(const atomic_uint32_t &a, const atomic_uint32_t &b) -+{ -+ return a.value() <= b.value(); -+} -+ -+typedef atomic_uint32_t uatomic32_t; -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/bighashmap.cc click-1.6.0-27/inst/include/click/bighashmap.cc ---- click-1.6.0/inst/include/click/bighashmap.cc 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/bighashmap.cc 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,719 @@ -+/* -+ * bighashmap.{cc,hh} -- a hash table template that supports removal -+ * Eddie Kohler -+ * -+ * Copyright (c) 2000 Mazu Networks, Inc. -+ * Copyright (c) 2003 International Computer Science Institute -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, subject to the conditions -+ * listed in the Click LICENSE file. These conditions include: you must -+ * preserve this copyright notice, and you cannot mention the copyright -+ * holders in advertising related to the Software without their permission. -+ * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+ * notice is a summary of the Click LICENSE file; the license in that file is -+ * legally binding. -+ */ -+ -+#ifndef CLICK_BIGHASHMAP_CC -+#define CLICK_BIGHASHMAP_CC -+ -+CLICK_ENDDECLS -+#include -+#include -+CLICK_DECLS -+ -+#define BIGHASHMAP_REARRANGE_ON_FIND 1 -+ -+template -+void -+HashMap::initialize(HashMap_ArenaFactory *factory, size_t initial_nbuckets) -+{ -+ _nbuckets = initial_nbuckets; -+ _buckets = new Elt *[_nbuckets]; -+ for (size_t i = 0; i < _nbuckets; i++) -+ _buckets[i] = 0; -+ set_dynamic_resizing(true); -+ -+ _n = 0; -+ -+ set_arena(factory); -+} -+ -+template -+HashMap::HashMap() -+ : _default_value(), _arena(0) -+{ -+ initialize(0, DEFAULT_INITIAL_NBUCKETS); -+} -+ -+template -+HashMap::HashMap(const V &def, HashMap_ArenaFactory *factory) -+ : _default_value(def), _arena(0) -+{ -+ initialize(factory, DEFAULT_INITIAL_NBUCKETS); -+} -+ -+template -+void -+HashMap::copy_from(const HashMap &o) -+ // requires that 'this' is empty and has the same number of buckets as 'o' -+ // and the same resize policy -+{ -+ for (size_t i = 0; i < _nbuckets; i++) { -+ Elt **pprev = &_buckets[i]; -+ *pprev = 0; -+ for (const Elt *e = o._buckets[i]; e; e = e->next) { -+ Elt *ee = reinterpret_cast(_arena->alloc()); -+ new(reinterpret_cast(&ee->key)) K(e->key); -+ new(reinterpret_cast(&ee->value)) V(e->value); -+ ee->next = 0; -+ *pprev = ee; -+ pprev = &ee->next; -+ } -+ } -+ _n = o._n; -+} -+ -+template -+HashMap::HashMap(const HashMap &o) -+ : _buckets(new Elt *[o._nbuckets]), _nbuckets(o._nbuckets), -+ _default_value(o._default_value), _capacity(o._capacity), _arena(o._arena) -+{ -+ _arena->use(); -+ copy_from(o); -+} -+ -+template -+HashMap & -+HashMap::operator=(const HashMap &o) -+{ -+ if (&o != this) { -+ clear(); -+ _default_value = o._default_value; -+ if (_nbuckets < o._nbuckets) -+ resize0(o._nbuckets); -+ _nbuckets = o._nbuckets; -+ _capacity = o._capacity; -+ copy_from(o); -+ } -+ return *this; -+} -+ -+template -+HashMap::~HashMap() -+{ -+ for (size_t i = 0; i < _nbuckets; i++) -+ for (Elt *e = _buckets[i]; e; ) { -+ Elt *next = e->next; -+ e->key.~K(); -+ e->value.~V(); -+ _arena->free(e); -+ e = next; -+ } -+ delete[] _buckets; -+ _arena->unuse(); -+} -+ -+template -+void -+HashMap::set_dynamic_resizing(bool on) -+{ -+ if (!on) -+ _capacity = 0x7FFFFFFF; -+ else if (_nbuckets >= MAX_NBUCKETS) -+ _capacity = 0x7FFFFFFE; -+ else -+ _capacity = DEFAULT_RESIZE_THRESHOLD * _nbuckets; -+} -+ -+template -+void -+HashMap::set_arena(HashMap_ArenaFactory *factory) -+{ -+ assert(empty()); -+ if (_arena) -+ _arena->unuse(); -+ _arena = HashMap_ArenaFactory::get_arena(sizeof(Elt), factory); -+ _arena->use(); -+} -+ -+template -+inline size_t -+HashMap::bucket(const K &key) const -+{ -+ return ((size_t) hashcode(key)) % _nbuckets; -+} -+ -+template -+typename HashMap::Pair * -+HashMap::find_pair(const K &key) const -+{ -+#if BIGHASHMAP_REARRANGE_ON_FIND -+ Elt *prev = 0; -+ size_t b = bucket(key); -+ for (Elt *e = _buckets[b]; e; prev = e, e = e->next) -+ if (e->key == key) { -+ if (prev) { -+ // move to front -+ prev->next = e->next; -+ e->next = _buckets[b]; -+ _buckets[b] = e; -+ } -+ return e; -+ } -+ return 0; -+#else -+ for (Elt *e = _buckets[bucket(key)]; e; e = e->next) -+ if (e->key == key) -+ return e; -+ return 0; -+#endif -+} -+ -+ -+template -+void -+HashMap::resize0(size_t new_nbuckets) -+{ -+ Elt **new_buckets = new Elt *[new_nbuckets]; -+ for (size_t i = 0; i < new_nbuckets; i++) -+ new_buckets[i] = 0; -+ -+ size_t old_nbuckets = _nbuckets; -+ Elt **old_buckets = _buckets; -+ _nbuckets = new_nbuckets; -+ _buckets = new_buckets; -+ if (dynamic_resizing()) -+ set_dynamic_resizing(true); // reset threshold -+ -+ for (size_t i = 0; i < old_nbuckets; i++) -+ for (Elt *e = old_buckets[i]; e; ) { -+ Elt *n = e->next; -+ size_t b = bucket(e->key); -+ e->next = new_buckets[b]; -+ new_buckets[b] = e; -+ e = n; -+ } -+ -+ delete[] old_buckets; -+} -+ -+template -+void -+HashMap::resize(size_t want_nbuckets) -+{ -+ size_t new_nbuckets = 1; -+ while (new_nbuckets < want_nbuckets && new_nbuckets < MAX_NBUCKETS) -+ new_nbuckets = ((new_nbuckets + 1) << 1) - 1; -+ assert(new_nbuckets > 0 && new_nbuckets <= MAX_NBUCKETS); -+ if (_nbuckets != new_nbuckets) -+ resize0(new_nbuckets); -+} -+ -+template -+bool -+HashMap::insert(const K &key, const V &value) -+{ -+ size_t b = bucket(key); -+ for (Elt *e = _buckets[b]; e; e = e->next) -+ if (e->key == key) { -+ e->value = value; -+ return false; -+ } -+ -+ if (_n >= _capacity) { -+ resize(_nbuckets + 1); -+ b = bucket(key); -+ } -+ -+ if (Elt *e = reinterpret_cast(_arena->alloc())) { -+ new(reinterpret_cast(&e->key)) K(key); -+ new(reinterpret_cast(&e->value)) V(value); -+ e->next = _buckets[b]; -+ _buckets[b] = e; -+ _n++; -+ } -+ return true; -+} -+ -+template -+bool -+HashMap::remove(const K &key) -+{ -+ size_t b = bucket(key); -+ Elt *prev = 0; -+ Elt *e = _buckets[b]; -+ while (e && !(e->key == key)) { -+ prev = e; -+ e = e->next; -+ } -+ if (e) { -+ if (prev) -+ prev->next = e->next; -+ else -+ _buckets[b] = e->next; -+ e->key.~K(); -+ e->value.~V(); -+ _arena->free(e); -+ _n--; -+ return true; -+ } else -+ return false; -+} -+ -+template -+typename HashMap::Pair * -+HashMap::find_pair_force(const K &key, const V &default_value) -+{ -+ size_t b = bucket(key); -+ for (Elt *e = _buckets[b]; e; e = e->next) -+ if (e->key == key) -+ return e; -+ if (_n >= _capacity) { -+ resize(_nbuckets + 1); -+ b = bucket(key); -+ } -+ if (Elt *e = reinterpret_cast(_arena->alloc())) { -+ new(reinterpret_cast(&e->key)) K(key); -+ new(reinterpret_cast(&e->value)) V(default_value); -+ e->next = _buckets[b]; -+ _buckets[b] = e; -+ _n++; -+ return e; -+ } else -+ return 0; -+} -+ -+template -+void -+HashMap::clear() -+{ -+ for (size_t i = 0; i < _nbuckets; i++) { -+ for (Elt *e = _buckets[i]; e; ) { -+ Elt *next = e->next; -+ e->key.~K(); -+ e->value.~V(); -+ _arena->free(e); -+ e = next; -+ } -+ _buckets[i] = 0; -+ } -+ _n = 0; -+} -+ -+template -+void -+HashMap::swap(HashMap &o) -+{ -+ Elt **t_elts; -+ V t_v; -+ size_t t_size; -+ HashMap_Arena *t_arena; -+ -+ t_elts = _buckets; _buckets = o._buckets; o._buckets = t_elts; -+ t_size = _nbuckets; _nbuckets = o._nbuckets; o._nbuckets = t_size; -+ t_v = _default_value; _default_value = o._default_value; o._default_value = t_v; -+ -+ t_size = _n; _n = o._n; o._n = t_size; -+ t_size = _capacity; _capacity = o._capacity; o._capacity = t_size; -+ -+ t_arena = _arena; _arena = o._arena; o._arena = t_arena; -+} -+ -+template -+_HashMap_const_iterator::_HashMap_const_iterator(const HashMap *hm, bool begin) -+ : _hm(hm) -+{ -+ size_t nb = _hm->_nbuckets; -+ typename HashMap::Elt **b = _hm->_buckets; -+ for (_bucket = 0; _bucket < nb && begin; _bucket++) -+ if (b[_bucket]) { -+ _elt = b[_bucket]; -+ return; -+ } -+ _elt = 0; -+} -+ -+template -+void -+_HashMap_const_iterator::operator++(int) -+{ -+ if (_elt->next) -+ _elt = _elt->next; -+ else { -+ size_t nb = _hm->_nbuckets; -+ typename HashMap::Elt **b = _hm->_buckets; -+ for (_bucket++; _bucket < nb; _bucket++) -+ if (b[_bucket]) { -+ _elt = b[_bucket]; -+ return; -+ } -+ _elt = 0; -+ } -+} -+ -+#if 0 -+static size_t -+HashMap_partition_elts(void **elts, size_t left, size_t right) -+{ -+ void *pivot = elts[(left + right) / 2]; -+ -+ // loop invariant: -+ // elts[i] < pivot for all left_init <= i < left -+ // elts[i] > pivot for all right < i <= right_init -+ while (left < right) { -+ if (elts[left] < pivot) -+ left++; -+ else if (elts[right] > pivot) -+ right--; -+ else { -+ void *x = elts[left]; -+ elts[left] = elts[right]; -+ elts[right] = x; -+ } -+ } -+ -+ return left; -+} -+ -+void -+HashMap_qsort_elts(void **elts, size_t left, size_t right) -+{ -+ if (left < right) { -+ size_t split = HashMap_partition_elts(elts, left, right); -+ HashMap_qsort_elts(elts, left, split); -+ HashMap_qsort_elts(elts, split, right); -+ } -+} -+#endif -+ -+ -+// void * partial specialization -+ -+template -+void -+HashMap::initialize(HashMap_ArenaFactory *factory, size_t initial_nbuckets) -+{ -+ _nbuckets = initial_nbuckets; -+ _buckets = new Elt *[_nbuckets]; -+ for (size_t i = 0; i < _nbuckets; i++) -+ _buckets[i] = 0; -+ set_dynamic_resizing(true); -+ -+ _n = 0; -+ -+ set_arena(factory); -+} -+ -+template -+HashMap::HashMap() -+ : _default_value(0), _arena(0) -+{ -+ initialize(0, DEFAULT_INITIAL_NBUCKETS); -+} -+ -+template -+HashMap::HashMap(void *def, HashMap_ArenaFactory *factory) -+ : _default_value(def), _arena(0) -+{ -+ initialize(factory, DEFAULT_INITIAL_NBUCKETS); -+} -+ -+template -+void -+HashMap::copy_from(const HashMap &o) -+{ -+ for (size_t i = 0; i < _nbuckets; i++) { -+ Elt **pprev = &_buckets[i]; -+ *pprev = 0; -+ for (const Elt *e = o._buckets[i]; e; e = e->next) { -+ Elt *ee = reinterpret_cast(_arena->alloc()); -+ new(reinterpret_cast(&ee->key)) K(e->key); -+ ee->value = e->value; -+ ee->next = 0; -+ *pprev = ee; -+ pprev = &ee->next; -+ } -+ } -+ _n = o._n; -+} -+ -+template -+HashMap::HashMap(const HashMap &o) -+ : _buckets(new Elt *[o._nbuckets]), _nbuckets(o._nbuckets), -+ _default_value(o._default_value), _capacity(o._capacity), _arena(o._arena) -+{ -+ _arena->use(); -+ copy_from(o); -+} -+ -+template -+HashMap & -+HashMap::operator=(const HashMap &o) -+{ -+ if (&o != this) { -+ clear(); -+ _default_value = o._default_value; -+ if (_nbuckets < o._nbuckets) -+ resize0(o._nbuckets); -+ _nbuckets = o._nbuckets; -+ _capacity = o._capacity; -+ copy_from(o); -+ } -+ return *this; -+} -+ -+template -+HashMap::~HashMap() -+{ -+ for (size_t i = 0; i < _nbuckets; i++) -+ for (Elt *e = _buckets[i]; e; ) { -+ Elt *next = e->next; -+ e->key.~K(); -+ _arena->free(e); -+ e = next; -+ } -+ delete[] _buckets; -+ _arena->unuse(); -+} -+ -+template -+void -+HashMap::set_dynamic_resizing(bool on) -+{ -+ if (!on) -+ _capacity = 0x7FFFFFFF; -+ else if (_nbuckets >= MAX_NBUCKETS) -+ _capacity = 0x7FFFFFFE; -+ else -+ _capacity = DEFAULT_RESIZE_THRESHOLD * _nbuckets; -+} -+ -+template -+void -+HashMap::set_arena(HashMap_ArenaFactory *factory) -+{ -+ assert(empty()); -+ if (_arena) -+ _arena->unuse(); -+ _arena = HashMap_ArenaFactory::get_arena(sizeof(Elt), factory); -+ _arena->use(); -+} -+ -+template -+inline size_t -+HashMap::bucket(const K &key) const -+{ -+ return ((size_t) hashcode(key)) % _nbuckets; -+} -+ -+template -+typename HashMap::Pair * -+HashMap::find_pair(const K &key) const -+{ -+#if BIGHASHMAP_REARRANGE_ON_FIND -+ Elt *prev = 0; -+ size_t b = bucket(key); -+ for (Elt *e = _buckets[b]; e; prev = e, e = e->next) -+ if (e->key == key) { -+ if (prev) { -+ // move to front -+ prev->next = e->next; -+ e->next = _buckets[b]; -+ _buckets[b] = e; -+ } -+ return e; -+ } -+ return 0; -+#else -+ for (Elt *e = _buckets[bucket(key)]; e; e = e->next) -+ if (e->key == key) -+ return e; -+ return 0; -+#endif -+} -+ -+ -+template -+void -+HashMap::resize0(size_t new_nbuckets) -+{ -+ Elt **new_buckets = new Elt *[new_nbuckets]; -+ for (size_t i = 0; i < new_nbuckets; i++) -+ new_buckets[i] = 0; -+ -+ size_t old_nbuckets = _nbuckets; -+ Elt **old_buckets = _buckets; -+ _nbuckets = new_nbuckets; -+ _buckets = new_buckets; -+ if (dynamic_resizing()) -+ set_dynamic_resizing(true); // reset threshold -+ -+ for (size_t i = 0; i < old_nbuckets; i++) -+ for (Elt *e = old_buckets[i]; e; ) { -+ Elt *n = e->next; -+ size_t b = bucket(e->key); -+ e->next = new_buckets[b]; -+ new_buckets[b] = e; -+ e = n; -+ } -+ -+ delete[] old_buckets; -+} -+ -+template -+void -+HashMap::resize(size_t want_nbuckets) -+{ -+ size_t new_nbuckets = 1; -+ while (new_nbuckets < want_nbuckets && new_nbuckets < MAX_NBUCKETS) -+ new_nbuckets = ((new_nbuckets + 1) << 1) - 1; -+ assert(new_nbuckets > 0 && new_nbuckets <= MAX_NBUCKETS); -+ if (_nbuckets != new_nbuckets) -+ resize0(new_nbuckets); -+} -+ -+template -+bool -+HashMap::insert(const K &key, void *value) -+{ -+ size_t b = bucket(key); -+ for (Elt *e = _buckets[b]; e; e = e->next) -+ if (e->key == key) { -+ e->value = value; -+ return false; -+ } -+ -+ if (_n >= _capacity) { -+ resize(_nbuckets + 1); -+ b = bucket(key); -+ } -+ -+ if (Elt *e = reinterpret_cast(_arena->alloc())) { -+ new(reinterpret_cast(&e->key)) K(key); -+ e->value = value; -+ e->next = _buckets[b]; -+ _buckets[b] = e; -+ _n++; -+ } -+ return true; -+} -+ -+template -+bool -+HashMap::remove(const K &key) -+{ -+ size_t b = bucket(key); -+ Elt *prev = 0; -+ Elt *e = _buckets[b]; -+ while (e && !(e->key == key)) { -+ prev = e; -+ e = e->next; -+ } -+ if (e) { -+ if (prev) -+ prev->next = e->next; -+ else -+ _buckets[b] = e->next; -+ e->key.~K(); -+ _arena->free(e); -+ _n--; -+ return true; -+ } else -+ return false; -+} -+ -+template -+typename HashMap::Pair * -+HashMap::find_pair_force(const K &key, void *default_value) -+{ -+ size_t b = bucket(key); -+ for (Elt *e = _buckets[b]; e; e = e->next) -+ if (e->key == key) -+ return e; -+ if (_n >= _capacity) { -+ resize(_nbuckets + 1); -+ b = bucket(key); -+ } -+ if (Elt *e = reinterpret_cast(_arena->alloc())) { -+ new(reinterpret_cast(&e->key)) K(key); -+ e->value = default_value; -+ e->next = _buckets[b]; -+ _buckets[b] = e; -+ _n++; -+ return e; -+ } else -+ return 0; -+} -+ -+template -+void -+HashMap::clear() -+{ -+ for (size_t i = 0; i < _nbuckets; i++) { -+ for (Elt *e = _buckets[i]; e; ) { -+ Elt *next = e->next; -+ e->key.~K(); -+ _arena->free(e); -+ e = next; -+ } -+ _buckets[i] = 0; -+ } -+ _n = 0; -+} -+ -+template -+void -+HashMap::swap(HashMap &o) -+{ -+ Elt **t_elts; -+ void *t_v; -+ size_t t_size; -+ HashMap_Arena *t_arena; -+ -+ t_elts = _buckets; _buckets = o._buckets; o._buckets = t_elts; -+ t_size = _nbuckets; _nbuckets = o._nbuckets; o._nbuckets = t_size; -+ t_v = _default_value; _default_value = o._default_value; o._default_value = t_v; -+ -+ t_size = _n; _n = o._n; o._n = t_size; -+ t_size = _capacity; _capacity = o._capacity; o._capacity = t_size; -+ -+ t_arena = _arena; _arena = o._arena; o._arena = t_arena; -+} -+ -+ -+template -+_HashMap_const_iterator::_HashMap_const_iterator(const HashMap *hm, bool begin) -+ : _hm(hm) -+{ -+ size_t nb = _hm->_nbuckets; -+ typename HashMap::Elt **b = _hm->_buckets; -+ for (_bucket = 0; _bucket < nb && begin; _bucket++) -+ if (b[_bucket]) { -+ _elt = b[_bucket]; -+ return; -+ } -+ _elt = 0; -+} -+ -+template -+void -+_HashMap_const_iterator::operator++(int) -+{ -+ if (_elt->next) -+ _elt = _elt->next; -+ else { -+ size_t nb = _hm->_nbuckets; -+ typename HashMap::Elt **b = _hm->_buckets; -+ for (_bucket++; _bucket < nb; _bucket++) -+ if (b[_bucket]) { -+ _elt = b[_bucket]; -+ return; -+ } -+ _elt = 0; -+ } -+} -+ -+#endif -diff -Nurb click-1.6.0/inst/include/click/bighashmap.hh click-1.6.0-27/inst/include/click/bighashmap.hh ---- click-1.6.0/inst/include/click/bighashmap.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/bighashmap.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,567 @@ -+#ifndef CLICK_BIGHASHMAP_HH -+#define CLICK_BIGHASHMAP_HH -+#include -+CLICK_DECLS -+class HashMap_Arena; -+class HashMap_ArenaFactory; -+ -+// K AND V REQUIREMENTS: -+// -+// K::K(const K &) -+// k1 == k2 -+// unsigned hashcode(const K &) -+// If hashcode(k1) != hashcode(k2), then k1 != k2. -+// -+// V::V() -- only used for default value -+// V::V(const V &) -+// V & V::operator=(const V &) -+ -+template class _HashMap_const_iterator; -+template class _HashMap_iterator; -+ -+template -+class HashMap { public: -+ -+ struct Pair; -+ -+ HashMap(); -+ explicit HashMap(const V &, HashMap_ArenaFactory * = 0); -+ HashMap(const HashMap &); -+ ~HashMap(); -+ -+ void set_arena(HashMap_ArenaFactory *); -+ -+ size_t size() const { return _n; } -+ bool empty() const { return _n == 0; } -+ size_t nbuckets() const { return _nbuckets; } -+ -+ Pair *find_pair(const K &) const; -+ inline V *findp(const K &) const; -+ inline const V &find(const K &, const V &) const; -+ inline const V &find(const K &) const; -+ inline const V &operator[](const K &) const; -+ -+ Pair *find_pair_force(const K &, const V &); -+ Pair *find_pair_force(const K &k) { return find_pair_force(k, _default_value); } -+ V *findp_force(const K &k, const V &v) { if (Pair *p = find_pair_force(k, v)) return &p->value; else return 0; } -+ V &find_force(const K &k, const V &v) { return *findp_force(k, v); } -+ V *findp_force(const K &k) { return findp_force(k, _default_value); } -+ V &find_force(const K &k) { return *findp_force(k, _default_value); } -+ -+ bool insert(const K &, const V &); -+ bool remove(const K &); -+ void clear(); -+ -+ void swap(HashMap &); -+ -+ // iteration -+ typedef _HashMap_const_iterator const_iterator; -+ typedef _HashMap_iterator iterator; -+ inline const_iterator begin() const; -+ inline iterator begin(); -+ inline const_iterator end() const; -+ inline iterator end(); -+ -+ // dynamic resizing -+ void resize(size_t); -+ bool dynamic_resizing() const { return _capacity < 0x7FFFFFFF; } -+ void set_dynamic_resizing(bool); -+ -+ HashMap &operator=(const HashMap &); -+ -+ struct Pair { -+ K key; -+ V value; -+ }; -+ -+ enum { MAX_NBUCKETS = 32767, -+ DEFAULT_INITIAL_NBUCKETS = 127, -+ DEFAULT_RESIZE_THRESHOLD = 2 }; -+ -+ private: -+ -+ struct Elt : public Pair { -+ Elt *next; -+#if defined(__GNUC__) && __GNUC__ < 4 -+ /* Shut up compiler about Pair lacking default constructor */ -+ Elt(const Pair &p) : Pair(p) { } -+#endif -+ }; -+ -+ Elt **_buckets; -+ size_t _nbuckets; -+ V _default_value; -+ -+ size_t _n; -+ size_t _capacity; -+ -+ HashMap_Arena *_arena; -+ -+ void initialize(HashMap_ArenaFactory *, size_t); -+ void copy_from(const HashMap &); -+ void resize0(size_t); -+ size_t bucket(const K &) const; -+ -+ friend class _HashMap_iterator; -+ friend class _HashMap_const_iterator; -+ -+}; -+ -+template -+class _HashMap_const_iterator { public: -+ -+ bool live() const { return _elt; } -+ typedef bool (_HashMap_const_iterator::*unspecified_bool_type)() const; -+ inline operator unspecified_bool_type() const CLICK_DEPRECATED; -+ void operator++(int); -+ void operator++() { (*this)++; } -+ -+ typedef typename HashMap::Pair Pair; -+ const Pair *pair() const { return _elt; } -+ -+ const K &key() const { return _elt->key; } -+ const V &value() const { return _elt->value; } -+ -+ private: -+ -+ const HashMap *_hm; -+ typename HashMap::Elt *_elt; -+ size_t _bucket; -+ -+ _HashMap_const_iterator(const HashMap *m, bool begin); -+ friend class HashMap; -+ friend class _HashMap_iterator; -+ -+}; -+ -+template -+class _HashMap_iterator : public _HashMap_const_iterator { public: -+ -+ typedef _HashMap_const_iterator inherited; -+ -+ typedef typename HashMap::Pair Pair; -+ Pair *pair() const { return const_cast(inherited::pair()); } -+ V &value() const { return const_cast(inherited::value()); } -+ -+ private: -+ -+ _HashMap_iterator(HashMap *m, bool begin) : inherited(m, begin) { } -+ friend class HashMap; -+ -+}; -+ -+template -+inline typename HashMap::const_iterator -+HashMap::begin() const -+{ -+ return const_iterator(this, true); -+} -+ -+template -+inline typename HashMap::iterator -+HashMap::begin() -+{ -+ return iterator(this, true); -+} -+ -+template -+inline typename HashMap::const_iterator -+HashMap::end() const -+{ -+ return const_iterator(this, false); -+} -+ -+template -+inline typename HashMap::iterator -+HashMap::end() -+{ -+ return iterator(this, false); -+} -+ -+template -+inline V * -+HashMap::findp(const K &key) const -+{ -+ Pair *p = find_pair(key); -+ return (p ? &p->value : 0); -+} -+ -+template -+inline const V & -+HashMap::find(const K &key, const V &default_value) const -+{ -+ Pair *p = find_pair(key); -+ const V *v = (p ? &p->value : &default_value); -+ return *v; -+} -+ -+template -+inline const V & -+HashMap::find(const K &key) const -+{ -+ return find(key, _default_value); -+} -+ -+template -+inline const V & -+HashMap::operator[](const K &key) const -+{ -+ return find(key); -+} -+ -+template -+inline -+_HashMap_const_iterator::operator unspecified_bool_type() const -+{ -+ return live() ? &_HashMap_const_iterator::live : 0; -+} -+ -+ -+template -+class HashMap { public: -+ -+ struct Pair; -+ -+ HashMap(); -+ explicit HashMap(void *, HashMap_ArenaFactory * = 0); -+ HashMap(const HashMap &); -+ ~HashMap(); -+ -+ void set_arena(HashMap_ArenaFactory *); -+ -+ size_t size() const { return _n; } -+ bool empty() const { return _n == 0; } -+ size_t nbuckets() const { return _nbuckets; } -+ -+ Pair *find_pair(const K &) const; -+ inline void **findp(const K &) const; -+ inline void *find(const K &, void *) const; -+ inline void *find(const K &) const; -+ inline void *operator[](const K &) const; -+ -+ Pair *find_pair_force(const K &, void *); -+ Pair *find_pair_force(const K &k) { return find_pair_force(k, _default_value); } -+ void **findp_force(const K &k, void *v) { if (Pair *p = find_pair_force(k, v)) return &p->value; else return 0; } -+ void *&find_force(const K &k, void *v) { return *findp_force(k, v); } -+ void **findp_force(const K &k) { return findp_force(k, _default_value); } -+ void *&find_force(const K &k) { return *findp_force(k, _default_value); } -+ -+ bool insert(const K &, void *); -+ bool remove(const K &); -+ void clear(); -+ -+ void swap(HashMap &); -+ -+ // iterators -+ typedef _HashMap_const_iterator const_iterator; -+ typedef _HashMap_iterator iterator; -+ inline const_iterator begin() const; -+ inline iterator begin(); -+ inline const_iterator end() const; -+ inline iterator end(); -+ -+ // dynamic resizing -+ void resize(size_t); -+ bool dynamic_resizing() const { return _capacity < 0x7FFFFFFF; } -+ void set_dynamic_resizing(bool); -+ -+ HashMap &operator=(const HashMap &); -+ -+ struct Pair { -+ K key; -+ void *value; -+ }; -+ -+ enum { MAX_NBUCKETS = 32767, -+ DEFAULT_INITIAL_NBUCKETS = 127, -+ DEFAULT_RESIZE_THRESHOLD = 2 }; -+ -+ private: -+ -+ struct Elt : public Pair { -+ Elt *next; -+#if defined(__GNUC__) && __GNUC__ < 4 -+ /* Shut up compiler about Pair lacking default constructor */ -+ Elt(const Pair &p) : Pair(p) { } -+#endif -+ }; -+ -+ Elt **_buckets; -+ size_t _nbuckets; -+ void *_default_value; -+ -+ size_t _n; -+ size_t _capacity; -+ -+ HashMap_Arena *_arena; -+ -+ void initialize(HashMap_ArenaFactory *, size_t); -+ void copy_from(const HashMap &); -+ void resize0(size_t); -+ size_t bucket(const K &) const; -+ -+ friend class _HashMap_iterator; -+ friend class _HashMap_const_iterator; -+ -+}; -+ -+template -+class _HashMap_const_iterator { public: -+ -+ bool live() const { return _elt; } -+ typedef bool (_HashMap_const_iterator::*unspecified_bool_type)() const; -+ inline operator unspecified_bool_type() const CLICK_DEPRECATED; -+ void operator++(int); -+ void operator++() { (*this)++; } -+ -+ typedef typename HashMap::Pair Pair; -+ const Pair *pair() const { return _elt; } -+ -+ const K &key() const { return _elt->key; } -+ void *value() const { return _elt->value; } -+ -+ private: -+ -+ const HashMap *_hm; -+ typename HashMap::Elt *_elt; -+ size_t _bucket; -+ -+ _HashMap_const_iterator(const HashMap *, bool begin); -+ template friend class _HashMap_const_iterator; -+ template friend class _HashMap_iterator; -+ template friend class HashMap; -+ -+}; -+ -+template -+class _HashMap_iterator : public _HashMap_const_iterator { public: -+ -+ typedef _HashMap_const_iterator inherited; -+ -+ typedef typename HashMap::Pair Pair; -+ Pair *pair() const { return const_cast(inherited::pair()); } -+ void *&value() const { return this->_elt->value; } -+ -+ private: -+ -+ _HashMap_iterator(HashMap *m, bool begin) : inherited(m, begin) { } -+ template friend class HashMap; -+ -+}; -+ -+template -+inline typename HashMap::const_iterator -+HashMap::begin() const -+{ -+ return const_iterator(this, true); -+} -+ -+template -+inline typename HashMap::iterator -+HashMap::begin() -+{ -+ return iterator(this, true); -+} -+ -+template -+inline typename HashMap::const_iterator -+HashMap::end() const -+{ -+ return const_iterator(this, false); -+} -+ -+template -+inline typename HashMap::iterator -+HashMap::end() -+{ -+ return iterator(this, false); -+} -+ -+template -+inline void ** -+HashMap::findp(const K &key) const -+{ -+ Pair *p = find_pair(key); -+ return (p ? &p->value : 0); -+} -+ -+template -+inline void * -+HashMap::find(const K &key, void *default_value) const -+{ -+ Pair *p = find_pair(key); -+ return (p ? p->value : default_value); -+} -+ -+template -+inline void * -+HashMap::find(const K &key) const -+{ -+ return find(key, _default_value); -+} -+ -+template -+inline void * -+HashMap::operator[](const K &key) const -+{ -+ return find(key); -+} -+ -+template -+inline -+_HashMap_const_iterator::operator unspecified_bool_type() const -+{ -+ return live() ? &_HashMap_const_iterator::live : 0; -+} -+ -+ -+template -+class HashMap : public HashMap { public: -+ -+ typedef HashMap inherited; -+ struct Pair; -+ -+ HashMap() : inherited() { } -+ explicit HashMap(T *def, HashMap_ArenaFactory *factory = 0) -+ : inherited(def, factory) { } -+ HashMap(const HashMap &o) : inherited(o) { } -+ ~HashMap() { } -+ -+ void set_arena(HashMap_ArenaFactory *af) { inherited::set_arena(af); } -+ -+ // size_t size() const inherited -+ // bool empty() const inherited -+ // size_t nbuckets() const inherited -+ -+ Pair *find_pair(const K &k) const { return reinterpret_cast(inherited::find_pair(k)); } -+ T **findp(const K &k) const { return reinterpret_cast(inherited::findp(k)); } -+ T *find(const K &k, T *v) const { return reinterpret_cast(inherited::find(k, v)); } -+ T *find(const K &k) const { return reinterpret_cast(inherited::find(k)); } -+ T *operator[](const K &k) const { return reinterpret_cast(inherited::operator[](k)); } -+ -+ Pair *find_pair_force(const K &k, T *v) { return reinterpret_cast(inherited::find_pair_force(k, v)); } -+ Pair *find_pair_force(const K &k) { return reinterpret_cast(inherited::find_pair_force(k)); } -+ T **findp_force(const K &k, T *v) { return reinterpret_cast(inherited::findp_force(k, v)); } -+ T *&find_force(const K &k, T *v) { return *reinterpret_cast(inherited::findp_force(k, v)); } -+ T **findp_force(const K &k) { return reinterpret_cast(inherited::findp_force(k)); } -+ T *&find_force(const K &k) { return *reinterpret_cast(inherited::findp_force(k)); } -+ -+ bool insert(const K &k, T *v) { return inherited::insert(k, v); } -+ // bool remove(const K &) inherited -+ // void clear() inherited -+ -+ void swap(HashMap &o) { inherited::swap(o); } -+ -+ // iteration -+ typedef _HashMap_const_iterator const_iterator; -+ typedef _HashMap_iterator iterator; -+ inline const_iterator begin() const; -+ inline iterator begin(); -+ inline const_iterator end() const; -+ inline iterator end(); -+ -+ // dynamic resizing methods inherited -+ -+ HashMap &operator=(const HashMap &o) { return static_cast &>(inherited::operator=(o)); } -+ -+ struct Pair { -+ K key; -+ T *value; -+ }; -+ -+}; -+ -+template -+class _HashMap_const_iterator { public: -+ -+ typedef _HashMap_const_iterator inherited; -+ -+ bool live() const { return _i.live(); } -+ typedef typename inherited::unspecified_bool_type unspecified_bool_type; -+ inline operator unspecified_bool_type() const CLICK_DEPRECATED; -+ void operator++(int) { _i.operator++(0); } -+ void operator++() { _i.operator++(); } -+ -+ typedef typename HashMap::Pair Pair; -+ const Pair *pair() const { return reinterpret_cast(_i.pair()); } -+ -+ const K &key() const { return _i.key(); } -+ T *value() const { return reinterpret_cast(_i.value()); } -+ -+ private: -+ -+ inherited _i; -+ -+ _HashMap_const_iterator(const HashMap *t, bool begin) : _i(t, begin) { } -+ friend class _HashMap_iterator; -+ template friend class HashMap; -+ -+}; -+ -+template -+class _HashMap_iterator : public _HashMap_const_iterator { public: -+ -+ typedef _HashMap_const_iterator inherited; -+ -+ typedef typename HashMap::Pair Pair; -+ Pair *pair() const { return const_cast(inherited::pair()); } -+ T *&value() const { return pair()->value; } -+ -+ private: -+ -+ _HashMap_iterator(HashMap *t, bool begin) : inherited(t, begin) { } -+ template friend class HashMap; -+ -+}; -+ -+template -+inline typename HashMap::const_iterator -+HashMap::begin() const -+{ -+ return const_iterator(this, true); -+} -+ -+template -+inline typename HashMap::iterator -+HashMap::begin() -+{ -+ return iterator(this, true); -+} -+ -+template -+inline typename HashMap::const_iterator -+HashMap::end() const -+{ -+ return const_iterator(this, false); -+} -+ -+template -+inline typename HashMap::iterator -+HashMap::end() -+{ -+ return iterator(this, false); -+} -+ -+template -+inline -+_HashMap_const_iterator::operator unspecified_bool_type() const -+{ -+ return inherited::live() ? &inherited::live : 0; -+} -+ -+template -+inline bool -+operator==(const _HashMap_const_iterator &a, const _HashMap_const_iterator &b) -+{ -+ return a.pair() == b.pair(); -+} -+ -+template -+inline bool -+operator!=(const _HashMap_const_iterator &a, const _HashMap_const_iterator &b) -+{ -+ return a.pair() != b.pair(); -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/bighashmap_arena.hh click-1.6.0-27/inst/include/click/bighashmap_arena.hh ---- click-1.6.0/inst/include/click/bighashmap_arena.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/bighashmap_arena.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,98 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/bighashmap_arena.cc" -*- -+#ifndef CLICK_BIGHASHMAP_ARENA_HH -+#define CLICK_BIGHASHMAP_ARENA_HH -+CLICK_DECLS -+ -+class HashMap_Arena { public: -+ -+ HashMap_Arena(uint32_t element_size); -+ -+ void use() { _refcount++; } -+ void unuse(); -+ -+ bool detached() const { return _detached; } -+ void detach() { _detached = true; } -+ -+ void *alloc(); -+ void free(void *); -+ -+ private: -+ -+ struct Link { -+ Link *next; -+ }; -+ Link *_free; -+ -+ enum { NELEMENTS = 127 }; // not a power of 2 so we don't fall into a -+ // too-large bucket -+ char *_cur_buffer; -+ int _buffer_pos; -+ -+ uint32_t _element_size; -+ -+ char **_buffers; -+ int _nbuffers; -+ int _buffers_cap; -+ -+ uint32_t _refcount; -+ bool _detached; -+ -+ ~HashMap_Arena(); -+ void *hard_alloc(); -+ -+ friend class Link; // shut up, compiler -+ -+}; -+ -+class HashMap_ArenaFactory { public: -+ -+ HashMap_ArenaFactory(); -+ virtual ~HashMap_ArenaFactory(); -+ -+ static void static_initialize(); -+ static void static_cleanup(); -+ -+ static HashMap_Arena *get_arena(uint32_t, HashMap_ArenaFactory * =0); -+ virtual HashMap_Arena *get_arena_func(uint32_t); -+ -+ private: -+ -+ HashMap_Arena **_arenas[2]; -+ int _narenas[2]; -+ -+ static HashMap_ArenaFactory *the_factory; -+ -+}; -+ -+inline void -+HashMap_Arena::unuse() -+{ -+ _refcount--; -+ if (_refcount <= 0) -+ delete this; -+} -+ -+inline void * -+HashMap_Arena::alloc() -+{ -+ if (_free) { -+ void *ret = _free; -+ _free = _free->next; -+ return ret; -+ } else if (_buffer_pos > 0) { -+ _buffer_pos -= _element_size; -+ return _cur_buffer + _buffer_pos; -+ } else -+ return hard_alloc(); -+} -+ -+inline void -+HashMap_Arena::free(void *v) -+{ -+ Link *link = reinterpret_cast(v); -+ link->next = _free; -+ _free = link; -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/bitvector.hh click-1.6.0-27/inst/include/click/bitvector.hh ---- click-1.6.0/inst/include/click/bitvector.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/bitvector.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,248 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/bitvector.cc" -*- -+#ifndef CLICK_BITVECTOR_HH -+#define CLICK_BITVECTOR_HH -+#include -+CLICK_DECLS -+ -+class Bitvector { public: -+ -+ class Bit; -+ -+ Bitvector() : _max(-1), _data(&_f0), _f0(0), _f1(0) { } -+ explicit Bitvector(int); -+ explicit Bitvector(unsigned); -+ explicit Bitvector(bool b) : _max(0), _data(&_f0), _f0(b), _f1(0) { } -+ Bitvector(int, bool); -+ Bitvector(unsigned, bool); -+ Bitvector(const Bitvector &); -+ ~Bitvector() { if (_data != &_f0) delete[] _data; } -+ -+ int size() const { return _max + 1; } -+ -+ bool zero() const; -+ -+ typedef bool (Bitvector::*unspecified_bool_type)() const; -+ operator bool() const { return !zero() ? &Bitvector::zero : 0; } -+ -+ Bit operator[](int); -+ bool operator[](int) const; -+ Bit force_bit(int); -+ -+ void clear(); -+ void resize(int n); -+ -+ bool operator==(const Bitvector &) const; -+ bool operator!=(const Bitvector &) const; -+ -+ Bitvector operator~() const; -+ Bitvector operator&(const Bitvector &) const; -+ Bitvector operator|(const Bitvector &) const; -+ Bitvector operator^(const Bitvector &) const; -+ Bitvector operator-(const Bitvector &) const; -+ -+ Bitvector &operator=(const Bitvector &); -+ void negate(); -+ Bitvector &operator&=(const Bitvector &); -+ Bitvector &operator|=(const Bitvector &); -+ Bitvector &operator^=(const Bitvector &); -+ Bitvector &operator-=(const Bitvector &); -+ Bitvector &assign(int, bool); -+ -+ void or_at(const Bitvector &, int); -+ void or_with_difference(const Bitvector &, Bitvector &diff); -+ bool nonzero_intersection(const Bitvector &) const; -+ -+ // expose the implementation -+ int max_word() const { return (_max < 0 ? -1 : _max>>5); } -+ uint32_t *data_words() { return _data; } -+ const uint32_t *data_words() const { return _data; } -+ -+ private: -+ -+ enum { MAX_INLINE_BIT = 63, MAX_INLINE_WORD = 1 }; -+ -+ int _max; -+ uint32_t *_data; -+ uint32_t _f0; -+ uint32_t _f1; -+ -+ void finish_copy_constructor(const Bitvector &); -+ void clear_last(); -+ void resize_to_max(int, bool); -+ -+}; -+ -+class Bitvector::Bit { public: -+ -+ Bit(uint32_t &p, int off) : _p(p), _mask(1U< MAX_INLINE_BIT) -+ resize_to_max(_max, false); -+} -+ -+inline -+Bitvector::Bitvector(unsigned n) -+ : _max(n - 1), _data(&_f0), _f0(0), _f1(0) -+{ -+ if (_max > MAX_INLINE_BIT) -+ resize_to_max(_max, false); -+} -+ -+inline -+Bitvector::Bitvector(int n, bool b) -+ : _max(n - 1), _data(&_f0), _f0(0), _f1(0) -+{ -+ if (_max > MAX_INLINE_BIT) -+ resize_to_max(_max, false); -+ if (b) -+ assign(n, b); -+} -+ -+inline -+Bitvector::Bitvector(unsigned n, bool b) -+ : _max(n - 1), _data(&_f0), _f0(0), _f1(0) -+{ -+ if (_max > MAX_INLINE_BIT) -+ resize_to_max(_max, false); -+ if (b) -+ assign(n, b); -+} -+ -+inline -+Bitvector::Bitvector(const Bitvector &o) -+ : _max(o._max), _data(&_f0), _f0(o._data[0]), _f1(o._data[1]) -+{ -+ if (_max > MAX_INLINE_BIT) -+ finish_copy_constructor(o); -+} -+ -+inline void -+Bitvector::resize(int n) -+{ -+ if (n - 1 > MAX_INLINE_BIT) -+ resize_to_max(n - 1, true); -+ _max = n - 1; -+} -+ -+inline bool -+Bitvector::Bit::operator=(bool b) -+{ -+ if (b) -+ _p |= _mask; -+ else -+ _p &= ~_mask; -+ return b; -+} -+ -+inline bool -+Bitvector::Bit::operator=(const Bit &o) -+{ -+ return *this = (bool)o; -+} -+ -+inline Bitvector::Bit -+Bitvector::operator[](int i) -+{ -+ assert(i >= 0 && i <= _max); -+ return Bit(_data[i>>5], i&31); -+} -+ -+inline Bitvector::Bit -+Bitvector::force_bit(int i) -+{ -+ assert(i >= 0); -+ if (i > _max) -+ resize(i + 1); -+ return Bit(_data[i>>5], i&31); -+} -+ -+inline bool -+Bitvector::operator[](int i) const -+{ -+ assert(i >= 0 && i <= _max); -+ return (_data[i>>5] & (1<<(i&31))) != 0; -+} -+ -+inline bool -+Bitvector::operator==(const Bitvector &o) const -+{ -+ if (_max != o._max) -+ return false; -+ else if (_max <= MAX_INLINE_BIT) -+ return memcmp(_data, o._data, 8) == 0; -+ else -+ return memcmp(_data, o._data, (max_word() + 1)*4) == 0; -+} -+ -+inline bool -+Bitvector::operator!=(const Bitvector &o) const -+{ -+ return !(*this == o); -+} -+ -+inline Bitvector & -+Bitvector::operator-=(const Bitvector &o) -+{ -+ return *this &= ~o; -+} -+ -+inline Bitvector -+Bitvector::operator~() const -+{ -+ Bitvector m = *this; -+ m.negate(); -+ return m; -+} -+ -+inline Bitvector -+Bitvector::operator&(const Bitvector &o) const -+{ -+ Bitvector m = *this; -+ m &= o; -+ return m; -+} -+ -+inline Bitvector -+Bitvector::operator|(const Bitvector &o) const -+{ -+ Bitvector m = *this; -+ m |= o; -+ return m; -+} -+ -+inline Bitvector -+Bitvector::operator^(const Bitvector &o) const -+{ -+ Bitvector m = *this; -+ m ^= o; -+ return m; -+} -+ -+inline Bitvector -+Bitvector::operator-(const Bitvector &o) const -+{ -+ return *this & ~o; -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/clp.h click-1.6.0-27/inst/include/click/clp.h ---- click-1.6.0/inst/include/click/clp.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/clp.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,152 @@ -+#ifndef LCDF_CLP_H -+#define LCDF_CLP_H -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* clp.h - Public interface to CLP. -+ * This file is part of CLP, the command line parser package. -+ * -+ * Copyright (c) 1997-2006 Eddie Kohler, kohler@icir.org -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, subject to the conditions -+ * listed in the Click LICENSE file, which is available in full at -+ * http://www.pdos.lcs.mit.edu/click/license.html. The conditions include: you -+ * must preserve this copyright notice, and you cannot mention the copyright -+ * holders in advertising related to the Software without their permission. -+ * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+ * notice is a summary of the Click LICENSE file; the license in that file is -+ * legally binding. */ -+ -+ -+/* Argument types */ -+#define Clp_NoArg 0 -+#define Clp_ArgString 1 -+#define Clp_ArgStringNotOption 2 -+#define Clp_ArgBool 3 -+#define Clp_ArgInt 4 -+#define Clp_ArgUnsigned 5 -+#define Clp_ArgDouble 6 -+ -+#define Clp_FirstUserType 10 -+ -+/* Argument type flags */ -+#define Clp_DisallowOptions (1<<0) /* Argument won't resemble an option */ -+ -+/* Flags for individual Clp_Options */ -+#define Clp_Mandatory (1<<0) /* Has mandatory argument */ -+#define Clp_Optional (1<<1) /* Has optional argument */ -+#define Clp_Negate (1<<2) /* Allow --no-OPT */ -+#define Clp_OnlyNegated (1<<3) /* Allow --no-OPT, but not --OPT */ -+#define Clp_PreferredMatch (1<<4) /* Prefer --OPT to --OPTwhatever when -+ matching option prefixes */ -+ -+/* Option types for Clp_SetOptionChar */ -+/* Clp_NotOption 0 */ -+#define Clp_Short (1<<0) -+#define Clp_Long (1<<1) -+#define Clp_ShortNegated (1<<2) -+#define Clp_LongNegated (1<<3) -+#define Clp_LongImplicit (1<<4) -+ -+/* Flags for Clp_AddStringListType */ -+#define Clp_AllowNumbers (1<<0) -+ -+/* Return values from Clp_Next */ -+#define Clp_NotOption 0 -+#define Clp_Done -1 -+#define Clp_BadOption -2 -+#define Clp_Error -3 -+ -+/* Sizes of clp->val */ -+#define Clp_ValSize 40 -+#define Clp_ValIntSize 10 -+ -+ -+typedef struct Clp_Option Clp_Option; -+typedef struct Clp_Parser Clp_Parser; -+typedef struct Clp_Internal Clp_Internal; -+typedef struct Clp_ParserState Clp_ParserState; -+ -+typedef int (*Clp_ArgParseFunc)(Clp_Parser *, const char *, int, void *); -+typedef void (*Clp_ErrorHandler)(const char *); -+ -+ -+struct Clp_Option { -+ -+ const char *long_name; -+ int short_name; -+ -+ int option_id; -+ -+ int arg_type; -+ int flags; -+ -+}; -+ -+ -+struct Clp_Parser { -+ -+ int negated; -+ -+ int have_arg; -+ const char *arg; -+ -+ union { -+ int i; -+ unsigned u; -+ double d; -+ const char *s; -+ void *pv; -+#ifdef HAVE_INT64_TYPES -+ int64_t i64; -+ uint64_t u64; -+#endif -+ char cs[Clp_ValSize]; -+ unsigned char ucs[Clp_ValSize]; -+ int is[Clp_ValIntSize]; -+ unsigned us[Clp_ValIntSize]; -+ } val; -+ -+ Clp_Internal *internal; -+ -+}; -+ -+ -+Clp_Parser * Clp_NewParser(int argc, const char * const *argv, -+ int nopt, Clp_Option *opt); -+void Clp_DeleteParser(Clp_Parser *); -+ -+Clp_ErrorHandler Clp_SetErrorHandler(Clp_Parser *, Clp_ErrorHandler); -+int Clp_SetOptionChar(Clp_Parser *, int c, int option_type); -+ -+int Clp_AddType -+ (Clp_Parser *, int type_id, int flags, -+ Clp_ArgParseFunc func, void *user_data); -+int Clp_AddStringListType -+ (Clp_Parser *, int type_id, int flags, ...); -+int Clp_AddStringListTypeVec -+ (Clp_Parser *, int type_id, int flags, -+ int n, char **str, int *val); -+ -+const char * Clp_ProgramName(Clp_Parser *); -+ -+int Clp_Next(Clp_Parser *); -+const char * Clp_Shift(Clp_Parser *, int allow_dashes); -+int Clp_SetOptionProcessing(Clp_Parser *, int option_processing); -+ -+Clp_ParserState *Clp_NewParserState(void); -+void Clp_DeleteParserState(Clp_ParserState *); -+void Clp_SaveParser(Clp_Parser *, Clp_ParserState *); -+void Clp_RestoreParser(Clp_Parser *, Clp_ParserState *); -+ -+int Clp_OptionError(Clp_Parser *, const char *, ...); -+int Clp_CurOptionNameBuf(Clp_Parser *, char *buf, int buflen); -+const char * Clp_CurOptionName(Clp_Parser *); /* uses static memory */ -+ -+#ifdef __cplusplus -+} -+#endif -+#endif -diff -Nurb click-1.6.0/inst/include/click/config-bsdmodule.h click-1.6.0-27/inst/include/click/config-bsdmodule.h ---- click-1.6.0/inst/include/click/config-bsdmodule.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/config-bsdmodule.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,52 @@ -+/* include/click/config-bsdmodule.h. Generated from config-bsdmodule.h.in by configure. */ -+/* Process this file with configure to produce config-bsdmodule.h. -*- mode: c -*- */ -+#ifndef CLICK_CONFIG_BSDMODULE_H -+#define CLICK_CONFIG_BSDMODULE_H -+ -+/* Define stuff under a FreeBSD module. */ -+#ifndef __FreeBSD__ -+# error "I must be compiled on a FreeBSD machine" -+#endif -+#define KERNEL 1 -+#define _KERNEL 1 -+#define KLD_MODULE 1 -+ -+/* Define if your BSD kernel has Click extensions. */ -+/* #undef HAVE_CLICK_BSD_KERNEL */ -+ -+/* Define if your BSD kernel has polling extensions. */ -+/* #undef HAVE_BSD_POLLING */ -+ -+/* Define if Click should use an adaptive scheduler to share the CPU(s) more -+ fairly with the kernel. */ -+/* #undef HAVE_ADAPTIVE_SCHEDULER */ -+ -+/* Include integer and other type definitions. */ -+#include -+ -+/* Define assert macro. */ -+#define assert(x) /* nada */ -+ -+/* Define likely and unlikely macros. */ -+#define likely(x) (x) -+#define unlikely(x) (x) -+ -+#ifdef __cplusplus -+ -+/* Declare operator new. */ -+void *operator new(size_t) throw (); -+void *operator new[](size_t) throw (); -+ -+/* Provide placement new. */ -+inline void *operator new(size_t, void *v) throw () { return v; } -+#define HAVE_PLACEMENT_NEW 1 -+ -+/* Define macros that surround Click declarations. */ -+#define CLICK_DECLS namespace Click { -+#define CLICK_ENDDECLS } -+#define CLICK_USING_DECLS using namespace Click; -+#define CLICK_NAME(name) ::Click::name -+ -+#endif /* __cplusplus */ -+ -+#endif /* CLICK_CONFIG_BSDMODULE_H */ -diff -Nurb click-1.6.0/inst/include/click/config-linuxmodule.h click-1.6.0-27/inst/include/click/config-linuxmodule.h ---- click-1.6.0/inst/include/click/config-linuxmodule.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/config-linuxmodule.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,153 @@ -+/* include/click/config-linuxmodule.h. Generated from config-linuxmodule.h.in by configure. */ -+/* Process this file with configure to produce config-linuxmodule.h. -*- mode: c -*- */ -+#ifndef CLICK_CONFIG_LINUXMODULE_H -+#define CLICK_CONFIG_LINUXMODULE_H -+ -+/* Define stuff under a Linux module. */ -+#ifndef __linux__ -+# error "I must be compiled on a Linux machine" -+#endif -+#define __KERNEL__ 1 -+#define MODULE 1 -+ -+/* Define if your Linux kernel is running in SMP mode. */ -+#define __SMP__ 1 -+ -+/* Define if Click should use an adaptive scheduler to share the CPU(s) more -+ fairly with the kernel. */ -+/* #undef HAVE_ADAPTIVE_SCHEDULER */ -+ -+/* Define if your Linux kernel has Click extensions. */ -+#define HAVE_CLICK_KERNEL 1 -+ -+/* Define if your Linux kernel has Click transmit notification extensions. */ -+/* #undef HAVE_CLICK_KERNEL_TX_NOTIFY */ -+ -+/* Define if fast checksum functions available. */ -+#define HAVE_FAST_CHECKSUM 1 -+ -+/* Define if 'int64_t' is typedefed to 'long' in linuxmodule. */ -+/* #undef HAVE_INT64_IS_LONG_LINUXMODULE */ -+ -+/* Define if 'int64_t' is typedefed to 'long long' in linuxmodule. */ -+#define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1 -+ -+/* Define to enable assertion checking. Failed assertions will print a message -+ and optionally stop the router. */ -+/* #undef HAVE_KERNEL_ASSERT */ -+ -+/* Define if you have the header file. */ -+#define HAVE_LINUX_ASM_ALTERNATIVE_H 1 -+ -+/* Define if your Linux kernel architecture defines atomic_set_mask. */ -+/* #undef HAVE_LINUX_ATOMIC_SET_MASK */ -+ -+/* Define if your Linux kernel has polling extensions. */ -+#define HAVE_LINUX_POLLING 1 -+ -+/* Define if your Linux kernel has read_net_skbcount. */ -+/* #undef HAVE_LINUX_READ_NET_SKBCOUNT */ -+ -+/* Define if 'struct skb_shared_info' has a 'gso_size' member. */ -+/* #undef HAVE_LINUX_SKB_SHINFO_GSO_SIZE */ -+ -+/* Define if 'struct skb_shared_info' has an 'ip6_frag_id' member. */ -+/* #undef HAVE_LINUX_SKB_SHINFO_IP6_FRAG_ID */ -+ -+/* Define if 'struct skb_shared_info' has a 'tso_size' member. */ -+/* #undef HAVE_LINUX_SKB_SHINFO_TSO_SIZE */ -+ -+/* Define if 'struct skb_shared_info' has a 'ufo_size' member. */ -+/* #undef HAVE_LINUX_SKB_SHINFO_UFO_SIZE */ -+ -+/* Define if 'struct sk_buff' has an 'fclone' member. */ -+/* #undef HAVE_LINUX_SKBUFF_FCLONE */ -+ -+/* Define if 'struct sk_buff' has a 'security' member. */ -+/* #undef HAVE_LINUX_SKBUFF_SECURITY */ -+ -+/* Define if your Linux kernel exposes strlen. */ -+#define HAVE_LINUX_STRLEN_EXPOSED 1 -+ -+/* Define if your Linux kernel has tulip_interrupt_hook. */ -+/* #undef HAVE_LINUX_TULIP_INTERRUPT_HOOK */ -+ -+/* Define if the Click linuxmodule is compiled for a 2.6 kernel. */ -+#define HAVE_LINUXMODULE_2_6 1 -+ -+/* Define if you have the net_enable_timestamp function. */ -+/* #undef HAVE_NET_ENABLE_TIMESTAMP */ -+ -+/* Define if you have the netif_tx_lock function. */ -+/* #undef HAVE_NETIF_TX_LOCK */ -+ -+/* Define if fast checksum functions require correct alignment. */ -+#ifndef __i386__ -+# define FAST_CHECKSUM_ALIGNED 1 -+#endif -+ -+/* Include integer type definitions. */ -+# include -+#include -+typedef ptrdiff_t intptr_t; -+//typedef unsigned long uintptr_t; /* XXX? */ -+ -+/* Define HAVE_INT64_IS_LONG based on HAVE_INT64_IS_LONG_LINUXMODULE. */ -+#ifdef HAVE_INT64_IS_LONG_LINUXMODULE -+# define HAVE_INT64_IS_LONG HAVE_INT64_IS_LONG_LINUXMODULE -+#endif -+ -+/* Define HAVE_INT64_IS_LONG_LONG based on HAVE_INT64_IS_LONG_LONG_LINUXMODULE. */ -+#if HAVE_LONG_LONG && defined(HAVE_INT64_IS_LONG_LONG_LINUXMODULE) -+# define HAVE_INT64_IS_LONG_LONG HAVE_INT64_IS_LONG_LONG_LINUXMODULE -+#endif -+ -+/* Define KBUILD symbols. */ -+#if !defined(KBUILD_STR) && HAVE_LINUXMODULE_2_6 -+# define KBUILD_STR(s) #s -+# define KBUILD_BASENAME KBUILD_STR(click) -+# define KBUILD_MODNAME KBUILD_STR(click) -+#endif -+ -+#ifdef __cplusplus -+ -+/* Declare operator new. */ -+void *operator new(size_t) throw (); -+void *operator new[](size_t) throw (); -+ -+/* Provide placement new. */ -+inline void *operator new(size_t, void *v) { return v; } -+#define HAVE_PLACEMENT_NEW 1 -+ -+/* Define macros that surround Click declarations. */ -+#define CLICK_DECLS /* */ -+#define CLICK_ENDDECLS /* */ -+#define CLICK_USING_DECLS /* */ -+#define CLICK_NAME(name) ::name -+ -+/* Fix incompatibilities between some Linux versions and Click/C++. */ -+#include -+ -+#endif /* __cplusplus */ -+ -+/* Define assert macro. */ -+# ifdef __cplusplus -+extern "C" { -+# endif -+void click_assert_failed(const char *file, int line, const char *problem_text); -+# ifdef __cplusplus -+} -+# endif -+ -+#ifdef HAVE_KERNEL_ASSERT -+# define assert(x) ((x) ? (void)0 : click_assert_failed(__FILE__, __LINE__, #x)) -+#else -+# define assert(x) /* nada */ -+#endif -+ -+/* Some architectures do not have builtin integer functions in kernel. */ -+#if defined(__MIPSEL__) || defined(__MIPSEB__) -+# define HAVE_NO_INTEGER_BUILTINS 1 -+#endif -+ -+#endif /* CLICK_CONFIG_LINUXMODULE_H */ -diff -Nurb click-1.6.0/inst/include/click/config-ns.h click-1.6.0-27/inst/include/click/config-ns.h ---- click-1.6.0/inst/include/click/config-ns.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/config-ns.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,20 @@ -+/* include/click/config-ns.h. Generated from config-ns.h.in by configure. */ -+/* Process this file with configure to produce config-ns.h. -*- mode: c -*- */ -+#ifndef CLICK_CONFIG_NS_H -+#define CLICK_CONFIG_NS_H -+ -+#ifdef __cplusplus -+ -+/* Define macros that surround Click declarations. */ -+#define CLICK_DECLS namespace Click { -+#define CLICK_ENDDECLS } -+#define CLICK_USING_DECLS using namespace Click; -+#define CLICK_NAME(name) ::Click::name -+ -+#endif /* __cplusplus */ -+ -+/* Include userlevel configuration. */ -+#define CLICK_USERLEVEL 1 -+#include -+ -+#endif /* CLICK_CONFIG_NS_H */ -diff -Nurb click-1.6.0/inst/include/click/config-userlevel.h click-1.6.0-27/inst/include/click/config-userlevel.h ---- click-1.6.0/inst/include/click/config-userlevel.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/config-userlevel.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,249 @@ -+/* include/click/config-userlevel.h. Generated from config-userlevel.h.in by configure. */ -+/* Process this file with configure to produce config-userlevel.h. -*- mode: c -*- */ -+#ifndef CLICK_CONFIG_USERLEVEL_H -+#define CLICK_CONFIG_USERLEVEL_H -+ -+/* Define if accept() uses socklen_t. */ -+#define HAVE_ACCEPT_SOCKLEN_T 1 -+ -+/* Define if uses bpf_timeval. */ -+/* #undef HAVE_BPF_TIMEVAL */ -+ -+/* Define if you have the header file. */ -+#define HAVE_BYTESWAP_H 1 -+ -+/* Define to 1 if you have the declaration -+ of 'madvise', and to 0 if you don't. */ -+#define HAVE_DECL_MADVISE 1 -+ -+/* Define to 1 if you have the declaration -+ of 'pcap_setnonblock', and to 0 if you don't. */ -+#define HAVE_DECL_PCAP_SETNONBLOCK 1 -+ -+/* Define if you have the header file. */ -+#define HAVE_DLFCN_H 1 -+ -+/* Define if dynamic linking is possible. */ -+#define HAVE_DYNAMIC_LINKING 1 -+ -+/* Define if you have the ffs function. */ -+#define HAVE_FFS 1 -+ -+/* Define if you have the ffsl function. */ -+#define HAVE_FFSL 1 -+ -+/* Define if you have the ffsll function. */ -+#define HAVE_FFSLL 1 -+ -+/* Floating point arithmetic is allowed. */ -+#define HAVE_FLOAT_TYPES 1 -+ -+/* Define if you have the header file. */ -+#define HAVE_GRP_H 1 -+ -+/* Define if the last argument to EV_SET has pointer type. */ -+/* #undef HAVE_EV_SET_UDATA_POINTER */ -+ -+/* Define if 'struct if_data' has an 'ifi_datalen' member. */ -+/* #undef HAVE_IF_DATA_IFI_DATALEN */ -+ -+/* Define if 'int64_t' is typedefed to 'long' at user level. */ -+/* #undef HAVE_INT64_IS_LONG_USERLEVEL */ -+ -+/* Define if 'int64_t' is typedefed to 'long long' at user level. */ -+#define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1 -+ -+/* Define if you have the header file. */ -+#define HAVE_INTTYPES_H 1 -+ -+/* Define if you have the kqueue function. */ -+/* #undef HAVE_KQUEUE */ -+ -+/* Define if your C library contains large file support. */ -+#define HAVE_LARGE_FILE_SUPPORT 1 -+ -+/* Define if you have the header file. */ -+#define HAVE_LINUX_IF_TUN_H 1 -+ -+/* Define if you have the madvise function. */ -+#define HAVE_MADVISE 1 -+ -+/* Define if you have the mmap function. */ -+#define HAVE_MMAP 1 -+ -+/* Define if you have the header file. */ -+/* #undef HAVE_NET_BPF_H */ -+ -+/* Define if you have the header file. */ -+/* #undef HAVE_NET_IF_TAP_H */ -+ -+/* Define if you have the header file. */ -+/* #undef HAVE_NET_IF_TUN_H */ -+ -+/* Define if you have the header file. */ -+#define HAVE_NETDB_H 1 -+ -+/* Define if exists and works. */ -+/* #undef HAVE_NEW_H */ -+ -+/* Define if exists and works. */ -+#define HAVE_NEW_HDR 1 -+ -+/* Define if you have -lpcap and pcap.h. */ -+#define HAVE_PCAP 1 -+ -+/* Define if you have the pcap_setnonblock function. */ -+#define HAVE_PCAP_SETNONBLOCK 1 -+ -+/* Define if you have -lproper and prop.h, and proper operations should be -+ preferred to their non-proper counterparts. */ -+/* #undef HAVE_PROPER */ -+ -+/* Define if you have a non-emulated header file. */ -+#define HAVE_POLL_H 1 -+ -+/* Placement new is always provided below. */ -+#define HAVE_PLACEMENT_NEW 1 -+ -+/* Define if you have the header file. */ -+#define HAVE_PWD_H 1 -+ -+/* Define if you have the sigaction function. */ -+#define HAVE_SIGACTION 1 -+ -+/* Define if you have the snprintf function. */ -+#define HAVE_SNPRINTF 1 -+ -+/* Define if 'struct sockaddr_in' has a 'sin_len' member. */ -+/* #undef HAVE_SOCKADDR_IN_SIN_LEN */ -+ -+/* Define if you have the strerror function. */ -+#define HAVE_STRERROR 1 -+ -+/* Define if you have the header file. */ -+#define HAVE_STRINGS_H 1 -+ -+/* Define if you have the strtoul function. */ -+#define HAVE_STRTOUL 1 -+ -+/* Define if you have the header file. */ -+/* #undef HAVE_SYS_EVENT_H */ -+ -+/* Define if you have the header file. */ -+#define HAVE_SYS_MMAN_H 1 -+ -+/* Define if you have the tcgetpgrp function. */ -+#define HAVE_TCGETPGRP 1 -+ -+/* Define if you have the header file. */ -+#define HAVE_TERMIO_H 1 -+ -+/* Define if you have u_intXX_t types but not uintXX_t types. */ -+/* #undef HAVE_U_INT_TYPES */ -+ -+/* Define if you have the header file. */ -+#define HAVE_UNISTD_H 1 -+ -+/* Define if a Click user-level driver might run multiple threads. */ -+/* #undef HAVE_USER_MULTITHREAD */ -+ -+/* Define if you have the vsnprintf function. */ -+#define HAVE_VSNPRINTF 1 -+ -+/* The size of a `off_t', as computed by sizeof. */ -+#define SIZEOF_OFF_T 8 -+ -+ -+/* Set feature test macros before anything is included. */ -+#if HAVE_LARGE_FILE_SUPPORT && HAVE_INT64_TYPES -+# define _LARGEFILE_SOURCE 1 -+# define _FILE_OFFSET_BITS 64 -+#endif -+ -+/* Include integer type definitions. */ -+#ifdef HAVE_INTTYPES_H -+# include -+#endif -+#include -+ -+/* Define uint types in terms of u_int types, if necessary. */ -+#ifdef HAVE_U_INT_TYPES -+typedef u_int8_t uint8_t; -+typedef u_int16_t uint16_t; -+typedef u_int32_t uint32_t; -+# ifdef HAVE_INT64_TYPES -+typedef u_int64_t uint64_t; -+# endif -+typedef long intptr_t; /* XXX? */ -+typedef unsigned long uintptr_t; -+#endif -+ -+/* Define HAVE_INT64_IS_LONG based on HAVE_INT64_IS_LONG_USERLEVEL. */ -+#ifdef HAVE_INT64_IS_LONG_USERLEVEL -+# define HAVE_INT64_IS_LONG HAVE_INT64_IS_LONG_USERLEVEL -+#endif -+ -+/* Define HAVE_INT64_IS_LONG_LONG based on HAVE_INT64_IS_LONG_LONG_USERLEVEL. */ -+#ifdef HAVE_INT64_IS_LONG_LONG_USERLEVEL -+# define HAVE_INT64_IS_LONG_LONG HAVE_INT64_IS_LONG_LONG_USERLEVEL -+#endif -+ -+/* Define HAVE_MULTITHREAD based on HAVE_USER_MULTITHREAD. */ -+#ifdef HAVE_USER_MULTITHREAD -+# define HAVE_MULTITHREAD HAVE_USER_MULTITHREAD -+#endif -+ -+/* Include assert macro. */ -+#include -+ -+/* Define likely and unlikely macros. */ -+#if __GNUC__ >= 3 -+# define likely(x) __builtin_expect(!!(x), 1) -+# define unlikely(x) __builtin_expect(!!(x), 0) -+#else -+# define likely(x) (x) -+# define unlikely(x) (x) -+#endif -+ -+/* Define if mmap is allowed. */ -+#if defined(HAVE_SYS_MMAN_H) && defined(HAVE_MMAP) -+# define ALLOW_MMAP 1 -+#endif -+ -+/* Prototype strerror if we don't have it. */ -+#ifndef HAVE_STRERROR -+char *strerror(int errno); -+#endif -+ -+/* Use nanosecond-granularity timestamps if they are enabled. */ -+#ifdef HAVE_NANOTIMESTAMP_ENABLED -+#define HAVE_NANOTIMESTAMP 1 -+#endif -+ -+#ifdef __cplusplus -+ -+/* Provide placement new. */ -+#if HAVE_NEW_HDR -+# include -+#elif HAVE_NEW_H -+# include -+#else -+inline void *operator new(size_t, void *v) { return v; } -+#endif -+ -+/* Prototype madvise if we have it, but not the prototype. */ -+#if ALLOW_MMAP && HAVE_MADVISE && !HAVE_DECL_MADVISE -+extern "C" int madvise(void *addr, size_t len, int behav); -+#endif -+ -+/* Define macros that surround Click declarations. */ -+#ifndef CLICK_DECLS -+# define CLICK_DECLS /* */ -+# define CLICK_ENDDECLS /* */ -+# define CLICK_USING_DECLS /* */ -+# define CLICK_NAME(name) ::name -+#endif -+ -+#endif /* __cplusplus */ -+ -+#endif /* CLICK_CONFIG_USERLEVEL_H */ -diff -Nurb click-1.6.0/inst/include/click/config.h click-1.6.0-27/inst/include/click/config.h ---- click-1.6.0/inst/include/click/config.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/config.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,168 @@ -+/* include/click/config.h. Generated from config.h.in by configure. */ -+/* Process this file with configure to produce config.h. -*- mode: c -*- */ -+#ifndef CLICK_CONFIG_H -+#define CLICK_CONFIG_H -+ -+/* Define to byte order of target machine. */ -+#define CLICK_BYTE_ORDER 1234 -+#define CLICK_BIG_ENDIAN 4321 -+#define CLICK_LITTLE_ENDIAN 1234 -+#define CLICK_NO_ENDIAN 0 -+ -+/* Define for Click memory allocation debugging. */ -+/* #undef CLICK_DMALLOC */ -+ -+/* Version number of package */ -+#define CLICK_VERSION "1.6.0" -+ -+/* Define if PollDevice should run fast to get good benchmark numbers */ -+/* #undef CLICK_WARP9 */ -+ -+/* Define if you have the __builtin_clz function. */ -+#define HAVE___BUILTIN_CLZ 1 -+ -+/* Define if you have the __builtin_clzl function. */ -+#define HAVE___BUILTIN_CLZL 1 -+ -+/* Define if you have the __builtin_clzll function. */ -+#define HAVE___BUILTIN_CLZLL 1 -+ -+/* Define if you have the __builtin_ffs function. */ -+#define HAVE___BUILTIN_FFS 1 -+ -+/* Define if you have the __builtin_ffsl function. */ -+#define HAVE___BUILTIN_FFSL 1 -+ -+/* Define if you have the __builtin_ffsll function. */ -+#define HAVE___BUILTIN_FFSLL 1 -+ -+/* Define if the va_list type is addressable. */ -+#define HAVE_ADDRESSABLE_VA_LIST 1 -+ -+/* Define if right shift of signed integers acts by sign extension. */ -+#define HAVE_ARITHMETIC_RIGHT_SHIFT 1 -+ -+/* Define if the machine is indifferent to alignment. */ -+#define HAVE_INDIFFERENT_ALIGNMENT 1 -+ -+/* Define if you want to use Intel-specific instructions. */ -+/* #undef HAVE_INTEL_CPU */ -+ -+/* Define if 64-bit integer types are enabled. */ -+#define HAVE_INT64_TYPES 1 -+ -+/* Define if IPv6 support is enabled. */ -+/* #undef HAVE_IP6 */ -+ -+/* Define if IPsec support is enabled. */ -+/* #undef HAVE_IPSEC */ -+ -+/* Define to 1 if the system has the type `long long'. */ -+#define HAVE_LONG_LONG 1 -+ -+/* Define if nanosecond-granularity timestamps are enabled. */ -+/* #undef HAVE_NANOTIMESTAMP_ENABLED */ -+ -+/* Define if you want to use the stride scheduler. */ -+#define HAVE_STRIDE_SCHED 1 -+ -+/* Define to 1 since we have Strings. */ -+#define HAVE_STRING 1 -+ -+/* Define to 1 if the system has the type `struct timespec'. */ -+#define HAVE_STRUCT_TIMESPEC 1 -+ -+#ifdef HAVE_STRIDE_SCHED -+/* Define if you want task scheduling to use a heap, not a linked list. */ -+/* #undef HAVE_TASK_HEAP */ -+#endif -+ -+/* The size of a `int', as computed by sizeof. */ -+#define SIZEOF_INT 4 -+ -+/* The size of a `long', as computed by sizeof. */ -+#define SIZEOF_LONG 4 -+ -+/* The size of a `long long', as computed by sizeof. */ -+#define SIZEOF_LONG_LONG 8 -+ -+/* The size of a `struct timespec', as computed by sizeof. */ -+#define SIZEOF_STRUCT_TIMESPEC 8 -+ -+/* The size of a `struct timeval', as computed by sizeof. */ -+#define SIZEOF_STRUCT_TIMEVAL 8 -+ -+/* Define if you want to run multithreaded Click. */ -+/* #undef __MTCLICK__ */ -+#define NUM_CLICK_CPUS 1 -+ -+#ifndef __cplusplus -+/* Define inline, if necessary. C only. */ -+/* #undef inline */ -+#endif -+ -+#ifdef __cplusplus -+/* Explicit template instances? */ -+#if __GNUC__ == 2 && __GNUC_MINOR__ < 90 -+#define EXPLICIT_TEMPLATE_INSTANCES 1 -+#endif -+#endif /* __cplusplus */ -+ -+/* Define macros for declaring packed structures. */ -+#ifdef __GNUC__ -+#define CLICK_PACKED_STRUCTURE(open, close) open close __attribute__((packed)) -+#define CLICK_SIZE_PACKED_STRUCTURE(open, close) open close __attribute__((packed)) -+#else -+#define CLICK_PACKED_STRUCTURE(open, close) _Cannot_pack_structure__Use_GCC -+#define CLICK_SIZE_PACKED_STRUCTURE(open, close) open close -+#endif -+ -+/* Define macro for deprecated functions. */ -+#if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ == 0) -+#define CLICK_DEPRECATED -+#else -+#define CLICK_DEPRECATED __attribute__((deprecated)) -+#endif -+ -+/* Define ARCH_IS_BIG_ENDIAN based on CLICK_BYTE_ORDER. */ -+#if CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN -+#define ARCH_IS_BIG_ENDIAN 1 -+#elif CLICK_BYTE_ORDER == CLICK_LITTLE_ENDIAN -+#define ARCH_IS_BIG_ENDIAN 0 -+#endif -+ -+/* EXPORT_ELEMENT, ELEMENT_REQUIRES, ELEMENT_PROVIDES, ELEMENT_HEADER, -+ ELEMENT_LIBS, and ELEMENT_MT_SAFE are noops. */ -+#define EXPORT_ELEMENT(x) -+#define ELEMENT_REQUIRES(x) -+#define ELEMENT_PROVIDES(x) -+#define ELEMENT_HEADER(x) -+#define ELEMENT_LIBS(x) -+#define ELEMENT_MT_SAFE(x) -+ -+/* Assume CLICK_USERLEVEL unless otherwise defined. */ -+#if !defined(CLICK_USERLEVEL) && !defined(CLICK_TOOL) && !defined(CLICK_LINUXMODULE) && !defined(CLICK_BSDMODULE) -+# define CLICK_USERLEVEL 1 -+#endif -+ -+/* Define stuff under a Linux module. */ -+#ifdef CLICK_LINUXMODULE -+# include -+#endif -+ -+/* Define stuff under a FreeBSD module. */ -+#ifdef CLICK_BSDMODULE -+# include -+#endif -+ -+/* Define stuff under nsclick. */ -+#ifdef CLICK_NS -+# include -+#endif -+ -+/* Define stuff under tools or a user-level driver. */ -+#if defined(CLICK_USERLEVEL) || defined(CLICK_TOOL) -+# include -+#endif -+ -+#endif /* CLICK_CONFIG_H */ -diff -Nurb click-1.6.0/inst/include/click/confparse.hh click-1.6.0-27/inst/include/click/confparse.hh ---- click-1.6.0/inst/include/click/confparse.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/confparse.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,510 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/confparse.cc" -*- -+#ifndef CLICK_CONFPARSE_HH -+#define CLICK_CONFPARSE_HH -+/// @cond never -+#include -+#include -+struct in_addr; -+CLICK_DECLS -+class ErrorHandler; -+class StringAccum; -+class Timestamp; -+#ifndef CLICK_TOOL -+class Element; -+class Router; -+class Handler; -+class HandlerCall; -+# define CP_VA_PARSE_ARGS_REST Element*, ErrorHandler*, ... -+# define CP_OPT_CONTEXT , Element* context = 0 -+# define CP_CONTEXT , Element* context -+# define CP_PASS_CONTEXT , context -+#else -+# define CP_VA_PARSE_ARGS_REST ErrorHandler*, ... -+# define CP_OPT_CONTEXT -+# define CP_CONTEXT -+# define CP_PASS_CONTEXT -+#endif -+#ifndef CLICK_COMPILING_CONFPARSE_CC -+# define CLICK_CONFPARSE_DEPRECATED CLICK_DEPRECATED -+#else -+# define CLICK_CONFPARSE_DEPRECATED /* */ -+#endif -+#if __GNUC__ <= 3 -+# define CP_SENTINEL -+#else -+# define CP_SENTINEL __attribute__((sentinel)) -+#endif -+/// @endcond -+ -+/// @name Argument Manipulation -+//@{ -+const char* cp_skip_space(const char* begin, const char* end); -+const char* cp_skip_comment_space(const char* begin, const char* end); -+bool cp_eat_space(String &str); -+inline bool cp_is_space(const String &str); -+bool cp_is_word(const String &str); -+bool cp_is_click_id(const String &str); -+ -+String cp_uncomment(const String &str); -+String cp_unquote(const String &str); -+const char* cp_process_backslash(const char* begin, const char* end, StringAccum &sa); -+String cp_quote(const String &str, bool allow_newlines = false); -+ -+void cp_argvec(const String& str, Vector& conf); -+String cp_unargvec(const Vector& conf); -+ -+void cp_spacevec(const String& str, Vector& conf); -+String cp_pop_spacevec(String& str); -+String cp_unspacevec(const String* begin, const String* end); -+inline String cp_unspacevec(const Vector& conf); -+//@} -+ -+/// @name Direct Parsing Functions -+//@{ -+enum CpErrors { -+ CPE_OK = 0, -+ CPE_FORMAT, -+ CPE_NEGATIVE, -+ CPE_OVERFLOW, -+ CPE_INVALID, -+ CPE_MEMORY, -+ CPE_NOUNITS -+}; -+extern int cp_errno; -+ -+// strings and words -+bool cp_string(const String& str, String* result, String *rest = 0); -+bool cp_word(const String& str, String* result, String *rest = 0); -+bool cp_keyword(const String& str, String* result, String *rest = 0); -+ -+// numbers -+bool cp_bool(const String& str, bool* result); -+ -+const char *cp_integer(const char* begin, const char* end, int base, int* result); -+const char *cp_integer(const char* begin, const char* end, int base, unsigned int* result); -+/// @cond never -+inline const unsigned char *cp_integer(const unsigned char* begin, const unsigned char* end, int base, unsigned int* result); -+/// @endcond -+ -+#if SIZEOF_LONG == SIZEOF_INT -+// may be needed to simplify overloading -+inline const char *cp_integer(const char* begin, const char* end, int base, long* result); -+inline const char *cp_integer(const char* begin, const char* end, int base, unsigned long* result); -+#elif SIZEOF_LONG != 8 -+# error "long has an odd size" -+#endif -+ -+#if HAVE_INT64_TYPES -+const char *cp_integer(const char* begin, const char* end, int base, int64_t* result); -+const char *cp_integer(const char* begin, const char* end, int base, uint64_t* result); -+/// @cond never -+inline const unsigned char *cp_integer(const unsigned char* begin, const unsigned char* end, int base, uint64_t* result); -+/// @endcond -+#endif -+ -+bool cp_integer(const String& str, int base, int* result); -+bool cp_integer(const String& str, int base, unsigned int* result); -+#if SIZEOF_LONG == SIZEOF_INT -+inline bool cp_integer(const String& str, int base, long* result); -+inline bool cp_integer(const String& str, int base, unsigned long* result); -+#endif -+#ifdef HAVE_INT64_TYPES -+bool cp_integer(const String& str, int base, int64_t* result); -+bool cp_integer(const String& str, int base, uint64_t* result); -+#endif -+ -+inline bool cp_integer(const String& str, int* result); -+inline bool cp_integer(const String& str, unsigned int* result); -+#if SIZEOF_LONG == SIZEOF_INT -+inline bool cp_integer(const String& str, long* result); -+inline bool cp_integer(const String& str, unsigned long* result); -+#endif -+#ifdef HAVE_INT64_TYPES -+inline bool cp_integer(const String& str, int64_t* result); -+inline bool cp_integer(const String& str, uint64_t* result); -+#endif -+ -+#ifdef CLICK_USERLEVEL -+bool cp_file_offset(const String& str, off_t* result); -+#endif -+ -+#define CP_REAL2_MAX_FRAC_BITS 28 -+bool cp_real2(const String& str, int frac_bits, int32_t* result); -+bool cp_real2(const String& str, int frac_bits, uint32_t* result); -+bool cp_real10(const String& str, int frac_digits, int32_t* result); -+bool cp_real10(const String& str, int frac_digits, uint32_t* result); -+bool cp_real10(const String& str, int frac_digits, uint32_t* result_int, uint32_t* result_frac); -+#ifdef HAVE_FLOAT_TYPES -+bool cp_double(const String& str, double* result); -+#endif -+ -+bool cp_seconds_as(const String& str, int frac_digits, uint32_t* result); -+bool cp_seconds_as_milli(const String& str, uint32_t* result); -+bool cp_seconds_as_micro(const String& str, uint32_t* result); -+bool cp_time(const String& str, Timestamp* result); -+bool cp_time(const String& str, struct timeval* result); -+ -+bool cp_bandwidth(const String& str, uint32_t* result); -+ -+// network addresses -+class IPAddress; -+class IPAddressList; -+bool cp_ip_address(const String& str, IPAddress* result CP_OPT_CONTEXT); -+inline bool cp_ip_address(const String& str, struct in_addr* result CP_OPT_CONTEXT); -+bool cp_ip_address(const String& str, unsigned char* result CP_OPT_CONTEXT); -+bool cp_ip_prefix(const String& str, IPAddress* result_addr, IPAddress* result_mask, bool allow_bare_address CP_OPT_CONTEXT); -+bool cp_ip_prefix(const String& str, unsigned char* result_addr, unsigned char* result_mask, bool allow_bare_address CP_OPT_CONTEXT); -+bool cp_ip_prefix(const String& str, IPAddress* result_addr, IPAddress* result_mask CP_OPT_CONTEXT); -+bool cp_ip_prefix(const String& str, unsigned char* result_addr, unsigned char* result_mask CP_OPT_CONTEXT); -+bool cp_ip_address_list(const String& str, Vector* result CP_OPT_CONTEXT); -+ -+#ifdef HAVE_IP6 -+class IP6Address; -+bool cp_ip6_address(const String& str, IP6Address* result CP_OPT_CONTEXT); -+bool cp_ip6_address(const String& str, unsigned char* result CP_OPT_CONTEXT); -+bool cp_ip6_prefix(const String& str, IP6Address* result_addr, int* result_prefix, bool allow_bare_address CP_OPT_CONTEXT); -+bool cp_ip6_prefix(const String& str, unsigned char* result_addr, int* result_prefix, bool allow_bare_address CP_OPT_CONTEXT); -+bool cp_ip6_prefix(const String& str, unsigned char* result_addr, unsigned char* result_mask, bool allow_bare_address CP_OPT_CONTEXT); -+bool cp_ip6_prefix(const String& str, IP6Address* result_addr, IP6Address* result_mask, bool allow_bare_address CP_OPT_CONTEXT); -+#endif -+ -+class EtherAddress; -+bool cp_ethernet_address(const String& str, EtherAddress* result CP_OPT_CONTEXT); -+bool cp_ethernet_address(const String& str, unsigned char* result CP_OPT_CONTEXT); -+ -+bool cp_tcpudp_port(const String& str, int proto, uint16_t* result CP_OPT_CONTEXT); -+ -+#ifndef CLICK_TOOL -+Element *cp_element(const String& str, Element* context, ErrorHandler* errh=0); -+Element *cp_element(const String& str, Router* router, ErrorHandler* errh=0); -+bool cp_handler_name(const String& str, Element** result_element, String* result_hname, Element* context, ErrorHandler* errh=0); -+bool cp_handler(const String& str, int flags, Element** result_element, const Handler** result_handler, Element* context, ErrorHandler* errh=0); -+#endif -+ -+#ifdef HAVE_IPSEC -+bool cp_des_cblock(const String& str, unsigned char* result); -+#endif -+ -+#if CLICK_USERLEVEL -+bool cp_filename(const String& str, String* result); -+#endif -+//@} -+ -+/// @name cp_va_kparse -+//@{ -+int cp_va_kparse(const Vector& conf, CP_VA_PARSE_ARGS_REST) CP_SENTINEL; -+int cp_va_kparse(const String& str, CP_VA_PARSE_ARGS_REST) CP_SENTINEL; -+int cp_va_space_kparse(const String& str, CP_VA_PARSE_ARGS_REST) CP_SENTINEL; -+int cp_va_kparse_keyword(const String& str, CP_VA_PARSE_ARGS_REST) CP_SENTINEL; -+int cp_va_kparse_remove_keywords(Vector& conf, CP_VA_PARSE_ARGS_REST) CP_SENTINEL; -+ -+int cp_assign_arguments(const Vector& argv, const String *keys_begin, const String *keys_end, Vector* values = 0); -+ -+void cp_va_static_initialize(); -+void cp_va_static_cleanup(); -+ -+/// @brief Type of flags for cp_va_kparse() items. -+enum CpKparseFlags { -+ cpkN = 0, ///< Default flags -+ cpkM = 1, ///< Argument is mandatory -+ cpkP = 2, ///< Argument may be specified positionally -+ cpkC = 4, ///< Argument presence should be confirmed -+ cpkNormal = cpkN, -+ cpkMandatory = cpkM, -+ cpkPositional = cpkP, -+ cpkConfirm = cpkC -+}; -+ -+/// @brief Type of argument type names for cp_va_kparse() items. -+typedef const char *CpVaParseCmd; -+ -+extern const CpVaParseCmd -+ cpEnd, ///< Use as argument name. Ends cp_va argument list. -+ cpIgnoreRest, ///< Use as argument name. No result storage; causes cp_va_kparse to ignore unparsed arguments and any remaining items. -+ cpIgnore, ///< No result storage (this argument is ignored). -+ cpArgument, ///< Result storage String*, accepts any argument. -+ cpArguments, ///< Result storage Vector*, accepts any number of arguments with the same keyword. -+ cpString, ///< Result storage String*, parsed by cp_string(). -+ cpWord, ///< Result storage String*, parsed by cp_word(). -+ cpKeyword, ///< Result storage String*, parsed by cp_keyword(). -+ cpBool, ///< Result storage bool*, parsed by cp_bool(). -+ cpByte, ///< Result storage unsigned char*, parsed by cp_integer(). -+ cpShort, ///< Result storage short*, parsed by cp_integer(). -+ cpUnsignedShort, ///< Result storage unsigned short*, parsed by cp_integer(). -+ cpInteger, ///< Result storage int32_t*, parsed by cp_integer(). -+ cpUnsigned, ///< Result storage uint32_t*, parsed by cp_integer(). -+ cpNamedInteger, ///< Parse parameter uint32_t nameinfo_type, result storage int32_t*, parsed by NameInfo::query_int. -+#ifdef HAVE_INT64_TYPES -+ cpInteger64, ///< Result storage int64_t*, parsed by cp_integer(). -+ cpUnsigned64, ///< Result storage uint64_t*, parsed by cp_integer(). -+#endif -+#ifdef CLICK_USERLEVEL -+ cpFileOffset, ///< Result storage off_t*, parsed by cp_integer(). -+#endif -+ cpUnsignedReal2, ///< Parse parameter int frac_bits, result storage uint32_t*, parsed by cp_real2(). -+ cpReal10, ///< Parse parameter int frac_digits, result storage int32_t*, parsed by cp_real10(). -+ cpUnsignedReal10, ///< Parse parameter int frac_digits, result storage uint32_t*, parsed by cp_real10(). -+#ifdef HAVE_FLOAT_TYPES -+ cpDouble, ///< Result storage double*, parsed by cp_double(). -+#endif -+ cpSeconds, ///< Result storage uint32_t*, parsed by cp_seconds_as() with frac_digits 0. -+ cpSecondsAsMilli, ///< Result storage uint32_t*, parsed by cp_seconds_as_milli(). -+ cpSecondsAsMicro, ///< Result storage uint32_t*, parsed by cp_seconds_as_micro(). -+ cpTimestamp, ///< Result storage Timestamp*, parsed by cp_time(). -+ cpTimeval, ///< Result storage struct timeval*, parsed by cp_time(). -+ cpInterval, ///< Result storage struct timeval*, parsed by cp_time(). -+ cpBandwidth, ///< Result storage uint32_t*, parsed by cp_bandwidth(). -+ cpIPAddress, ///< Result storage IPAddress* or equivalent, parsed by cp_ip_address(). -+ cpIPPrefix, ///< Result storage IPAddress* addr and IPAddress *mask, parsed by cp_ip_prefix(). -+ cpIPAddressOrPrefix,///< Result storage IPAddress* addr and IPAddress *mask, parsed by cp_ip_prefix(). -+ cpIPAddressList, ///< Result storage Vector*, parsed by cp_ip_address_list(). -+ cpEthernetAddress, ///< Result storage EtherAddress*, parsed by cp_ethernet_address(). -+ cpTCPPort, ///< Result storage uint16_t*, parsed by cp_tcpudp_port(). -+ cpUDPPort, ///< Result storage uint16_t*, parsed by cp_tcpudp_port(). -+ cpElement, ///< Result storage Element**, parsed by cp_element(). -+ cpHandlerName, ///< Result storage Element** and String*, parsed by cp_handler_name(). -+ cpHandlerCallRead, ///< Result storage HandlerCall*, parsed by HandlerCall. -+ cpHandlerCallWrite, ///< Result storage HandlerCall*, parsed by HandlerCall. -+ cpHandlerCallPtrRead, ///< Result storage HandlerCall**, parsed by HandlerCall::reset_read. -+ cpHandlerCallPtrWrite, ///< Result storage HandlerCall**, parsed by HandlerCall::reset_write. -+ cpIP6Address, ///< Result storage IP6Address* or equivalent, parsed by cp_ip6_address(). -+ cpIP6Prefix, ///< Result storage IP6Address* addr and IP6Address* mask, parsed by cp_ip6_prefix(). -+ cpIP6AddressOrPrefix,///< Result storage IP6Address* addr and IP6Address* mask, parsed by cp_ip6_prefix(). -+ cpDesCblock, ///< Result storage uint8_t[8], parsed by cp_des_cblock(). -+ cpFilename, ///< Result storage String*, parsed by cp_filename(). -+ cpOptional, ///< cp_va_parse only: Following arguments are optional. -+ cpKeywords, ///< cp_va_parse only: Following arguments are keywords. -+ cpConfirmKeywords, ///< cp_va_parse only: Following arguments are confirmed keywords. -+ cpMandatoryKeywords,///< cp_va_parse only: Following arguments are mandatory keywords. -+ // old names, here for compatibility: -+ cpEtherAddress, // EtherAddress* -+ cpReadHandlerCall, // HandlerCall** -+ cpWriteHandlerCall; // HandlerCall** -+//@} -+ -+/// @name Unparsing -+//@{ -+String cp_unparse_bool(bool value); -+String cp_unparse_real2(int32_t value, int frac_bits); -+String cp_unparse_real2(uint32_t value, int frac_bits); -+#ifdef HAVE_INT64_TYPES -+String cp_unparse_real2(int64_t value, int frac_bits); -+String cp_unparse_real2(uint64_t value, int frac_bits); -+#endif -+String cp_unparse_real10(int32_t value, int frac_digits); -+String cp_unparse_real10(uint32_t value, int frac_digits); -+String cp_unparse_milliseconds(uint32_t value); -+String cp_unparse_microseconds(uint32_t value); -+String cp_unparse_interval(const Timestamp& value); -+String cp_unparse_interval(const struct timeval& value); -+String cp_unparse_bandwidth(uint32_t value); -+//@} -+ -+/// @name Legacy Functions -+//@{ -+int cp_va_parse(const Vector& conf, CP_VA_PARSE_ARGS_REST); -+int cp_va_parse(const String& str, CP_VA_PARSE_ARGS_REST); -+int cp_va_space_parse(const String& str, CP_VA_PARSE_ARGS_REST); -+int cp_va_parse_keyword(const String& str, CP_VA_PARSE_ARGS_REST); -+int cp_va_parse_remove_keywords(Vector& conf, int first, CP_VA_PARSE_ARGS_REST); -+// Argument syntax: -+// cp_va_arg ::= cpEnd // terminates argument list (not 0!) -+// | cpOptional | cpKeywords | cpIgnore... // manipulators -+// | CpVaParseCmd cmd, const char *description, -+// [Optional Helpers], Results -+// // Helpers and Results depend on 'cmd'; -+// // see table above -+// | const char *keyword, CpVaParseCmd cmd, const char *description, -+// [Optional Helpers], Results -+// // keyword argument, within cpKeywords or -+// // cpMandatoryKeywords -+// | const char *keyword, CpVaParseCmd cmd, const char *description, -+// bool *keyword_given, [Optional Helpers], Results -+// // keyword argument, within cpConfirmKeywords -+// Returns the number of result arguments set, or negative on error. -+// Stores no values in the result arguments on error. -+//@} -+ -+/// @name Argument Types for cp_va_kparse -+//@{ -+struct cp_value; -+struct cp_argtype; -+ -+typedef void (*cp_parsefunc)(cp_value* value, const String& arg, -+ ErrorHandler* errh, const char* argdesc CP_CONTEXT); -+typedef void (*cp_storefunc)(cp_value* value CP_CONTEXT); -+ -+struct cp_argtype { -+ const char* name; -+ cp_argtype* next; -+ cp_parsefunc parse; -+ cp_storefunc store; -+ void* user_data; -+ int flags; -+ const char* description; -+ int internal; -+ int use_count; -+}; -+ -+struct cp_value { -+ // set by cp_va_parse: -+ const cp_argtype* argtype; -+ const char* keyword; -+ const char* description CLICK_CONFPARSE_DEPRECATED; -+ int extra; -+ void* store; -+ void* store2; -+ bool* store_confirm; -+ // set by parsefunc, used by storefunc: -+ union { -+ bool b; -+ int32_t i; -+ uint32_t u; -+#ifdef HAVE_INT64_TYPES -+ int64_t i64; -+ uint64_t u64; -+#endif -+#ifdef HAVE_FLOAT_TYPES -+ double d; -+#endif -+ unsigned char address[16]; -+ int is[4]; -+#ifndef CLICK_TOOL -+ Element* element; -+#endif -+ } v, v2; -+ String v_string; -+ String v2_string; -+}; -+ -+enum { cpArgNormal = 0, cpArgStore2 = 1, cpArgExtraInt = 2, cpArgAllowNumbers = 4 }; -+int cp_register_argtype(const char* name, const char* description, int flags, -+ cp_parsefunc parsefunc, cp_storefunc storefunc, -+ void* user_data = 0); -+void cp_unregister_argtype(const char* name); -+ -+int cp_register_stringlist_argtype(const char* name, const char* description, -+ int flags); -+int cp_extend_stringlist_argtype(const char* name, ...); -+// Takes: const char* name, int value, ...., const char* ender = (const char*)0 -+//@} -+ -+/// @cond never -+bool cp_seconds_as(int want_power, const String& str, uint32_t* result) CLICK_DEPRECATED; -+ -+#define cp_integer64 cp_integer -+#define cp_unsigned64 cp_integer -+#define cp_unsigned cp_integer -+#define cp_unsigned_real10 cp_real10 -+#define cp_unsigned_real2 cp_real2 -+/// @endcond -+ -+/** @brief Join the strings in @a conf with spaces and return the result. -+ * -+ * This function does not quote or otherwise protect the strings in @a conf. -+ * The caller should do that if necessary. -+ * @sa cp_unspacevec(const String *, const String *) */ -+inline String cp_unspacevec(const Vector& conf) -+{ -+ return cp_unspacevec(conf.begin(), conf.end()); -+} -+ -+/** @brief Test if @a str is all spaces. -+ * @return True when every character in @a str is a space. */ -+inline bool cp_is_space(const String& str) -+{ -+ return cp_skip_space(str.begin(), str.end()) == str.end(); -+} -+ -+/** @brief Parse an integer from @a str in base 0. -+ * -+ * Same as cp_integer(str, 0, result). */ -+inline bool cp_integer(const String& str, int* result) -+{ -+ return cp_integer(str, 0, result); -+} -+ -+inline bool cp_integer(const String& str, unsigned int* result) -+{ -+ return cp_integer(str, 0, result); -+} -+ -+/// @cond never -+inline const unsigned char *cp_integer(const unsigned char *begin, const unsigned char *end, int base, unsigned int* result) -+{ -+ return (const unsigned char *) cp_integer((const char *) begin, (const char *) end, base, result); -+} -+/// @endcond -+ -+#ifdef HAVE_INT64_TYPES -+/// @cond never -+inline const unsigned char *cp_integer(const unsigned char *begin, const unsigned char *end, int base, uint64_t* result) -+{ -+ return (const unsigned char *) cp_integer((const char *) begin, (const char *) end, base, result); -+} -+/// @endcond -+ -+inline bool cp_integer(const String& str, uint64_t* result) -+{ -+ return cp_integer(str, 0, result); -+} -+ -+inline bool cp_integer(const String& str, int64_t* result) -+{ -+ return cp_integer(str, 0, result); -+} -+#endif -+ -+#if SIZEOF_LONG == SIZEOF_INT -+inline const char* cp_integer(const char* begin, const char* end, int base, long* result) -+{ -+ return cp_integer(begin, end, base, reinterpret_cast(result)); -+} -+ -+inline bool cp_integer(const String& str, int base, long* result) -+{ -+ return cp_integer(str, base, reinterpret_cast(result)); -+} -+ -+inline bool cp_integer(const String& str, long* result) -+{ -+ return cp_integer(str, reinterpret_cast(result)); -+} -+ -+inline const char* cp_integer(const char* begin, const char* end, int base, unsigned long* result) -+{ -+ return cp_integer(begin, end, base, reinterpret_cast(result)); -+} -+ -+inline bool cp_integer(const String& str, int base, unsigned long* result) -+{ -+ return cp_integer(str, base, reinterpret_cast(result)); -+} -+ -+inline bool cp_integer(const String& str, unsigned long* result) -+{ -+ return cp_integer(str, reinterpret_cast(result)); -+} -+#endif -+ -+inline bool cp_ip_address(const String& str, struct in_addr* ina CP_CONTEXT) -+{ -+ return cp_ip_address(str, reinterpret_cast(ina) CP_PASS_CONTEXT); -+} -+ -+/// @cond never -+inline bool cp_seconds_as(int want_power, const String &str, uint32_t *result) -+{ -+ return cp_seconds_as(str, want_power, result); -+} -+ -+#undef CP_VA_ARGS_REST -+#undef CP_OPT_CONTEXT -+#undef CP_CONTEXT -+#undef CP_PASS_CONTEXT -+#undef CLICK_CONFPARSE_DEPRECATED -+#undef CP_SENTINEL -+#define cpEnd ((CpVaParseCmd) 0) -+/// @endcond -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/crc32.h click-1.6.0-27/inst/include/click/crc32.h ---- click-1.6.0/inst/include/click/crc32.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/crc32.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,15 @@ -+/* -*- related-file-name: "../../lib/crc32.c" -*- */ -+#ifndef CLICK_CRC32_H -+#define CLICK_CRC32_H -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+unsigned long update_crc(unsigned long crc_accum, -+ char *data_blk_ptr, -+ int data_blk_size); -+ -+#ifdef __cplusplus -+} -+#endif -+#endif -diff -Nurb click-1.6.0/inst/include/click/cxxprotect.h click-1.6.0-27/inst/include/click/cxxprotect.h ---- click-1.6.0/inst/include/click/cxxprotect.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/cxxprotect.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,22 @@ -+#ifdef __cplusplus -+#define new xxx_new -+#define this xxx_this -+#define delete xxx_delete -+#define class xxx_class -+#define virtual xxx_virtual -+#define typename xxx_typename -+#define private xxx_private -+#define protected xxx_protected -+#define public xxx_public -+#define namespace xxx_namespace -+#endif -+ -+#ifndef CLICK_CXX_PROTECT -+# ifdef __cplusplus -+# define CLICK_CXX_PROTECT extern "C" { -+# define CLICK_CXX_UNPROTECT } -+# else -+# define CLICK_CXX_PROTECT /* nothing */ -+# define CLICK_CXX_UNPROTECT /* nothing */ -+# endif -+#endif -diff -Nurb click-1.6.0/inst/include/click/cxxunprotect.h click-1.6.0-27/inst/include/click/cxxunprotect.h ---- click-1.6.0/inst/include/click/cxxunprotect.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/cxxunprotect.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,12 @@ -+#ifdef __cplusplus -+#undef new -+#undef this -+#undef delete -+#undef class -+#undef virtual -+#undef typename -+#undef private -+#undef protected -+#undef public -+#undef namespace -+#endif -diff -Nurb click-1.6.0/inst/include/click/dequeue.cc click-1.6.0-27/inst/include/click/dequeue.cc ---- click-1.6.0/inst/include/click/dequeue.cc 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/dequeue.cc 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,170 @@ -+/* -+ * dequeue.{cc,hh} -- double-ended queue template class -+ * Douglas S. J. De Couto -+ * Based on code from Click Vector<> class (vector.{cc,hh}). -+ * -+ * Copyright (c) 2003 Massachusetts Institute of Technology -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, subject to the conditions -+ * listed in the Click LICENSE file. These conditions include: you must -+ * preserve this copyright notice, and you cannot mention the copyright -+ * holders in advertising related to the Software without their permission. -+ * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+ * notice is a summary of the Click LICENSE file; the license in that file is -+ * legally binding. -+ */ -+ -+#ifndef CLICK_DEQUEUE_CC -+#define CLICK_DEQUEUE_CC -+ -+CLICK_ENDDECLS -+#include -+CLICK_DECLS -+ -+template -+DEQueue::DEQueue(const DEQueue &o) -+ : _l(0), _n(0), _cap(0), _head(0), _tail(0) -+{ -+ *this = o; -+} -+ -+template -+DEQueue::~DEQueue() -+{ -+ for (int i = _head, j = 0; j < _n; i = next_i(i), j++) -+ _l[i].~T(); -+ CLICK_LFREE(_l, _cap * sizeof(T)); -+} -+ -+template DEQueue & -+DEQueue::operator=(const DEQueue &o) -+{ -+ if (&o != this) { -+ for (int i = _head, j = 0; j < _n; i = next_i(i), j++) -+ _l[i].~T(); -+ _n = 0; -+ _head = 0; -+ _tail = 0; -+ if (reserve(o._n)) { -+ _n = o._n; -+ for (int i = 0, j = o._head; i < _n; i++, j = o.next_i(j)) -+ new(velt(i)) T(o._l[j]); -+ _tail = _n; -+ } -+ } -+ return *this; -+} -+ -+template DEQueue & -+DEQueue::assign(int n, const T &e) -+{ -+ resize(0, e); -+ resize(n, e); -+ return *this; -+} -+ -+template bool -+DEQueue::reserve(int want) -+{ -+ if (want < 0) -+ want = _cap > 0 ? _cap * 2 : 4; -+ if (want <= _cap) -+ return true; -+ -+ T *new_l = (T *) CLICK_LALLOC(want * sizeof(T)); -+ if (!new_l) -+ return false; -+ -+ for (int i = _head, j = 0; j < _n; j++, i = next_i(i)) { -+ new(velt(new_l, j)) T(_l[i]); -+ _l[i].~T(); -+ } -+ -+ CLICK_LFREE(_l, _cap * sizeof(T)); -+ -+ _l = new_l; -+ _cap = want; -+ _head = 0; -+ _tail = _n; -+ return true; -+} -+ -+template void -+DEQueue::shrink(int nn) -+{ -+ // delete els from back of queue -+ if (nn < _n) { -+ int num_to_del = _n - nn; -+ for ( ; num_to_del > 0; _tail = prev_i(_tail), num_to_del--) -+ _l[prev_i(_tail)].~T(); -+ _n = nn; -+ } -+} -+ -+template void -+DEQueue::resize(int nn, const T &e) -+{ -+ // extra/excess els are added/removed to/from back of queue -+ if (nn <= _cap || reserve(nn)) { -+ // construct new els -+ for ( ; _n < nn; _tail = next_i(_tail), _n++) -+ new(velt(_tail)) T(e); -+ -+ // delete excess els -+ for ( ; nn < _n; _tail = prev_i(_tail), _n--) -+ _l[prev_i(_tail)].~T(); -+ } -+} -+ -+template void -+DEQueue::swap(DEQueue &o) -+{ -+ T *l = _l; -+ int n = _n; -+ int cap = _cap; -+ int head = _head; -+ int tail = _tail; -+ _l = o._l; -+ _n = o._n; -+ _cap = o._cap; -+ _head = o._head; -+ _tail = o._tail; -+ o._l = l; -+ o._n = n; -+ o._cap = cap; -+ o._head = head; -+ o._tail = tail; -+} -+ -+template inline void -+DEQueue::check_rep() -+{ -+ // pushes go on to back (tail), pops come from front (head). -+ // elements closer to the tail have larger indices in the array -+ // (modulo total size). -+ -+ // _head is index of front -+ // _tail is 1 + index of back, i.e. where next push goes -+ -+ if (!_l) { -+ assert(_n == 0); -+ assert(_cap == 0); -+ assert(_head == 0); -+ assert(_tail == 0); -+ } else { -+ assert(_head >= 0); -+ assert(_head < _cap); -+ assert(_tail >= 0); -+ assert(_tail < _cap); -+ if (_n == _cap) -+ assert(_head == _tail); -+ else -+ assert(_n == (_tail >= _head ? _tail - _head : _cap - _head + _tail)); -+ } -+} -+ -+ -+ -+#endif -diff -Nurb click-1.6.0/inst/include/click/dequeue.hh click-1.6.0-27/inst/include/click/dequeue.hh ---- click-1.6.0/inst/include/click/dequeue.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/dequeue.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,146 @@ -+// dequeue.hh -+// Douglas S. J. De Couto -+// 26 June 2003 -+ -+// Inspired by Click Vector<> and SimpleQueue code -+ -+#ifndef CLICK_DEQUEUE_HH -+#define CLICK_DEQUEUE_HH -+#include -+CLICK_DECLS -+ -+template -+class DEQueue { -+ -+public: -+ DEQueue() : _l(0), _n(0), _cap(0), _head(0), _tail(0) { } -+ explicit DEQueue(int capacity) : _l(0), _n(0), _cap(0), _head(0), _tail(0) { reserve(capacity); } -+ DEQueue(int n, const T &e) : _l(0), _n(0), _cap(0), _head(0), _tail(0) { resize(n, e); } -+ DEQueue(const DEQueue &); -+ ~DEQueue(); -+ -+ inline void check_rep(); -+ -+ int size() const { return _n; } -+ -+ const T &at(int i) const { assert(i>=0 && i<_n); return _l[idx(i)]; } -+ const T &operator[](int i) const { return at(i); } -+ const T &front() const { return at(0); } -+ const T &back() const { return at(_n - 1); } -+ const T &at_u(int i) const { return _l[idx(i)]; } -+ -+ T &at(int i) { assert(i>=0 && i<_n); return _l[idx(i)]; } -+ T &operator[](int i) { return at(i); } -+ T &front() { return at(0); } -+ T &back() { return at(_n - 1); } -+ T &at_u(int i) { return _l[idx(i)]; } -+ -+ struct const_iterator { -+ const DEQueue &_q; -+ int _pos; -+ -+ const_iterator(const DEQueue &q, int p) : _q(q), _pos(p) { } -+ const_iterator(const const_iterator &i) : _q(i._q), _pos(i._pos) { } -+ const_iterator &operator++() { _pos++; return *this; } -+ const_iterator &operator--() { _pos--; return *this; } -+ const_iterator operator++(int) { const_iterator t = *this; ++*this; return t; } -+ const_iterator operator--(int) { const_iterator t = *this; --*this; return t; } -+ const_iterator &operator+=(int n) { _pos += n; return *this; } -+ const_iterator &operator-=(int n) { _pos -= n; return *this; } -+ const T &operator[](int n) const { return _q[_pos + n]; } -+ bool operator==(const const_iterator &i) const { return _pos == i._pos && _q._l == i._q._l; } -+ bool operator!=(const const_iterator &i) const { return _pos != i._pos || _q._l != i._q._l; } -+ const T &operator*() const { return _q[_pos]; } -+ const T *operator->() const { return &_q[_pos]; } -+ }; -+ -+ struct iterator : public const_iterator { -+ iterator(DEQueue &q, int p) : const_iterator(q, p) { } -+ iterator(const iterator &i) : const_iterator(i._q, i._pos) { } -+ T &operator[](int n) const { return const_cast(const_iterator::operator[](n)); } -+ T &operator*() const { return const_cast(const_iterator::operator*()); } -+ T *operator->() const { return const_cast(const_iterator::operator->()); } -+ }; -+ -+ iterator begin() { return iterator(*this, 0); } -+ const_iterator begin() const { return const_iterator((DEQueue &) *this, 0); } -+ iterator end() { return iterator(*this, _n); } -+ const_iterator end() const { return const_iterator((DEQueue &) *this, _n); } -+ -+ inline void push_back(const T &); -+ inline void pop_back(); -+ -+ inline void push_front(const T &); -+ inline void pop_front(); -+ -+ void clear() { shrink(0); } -+ bool reserve(int); -+ void resize(int nn, const T &e = T()); -+ -+ DEQueue &operator=(const DEQueue &); -+ DEQueue &assign(int n, const T &e = T()); -+ void swap(DEQueue &); -+ -+private: -+ -+ T *_l; -+ int _n; -+ int _cap; -+ int _head; -+ int _tail; -+ -+ int next_i(int i) const { return (i != _cap - 1 ? i + 1 : 0); } -+ int prev_i(int i) const { return (i != 0 ? i - 1 : _cap - 1); } -+ int idx(int i) const { return (i + _head) % _cap; } -+ -+ void *velt(int i) const { return (void *) &_l[i]; } -+ static void *velt(T *l, int i) { return (void *) &l[i]; } -+ void shrink(int nn); -+ -+ friend class iterator; -+ friend class const_iterator; -+ -+}; -+ -+ -+ -+template inline void -+DEQueue::push_front(const T &e) -+{ -+ if (_n < _cap || reserve(-1)) { -+ _head = prev_i(_head); -+ new(velt(_head)) T(e); -+ _n++; -+ } -+} -+ -+template inline void -+DEQueue::pop_front() -+{ -+ assert(_n > 0); -+ --_n; -+ _l[_head].~T(); -+ _head = next_i(_head); -+} -+ -+template inline void -+DEQueue::push_back(const T &e) -+{ -+ if (_n < _cap || reserve(-1)) { -+ new(velt(_tail)) T(e); -+ _n++; -+ _tail = next_i(_tail); -+ } -+} -+ -+template inline void -+DEQueue::pop_back() -+{ -+ assert(_n > 0); -+ --_n; -+ _tail = prev_i(_tail); -+ _l[_tail].~T(); -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/driver.hh click-1.6.0-27/inst/include/click/driver.hh ---- click-1.6.0/inst/include/click/driver.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/driver.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,37 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/driver.cc" -*- -+#ifndef CLICK_DRIVER_HH -+#define CLICK_DRIVER_HH -+#include -+ -+#define CLICK_DEFAULT_PROVIDES /* nada */ -+ -+#if CLICK_USERLEVEL -+CLICK_DECLS -+class Router; -+class Master; -+class ErrorHandler; -+class Lexer; -+class ArchiveElement; -+ -+void click_static_initialize(); -+void click_static_cleanup(); -+ -+Lexer *click_lexer(); -+Router *click_read_router(String filename, bool is_expr, ErrorHandler * = 0, bool initialize = true, Master * = 0); -+ -+String click_compile_archive_file(String package, const Vector &archive, int ai, const String &target, const String &extra_flags, ErrorHandler *errh); -+ -+CLICK_ENDDECLS -+#elif CLICK_TOOL -+CLICK_DECLS -+class ErrorHandler; -+class ArchiveElement; -+ -+void click_static_initialize(); -+ -+String click_compile_archive_file(String package, const Vector &archive, int ai, const String &target, const String &extra_flags, ErrorHandler *errh); -+ -+CLICK_ENDDECLS -+#endif -+ -+#endif -diff -Nurb click-1.6.0/inst/include/click/element.hh click-1.6.0-27/inst/include/click/element.hh ---- click-1.6.0/inst/include/click/element.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/element.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,659 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/element.cc" -*- -+#ifndef CLICK_ELEMENT_HH -+#define CLICK_ELEMENT_HH -+#include -+#include -+#include -+#include -+CLICK_DECLS -+class Router; -+class Master; -+class Task; -+class Timer; -+class Element; -+class ErrorHandler; -+class Bitvector; -+class Handler; -+ -+/** @file -+ * @brief Click's Element class. -+ */ -+ -+#define CLICK_ELEMENT_PORT_COUNT_DEPRECATED CLICK_DEPRECATED -+ -+// #define CLICK_STATS 5 -+ -+typedef int (*HandlerHook)(int operation, String&, Element*, const Handler*, ErrorHandler*); -+typedef String (*ReadHandlerHook)(Element*, void*); -+typedef int (*WriteHandlerHook)(const String&, Element*, void*, ErrorHandler*); -+ -+class Element { public: -+ -+ Element(); -+ virtual ~Element(); -+ static int nelements_allocated; -+ -+ // RUNTIME -+ virtual void push(int port, Packet*); -+ virtual Packet* pull(int port); -+ virtual Packet* simple_action(Packet*); -+ -+ virtual bool run_task(Task *); // return true iff did useful work -+ virtual void run_timer(Timer *); -+#if CLICK_USERLEVEL -+ virtual void selected(int fd); -+#endif -+ -+ inline void checked_output_push(int port, Packet*) const; -+ -+ // ELEMENT CHARACTERISTICS -+ virtual const char *class_name() const = 0; -+ -+ virtual const char *port_count() const; -+ static const char PORTS_0_0[]; -+ static const char PORTS_0_1[]; -+ static const char PORTS_1_0[]; -+ static const char PORTS_1_1[]; -+ -+ virtual const char *processing() const; -+ static const char AGNOSTIC[]; -+ static const char PUSH[]; -+ static const char PULL[]; -+ static const char PUSH_TO_PULL[]; -+ static const char PULL_TO_PUSH[]; -+ -+ virtual const char *flow_code() const; -+ static const char COMPLETE_FLOW[]; -+ -+ virtual const char *flags() const; -+ -+ virtual void *cast(const char *); -+ -+ // CONFIGURATION, INITIALIZATION, AND CLEANUP -+ enum ConfigurePhase { -+ CONFIGURE_PHASE_FIRST = 0, -+ CONFIGURE_PHASE_INFO = 20, -+ CONFIGURE_PHASE_PRIVILEGED = 90, -+ CONFIGURE_PHASE_DEFAULT = 100, -+ CONFIGURE_PHASE_LAST = 2000 -+ }; -+ virtual int configure_phase() const; -+ -+ virtual int configure(Vector&, ErrorHandler*); -+ -+ virtual void add_handlers(); -+ -+ virtual int initialize(ErrorHandler*); -+ -+ virtual void take_state(Element *old_element, ErrorHandler*); -+ virtual Element *hotswap_element() const; -+ -+ enum CleanupStage { -+ CLEANUP_NO_ROUTER, -+ CLEANUP_BEFORE_CONFIGURE = CLEANUP_NO_ROUTER, -+ CLEANUP_CONFIGURE_FAILED, -+ CLEANUP_CONFIGURED, -+ CLEANUP_INITIALIZE_FAILED, -+ CLEANUP_INITIALIZED, -+ CLEANUP_ROUTER_INITIALIZED, -+ CLEANUP_MANUAL -+ }; -+ virtual void cleanup(CleanupStage); -+ -+ static inline void static_initialize(); -+ static inline void static_cleanup(); -+ -+ // ELEMENT ROUTER CONNECTIONS -+ String name() const; -+ String landmark() const; -+ virtual String declaration() const; -+ -+ inline Router *router() const; -+ inline int eindex() const; -+ inline int eindex(Router *r) const; -+ Master *master() const; -+ -+ // INPUTS AND OUTPUTS -+ inline int nports(bool isoutput) const; -+ inline int ninputs() const; -+ inline int noutputs() const; -+ -+ class Port; -+ inline const Port &port(bool isoutput, int port) const; -+ inline const Port &input(int port) const; -+ inline const Port &output(int port) const; -+ -+ inline bool port_active(bool isoutput, int port) const; -+ inline bool input_is_push(int port) const; -+ inline bool input_is_pull(int port) const; -+ inline bool output_is_push(int port) const; -+ inline bool output_is_pull(int port) const; -+ void port_flow(bool isoutput, int port, Bitvector*) const; -+ -+ // LIVE RECONFIGURATION -+ virtual void configuration(Vector&) const; -+ String configuration() const; -+ -+ virtual bool can_live_reconfigure() const; -+ virtual int live_reconfigure(Vector&, ErrorHandler*); -+ -+#if CLICK_USERLEVEL -+ // SELECT -+ enum { SELECT_READ = 1, SELECT_WRITE = 2 }; -+ int add_select(int fd, int mask); -+ int remove_select(int fd, int mask); -+#endif -+ -+ // HANDLERS -+ void add_read_handler(const String &name, ReadHandlerHook, void*); -+ void add_write_handler(const String &name, WriteHandlerHook, void*); -+ void set_handler(const String &name, int flags, HandlerHook, void* = 0, void* = 0); -+ int set_handler_flags(const String &name, int flags); -+ void add_task_handlers(Task*, const String& prefix = String()); -+ -+ static String read_positional_handler(Element*, void*); -+ static String read_keyword_handler(Element*, void*); -+ static int reconfigure_positional_handler(const String&, Element*, void*, ErrorHandler*); -+ static int reconfigure_keyword_handler(const String&, Element*, void*, ErrorHandler*); -+ -+ virtual int llrpc(unsigned command, void* arg); -+ int local_llrpc(unsigned command, void* arg); -+ -+#if CLICK_STATS >= 2 -+ // STATISTICS -+ int _calls; // Push and pull calls into this element. -+ uint64_t _self_cycles; // Cycles spent in self and children. -+ uint64_t _child_cycles; // Cycles spent in children. -+#endif -+ -+ class Port { public: -+ -+ inline bool active() const; -+ inline Element* element() const; -+ inline int port() const; -+ -+ inline void push(Packet* p) const; -+ inline Packet* pull() const; -+ -+#if CLICK_STATS >= 1 -+ unsigned npackets() const { return _packets; } -+#endif -+ -+ private: -+ -+ Element* _e; -+ int _port; -+ -+#if CLICK_STATS >= 1 -+ mutable unsigned _packets; // How many packets have we moved? -+#endif -+#if CLICK_STATS >= 2 -+ Element* _owner; // Whose input or output are we? -+#endif -+ -+ inline Port(); -+ inline Port(Element*, Element*, int); -+ -+ friend class Element; -+ -+ }; -+ -+ // DEPRECATED -+ String id() const CLICK_DEPRECATED; -+ -+ inline void set_ninputs(int) CLICK_ELEMENT_PORT_COUNT_DEPRECATED; -+ inline void set_noutputs(int) CLICK_ELEMENT_PORT_COUNT_DEPRECATED; -+ inline void add_input() CLICK_ELEMENT_PORT_COUNT_DEPRECATED; -+ inline void add_output() CLICK_ELEMENT_PORT_COUNT_DEPRECATED; -+ -+ virtual bool run_task() CLICK_DEPRECATED; -+ virtual void run_timer() CLICK_DEPRECATED; -+ -+ private: -+ -+ enum { INLINE_PORTS = 4 }; -+ -+ Port* _ports[2]; -+ Port _inline_ports[INLINE_PORTS]; -+ -+ int _nports[2]; -+ -+ Router* _router; -+ int _eindex; -+ -+ Element(const Element &); -+ Element &operator=(const Element &); -+ -+ // METHODS USED BY ROUTER -+ inline void attach_router(Router* r, int n) { _router = r; _eindex = n; } -+ -+ int set_nports(int, int); -+ int notify_nports(int, int, ErrorHandler *); -+ enum Processing { VAGNOSTIC, VPUSH, VPULL }; -+ static int next_processing_code(const char*& p, ErrorHandler* errh); -+ void processing_vector(int* input_codes, int* output_codes, ErrorHandler*) const; -+ -+ void initialize_ports(const int* input_codes, const int* output_codes); -+ int connect_port(bool isoutput, int port, Element*, int); -+ -+ void add_default_handlers(bool writable_config); -+ -+ friend class Router; -+ -+}; -+ -+ -+/** @brief Initialize static data for this element class. -+ * -+ * Elements that need to initialize global state, such as global hash tables -+ * or configuration parsing functions, should place that initialization code -+ * inside a static_initialize() static member function. Click's build -+ * machinery will find that function and cause it to be called when the -+ * element code is loaded, before any elements of the class are created. -+ * -+ * static_initialize functions are called in an arbitrary and unpredictable -+ * order (not, for example, the configure_phase() order). Element authors are -+ * responsible for handling static initialization dependencies. -+ * -+ * For Click to find a static_initialize declaration, it must appear inside -+ * the element class's class declaration on its own line and have the -+ * following prototype: -+ * -+ * @code -+ * static void static_initialize(); -+ * @endcode -+ * -+ * It must also have public accessibility. -+ * -+ * @sa Element::static_cleanup -+ */ -+inline void -+Element::static_initialize() -+{ -+} -+ -+/** @brief Clean up static data for this element class. -+ * -+ * Elements that need to free global state, such as global hash tables or -+ * configuration parsing functions, should place that code inside a -+ * static_cleanup() static member function. Click's build machinery will find -+ * that function and cause it to be called when the element code is unloaded. -+ * -+ * static_cleanup functions are called in an arbitrary and unpredictable order -+ * (not, for example, the configure_phase() order, and not the reverse of the -+ * static_initialize order). Element authors are responsible for handling -+ * static cleanup dependencies. -+ * -+ * For Click to find a static_cleanup declaration, it must appear inside the -+ * element class's class declaration on its own line and have the following -+ * prototype: -+ * -+ * @code -+ * static void static_cleanup(); -+ * @endcode -+ * -+ * It must also have public accessibility. -+ * -+ * @sa Element::static_initialize -+ */ -+inline void -+Element::static_cleanup() -+{ -+} -+ -+/** @brief Return the element's router. */ -+inline Router* -+Element::router() const -+{ -+ return _router; -+} -+ -+/** @brief Return the element's index within its router. -+ * @invariant this == router()->element(eindex()) -+ */ -+inline int -+Element::eindex() const -+{ -+ return _eindex; -+} -+ -+/** @brief Return the element's index within router @a r. -+ * -+ * Returns -1 if @a r != router(). */ -+inline int -+Element::eindex(Router* r) const -+{ -+ return (router() == r ? _eindex : -1); -+} -+ -+/** @brief Return the number of input or output ports. -+ * @param isoutput false for input ports, true for output ports */ -+inline int -+Element::nports(bool isoutput) const -+{ -+ return _nports[isoutput]; -+} -+ -+/** @brief Return the number of input ports. */ -+inline int -+Element::ninputs() const -+{ -+ return _nports[0]; -+} -+ -+/** @brief Return the number of output ports. */ -+inline int -+Element::noutputs() const -+{ -+ return _nports[1]; -+} -+ -+/** @brief Sets the element's number of input ports (deprecated). -+ * -+ * @param ninputs number of input ports -+ * -+ * @deprecated The set_ninputs() function is deprecated. Elements should -+ * instead use port_count() to define an acceptable range of input port -+ * counts. Elements that called set_ninputs() from configure(), setting the -+ * number of input ports based on configuration arguments, should compare the -+ * desired number of ports to ninputs() and signal an error if they disagree. -+ * -+ * This function can be called from the constructor, notify_ninputs(), -+ * notify_noutputs(), or configure(), but not from initialize() or later. */ -+inline void -+Element::set_ninputs(int ninputs) -+{ -+ set_nports(ninputs, _nports[1]); -+} -+ -+/** @brief Sets the element's number of output ports (deprecated). -+ * -+ * @param noutputs number of output ports -+ * -+ * @deprecated The set_noutputs() function is deprecated. Elements should -+ * instead use port_count() to define an acceptable range of output port -+ * counts. Elements that called set_noutputs() from configure(), setting the -+ * number of output ports based on configuration arguments, should compare the -+ * desired number of ports to noutputs() and signal an error if they disagree. -+ * -+ * This function can be called from the constructor, notify_ninputs(), -+ * notify_noutputs(), or configure(), but not from initialize() or later. */ -+inline void -+Element::set_noutputs(int noutputs) -+{ -+ set_nports(_nports[0], noutputs); -+} -+ -+/** @brief Adds an input port (deprecated). -+ * -+ * @deprecated See the deprecation note at set_ninputs(). -+ * -+ * An abbreviation for set_ninputs(ninputs() + 1). Subject to the same -+ * restrictions as set_ninputs(). -+ * -+ * @sa set_ninputs */ -+inline void -+Element::add_input() -+{ -+ set_nports(_nports[0] + 1, _nports[1]); -+} -+ -+/** @brief Adds an output port (deprecated). -+ * -+ * @deprecated See the deprecation note at set_noutputs(). -+ * -+ * An abbreviation for set_noutputs(noutputs() + 1). Subject to the same -+ * restrictions as set_noutputs(). -+ * -+ * @sa set_noutputs */ -+inline void -+Element::add_output() -+{ -+ set_nports(_nports[0], _nports[1] + 1); -+} -+ -+/** @brief Return one of the element's ports. -+ * @param isoutput false for input ports, true for output ports -+ * @param port port number -+ * -+ * An assertion fails if @a p is out of range. */ -+inline const Element::Port& -+Element::port(bool isoutput, int port) const -+{ -+ assert((unsigned) port < (unsigned) _nports[isoutput]); -+ return _ports[isoutput][port]; -+} -+ -+/** @brief Return one of the element's input ports. -+ * @param port port number -+ * -+ * An assertion fails if @a port is out of range. -+ * -+ * @sa Port, port */ -+inline const Element::Port& -+Element::input(int port) const -+{ -+ return Element::port(false, port); -+} -+ -+/** @brief Return one of the element's output ports. -+ * @param port port number -+ * -+ * An assertion fails if @a port is out of range. -+ * -+ * @sa Port, port */ -+inline const Element::Port& -+Element::output(int port) const -+{ -+ return Element::port(true, port); -+} -+ -+/** @brief Check whether a port is active. -+ * @param isoutput false for input ports, true for output ports -+ * @param port port number -+ * -+ * Returns true iff @a port is in range and @a port is active. Push outputs -+ * and pull inputs are active; pull outputs and push inputs are not. -+ * -+ * @sa Element::Port::active */ -+inline bool -+Element::port_active(bool isoutput, int port) const -+{ -+ return (unsigned) port < (unsigned) nports(isoutput) -+ && _ports[isoutput][port].active(); -+} -+ -+/** @brief Check whether output @a port is push. -+ * -+ * Returns true iff output @a port exists and is push. @sa port_active */ -+inline bool -+Element::output_is_push(int port) const -+{ -+ return port_active(true, port); -+} -+ -+/** @brief Check whether output @a port is pull. -+ * -+ * Returns true iff output @a port exists and is pull. */ -+inline bool -+Element::output_is_pull(int port) const -+{ -+ return (unsigned) port < (unsigned) nports(true) -+ && !_ports[1][port].active(); -+} -+ -+/** @brief Check whether input @a port is pull. -+ * -+ * Returns true iff input @a port exists and is pull. @sa port_active */ -+inline bool -+Element::input_is_pull(int port) const -+{ -+ return port_active(false, port); -+} -+ -+/** @brief Check whether input @a port is push. -+ * -+ * Returns true iff input @a port exists and is push. */ -+inline bool -+Element::input_is_push(int port) const -+{ -+ return (unsigned) port < (unsigned) nports(false) -+ && !_ports[0][port].active(); -+} -+ -+#if CLICK_STATS >= 2 -+# define PORT_CTOR_INIT(o) , _packets(0), _owner(o) -+#else -+# if CLICK_STATS >= 1 -+# define PORT_CTOR_INIT(o) , _packets(0) -+# else -+# define PORT_CTOR_INIT(o) -+# endif -+#endif -+ -+inline -+Element::Port::Port() -+ : _e(0), _port(-2) PORT_CTOR_INIT(0) -+{ -+} -+ -+inline -+Element::Port::Port(Element* owner, Element* e, int p) -+ : _e(e), _port(p) PORT_CTOR_INIT(owner) -+{ -+ (void) owner; -+} -+ -+/** @brief Returns whether this port is active (a push output or a pull input). -+ * -+ * @sa Element::port_active -+ */ -+inline bool -+Element::Port::active() const -+{ -+ return _port >= 0; -+} -+ -+/** @brief Returns the element connected to this active port. -+ * -+ * Returns 0 if this port is not active(). */ -+inline Element* -+Element::Port::element() const -+{ -+ return _e; -+} -+ -+/** @brief Returns the port number of the port connected to this active port. -+ * -+ * Returns < 0 if this port is not active(). */ -+inline int -+Element::Port::port() const -+{ -+ return _port; -+} -+ -+/** @brief Push packet @a p over this port. -+ * -+ * Pushes packet @a p downstream through the router configuration by passing -+ * it to the next element's @link Element::push() push() @endlink function. -+ * Returns when the rest of the router finishes processing @a p. -+ * -+ * This port must be an active() push output port. Usually called from -+ * element code like @link Element::output output(i) @endlink .push(p). -+ * -+ * When element code calls Element::Port::push(@a p), it relinquishes control -+ * of packet @a p. When push() returns, @a p may have been altered or even -+ * freed by downstream elements. Thus, you must not use @a p after pushing it -+ * downstream. To push a copy and keep a copy, see Packet::clone(). -+ * -+ * output(i).push(p) basically behaves like the following code, although it -+ * maintains additional statistics depending on how CLICK_STATS is defined: -+ * -+ * @code -+ * output(i).element()->push(output(i).port(), p); -+ * @endcode -+ */ -+inline void -+Element::Port::push(Packet* p) const -+{ -+ assert(_e); -+#if CLICK_STATS >= 1 -+ _packets++; -+#endif -+#if CLICK_STATS >= 2 -+ _e->input(_port)._packets++; -+ uint64_t c0 = click_get_cycles(); -+ _e->push(_port, p); -+ uint64_t c1 = click_get_cycles(); -+ uint64_t x = c1 - c0; -+ _e->_calls += 1; -+ _e->_self_cycles += x; -+ _owner->_child_cycles += x; -+#else -+ _e->push(_port, p); -+#endif -+} -+ -+/** @brief Pull a packet over this port and return it. -+ * -+ * Pulls a packet from upstream in the router configuration by calling the -+ * previous element's @link Element::pull() pull() @endlink function. When -+ * the router finishes processing, returns the result. -+ * -+ * This port must be an active() pull input port. Usually called from element -+ * code like @link Element::input input(i) @endlink .pull(). -+ * -+ * input(i).pull() basically behaves like the following code, although it -+ * maintains additional statistics depending on how CLICK_STATS is defined: -+ * -+ * @code -+ * input(i).element()->pull(input(i).port()) -+ * @endcode -+ */ -+inline Packet* -+Element::Port::pull() const -+{ -+ assert(_e); -+#if CLICK_STATS >= 2 -+ _e->output(_port)._packets++; -+ uint64_t c0 = click_get_cycles(); -+ Packet *p = _e->pull(_port); -+ uint64_t c1 = click_get_cycles(); -+ uint64_t x = c1 - c0; -+ _e->_calls += 1; -+ _e->_self_cycles += x; -+ _owner->_child_cycles += x; -+#else -+ Packet* p = _e->pull(_port); -+#endif -+#if CLICK_STATS >= 1 -+ if (p) -+ _packets++; -+#endif -+ return p; -+} -+ -+/** @brief Push packet @a p to output @a port, or kill it if @a port is out of -+ * range. -+ * -+ * @param port output port number -+ * @param p packet to push -+ * -+ * If @a port is in range (>= 0 and < noutputs()), then push packet @a p -+ * forward using output(@a port).push(@a p). Otherwise, kill @a p with @a p -+ * ->kill(). -+ * -+ * @note It is invalid to call checked_output_push() on a pull output @a port. -+ */ -+inline void -+Element::checked_output_push(int port, Packet* p) const -+{ -+ if ((unsigned) port < (unsigned) noutputs()) -+ _ports[1][port].push(p); -+ else -+ p->kill(); -+} -+ -+#undef CONNECTION_CTOR_INIT -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/elemfilter.hh click-1.6.0-27/inst/include/click/elemfilter.hh ---- click-1.6.0/inst/include/click/elemfilter.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/elemfilter.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,54 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/elemfilter.cc" -*- -+#ifndef CLICK_ELEMFILTER_HH -+#define CLICK_ELEMFILTER_HH -+#include -+CLICK_DECLS -+ -+class ElementFilter { public: -+ -+ ElementFilter() { } -+ virtual ~ElementFilter() { } -+ -+ inline bool match_input(Element*, int port); -+ inline bool match_output(Element*, int port); -+ inline bool match_port(Element*, bool isoutput, int port); -+ -+ enum PortType { NONE = -1, INPUT = 0, OUTPUT = 1 }; -+ virtual bool check_match(Element* e, int port, PortType); -+ -+ void filter(Vector&); -+ -+}; -+ -+class CastElementFilter : public ElementFilter { public: -+ -+ CastElementFilter(const String&); -+ bool check_match(Element*, int, PortType); -+ -+ private: -+ -+ String _what; -+ -+}; -+ -+ -+inline bool -+ElementFilter::match_input(Element* e, int port) -+{ -+ return check_match(e, port, INPUT); -+} -+ -+inline bool -+ElementFilter::match_output(Element* e, int port) -+{ -+ return check_match(e, port, OUTPUT); -+} -+ -+inline bool -+ElementFilter::match_port(Element* e, bool isoutput, int port) -+{ -+ return check_match(e, port, (PortType) isoutput); -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/error.hh click-1.6.0-27/inst/include/click/error.hh ---- click-1.6.0/inst/include/click/error.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/error.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,187 @@ -+// -*- c-basic-offset: 2; related-file-name: "../../lib/error.cc" -*- -+#ifndef CLICK_ERROR_HH -+#define CLICK_ERROR_HH -+#include -+#if defined(CLICK_USERLEVEL) || defined(CLICK_TOOL) -+# include -+#endif -+#include -+#if HAVE_ADDRESSABLE_VA_LIST -+# define VA_LIST_REF_T va_list * -+# define VA_LIST_DEREF(val) (*(val)) -+# define VA_LIST_REF(val) (&(val)) -+#else -+# define VA_LIST_REF_T va_list -+# define VA_LIST_DEREF(val) (val) -+# define VA_LIST_REF(val) (val) -+#endif -+CLICK_DECLS -+ -+class ErrorHandler { public: -+ -+ enum Seriousness { -+ ERRVERBOSITY_CONTEXT= 0x8000, -+ ERRVERBOSITY_MAX = 0xFFFF, -+ ERRVERBOSITY_DEFAULT= ERRVERBOSITY_MAX, -+ ERRVERBOSITY_MASK = 0x0000FFFF, -+ ERRVERBOSITY_SHIFT = 16, -+ -+ ERR_MIN_DEBUG = 0x00000000, -+ ERR_MIN_MESSAGE = 0x00010000, -+ ERR_MIN_WARNING = 0x00020000, -+ ERR_MIN_ERROR = 0x00030000, -+ ERR_MIN_FATAL = 0x00040000, -+ -+ // fatal() with no explicit exit status exits with this status -+ FATAL_EXITSTATUS = 1, -+ -+ ERR_DEBUG = ERR_MIN_DEBUG + ERRVERBOSITY_DEFAULT, -+ ERR_CONTEXT_MESSAGE = ERR_MIN_MESSAGE + ERRVERBOSITY_CONTEXT, -+ ERR_MESSAGE = ERR_MIN_MESSAGE + ERRVERBOSITY_DEFAULT, -+ ERR_WARNING = ERR_MIN_WARNING + ERRVERBOSITY_DEFAULT, -+ ERR_CONTEXT_ERROR = ERR_MIN_ERROR + ERRVERBOSITY_CONTEXT, -+ ERR_ERROR = ERR_MIN_ERROR + ERRVERBOSITY_DEFAULT, -+ ERR_FATAL = ERR_MIN_FATAL + ERRVERBOSITY_DEFAULT + (FATAL_EXITSTATUS << ERRVERBOSITY_SHIFT) -+ }; -+ -+ ErrorHandler() { } -+ virtual ~ErrorHandler() { } -+ -+ static ErrorHandler *static_initialize(ErrorHandler *errh); // returns errh -+ static void static_cleanup(); -+ -+ static ErrorHandler *default_handler(); -+ static ErrorHandler *silent_handler(); -+ -+ static bool has_default_handler(); -+ static void set_default_handler(ErrorHandler *); -+ -+ virtual int nwarnings() const = 0; -+ virtual int nerrors() const = 0; -+ virtual void reset_counts() = 0; -+ virtual int min_verbosity() const; -+ -+ // seriousness < ERR_MIN_WARNING returns OK_RESULT, which is 0 -+ // seriousness >= ERR_MIN_WARNING returns ERROR_RESULT, which is -EINVAL -+ static const int OK_RESULT; -+ static const int ERROR_RESULT; -+ -+ void debug(const char *format, ...); -+ void message(const char *format, ...); -+ int warning(const char *format, ...); -+ int error(const char *format, ...); -+ int fatal(const char *format, ...); -+ -+ void ldebug(const String &landmark, const char *format, ...); -+ void lmessage(const String &landmark, const char *format, ...); -+ int lwarning(const String &landmark, const char *format, ...); -+ int lerror(const String &landmark, const char *format, ...); -+ int lfatal(const String &landmark, const char *format, ...); -+ -+ int verror(Seriousness, const String &landmark, const char *format, va_list); -+ int verror_text(Seriousness, const String &landmark, const String &text); -+ -+ String make_text(Seriousness, const char *, ...); -+ virtual String make_text(Seriousness, const char *, va_list); -+ virtual String decorate_text(Seriousness, const String &, const String &); -+ virtual void handle_text(Seriousness, const String &) = 0; -+ virtual int count_error(Seriousness, const String &) = 0; -+ -+ virtual void set_error_code(int); -+ -+ static String prepend_lines(const String &prefix, const String &text); -+ -+ // error conversions -+ struct Conversion; -+ typedef String (*ConversionHook)(int flags, VA_LIST_REF_T); -+ enum ConversionFlags { -+ ZERO_PAD = 1, PLUS_POSITIVE = 2, SPACE_POSITIVE = 4, LEFT_JUST = 8, -+ ALTERNATE_FORM = 16, UPPERCASE = 32, SIGNED = 64, NEGATIVE = 128 -+ }; -+ static Conversion *add_conversion(const String &, ConversionHook); -+ static int remove_conversion(Conversion *); -+ -+}; -+ -+class BaseErrorHandler : public ErrorHandler { public: -+ BaseErrorHandler() : _nwarnings(0), _nerrors(0) { } -+ int nwarnings() const { return _nwarnings; } -+ int nerrors() const { return _nerrors; } -+ void reset_counts() { _nwarnings = _nerrors = 0; } -+ int count_error(Seriousness, const String &); -+ private: -+ int _nwarnings, _nerrors; -+}; -+ -+#if defined(CLICK_USERLEVEL) || defined(CLICK_TOOL) -+class FileErrorHandler : public BaseErrorHandler { public: -+ FileErrorHandler(FILE *, const String & = String()); -+ void handle_text(Seriousness, const String &); -+ private: -+ FILE *_f; -+ String _context; -+}; -+#endif -+ -+class ErrorVeneer : public ErrorHandler { public: -+ -+ ErrorVeneer(ErrorHandler *errh) : _errh(errh) { } -+ -+ int nwarnings() const; -+ int nerrors() const; -+ void reset_counts(); -+ -+ String make_text(Seriousness, const char *, va_list); -+ String decorate_text(Seriousness, const String &, const String &); -+ void handle_text(Seriousness, const String &); -+ int count_error(Seriousness, const String &); -+ -+ protected: -+ -+ ErrorHandler *_errh; -+ -+}; -+ -+class ContextErrorHandler : public ErrorVeneer { public: -+ ContextErrorHandler(ErrorHandler *, const String &context, const String &indent = " ", const String &context_landmark = ""); -+ String decorate_text(Seriousness, const String &, const String &); -+ private: -+ String _context; -+ String _indent; -+ String _context_landmark; -+}; -+ -+class PrefixErrorHandler : public ErrorVeneer { public: -+ PrefixErrorHandler(ErrorHandler *, const String &prefix); -+ String decorate_text(Seriousness, const String &, const String &); -+ private: -+ String _prefix; -+}; -+ -+class LandmarkErrorHandler : public ErrorVeneer { public: -+ LandmarkErrorHandler(ErrorHandler *, const String &); -+ void set_landmark(const String &s) { _landmark = s; } -+ String decorate_text(Seriousness, const String &, const String &); -+ private: -+ String _landmark; -+}; -+ -+class VerboseFilterErrorHandler : public ErrorVeneer { public: -+ VerboseFilterErrorHandler(ErrorHandler *, int min_verbosity); -+ int min_verbosity() const; -+ void handle_text(Seriousness, const String &); -+ private: -+ int _min_verbosity; -+}; -+ -+#if defined(CLICK_USERLEVEL) || defined(CLICK_TOOL) -+class BailErrorHandler : public ErrorVeneer { public: -+ BailErrorHandler(ErrorHandler *, Seriousness = ERR_MIN_ERROR); -+ void handle_text(Seriousness, const String &); -+ private: -+ int _exit_seriousness; -+}; -+#endif -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/etheraddress.hh click-1.6.0-27/inst/include/click/etheraddress.hh ---- click-1.6.0/inst/include/click/etheraddress.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/etheraddress.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,137 @@ -+// -*- related-file-name: "../../lib/etheraddress.cc" -*- -+#ifndef CLICK_ETHERADDRESS_HH -+#define CLICK_ETHERADDRESS_HH -+#include -+#include -+CLICK_DECLS -+ -+class EtherAddress { public: -+ -+ inline EtherAddress(); -+ explicit EtherAddress(const unsigned char *data); -+ -+ typedef bool (EtherAddress::*unspecified_bool_type)() const; -+ inline operator unspecified_bool_type() const; -+ inline bool is_group() const; -+ -+ inline unsigned char *data(); -+ inline const unsigned char *data() const; -+ inline const uint16_t *sdata() const; -+ -+ inline size_t hashcode() const; -+ -+ // bool operator==(EtherAddress, EtherAddress); -+ // bool operator!=(EtherAddress, EtherAddress); -+ -+ String unparse() const; -+ -+ inline operator String() const; -+ inline String s() const; -+ -+ private: -+ -+ uint16_t _data[3]; -+ -+}; -+ -+/** @brief Constructs an EtherAddress equal to 00:00:00:00:00:00. */ -+inline -+EtherAddress::EtherAddress() -+{ -+ _data[0] = _data[1] = _data[2] = 0; -+} -+ -+/** @brief Constructs an EtherAddress from data. -+ @param data the address data, in network byte order -+ -+ The bytes data[0]...data[5] are used to construct the address. */ -+inline -+EtherAddress::EtherAddress(const unsigned char *data) -+{ -+ memcpy(_data, data, 6); -+} -+ -+/** @brief Returns true iff the address is not 00:00:00:00:00:00. */ -+inline -+EtherAddress::operator unspecified_bool_type() const -+{ -+ return _data[0] || _data[1] || _data[2] ? &EtherAddress::is_group : 0; -+} -+ -+/** @brief Returns true iff this address is a group address. -+ -+ Group addresses have the low-order bit of the first byte set to 1, as in -+ 01:00:00:00:00:00. */ -+inline bool -+EtherAddress::is_group() const -+{ -+ return data()[0] & 1; -+} -+ -+/** @brief Returns a pointer to the address data. */ -+inline const unsigned char * -+EtherAddress::data() const -+{ -+ return reinterpret_cast(_data); -+} -+ -+/** @brief Returns a pointer to the address data. */ -+inline unsigned char * -+EtherAddress::data() -+{ -+ return reinterpret_cast(_data); -+} -+ -+/** @brief Returns a pointer to the address data, as an array of uint16_ts. */ -+inline const uint16_t * -+EtherAddress::sdata() const -+{ -+ return _data; -+} -+ -+/** @brief Unparses this address into a colon-separated hex String. -+ @sa unparse */ -+inline -+EtherAddress::operator String() const -+{ -+ return unparse(); -+} -+ -+/** @brief Unparses this address into a colon-separated hex String. -+ @sa unparse */ -+inline String -+EtherAddress::s() const -+{ -+ return unparse(); -+} -+ -+/** @relates EtherAddress -+ @brief Compares two EtherAddress objects for equality. */ -+inline bool -+operator==(const EtherAddress &a, const EtherAddress &b) -+{ -+ return (a.sdata()[0] == b.sdata()[0] -+ && a.sdata()[1] == b.sdata()[1] -+ && a.sdata()[2] == b.sdata()[2]); -+} -+ -+/** @relates EtherAddress -+ @brief Compares two EtherAddress objects for inequality. */ -+inline bool -+operator!=(const EtherAddress &a, const EtherAddress &b) -+{ -+ return !(a == b); -+} -+ -+class StringAccum; -+StringAccum &operator<<(StringAccum &, const EtherAddress &); -+ -+inline size_t -+EtherAddress::hashcode() const -+{ -+ const uint16_t *d = sdata(); -+ return (d[2] | (d[1] << 16)) ^ (d[0] << 9); -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/ewma.hh click-1.6.0-27/inst/include/click/ewma.hh ---- click-1.6.0/inst/include/click/ewma.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/ewma.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,488 @@ -+#ifndef CLICK_EWMA_HH -+#define CLICK_EWMA_HH -+#include -+#include -+CLICK_DECLS -+ -+/** @file -+ * @brief Click's classes for supporting exponentially weighted moving -+ * averages. -+ */ -+ -+/** @class DirectEWMAX include/click/ewma.hh -+ * @brief An exponentially weighted moving average. -+ * -+ * The DirectEWMAX template class represents a simple exponentially weighted -+ * moving average. The average starts out with value 0. The update() -+ * function adds a new observation to the average. -+ * -+ * The template parameter P defines three EWMA parameters: value type, -+ * stability shift, and scale factor. -+ * -+ * The value type is simply the unsigned integral type used to store the -+ * average. It is also the type of each observation. unsigned -+ * and uint64_t are examples. -+ * -+ * The stability shift specifies alpha, the stability parameter. Concretely, -+ * alpha = 1. / (2 ** stability_shift). Thus, a stability shift of 4 -+ * corresponds to an alpha of 1/16. -+ * -+ * The scaling factor specifies how many bits of fraction are kept per -+ * observation. Fraction bits are necessary to account for small differences -+ * between observations. For example, consider a EWMA with value 0, alpha -+ * 1/16, and 0 bits of fraction. Assume the EWMA begins to observe a stream -+ * of observations equal to 1. Despite these observations, the EWMA's value -+ * will never change from 0, since the 1/16 alpha factor rounds the new -+ * observations down to 0. At least 4 bits of fraction are required to -+ * account for this difference. There is a tradeoff: the more bits of -+ * fraction, the more precise the EWMA, but the less bits available to -+ * account for large values. -+ * -+ * These EWMA parameters are defined by five of P's members, two typedefs and -+ * three possibly static member functions. -+ * -+ *
-+ *
P::value_type
-+ *
The EWMA's value type. Example: unsigned.
-+ * -+ *
P::signed_value_type
-+ *
The signed version of P::value_type. Used internally. -+ * Example: int.
-+ * -+ *
unsigned P::stability_shift()
-+ *
This function should return this EWMA's stability shift -+ * (see below).
-+ * -+ *
unsigned P::scale()
-+ *
This function should return this EWMA's scaling factor -+ * (see below).
-+ * -+ *
unsigned P::compensation()
-+ *
This function should return this EWMA's stability compensation, -+ * which normally equals 1 @<@< (stability_shift - 1).
-+ *
-+ * -+ * Since DirectEWMAX inherits from an object of type P, these members are -+ * also directly available to callers. -+ * -+ * The FixedEWMAXParameters and StabilityEWMAXParameters types are good -+ * template arguments for DirectEWMAX. -+ * -+ * @sa RateEWMAX -+ */ -+template -+class DirectEWMAX : public P { public: -+ -+ typedef typename P::value_type value_type; -+ -+ /** @brief Create a EWMA with initial value 0. */ -+ DirectEWMAX() -+ : _avg(0) { -+ } -+ -+ /** @brief Return the current scaled moving average. -+ * @note The returned value has scale() bits of fraction. */ -+ value_type scaled_average() const { -+ return _avg; -+ } -+ -+ /** @brief Return the current moving average. -+ * @note The returned value is unscaled. */ -+ value_type unscaled_average() const { -+ return (_avg + P::compensation()) >> P::scale(); -+ } -+ -+ /** @brief Reset the EWMA to value 0. */ -+ void clear() { -+ _avg = 0; -+ } -+ -+ /** @brief Update the moving average with a new observation. -+ * @param value the observation (unscaled) */ -+ inline void update(value_type value); -+ -+ /** @brief Update the moving average with @a count identical observations. -+ * @param value the observation (unscaled) -+ * @param count number of observations -+ * @note This may be faster than calling update(@a value) @a count -+ * times. */ -+ void update_n(value_type value, unsigned count); -+ -+ /** @brief Unparse the current average into a String. -+ * @note The returned value is unscaled, but may contain a fractional -+ * part. */ -+ String unparse() const; -+ -+ /** @brief Update the moving average with a new observation (deprecated). -+ * @param value the observation (unscaled) -+ * @deprecated Use update() instead. */ -+ inline void update_with(value_type value) CLICK_DEPRECATED { -+ update(value); -+ } -+ -+ private: -+ -+ value_type _avg; -+ -+}; -+ -+template -+inline void -+DirectEWMAX

::update(value_type val) -+{ -+ value_type val_scaled = (val << P::scale()) + P::compensation(); -+ unsigned stability = P::stability_shift(); -+#if HAVE_ARITHMETIC_RIGHT_SHIFT -+ _avg += static_cast(val_scaled - _avg) >> stability; -+#else -+ if (val_scaled < _avg) -+ _avg -= (_avg - val_scaled) >> stability; -+ else -+ _avg += (val_scaled - _avg) >> stability; -+#endif -+} -+ -+template -+void -+DirectEWMAX

::update_n(value_type value, unsigned count) -+{ -+ // XXX use table lookup -+ value_type val_scaled = value << P::scale(); -+ if (count >= 100) -+ _avg = val_scaled; -+ else { -+ val_scaled += P::compensation(); -+ unsigned stability = P::stability_shift(); -+#if HAVE_ARITHMETIC_RIGHT_SHIFT -+ for (; count > 0; count--) -+ _avg += static_cast(val_scaled - _avg) >> stability; -+#else -+ if (val_scaled < _avg) -+ for (; count > 0; count--) -+ _avg -= (_avg - val_scaled) >> stability; -+ else -+ for (; count > 0; count--) -+ _avg += (val_scaled - _avg) >> stability; -+#endif -+ } -+} -+ -+template -+inline String -+DirectEWMAX

::unparse() const -+{ -+ return cp_unparse_real2(scaled_average(), P::scale()); -+} -+ -+/** @class FixedEWMAXParameters include/click/ewma.hh -+ * @brief Parameters for a EWMA with constant scaling factor and stability -+ * shift. -+ * -+ * The FixedEWMAXParameters template class is used as a template argument to -+ * DirectEWMAX. It defines a EWMA with fixed constant scaling factor and -+ * stability shift. FixedEWMAXParameters's first template argument is the -+ * EWMA's stability shift, its second template argument is the EWMA's scaling -+ * factor, its third template argument is the EWMA's value type, and the -+ * fourth template argument is the EWMA's signed value type. -+ * -+ * Example 1: DirectEWMAX@ -+ * @> defines a EWMA with alpha 1/16 (stability shift 4), scaling -+ * factor 10, and value type unsigned. (These are the default parameters -+ * available in the DirectEWMA typedef.) -+ * -+ * Example 2: DirectEWMAX@ @> defines a EWMA with alpha 1/8 (stability shift 3), -+ * scaling factor 10, and value type uint64_t. -+ */ -+template -+class FixedEWMAXParameters { public: -+ -+ typedef T value_type; -+ typedef U signed_value_type; -+ -+ /** @brief Returns this EWMA's stability shift. -+ * @return the 1st template parameter */ -+ static unsigned stability_shift() { -+ return STABILITY; -+ } -+ -+ /** @brief Returns this EWMA's scaling factor (bits of fraction). -+ * @return the 2nd template parameter */ -+ static unsigned scale() { -+ return SCALE; -+ } -+ -+ /** @brief Returns this EWMA's compensation. -+ * @return 1 << (stability_shift() - 1) */ -+ static unsigned compensation() { -+ return 1 << (STABILITY - 1); -+ } -+ -+}; -+ -+/** @brief A DirectEWMAX with stability shift 4 (alpha 1/16), scaling factor -+ * 10 (10 bits of fraction), and underlying type unsigned. */ -+typedef DirectEWMAX > DirectEWMA; -+ -+/** @brief A DirectEWMAX with stability shift 3 (alpha 1/8), scaling factor -+ * 10 (10 bits of fraction), and underlying type unsigned. */ -+typedef DirectEWMAX > FastDirectEWMA; -+ -+ -+/** @class StabilityEWMAXParameters include/click/ewma.hh -+ * @brief Parameters for a EWMA with constant scaling factor -+ * and user-settable alpha. -+ * -+ * The StabilityEWMAXParameters template class is used as a template argument -+ * to DirectEWMAX. It defines a EWMA with fixed constant scaling factor. -+ * StabilityEWMAXParameters's first template argument is the EWMA's scaling -+ * factor, its second template argument is the EWMA's value type, and the -+ * third template argument is the EWMA's signed value type. -+ * -+ * Example: DirectEWMAX@ -+ * @> defines a EWMA with user-settable alpha (stability shift) -+ * initially equal to 1/16, scaling factor 10, and value type unsigned. -+ * -+ * A DirectEWMAX@ @> object has -+ * stability_shift() and set_stability_shift() methods. -+ */ -+template -+class StabilityEWMAXParameters { public: -+ -+ typedef T value_type; -+ typedef U signed_value_type; -+ -+ /** @brief Create a StabilityEWMAXParameters with initial alpha 1/16. */ -+ StabilityEWMAXParameters() -+ : _stability(4) { -+ } -+ -+ /** @brief Return the current stability shift. -+ * -+ * The current alpha equals 1. / (2 ** stability_shift()). */ -+ unsigned stability_shift() const { -+ return _stability; -+ } -+ -+ /** @brief Set the current stability shift. -+ * @param stability_shift new value */ -+ void set_stability_shift(unsigned stability_shift) { -+ _stability = stability_shift; -+ } -+ -+ /** @brief Returns this EWMA's scaling factor (bits of fraction). -+ * @return the 1st template parameter */ -+ static unsigned scale() { -+ return SCALE; -+ } -+ -+ /** @brief Returns this EWMA's compensation. -+ * @return 1 << (stability_shift() - 1) */ -+ unsigned compensation() const { -+ return 1 << (stability_shift() - 1); -+ } -+ -+ private: -+ -+ unsigned _stability; -+ -+}; -+ -+ -+ -+/** @class RateEWMAX include/click/ewma.hh -+ * @brief An exponentially weighted moving average used to measure a rate. -+ * -+ * The RateEWMAX template class represents an exponentially weighted moving -+ * average that measures a rate: a value that changes over time. -+ * The average starts out with value 0. -+ * -+ * RateEWMAX adds to DirectEWMAX a concept of epochs, which are periods of -+ * time. A RateEWMAX object collects samples over the current epoch. When -+ * the epoch closes, the collected sample count is used to update the moving -+ * average. Thus, the moving average is measured in samples per epoch. The -+ * rate() and unparse_rate() member functions return the rate in samples per -+ * second, rather than per epoch. -+ * -+ * Note that it often makes sense to call update() before calling -+ * scaled_average(), rate(), or unparse_rate(), in case an epoch or two has -+ * passed and the average should take account of passing time. -+ * -+ * The template parameter P defines the EWMA parameters required by -+ * DirectEWMAX, and three others: a rate count, an epoch measurement, and an -+ * epoch frequency. -+ * -+ * The rate count is the number of rates measured per object. Usually it is -+ * 1. -+ * -+ * The epoch measurement is a function that returns the current epoch as an -+ * unsigned number. Epochs should increase monotonically. -+ * -+ * The epoch frequency is the number of epochs per second, and is only used -+ * by rate() and unparse_rate(). -+ * -+ * These are defined by: -+ * -+ *

-+ *
P::rate_count
-+ *
The rate count, as a static constant (for example, defined by an -+ * enum).
-+ * -+ *
unsigned P::epoch()
-+ *
This function returns the current epoch number.
-+ * -+ *
unsigned P::epoch_frequency()
-+ *
This function returns the number of epochs per second.
-+ *
-+ * -+ * Since RateEWMAX inherits from an object of type P, these members are -+ * also directly available to callers. -+ * -+ * The RateEWMAXParameters type is a good template argument for DirectEWMAX. -+ * -+ * @sa RateEWMAX -+ */ -+template -+class RateEWMAX : public P { public: -+ -+ typedef typename P::value_type value_type; -+ typedef typename P::signed_value_type signed_value_type; -+ -+ /** @brief Create a rate EWMA with initial value(s) 0. */ -+ RateEWMAX() { -+ _current_epoch = P::epoch(); -+ for (unsigned i = 0; i < P::rate_count; i++) -+ _current[i] = 0; -+ } -+ -+ /** @brief Return the current scaled moving average. -+ * @param ratenum rate index (0 <= ratenum < rate_count) -+ * @note The returned value has scale() bits of fraction. -+ * @note scaled_average() does not check the current epoch. -+ * If an epoch might have passed since the last update(), you -+ * should call update(0, @a ratenum) before calling this -+ * function. */ -+ signed_value_type scaled_average(unsigned ratenum = 0) const { -+ // note: return type must be signed! -+ return _avg[ratenum].scaled_average(); -+ } -+ -+ /** @brief Return the current rate in samples per second. -+ * @param ratenum rate index (0 <= ratenum < rate_count) -+ * @note The returned value is unscaled. -+ * @note rate() does not check the current epoch. -+ * If an epoch might have passed since the last update(), you -+ * should call update(0, @a ratenum) before calling this -+ * function. */ -+ inline int rate(unsigned ratenum = 0) const; -+ -+ /** @brief Update the sample count for the current epoch. -+ * @param delta increment for current epoch sample count -+ * @param ratenum rate index (0 <= ratenum < rate_count) -+ * @note If the epoch has changed since the last update(), -+ * this function applies the last epoch's sample count (if any) -+ * to the relevant moving average, accounts for any passage of -+ * time (in case one or more epochs have passed with no samples), -+ * and clears the sample count for the new epoch. */ -+ inline void update(signed_value_type delta, unsigned ratenum = 0); -+ -+ /** @brief Unparse the current average into a String. -+ * @param ratenum rate index (0 <= ratenum < rate_count) -+ * @note The returned value is unscaled, but may contain a fractional -+ * part. -+ * @note unparse_rate() does not check the current epoch. -+ * If an epoch might have passed since the last update(), you -+ * should call update(0, @a ratenum) before calling this -+ * function. */ -+ String unparse_rate(unsigned ratenum = 0) const; -+ -+ private: -+ -+ unsigned _current_epoch; -+ value_type _current[P::rate_count]; -+ DirectEWMAX

_avg[P::rate_count]; -+ -+ inline void update_time(unsigned now); -+ -+}; -+ -+/** @class RateEWMAXParameters include/click/ewma.hh -+ * @brief Parameters for a RateEWMA with constant scaling factor -+ * and alpha, one rate count, and epochs of jiffies. -+ * -+ * The RateEWMAXParameters template class is used as a template argument -+ * to RateEWMAX. It defines a EWMA with fixed constant scaling factor and -+ * alpha and one rate count. The EWMA uses jiffies as epochs. Template -+ * parameters are as for DirectEWMAXParameters. -+ * -+ * Example: RateEWMAX@ -+ * @> defines a rate EWMA with user-settable alpha (stability shift) -+ * initially equal to 1/16, scaling factor 10, and value type unsigned. -+ */ -+template -+class RateEWMAXParameters : public FixedEWMAXParameters { public: -+ enum { -+ rate_count = 1 -+ }; -+ -+ /** @brief Return the current epoch number. -+ * @note RateEWMAXParameters measures epochs in jiffies. */ -+ static unsigned epoch() { -+ return click_jiffies(); -+ } -+ -+ /** @brief Return the number of epochs (jiffies) per second. */ -+ static unsigned epoch_frequency() { -+ return CLICK_HZ; -+ } -+}; -+ -+/** @brief A RateEWMAX with stability shift 4 (alpha 1/16), scaling factor 10 -+ * (10 bits of fraction), one rate, and underlying type unsigned -+ * that measures epochs in jiffies. */ -+typedef RateEWMAX > RateEWMA; -+ -+ -+template -+inline void -+RateEWMAX

::update_time(unsigned now) -+{ -+ unsigned jj = _current_epoch; -+ if (now != jj) { -+ for (unsigned i = 0; i < P::rate_count; i++) { -+ // adjust the average rate using the last measured packets -+ _avg[i].update(_current[i]); -+ -+ // adjust for time w/ no packets -+ if (jj + 1 != now) -+ _avg[i].update_n(0, now - jj - 1); -+ _current[i] = 0; -+ } -+ _current_epoch = now; -+ } -+} -+ -+template -+inline void -+RateEWMAX

::update(signed_value_type delta, unsigned ratenum) -+{ -+ update_time(P::epoch()); -+ _current[ratenum] += delta; -+} -+ -+template -+inline int -+RateEWMAX

::rate(unsigned ratenum) const -+{ -+ return (scaled_average(ratenum) * P::epoch_frequency()) >> _avg[ratenum].scale(); -+} -+ -+template -+inline String -+RateEWMAX

::unparse_rate(unsigned ratenum) const -+{ -+ return cp_unparse_real2(scaled_average(ratenum) * P::epoch_frequency(), _avg[ratenum].scale()); -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/fixconfig.h click-1.6.0-27/inst/include/click/fixconfig.h ---- click-1.6.0/inst/include/click/fixconfig.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/fixconfig.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,13 @@ -+#ifndef CLICK_FIXCONFIG_H -+#define CLICK_FIXCONFIG_H 1 -+ -+#if CLICK_LINUXMODULE && HAVE_LINUX_ASM_ALTERNATIVE_H -+// The .smp_locks section and C++-style weak linkage interact badly. -+# if CONFIG_SMP && (defined(__i386__) || defined(__x86_64__)) -+# include -+# undef LOCK_PREFIX -+# define LOCK_PREFIX "lock ; " -+# endif -+#endif -+ -+#endif -diff -Nurb click-1.6.0/inst/include/click/gaprate.hh click-1.6.0-27/inst/include/click/gaprate.hh ---- click-1.6.0/inst/include/click/gaprate.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/gaprate.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,96 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/gaprate.cc" -*- -+#ifndef CLICK_GAPRATE_HH -+#define CLICK_GAPRATE_HH -+#include -+CLICK_DECLS -+class ErrorHandler; -+ -+class GapRate { public: -+ -+ inline GapRate(); -+ inline GapRate(unsigned); -+ -+ unsigned rate() const { return _rate; } -+ -+ inline void set_rate(unsigned); -+ void set_rate(unsigned, ErrorHandler *); -+ inline void reset(); -+ -+ inline bool need_update(const Timestamp &); -+ void update() { _sec_count++; } -+ void update_with(int incr) { _sec_count += incr; } -+ -+ enum { UGAP_SHIFT = 12 }; -+ enum { MAX_RATE = 1000000U << UGAP_SHIFT }; -+ -+ private: -+ -+ unsigned _ugap; -+ int _sec_count; -+ long _tv_sec; -+ unsigned _rate; -+#if DEBUG_GAPRATE -+ Timestamp _last; -+#endif -+ -+}; -+ -+inline void -+GapRate::reset() -+{ -+ _tv_sec = -1; -+#if DEBUG_GAPRATE -+ _last.set_sec(0); -+#endif -+} -+ -+inline void -+GapRate::set_rate(unsigned rate) -+{ -+ if (rate > MAX_RATE) -+ rate = MAX_RATE; -+ _rate = rate; -+ _ugap = (rate == 0 ? MAX_RATE + 1 : MAX_RATE / rate); -+#if DEBUG_GAPRATE -+ click_chatter("ugap: %u", _ugap); -+#endif -+ reset(); -+} -+ -+inline -+GapRate::GapRate() -+{ -+ set_rate(0); -+} -+ -+inline -+GapRate::GapRate(unsigned rate) -+{ -+ set_rate(rate); -+} -+ -+inline bool -+GapRate::need_update(const Timestamp &now) -+{ -+ unsigned need = (now.usec() << UGAP_SHIFT) / _ugap; -+ -+ if (_tv_sec < 0) { -+ // 27.Feb.2005: often OK to send a packet after reset unless rate is -+ // 0 -- requested by Bart Braem -+ // check include/click/gaprate.hh (1.2) -+ _tv_sec = now.sec(); -+ _sec_count = need + ((now.usec() << UGAP_SHIFT) - (need * _ugap) > _ugap / 2); -+ } else if (now.sec() > _tv_sec) { -+ _tv_sec = now.sec(); -+ if (_sec_count > 0) -+ _sec_count -= _rate; -+ } -+ -+#if DEBUG_GAPRATE -+ click_chatter("%{timestamp} -> %u @ %u [%d]", &now, need, _sec_count, (int)need >= _sec_count); -+#endif -+ return ((int)need >= _sec_count); -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/glue.hh click-1.6.0-27/inst/include/click/glue.hh ---- click-1.6.0/inst/include/click/glue.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/glue.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,420 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/glue.cc" -*- -+#ifndef CLICK_GLUE_HH -+#define CLICK_GLUE_HH -+// Removes many common #include

s and abstracts differences between -+// kernel and user space, and between operating systems. -+ -+// HEADERS -+ -+#if CLICK_LINUXMODULE -+ -+# define _LOOSE_KERNEL_NAMES 1 /* define ino_t, off_t, etc. */ -+# undef __KERNEL_STRICT_NAMES -+# ifndef __OPTIMIZE__ -+# define __OPTIMIZE__ 1 /* get ntohl() macros. otherwise undefined. */ -+# endif -+# include -+CLICK_CXX_PROTECT -+# ifdef WANT_MOD_USE_COUNT -+# define __NO_VERSION__ -+# include -+# define HAVE_MOD_USE_COUNT 1 -+# endif -+# include -+# include -+# include -+# include -+# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) -+# include -+# include -+# include -+# else -+# include -+# endif -+# include -+# include -+# include -+CLICK_CXX_UNPROTECT -+# include -+ -+#elif CLICK_BSDMODULE -+ -+# include -+CLICK_CXX_PROTECT -+# include -+# include -+# include -+# include -+# include -+# include -+# include -+# include -+# include -+# include -+CLICK_CXX_UNPROTECT -+# include -+ -+#else /* CLICK_USERLEVEL */ -+ -+# include -+# include -+# include -+# include -+# include -+# include -+# include -+# include -+# include -+# ifdef CLICK_NS -+extern "C" int simclick_gettimeofday(struct timeval *); -+# endif -+ -+#endif -+ -+ -+// DEBUGGING OUTPUT -+extern "C" { -+void click_chatter(const char *fmt, ...); -+} -+ -+ -+// DEBUG MALLOC -+ -+#if CLICK_DMALLOC && (CLICK_LINUXMODULE || CLICK_BSDMODULE) -+extern uint32_t click_dmalloc_where; -+# define CLICK_DMALLOC_REG(s) do { const unsigned char *__str = reinterpret_cast(s); click_dmalloc_where = (__str[0]<<24) | (__str[1]<<16) | (__str[2]<<8) | __str[3]; } while (0) -+#else -+# define CLICK_DMALLOC_REG(s) -+#endif -+ -+ -+// LALLOC -+ -+#if CLICK_LINUXMODULE -+# define CLICK_LALLOC(size) (click_lalloc((size))) -+# define CLICK_LFREE(p, size) (click_lfree((p), (size))) -+extern "C" { -+void *click_lalloc(size_t size); -+void click_lfree(volatile void *p, size_t size); -+} -+#else -+# define CLICK_LALLOC(size) ((void *)(new uint8_t[(size)])) -+# define CLICK_LFREE(p, size) delete[] ((uint8_t *)(p)) -+#endif -+ -+ -+// RANDOMNESS -+ -+CLICK_DECLS -+extern void click_random_srandom(); // srand(), but use true randomness -+CLICK_ENDDECLS -+ -+#if CLICK_LINUXMODULE -+extern "C" { -+extern uint32_t click_random_seed; -+extern void srandom(uint32_t); -+#define RAND_MAX 2147483647 -+inline uint32_t -+random() -+{ -+ click_random_seed = click_random_seed*69069L + 1; -+ return (click_random_seed ^ jiffies) & RAND_MAX; -+} -+} -+#endif -+ -+ -+// SORTING -+ -+int click_qsort(void *base, size_t n, size_t size, int (*compar)(const void *, const void *, void *), void *thunk); -+int click_qsort(void *base, size_t n, size_t size, int (*compar)(const void *, const void *)); -+ -+ -+// OTHER -+ -+#if CLICK_LINUXMODULE -+ -+// current processor -+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) -+# define click_current_processor() (current_thread_info()->cpu) -+# else -+# define click_current_processor() (current->processor) -+# endif -+ -+// provide a definition for net_device for kernel compatibility -+# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0) -+typedef struct device net_device; -+# define dev_get_by_name dev_get -+# endif -+ -+extern "C" { -+ -+long strtol(const char *, char **, int); -+ -+inline unsigned long -+strtoul(const char *nptr, char **endptr, int base) -+{ -+ return simple_strtoul(nptr, endptr, base); -+} -+ -+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) && __GNUC__ == 2 && __GNUC_MINOR__ == 96 -+int click_strcmp(const char *, const char *); -+ -+inline int -+strcmp(const char *a, const char *b) -+{ -+ return click_strcmp(a, b); -+} -+# endif -+ -+} -+ -+#elif CLICK_BSDMODULE -+ -+/* Char-type glue */ -+ -+# define _U 0x01 /* upper */ -+# define _L 0x02 /* lower */ -+# define _D 0x04 /* digit */ -+# define _C 0x08 /* cntrl */ -+# define _P 0x10 /* punct */ -+# define _S 0x20 /* white space (space/lf/tab) */ -+# define _X 0x40 /* hex digit */ -+# define _SP 0x80 /* hard space (0x20) */ -+ -+extern unsigned char _ctype[]; -+ -+# define __ismask(x) (_ctype[(int)(unsigned char)(x)]) -+# define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0) -+ -+# define strchr(s, c) index(s, c) -+ -+# define memmove(dst, src, len) bcopy((src), (dst), (len)) -+ -+typedef struct ifnet net_device; -+ -+#else /* not CLICK_LINUXMODULE || CLICK_BSDMODULE */ -+ -+// provide a definition for net_device -+typedef struct device net_device; -+ -+#endif /* CLICK_LINUXMODULE */ -+ -+ -+// COMPILE-TIME ASSERTION CHECKING -+ -+#define static_assert(c) switch (c) case 0: case (c): -+ -+ -+// TIMEVALS AND JIFFIES -+ -+#if CLICK_LINUXMODULE -+# define click_gettimeofday(tvp) (do_gettimeofday(tvp)) -+# define click_jiffies() ((unsigned)jiffies) -+# define CLICK_HZ HZ -+#elif CLICK_BSDMODULE -+# define click_gettimeofday(tvp) (getmicrotime(tvp)) -+# define click_jiffies() ((unsigned)ticks) -+# define CLICK_HZ hz -+#else -+#ifndef CLICK_NS -+# define click_gettimeofday(tvp) (gettimeofday(tvp, (struct timezone *)0)) -+#else -+# define click_gettimeofday(tvp) (simclick_gettimeofday(tvp)) -+#endif -+CLICK_DECLS -+unsigned click_jiffies(); -+CLICK_ENDDECLS -+# define CLICK_HZ 100 -+#endif -+ -+ -+// TIMEVAL OPERATIONS -+ -+#ifndef timercmp -+// Convenience macros for operations on timevals. -+// NOTE: 'timercmp' does not work for >= or <=. -+# define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) -+# define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0) -+# define timercmp(a, b, CMP) \ -+ (((a)->tv_sec == (b)->tv_sec) ? \ -+ ((a)->tv_usec CMP (b)->tv_usec) : \ -+ ((a)->tv_sec CMP (b)->tv_sec)) -+#endif -+#ifndef timeradd -+# define timeradd(a, b, result) \ -+ do { \ -+ (result)->tv_sec = (a)->tv_sec + (b)->tv_sec; \ -+ (result)->tv_usec = (a)->tv_usec + (b)->tv_usec; \ -+ if ((result)->tv_usec >= 1000000) \ -+ { \ -+ ++(result)->tv_sec; \ -+ (result)->tv_usec -= 1000000; \ -+ } \ -+ } while (0) -+#endif -+#ifndef timersub -+# define timersub(a, b, result) \ -+ do { \ -+ (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \ -+ (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \ -+ if ((result)->tv_usec < 0) { \ -+ --(result)->tv_sec; \ -+ (result)->tv_usec += 1000000; \ -+ } \ -+ } while (0) -+#endif -+ -+#ifndef CLICK_TIMEVAL_OPERATORS -+ -+inline struct timeval -+make_timeval(int sec, int usec) -+{ -+ struct timeval tv; -+ tv.tv_sec = sec; -+ tv.tv_usec = usec; -+ return tv; -+} -+ -+inline bool -+operator==(const struct timeval &a, const struct timeval &b) -+{ -+ return a.tv_sec == b.tv_sec && a.tv_usec == b.tv_usec; -+} -+ -+inline bool -+operator!=(const struct timeval &a, const struct timeval &b) -+{ -+ return a.tv_sec != b.tv_sec || a.tv_usec != b.tv_usec; -+} -+ -+inline bool -+operator<(const struct timeval &a, const struct timeval &b) -+{ -+ return a.tv_sec < b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec < b.tv_usec); -+} -+ -+inline bool -+operator<=(const struct timeval &a, const struct timeval &b) -+{ -+ return a.tv_sec < b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec <= b.tv_usec); -+} -+ -+inline bool -+operator>=(const struct timeval &a, const struct timeval &b) -+{ -+ return a.tv_sec > b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec >= b.tv_usec); -+} -+ -+inline bool -+operator>(const struct timeval &a, const struct timeval &b) -+{ -+ return a.tv_sec > b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec > b.tv_usec); -+} -+ -+inline struct timeval & -+operator+=(struct timeval &a, const struct timeval &b) -+{ -+ a.tv_sec += b.tv_sec; -+ a.tv_usec += b.tv_usec; -+ if (a.tv_usec >= 1000000) { -+ a.tv_sec++; -+ a.tv_usec -= 1000000; -+ } -+ return a; -+} -+ -+inline struct timeval & -+operator-=(struct timeval &a, const struct timeval &b) -+{ -+ a.tv_sec -= b.tv_sec; -+ a.tv_usec -= b.tv_usec; -+ if (a.tv_usec < 0) { -+ a.tv_sec--; -+ a.tv_usec += 1000000; -+ } -+ return a; -+} -+ -+inline struct timeval -+operator+(struct timeval a, const struct timeval &b) -+{ -+ a += b; -+ return a; -+} -+ -+inline struct timeval -+operator-(struct timeval a, const struct timeval &b) -+{ -+ a -= b; -+ return a; -+} -+ -+#endif -+ -+CLICK_DECLS -+class StringAccum; -+StringAccum &operator<<(StringAccum &, const struct timeval &); -+CLICK_ENDDECLS -+ -+ -+// BYTE ORDER -+ -+#if CLICK_BYTE_ORDER == CLICK_LITTLE_ENDIAN -+# define le16_to_cpu(x) (x) -+# define cpu_to_le16(x) (x) -+# define le32_to_cpu(x) (x) -+# define cpu_to_le32(x) (x) -+#elif CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN && defined(__APPLE__) -+# include -+# define le16_to_cpu(x) NXSwapShort((x)) -+# define cpu_to_le16(x) NXSwapShort((x)) -+# define le32_to_cpu(x) NXSwapInt((x)) -+# define cpu_to_le32(x) NXSwapInt((x)) -+#elif CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN && HAVE_BYTESWAP_H -+# include -+# define le16_to_cpu(x) bswap_16((x)) -+# define cpu_to_le16(x) bswap_16((x)) -+# define le32_to_cpu(x) bswap_32((x)) -+# define cpu_to_le32(x) bswap_32((x)) -+#else -+/* leave them undefined */ -+#endif -+ -+ -+// CYCLE COUNTS -+ -+CLICK_DECLS -+ -+#if HAVE_INT64_TYPES -+typedef uint64_t click_cycles_t; -+#else -+typedef uint32_t click_cycles_t; -+#endif -+ -+inline click_cycles_t -+click_get_cycles() -+{ -+#if CLICK_LINUXMODULE && HAVE_INT64_TYPES && __i386__ -+ uint64_t x; -+ __asm__ __volatile__ ("rdtsc" : "=A" (x)); -+ return x; -+#elif CLICK_LINUXMODULE && HAVE_INT64_TYPES && __x86_64__ -+ uint32_t xlo, xhi; -+ __asm__ __volatile__ ("rdtsc" : "=a" (xlo), "=d" (xhi)); -+ return xlo | (((uint64_t) xhi) << 32); -+#elif CLICK_LINUXMODULE && __i386__ -+ uint32_t xlo, xhi; -+ __asm__ __volatile__ ("rdtsc" : "=a" (xlo), "=d" (xhi)); -+ return xhi ? 0xFFFFFFFF : xlo; -+#elif CLICK_BSDMODULE -+ return rdtsc(); -+#else -+ // add other architectures here -+ return 0; -+#endif -+} -+ -+CLICK_ENDDECLS -+ -+#endif -diff -Nurb click-1.6.0/inst/include/click/handlercall.hh click-1.6.0-27/inst/include/click/handlercall.hh ---- click-1.6.0/inst/include/click/handlercall.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/handlercall.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,527 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/handlercall.cc" -*- -+#ifndef CLICK_HANDLERCALL_HH -+#define CLICK_HANDLERCALL_HH -+#include -+CLICK_DECLS -+ -+/** @brief Convenience class for calling handlers. -+ * -+ * The HandlerCall class simplifies the process of calling Click handlers. -+ * (The lower-level interface is the Handler class.) HandlerCall is used in -+ * two ways: (1) to call handlers immediately via static member functions, -+ * and (2) to set up future handler calls via HandlerCall objects. The -+ * immediate handler call functions take handler names as arguments and -+ * perform all necessary error checks before calling handlers, if any. A -+ * HandlerCall object encapsulates a handler reference (possibly including -+ * parameters), again automating all necessary error checks. -+ * -+ *

Immediate Handler Calls

-+ * -+ * This example code shows how to use the HandlerCall functions for calling -+ * handlers immediately. -+ * -+ * @code -+ * class YourElement { ... -+ * Element *_other; -+ * } -+ * -+ * void YourElement::function() { -+ * // Call _other's "config" read handler. -+ * String result = HandlerCall::call_read(_other, "config"); -+ * -+ * // The same, providing an error handler to print errors. -+ * ErrorHandler *errh = ErrorHandler::default_handler(); -+ * result = HandlerCall::call_read(_other, "config", errh); -+ * // (Each function takes an optional last argument of "errh".) -+ * -+ * // Call the "foo.config" read handler. Search for element "foo" in -+ * // the current compound element context. -+ * result = HandlerCall::call_read("foo.config", this); -+ * -+ * // Call the global "config" read handler for the current router. -+ * result = HandlerCall::call_read("config", this); -+ * -+ * // Call _other's "stop" write handler with empty value. -+ * int success = HandlerCall::call_write(_other, "stop"); -+ * -+ * // Call _other's "config" write handler with value "blah". -+ * success = HandlerCall::call_write(_other, "config", "blah"); -+ * -+ * // Call the "foo.config" write handler with value "blah". -+ * success = HandlerCall::call_write("foo.config blah", this); -+ * // Or, alternately: -+ * success = HandlerCall::call_write("foo.config", "blah", this); -+ * } -+ * @endcode -+ * -+ *

HandlerCall Objects

-+ * -+ * This example code shows how to use the HandlerCall objects to call -+ * handlers with simplified error checking. -+ * -+ * @code -+ * class YourElement { ... -+ * HandlerCall _read_call; -+ * HandlerCall _write_call; -+ * } -+ * -+ * YourElement::YourElement() -+ * : _read_call(), _write_call() { -+ * } -+ * -+ * int YourElement::configure(Vector &conf, ErrorHandler *errh) { -+ * return cp_va_parse(conf, this, errh, -+ * cpOptional, -+ * cpHandlerCallRead, "read call", &_read_call, -+ * cpHandlerCallWrite, "write call", &_write_call, -+ * cpEnd); -+ * } -+ * -+ * int YourElement::initialize(ErrorHandler *errh) { -+ * if ((_read_call && _read_call.initialize_read(this, errh) < 0) -+ * || (_write_call && _write_call.initialize_write(this, errh) < 0)) -+ * return -1; -+ * return 0; -+ * } -+ * -+ * void YourElement::function() { -+ * // call _read_call, print result -+ * if (_read_call) -+ * click_chatter("%s", _read_call.call_read()); -+ * -+ * // call _write_call with error handler -+ * if (_write_call) -+ * _write_call.call_write(ErrorHandler::default_handler()); -+ * } -+ * @endcode -+ * -+ * If usually your element's handler calls aren't used, you can save a small -+ * amount of space by using pointers to HandlerCall objects, as in this -+ * example. The cpHandlerCallPtrRead and cpHandlerCallPtrWrite types allow -+ * the _read_call and _write_call members to start out as null pointers. -+ * -+ * @code -+ * class YourElement { ... -+ * HandlerCall *_read_call; -+ * HandlerCall *_write_call; -+ * } -+ * -+ * YourElement::YourElement() -+ * : _read_call(0), _write_call(0) { -+ * } -+ * -+ * int YourElement::configure(Vector &conf, ErrorHandler *errh) { -+ * return cp_va_parse(conf, this, errh, -+ * cpOptional, -+ * cpHandlerCallPtrRead, "read call", &_read_call, -+ * cpHandlerCallPtrWrite, "write call", &_write_call, -+ * cpEnd); -+ * } -+ * -+ * int YourElement::initialize(ErrorHandler *errh) { -+ * if ((_read_call && _read_call->initialize_read(this, errh) < 0) -+ * || (_write_call && _write_call->initialize_write(this, errh) < 0)) -+ * return -1; -+ * return 0; -+ * } -+ * -+ * void YourElement::cleanup(CleanupStage) { -+ * delete _read_call; -+ * delete _write_call; -+ * } -+ * -+ * void YourElement::function() { -+ * // call _read_call, print result -+ * if (_read_call) -+ * click_chatter("%s", _read_call->call_read()); -+ * -+ * // call _write_call with error handler -+ * if (_write_call) -+ * _write_call->call_write(ErrorHandler::default_handler()); -+ * } -+ * @endcode -+ */ -+class HandlerCall { public: -+ -+ /** @name Immediate Handler Calls */ -+ //@{ -+ static String call_read(Element *e, const String &hname, -+ ErrorHandler *errh = 0); -+ static String call_read(const String &hdesc, Element *context, -+ ErrorHandler *errh = 0); -+ static int call_write(Element *e, const String &hname, -+ ErrorHandler *errh = 0); -+ static int call_write(Element *e, const String &hname, const String &value, -+ ErrorHandler *errh = 0); -+ static int call_write(const String &hdesc, -+ Element *context, ErrorHandler *errh = 0); -+ static int call_write(const String &hdesc, const String &value, -+ Element *context, ErrorHandler *errh = 0); -+ //@} -+ -+ -+ -+ /** @brief Construct an empty HandlerCall. -+ * -+ * Any attempt to read, write, or initialize the HandlerCall will -+ * fail. */ -+ HandlerCall() -+ : _e(0), _h(Handler::blank_handler()) { -+ } -+ -+ /** @brief Construct a HandlerCall described by @a hdesc. -+ * @param hdesc handler description "[ename.]hname[ value]" -+ * -+ * Although the resulting HandlerCall isn't empty, it must be initialized -+ * before it can be used. It returns false for initialized(). The -+ * handler description is not checked for syntax errors, though; -+ * initialize() does that. */ -+ HandlerCall(const String &hdesc) -+ : _e(reinterpret_cast(4)), _h(Handler::blank_handler()), -+ _value(hdesc) { -+ } -+ -+ -+ enum Flags { -+ OP_READ = Handler::OP_READ, OP_WRITE = Handler::OP_WRITE, -+ PREINITIALIZE = 4 -+ }; -+ -+ /** @brief Initialize the HandlerCall. -+ * @param flags zero or more of OP_READ, OP_WRITE, PREINITIALIZE -+ * @param context optional element context -+ * @param errh optional error handler -+ * @return 0 on success, negative on failure -+ * -+ * Initializes the HandlerCall object. The handler description supplied -+ * to the constructor is parsed and checked for syntax errors. Any -+ * element reference is looked up relative to @a context, if any. (For -+ * example, if @a hdesc was "x.config" and @a context's name is -+ * "aaa/bbb/ccc", this will search for elements named aaa/bbb/x, aaa/x, -+ * and finally x. If @a context is null, then the description must refer -+ * to a global handler.) If OP_READ is set in @a flags, then there -+ * must be a read handler named appropriately; if OP_WRITE is set, -+ * then there must be a write handler. -+ * -+ * Initialization fails if the handler description was bogus (for -+ * example, an empty string, or something like "*#!$&!(#&$."), if the -+ * named handler does not exist, if a read handler description has -+ * parameters but the read handler doesn't actually take parameters, and -+ * so forth. If @a errh is nonnull, errors are reported there. The -+ * HandlerCall becomes empty on failure: empty() will return true, and -+ * (bool) *this will return false. Future call_read() and call_write() -+ * attempts will correctly fail. -+ * -+ * If the PREINITIALIZE flag is set, the initialize function will check -+ * whether the router's handlers are ready (Router::handlers_ready()). -+ * If handlers are not ready, then initialize() will check for syntax -+ * errors, but not actually look up the handler (since we don't know yet -+ * whether or not the handler exists). Absent a syntax error, -+ * initialize() will return 0 for success even though the HandlerCall -+ * remains uninitialized. */ -+ int initialize(int flags, Element *context, ErrorHandler *errh = 0); -+ -+ /** @brief Initialize the HandlerCall for reading. -+ * @param context optional element context -+ * @param errh optional error handler -+ * -+ * Equivalent to @link initialize(int, Element*, ErrorHandler*) -+ * initialize@endlink(OP_READ, @a context, @a errh). */ -+ inline int initialize_read(Element *context, ErrorHandler *errh = 0); -+ -+ /** @brief Initialize the HandlerCall for writing. -+ * @param context optional element context -+ * @param errh optional error handler -+ * -+ * Equivalent to @link initialize(int, Element*, ErrorHandler*) -+ * initialize@endlink(OP_WRITE, @a context, @a errh). */ -+ inline int initialize_write(Element *context, ErrorHandler *errh = 0); -+ -+ -+ typedef bool (HandlerCall::*unspecified_bool_type)() const; -+ -+ /** @brief Test if HandlerCall is empty. -+ * @return True if HandlerCall is not empty, false otherwise. -+ * -+ * Valid HandlerCall objects have been successfully initialized. */ -+ operator unspecified_bool_type() const { -+ return _h != Handler::blank_handler() || _e ? &HandlerCall::empty : 0; -+ } -+ -+ /** @brief Test if HandlerCall is empty. -+ * @return True if HandlerCall is empty, false otherwise. */ -+ bool empty() const { -+ return _h == Handler::blank_handler() && !_e; -+ } -+ -+ /** @brief Test if HandlerCall is initialized. -+ * @return True if HandlerCall is initialized, false otherwise. */ -+ bool initialized() const { -+ return _h != Handler::blank_handler(); -+ } -+ -+ -+ /** @brief Call a read handler. -+ * @param errh optional error handler -+ * @return Read handler result. -+ * -+ * Fails and returns the empty string if this HandlerCall is invalid or -+ * not a read handler. If @a errh is nonnull, then any errors are -+ * reported there, whether from HandlerCall or the handler itself. */ -+ inline String call_read(ErrorHandler *errh = 0) const; -+ -+ /** @brief Call a write handler. -+ * @param errh optional error handler -+ * @return Write handler result. -+ * -+ * Fails and returns -EINVAL if this HandlerCall is invalid or not a -+ * write handler. If @a errh is nonnull, then any errors are reported -+ * there, whether from HandlerCall or the handler itself. */ -+ inline int call_write(ErrorHandler *errh = 0) const; -+ -+ /** @brief Call a write handler with an additional value. -+ * @param value_ext write value extension -+ * @param errh optional error handler -+ * @return Write handler result. -+ * -+ * The @a value_ext is appended to the write value before the handler is -+ * called. (For example, consider a handler with description "a.set -+ * value". call_write("foo") will call "a.set value foo".) Fails and -+ * returns -EINVAL if this HandlerCall is invalid or not a write handler. -+ * If @a errh is nonnull, then any errors are reported there, whether -+ * from HandlerCall or the handler itself. */ -+ inline int call_write(const String &value_ext, ErrorHandler *errh = 0) const; -+ -+ -+ /** @brief Create and initialize a HandlerCall from @a hdesc. -+ * @param hcall stores the HandlerCall result -+ * @param hdesc handler description "[ename.]hname[ value]" -+ * @param flags initialization flags (OP_READ, OP_WRITE, PREINITIALIZE) -+ * @param context optional element context -+ * @param errh optional error handler -+ * @return 0 on success, -EINVAL on failure -+ * -+ * Creates a HandlerCall and initializes it. Behaves somewhat like: -+ * -+ * @code -+ * hcall = new HandlerCall(hdesc); -+ * return hcall->initialize(flags, context, errh); -+ * @endcode -+ * -+ * However, (1) if initialization fails, then @a hcall is untouched; and -+ * (2) if initialization succeeds and @a hcall is not null, then the -+ * existing HandlerCall is assigned so that it corresponds to the new one -+ * (no new memory allocations). -+ * -+ * If @a errh is nonnull, then any errors are reported there. */ -+ static int reset(HandlerCall *&hcall, const String &hdesc, int flags, -+ Element *context, ErrorHandler *errh = 0); -+ -+ /** @brief Create and initialize a HandlerCall on element @a e. -+ * @param hcall stores the HandlerCall result -+ * @param e relevant element, if any -+ * @param hname handler name -+ * @param value handler value -+ * @param flags initialization flags (OP_READ, OP_WRITE, PREINITIALIZE) -+ * @param errh optional error handler -+ * @return 0 on success, -EINVAL on failure -+ * -+ * Creates a HandlerCall and initializes it. Behaves analogously to -+ * reset(HandlerCall*&, const String&, int, Element*, ErrorHandler*). */ -+ static int reset(HandlerCall *&hcall, -+ Element *e, const String &hname, const String &value, -+ int flags, ErrorHandler *errh = 0); -+ -+ -+ /** @brief Create and initialize a read HandlerCall from @a hdesc. -+ * @param hcall stores the HandlerCall result -+ * @param hdesc handler description "[ename.]hdesc[ param]" -+ * @param context optional element context -+ * @param errh optional error handler -+ * @return 0 on success, -EINVAL on failure -+ * -+ * Equivalent to -+ * @link reset(HandlerCall*&, const String&, int, Element*, ErrorHandler*) reset@endlink(@a hcall, @a hdesc, OP_READ, @a context, @a errh). */ -+ static inline int reset_read(HandlerCall *&hcall, const String &hdesc, -+ Element *context, ErrorHandler *errh = 0); -+ -+ /** @brief Create and initialize a read HandlerCall from @a hdesc. -+ * @param hcall stores the HandlerCall result -+ * @param e relevant element, if any -+ * @param hname handler name -+ * @param errh optional error handler -+ * @return 0 on success, -EINVAL on failure -+ * -+ * Equivalent to -+ * @link reset(HandlerCall*&, Element*, const String&, const String&, int, ErrorHandler*) reset@endlink(@a hcall, @a e, @a hname, String(), OP_READ, @a context, @a errh). */ -+ static inline int reset_read(HandlerCall *&hcall, -+ Element *e, const String &hname, -+ ErrorHandler *errh = 0); -+ -+ /** @brief Create and initialize a write HandlerCall from @a hdesc. -+ * @param hcall stores the HandlerCall result -+ * @param hdesc handler description "[ename.]hdesc[ value]" -+ * @param context optional element context -+ * @param errh optional error handler -+ * @return 0 on success, -EINVAL on failure -+ * -+ * Equivalent to -+ * @link reset(HandlerCall*&, const String&, int, Element*, ErrorHandler*) reset@endlink(@a hcall, @a hdesc, OP_WRITE, @a context, @a errh). */ -+ static inline int reset_write(HandlerCall *&hcall, const String &hdesc, -+ Element *context, ErrorHandler *errh = 0); -+ -+ /** @brief Create and initialize a read HandlerCall from @a hdesc. -+ * @param hcall stores the HandlerCall result -+ * @param e relevant element, if any -+ * @param hname handler name -+ * @param value write handler value -+ * @param errh optional error handler -+ * @return 0 on success, -EINVAL on failure -+ * -+ * Equivalent to -+ * @link reset(HandlerCall*&, Element*, const String&, const String&, int, ErrorHandler*) reset@endlink(@a hcall, @a e, @a hname, @ value, OP_WRITE, @a context, @a errh). */ -+ static inline int reset_write(HandlerCall *&hcall, -+ Element *e, const String &hname, -+ const String &value = String(), -+ ErrorHandler *errh = 0); -+ -+ -+ /** @brief Return the Element corresponding to this HandlerCall. -+ * -+ * Returns null if invalid. A global handler may return some -+ * Router::root_element() or null. */ -+ Element *element() const { -+ return _e; -+ } -+ -+ /** @brief Return the Handler corresponding to this HandlerCall. -+ * -+ * Returns Handler::blank_handler() if invalid. */ -+ const Handler *handler() const { -+ return _h; -+ } -+ -+ /** @brief Return the write handler value and/or read handler parameters. -+ * -+ * Returns the empty string if invalid. */ -+ const String &value() const { -+ return initialized() ? _value : String::empty_string(); -+ } -+ -+ /** @brief Sets the write handler value and/or read handler parameters. -+ * @param value new value and/or parameters -+ * -+ * Does nothing if invalid. */ -+ void set_value(const String &value) { -+ if (initialized()) -+ _value = value; -+ } -+ -+ /** @brief Return a String that will parse into an equivalent HandlerCall. -+ * -+ * Will work even if the HandlerCall has not been initialized. */ -+ String unparse() const; -+ -+ /** @brief Make this HandlerCall empty. -+ * -+ * Subsequent attempts to read, write, or initialize the HandlerCall will -+ * fail. */ -+ void clear() { -+ _e = 0; -+ _h = Handler::blank_handler(); -+ _value = String(); -+ } -+ -+ -+ /** @cond never */ -+ enum { CHECK_READ = OP_READ, CHECK_WRITE = OP_WRITE }; -+ /** @endcond never */ -+ -+ private: -+ -+ Element *_e; -+ const Handler *_h; -+ String _value; -+ -+ int parse(int flags, Element*, ErrorHandler*); -+ int assign(Element*, const String&, const String&, int flags, ErrorHandler*); -+ -+}; -+ -+inline int -+HandlerCall::reset_read(HandlerCall*& hcall, const String& hdesc, Element* context, ErrorHandler* errh) -+{ -+ return reset(hcall, hdesc, OP_READ, context, errh); -+} -+ -+inline int -+HandlerCall::reset_write(HandlerCall*& hcall, const String& hdesc, Element* context, ErrorHandler* errh) -+{ -+ return reset(hcall, hdesc, OP_WRITE, context, errh); -+} -+ -+inline int -+HandlerCall::reset_read(HandlerCall*& hcall, Element* e, const String& hname, ErrorHandler* errh) -+{ -+ return reset(hcall, e, hname, String(), OP_READ, errh); -+} -+ -+inline int -+HandlerCall::reset_write(HandlerCall*& hcall, Element* e, const String& hname, const String& value, ErrorHandler* errh) -+{ -+ return reset(hcall, e, hname, value, OP_WRITE, errh); -+} -+ -+inline int -+HandlerCall::initialize_read(Element* context, ErrorHandler* errh) -+{ -+ return initialize(OP_READ, context, errh); -+} -+ -+inline int -+HandlerCall::initialize_write(Element* context, ErrorHandler* errh) -+{ -+ return initialize(OP_WRITE, context, errh); -+} -+ -+inline String -+HandlerCall::call_read(ErrorHandler *errh) const -+{ -+ return _h->call_read(_e, _value, false, errh); -+} -+ -+inline int -+HandlerCall::call_write(ErrorHandler *errh) const -+{ -+ return _h->call_write(_value, _e, false, errh); -+} -+ -+inline int -+HandlerCall::call_write(const String &value_ext, ErrorHandler *errh) const -+{ -+ if (_value && value_ext) -+ return _h->call_write(_value + " " + value_ext, _e, false, errh); -+ else -+ return _h->call_write(_value ? _value : value_ext, _e, false, errh); -+} -+ -+/** @brief Call a write handler specified by element and handler name. -+ * @param e relevant element, if any -+ * @param hname handler name -+ * @param errh optional error handler -+ * @return handler result, or -EINVAL on error -+ * -+ * Searches for a write handler named @a hname on element @a e. If the -+ * handler exists, calls it (with empty write value) and returns the result. -+ * If @a errh is nonnull, then errors, such as a missing handler or a -+ * read-only handler, are reported there. If @a e is some router's @link -+ * Router::root_element() root element@endlink, calls the global write -+ * handler named @a hname on that router. */ -+inline int -+HandlerCall::call_write(Element *e, const String &hname, ErrorHandler *errh) -+{ -+ return call_write(e, hname, String(), errh); -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/hashcode.hh click-1.6.0-27/inst/include/click/hashcode.hh ---- click-1.6.0/inst/include/click/hashcode.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/hashcode.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,73 @@ -+#ifndef CLICK_HASHCODE_HH -+#define CLICK_HASHCODE_HH -+CLICK_DECLS -+ -+template -+inline size_t -+hashcode(const T &x) -+{ -+ return x.hashcode(); -+} -+ -+inline size_t hashcode(char c) { -+ return c; -+} -+ -+inline size_t hashcode(signed char c) { -+ return c; -+} -+ -+inline size_t hashcode(unsigned char c) { -+ return c; -+} -+ -+inline size_t hashcode(short s) { -+ return s; -+} -+ -+inline size_t hashcode(unsigned short us) { -+ return us; -+} -+ -+inline size_t hashcode(int i) { -+ return i; -+} -+ -+inline size_t hashcode(unsigned u) { -+ return u; -+} -+ -+inline size_t hashcode(long l) { -+ return l; -+} -+ -+inline size_t hashcode(unsigned long ul) { -+ return ul; -+} -+ -+#if HAVE_LONG_LONG -+inline size_t hashcode(long long ll) { -+ return ll; -+} -+ -+inline size_t hashcode(unsigned long long ull) { -+ return ull; -+} -+#endif -+ -+#if HAVE_INT64_TYPES && !HAVE_INT64_IS_LONG && !HAVE_INT64_IS_LONG_LONG -+inline size_t hashcode(int64_t q) { -+ return q; -+} -+ -+inline size_t hashcode(uint64_t uq) { -+ return uq; -+} -+#endif -+ -+inline size_t hashcode(void *v) { -+ return reinterpret_cast(v) >> 3; -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/hashmap.cc click-1.6.0-27/inst/include/click/hashmap.cc ---- click-1.6.0/inst/include/click/hashmap.cc 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/hashmap.cc 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,23 @@ -+/* -+ * hashmap.{cc,hh} -- a simple, stupid hash table template -+ * Eddie Kohler -+ * -+ * Copyright (c) 1999-2000 Massachusetts Institute of Technology -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, subject to the conditions -+ * listed in the Click LICENSE file. These conditions include: you must -+ * preserve this copyright notice, and you cannot mention the copyright -+ * holders in advertising related to the Software without their permission. -+ * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+ * notice is a summary of the Click LICENSE file; the license in that file is -+ * legally binding. -+ */ -+ -+#ifndef CLICK_HASHMAP_CC -+#define CLICK_HASHMAP_CC -+ -+#include -+ -+#endif -diff -Nurb click-1.6.0/inst/include/click/hashmap.hh click-1.6.0-27/inst/include/click/hashmap.hh ---- click-1.6.0/inst/include/click/hashmap.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/hashmap.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,7 @@ -+#ifndef CLICK_HASHMAP_HH -+#define CLICK_HASHMAP_HH -+ -+// This file is here for compatibility only. -+#include -+ -+#endif -diff -Nurb click-1.6.0/inst/include/click/ino.hh click-1.6.0-27/inst/include/click/ino.hh ---- click-1.6.0/inst/include/click/ino.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/ino.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,128 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/ino.cc" -*- -+#ifndef CLICK_INO_HH -+#define CLICK_INO_HH -+#include -+CLICK_DECLS -+class Router; -+ -+// NB: inode number 0 is reserved for the system. -+#define INO_DIRTYPE(ino) ((ino) >> 28) -+#define INO_ELEMENTNO(ino) ((int)((ino) & 0xFFFFU) - 1) -+#define INO_HANDLERNO(ino) ((((ino) & 0xFFFFU) ? 0 : Router::FIRST_GLOBAL_HANDLER) + (((ino) >> 16) & 0x7FFFU)) -+#define INO_DT_H 0x1U /* handlers only */ -+#define INO_DT_N 0x2U /* names */ -+#define INO_DT_HN 0x3U /* handlers + names */ -+#define INO_DT_GLOBAL 0x5U /* handlers + names + all #s */ -+#define INO_DT_HAS_H(ino) (INO_DIRTYPE((ino)) & INO_DT_H) -+#define INO_DT_HAS_N(ino) (INO_DIRTYPE((ino)) >= INO_DT_N) -+#define INO_DT_HAS_U(ino) (INO_DIRTYPE((ino)) == INO_DT_GLOBAL) -+ -+#define INO_MKHANDLER(e, hi) ((((hi) & 0x7FFFU) << 16) | (((e) + 1) & 0xFFFFU) | 0x80000000U) -+#define INO_MKHDIR(e) ((INO_DT_H << 28) | (((e) + 1) & 0xFFFFU)) -+#define INO_MKNDIR(e) ((INO_DT_N << 28) | (((e) + 1) & 0xFFFFU)) -+#define INO_MKHNDIR(e) ((INO_DT_HN << 28) | (((e) + 1) & 0xFFFFU)) -+#define INO_GLOBALDIR (INO_DT_GLOBAL << 28) -+#define INO_ISHANDLER(ino) (((ino) & 0x80000000U) != 0) -+ -+#define INO_DEBUG 0 -+ -+class ClickIno { public: -+ -+ void initialize(); -+ void cleanup(); -+ -+ uint32_t generation() const { return _generation; } -+ -+ // All operations should be called with a configuration lock held. -+ inline int prepare(Router*, uint32_t); -+ int nlink(ino_t); -+ ino_t lookup(ino_t dir, const String& component); -+ -+ // readdir doesn't handle '.' or '..'. -+ // It returns 0 for "filldir failed, have more", 1 for "out", <0 on error. -+ typedef bool (*filldir_t)(const char* name, int name_len, ino_t ino, int dirtype, uint32_t f_pos, void* thunk); -+ int readdir(ino_t dir, uint32_t& f_pos, filldir_t, void* thunk); -+ -+#if INO_DEBUG -+ String info() const; -+#endif -+ -+ struct Entry { -+ // Name of this entry. -+ String name; -+ -+ // Corresponding eindex plus 1. Might be larger than the number of -+ // elements in the router, because of fake directories added for -+ // compound "elements". -+ uint16_t elementno_plus1; -+ -+ // '_x[i].xindex' equals the index in _x of the entry for element -+ // number 'i - 1'. -+ uint16_t xindex; -+ -+ // Number of child entries. 'name' is guaranteed to be a prefix of -+ // every child entry. -+ uint16_t skip; -+ -+ // See enum below. X_FAKE is true on fake directories added for -+ // compound elements; X_HANDLER_CONFLICT is true if this element name -+ // conflicts with a handler; X_SUBDIR_CONFLICTS_CALCULATED is true if -+ // we've already checked for name conflicts on this element's -+ // children. -+ uint16_t flags; -+ }; -+ -+ private: -+ -+ enum { X_FAKE = 1, X_HANDLER_CONFLICT = 2, X_SUBDIR_CONFLICTS_CALCULATED = 4 }; -+ -+ Entry* _x; -+ int _nentries; -+ int _cap; -+ Router* _router; -+ uint32_t _generation; -+ -+ inline int xindex(int elementno) const; -+ inline int next_xindex(int elementno) const; -+ inline int elementno(int xindex) const; -+ -+ int name_search(const String& n, int first_xi, int last_xi, int name_offset) const; -+ -+ int grow(int min_size); -+ void calculate_handler_conflicts(int); -+ int true_prepare(Router*, uint32_t); -+ -+}; -+ -+ -+inline int -+ClickIno::prepare(Router* router, uint32_t generation) -+{ -+ if (generation != _generation) -+ return true_prepare(router, generation); -+ else -+ return 0; -+} -+ -+inline int -+ClickIno::xindex(int elementno) const -+{ -+ assert(elementno >= -1 && elementno < _nentries - 1); -+ return _x[elementno + 1].xindex; -+} -+ -+inline int -+ClickIno::next_xindex(int elementno) const -+{ -+ int xi = xindex(elementno); -+ return xi + _x[xi].skip + 1; -+} -+ -+inline int -+ClickIno::elementno(int xindex) const -+{ -+ return _x[xindex].elementno_plus1 - 1; -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/integers.hh click-1.6.0-27/inst/include/click/integers.hh ---- click-1.6.0/inst/include/click/integers.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/integers.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,93 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/integers.cc" -*- -+#ifndef CLICK_INTEGERS_HH -+#define CLICK_INTEGERS_HH -+#if !HAVE___BUILTIN_FFS && HAVE_FFS && HAVE_STRINGS_H -+# include -+#endif -+CLICK_DECLS -+ -+#ifdef HAVE_INT64_TYPES -+ -+inline uint64_t htonq(uint64_t x) { -+ uint32_t hi = x >> 32; -+ uint32_t lo = x & 0xffffffff; -+ return (((uint64_t)htonl(lo)) << 32) | htonl(hi); -+} -+ -+inline uint64_t ntohq(uint64_t x) { -+ uint32_t hi = x >> 32; -+ uint32_t lo = x & 0xffffffff; -+ return (((uint64_t)ntohl(lo)) << 32) | ntohl(hi); -+} -+ -+#endif -+ -+// MSB is bit #1 -+#if HAVE___BUILTIN_CLZ && !HAVE_NO_INTEGER_BUILTINS -+inline int ffs_msb(uint32_t x) { -+ return (x ? __builtin_clz(x) + 1 : 0); -+} -+#else -+# define NEED_FFS_MSB_UINT32_T 1 -+int ffs_msb(uint32_t); -+#endif -+ -+#ifdef HAVE_INT64_TYPES -+# if HAVE___BUILTIN_CLZLL && SIZEOF_LONG_LONG == 8 && !HAVE_NO_INTEGER_BUILTINS -+inline int ffs_msb(uint64_t x) { -+ return (x ? __builtin_clzll(x) + 1 : 0); -+} -+# elif HAVE___BUILTIN_CLZL && SIZEOF_LONG == 8 && !HAVE_NO_INTEGER_BUILTINS -+inline int ffs_msb(uint64_t x) { -+ return (x ? __builtin_clzl(x) + 1 : 0); -+} -+# elif HAVE___BUILTIN_CLZ && SIZEOF_INT == 8 && !HAVE_NO_INTEGER_BUILTINS -+inline int ffs_msb(uint64_t x) { -+ return (x ? __builtin_clz(x) + 1 : 0); -+} -+# else -+# define NEED_FFS_MSB_UINT64_T 1 -+int ffs_msb(uint64_t); -+# endif -+#endif -+ -+// LSB is bit #1 -+#if HAVE___BUILTIN_FFS && !HAVE_NO_INTEGER_BUILTINS -+inline int ffs_lsb(uint32_t x) { -+ return __builtin_ffs(x); -+} -+#elif HAVE_FFS && !HAVE_NO_INTEGER_BUILTINS -+inline int ffs_lsb(uint32_t x) { -+ return ffs(x); -+} -+#else -+# define NEED_FFS_LSB_UINT32_T 1 -+int ffs_lsb(uint32_t); -+#endif -+ -+#ifdef HAVE_INT64_TYPES -+# if HAVE___BUILTIN_FFSLL && SIZEOF_LONG_LONG == 8 && !HAVE_NO_INTEGER_BUILTINS -+inline int ffs_lsb(uint64_t x) { -+ return __builtin_ffsll(x); -+} -+# elif HAVE___BUILTIN_FFSL && SIZEOF_LONG == 8 && !HAVE_NO_INTEGER_BUILTINS -+inline int ffs_lsb(uint64_t x) { -+ return __builtin_ffsl(x); -+} -+# elif HAVE___BUILTIN_FFS && SIZEOF_INT == 8 && !HAVE_NO_INTEGER_BUILTINS -+inline int ffs_lsb(uint64_t x) { -+ return __builtin_ffs(x); -+} -+# else -+# define NEED_FFS_LSB_UINT64_T 1 -+int ffs_lsb(uint64_t); -+# endif -+#endif -+ -+uint32_t int_sqrt(uint32_t); -+#if HAVE_INT64_TYPES && !CLICK_LINUXMODULE -+uint64_t int_sqrt(uint64_t); -+#endif -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/ip6address.hh click-1.6.0-27/inst/include/click/ip6address.hh ---- click-1.6.0/inst/include/click/ip6address.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/ip6address.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,191 @@ -+// -*- related-file-name: "../../lib/ip6address.cc" -*- -+#ifndef CLICK_IP6ADDRESS_HH -+#define CLICK_IP6ADDRESS_HH -+#include -+#include -+#include -+#include -+CLICK_DECLS -+ -+class IP6Address { public: -+ -+ IP6Address(); -+ explicit IP6Address(const unsigned char *); -+ explicit IP6Address(IPAddress ip); -+ explicit IP6Address(const String &); // "fec0:0:0:1::1" -+ explicit IP6Address(const click_in6_addr &a) : _addr(a) { } -+ static IP6Address make_prefix(int); -+ -+ typedef size_t (IP6Address::*unspecified_bool_type)() const; -+ operator unspecified_bool_type() const; -+ -+ operator const click_in6_addr &() const { return _addr; } -+ operator click_in6_addr &() { return _addr; } -+ const click_in6_addr &in6_addr() const { return _addr; } -+ click_in6_addr &in6_addr() { return _addr; } -+ -+ unsigned char *data() { return &_addr.s6_addr[0]; } -+ const unsigned char *data() const { return &_addr.s6_addr[0]; } -+ unsigned *data32() { return &_addr.s6_addr32[0]; } -+ const unsigned *data32() const { return &_addr.s6_addr32[0]; } -+ -+ inline size_t hashcode() const; -+ -+ int mask_to_prefix_len() const; -+ bool matches_prefix(const IP6Address &addr, const IP6Address &mask) const; -+ bool mask_as_specific(const IP6Address &) const; -+ -+ bool ether_address(EtherAddress &) const; -+ bool ip4_address(IPAddress &) const; -+ -+ // bool operator==(const IP6Address &, const IP6Address &); -+ // bool operator!=(const IP6Address &, const IP6Address &); -+ -+ // IP6Address operator&(const IP6Address &, const IP6Address &); -+ // IP6Address operator|(const IP6Address &, const IP6Address &); -+ // IP6Address operator~(const IP6Address &); -+ -+ IP6Address &operator&=(const IP6Address &); -+ IP6Address &operator&=(const click_in6_addr &); -+ IP6Address &operator|=(const IP6Address &); -+ IP6Address &operator|=(const click_in6_addr &); -+ -+ IP6Address &operator=(const click_in6_addr &); -+ -+ String unparse() const; -+ String unparse_expanded() const; -+ -+ operator String() const { return unparse(); } -+ String s() const { return unparse(); } -+ -+ private: -+ -+ click_in6_addr _addr; -+ -+}; -+ -+inline -+IP6Address::operator unspecified_bool_type() const -+{ -+ const unsigned *ai = data32(); -+ return ai[0] || ai[1] || ai[2] || ai[3] ? &IP6Address::hashcode : 0; -+} -+ -+inline bool -+operator==(const IP6Address &a, const IP6Address &b) -+{ -+ const unsigned *ai = a.data32(), *bi = b.data32(); -+ return ai[0] == bi[0] && ai[1] == bi[1] && ai[2] == bi[2] && ai[3] == bi[3]; -+} -+ -+inline bool -+operator!=(const IP6Address &a, const IP6Address &b) -+{ -+ const unsigned *ai = a.data32(), *bi = b.data32(); -+ return ai[0] != bi[0] || ai[1] != bi[1] || ai[2] != bi[2] || ai[3] != bi[3]; -+} -+ -+class StringAccum; -+StringAccum &operator<<(StringAccum &, const IP6Address &); -+ -+inline bool -+IP6Address::matches_prefix(const IP6Address &addr, const IP6Address &mask) const -+{ -+ const unsigned *xi = data32(), *ai = addr.data32(), *mi = mask.data32(); -+ return ((xi[0] ^ ai[0]) & mi[0]) == 0 -+ && ((xi[1] ^ ai[1]) & mi[1]) == 0 -+ && ((xi[2] ^ ai[2]) & mi[2]) == 0 -+ && ((xi[3] ^ ai[3]) & mi[3]) == 0; -+} -+ -+inline bool -+IP6Address::mask_as_specific(const IP6Address &mask) const -+{ -+ const unsigned *xi = data32(), *mi = mask.data32(); -+ return ((xi[0] & mi[0]) == mi[0] && (xi[1] & mi[1]) == mi[1] -+ && (xi[2] & mi[2]) == mi[2] && (xi[3] & mi[3]) == mi[3]); -+} -+ -+inline IP6Address & -+IP6Address::operator&=(const IP6Address &b) -+{ -+ unsigned *ai = data32(); -+ const unsigned *bi = b.data32(); -+ ai[0] &= bi[0]; ai[1] &= bi[1]; ai[2] &= bi[2]; ai[3] &= bi[3]; -+ return *this; -+} -+ -+inline IP6Address & -+IP6Address::operator&=(const click_in6_addr &b) -+{ -+ unsigned *ai = data32(); -+ const unsigned *bi = b.s6_addr32; -+ ai[0] &= bi[0]; ai[1] &= bi[1]; ai[2] &= bi[2]; ai[3] &= bi[3]; -+ return *this; -+} -+ -+inline IP6Address & -+IP6Address::operator|=(const IP6Address &b) -+{ -+ unsigned *ai = data32(); -+ const unsigned *bi = b.data32(); -+ ai[0] |= bi[0]; ai[1] |= bi[1]; ai[2] |= bi[2]; ai[3] |= bi[3]; -+ return *this; -+} -+ -+inline IP6Address & -+IP6Address::operator|=(const click_in6_addr &b) -+{ -+ unsigned *ai = data32(); -+ const unsigned *bi = b.s6_addr32; -+ ai[0] |= bi[0]; ai[1] |= bi[1]; ai[2] |= bi[2]; ai[3] |= bi[3]; -+ return *this; -+} -+ -+inline IP6Address -+operator&(const IP6Address &a, const IP6Address &b) -+{ -+ const unsigned *ai = a.data32(), *bi = b.data32(); -+ IP6Address result; -+ unsigned *ri = result.data32(); -+ ri[0] = ai[0] & bi[0]; ri[1] = ai[1] & bi[1]; -+ ri[2] = ai[2] & bi[2]; ri[3] = ai[3] & bi[3]; -+ return result; -+} -+ -+inline IP6Address -+operator|(const IP6Address &a, const IP6Address &b) -+{ -+ const unsigned *ai = a.data32(), *bi = b.data32(); -+ IP6Address result; -+ unsigned *ri = result.data32(); -+ ri[0] = ai[0] | bi[0]; ri[1] = ai[1] | bi[1]; -+ ri[2] = ai[2] | bi[2]; ri[3] = ai[3] | bi[3]; -+ return result; -+} -+ -+inline IP6Address -+operator~(const IP6Address &a) -+{ -+ const unsigned *ai = a.data32(); -+ IP6Address result; -+ unsigned *ri = result.data32(); -+ ri[0] = ~ai[0]; ri[1] = ~ai[1]; ri[2] = ~ai[2]; ri[3] = ~ai[3]; -+ return result; -+} -+ -+inline IP6Address & -+IP6Address::operator=(const click_in6_addr &a) -+{ -+ _addr = a; -+ return *this; -+} -+ -+inline size_t -+IP6Address::hashcode() const -+{ -+ return data32()[3]; -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/ip6flowid.hh click-1.6.0-27/inst/include/click/ip6flowid.hh ---- click-1.6.0/inst/include/click/ip6flowid.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/ip6flowid.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,105 @@ -+// -*- c-basic-offset: 2; related-file-name: "../../lib/ip6flowid.cc" -*- -+#ifndef CLICK_IP6FLOWID_HH -+#define CLICK_IP6FLOWID_HH -+#include -+#include -+CLICK_DECLS -+class Packet; -+ -+class IP6FlowID { public: -+ -+ inline IP6FlowID(); -+ inline IP6FlowID(const IP6Address &, uint16_t, const IP6Address &, uint16_t); -+ explicit IP6FlowID(Packet *); -+ -+ typedef const IP6Address &(IP6FlowID::*unspecified_bool_type)() const; -+ inline operator unspecified_bool_type() const; -+ -+ const IP6Address &saddr() const { return _saddr; } -+ const IP6Address &daddr() const { return _daddr; } -+ uint16_t sport() const { return _sport; } -+ uint16_t dport() const { return _dport; } -+ -+ void set_saddr(const IP6Address &a) { _saddr = a; } -+ void set_daddr(const IP6Address &a) { _daddr = a; } -+ void set_sport(uint16_t p) { _sport = p; } -+ void set_dport(uint16_t p) { _dport = p; } -+ -+ inline IP6FlowID rev() const; -+ -+ inline size_t hashcode() const; -+ -+ String unparse() const; -+ operator String() const { return unparse(); } -+ String s() const { return unparse(); } -+ -+ protected: -+ -+ // note: several functions depend on this field order! -+ IP6Address _saddr; -+ IP6Address _daddr; -+ uint16_t _sport; // network byte order -+ uint16_t _dport; // network byte order -+ -+}; -+ -+inline -+IP6FlowID::IP6FlowID() -+ : _saddr(), _daddr(), _sport(0), _dport(0) -+{ -+} -+ -+inline -+IP6FlowID::IP6FlowID(const IP6Address &saddr, uint16_t sport, -+ const IP6Address &daddr, uint16_t dport) -+ : _saddr(saddr), _daddr(daddr), _sport(sport), _dport(dport) -+{ -+} -+ -+inline -+IP6FlowID::operator unspecified_bool_type() const -+{ -+ return _saddr || _daddr ? &IP6FlowID::saddr : 0; -+} -+ -+inline IP6FlowID -+IP6FlowID::rev() const -+{ -+ return IP6FlowID(_daddr, _dport, _saddr, _sport); -+} -+ -+ -+#define ROT(v, r) ((v)<<(r) | ((unsigned)(v))>>(32-(r))) -+ -+#if 0 -+inline size_t -+IP6FlowID::hashcode() const -+{ -+ return (ROT(_saddr.hashcode(), 13) -+ ^ ROT(_daddr.hashcode(), 23) ^ (_sport | (_dport<<16))); -+} -+#endif -+ -+inline size_t IP6FlowID::hashcode() const -+{ -+ // more complicated hashcode, but causes less collision -+ uint16_t s = ntohs(sport()); -+ uint16_t d = ntohs(dport()); -+ size_t sx = CLICK_NAME(hashcode)(saddr()); -+ size_t dx = CLICK_NAME(hashcode)(daddr()); -+ return (ROT(sx, s%16) -+ ^ ROT(dx, 31-d%16)) -+ ^ ((d << 16) | s); -+} -+ -+#undef ROT -+ -+inline bool -+operator==(const IP6FlowID &a, const IP6FlowID &b) -+{ -+ return a.dport() == b.dport() && a.sport() == b.sport() -+ && a.daddr() == b.daddr() && a.saddr() == b.saddr(); -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/ip6table.hh click-1.6.0-27/inst/include/click/ip6table.hh ---- click-1.6.0/inst/include/click/ip6table.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/ip6table.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,39 @@ -+// -*- c-basic-offset: 2; related-file-name: "../../lib/ip6table.cc" -*- -+#ifndef CLICK_IP6TABLE_HH -+#define CLICK_IP6TABLE_HH -+#include -+#include -+#include -+CLICK_DECLS -+ -+// IP6 routing table. -+// Lookup by longest prefix. -+// Each entry contains a gateway and an output index. -+ -+class IP6Table { public: -+ -+ IP6Table(); -+ ~IP6Table(); -+ -+ bool lookup(const IP6Address &dst, IP6Address &gw, int &index) const; -+ -+ void add(const IP6Address &dst, const IP6Address &mask, const IP6Address &gw, int index); -+ void del(const IP6Address &dst, const IP6Address &mask); -+ void clear() { _v.clear(); } -+ String dump(); -+ -+ private: -+ -+ struct Entry { -+ IP6Address _dst; -+ IP6Address _mask; -+ IP6Address _gw; -+ int _index; -+ int _valid; -+ }; -+ Vector _v; -+ -+}; -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/ipaddress.hh click-1.6.0-27/inst/include/click/ipaddress.hh ---- click-1.6.0/inst/include/click/ipaddress.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/ipaddress.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,342 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/ipaddress.cc" -*- -+#ifndef CLICK_IPADDRESS_HH -+#define CLICK_IPADDRESS_HH -+#include -+#include -+#include -+CLICK_DECLS -+class StringAccum; -+ -+class IPAddress { public: -+ -+ inline IPAddress(); -+ explicit IPAddress(const unsigned char*); -+ inline IPAddress(unsigned int); // network byte order IP address -+ inline explicit IPAddress(int); // network byte order IP address -+ inline explicit IPAddress(unsigned long); // network byte order IP address -+ inline explicit IPAddress(long); // network byte order IP address -+ explicit IPAddress(const String&); // "18.26.4.99" -+ inline IPAddress(struct in_addr); -+ static IPAddress make_prefix(int prefix_len); -+ -+ typedef uint32_t (IPAddress::*unspecified_bool_type)() const; -+ inline operator unspecified_bool_type() const; -+ -+ inline uint32_t addr() const; -+ inline operator uint32_t() const; -+ -+ inline struct in_addr in_addr() const; -+ inline operator struct in_addr() const; -+ -+ inline unsigned char* data(); -+ inline const unsigned char* data() const; -+ -+ inline size_t hashcode() const; -+ -+ int mask_to_prefix_len() const; -+ inline bool matches_prefix(IPAddress addr, IPAddress mask) const; -+ inline bool mask_as_specific(IPAddress mask) const; -+ inline bool mask_more_specific(IPAddress mask) const; -+ -+ // bool operator==(IPAddress, IPAddress); -+ // bool operator==(IPAddress, uint32_t); -+ // bool operator!=(IPAddress, IPAddress); -+ // bool operator!=(IPAddress, uint32_t); -+ -+ // IPAddress operator&(IPAddress, IPAddress); -+ // IPAddress operator|(IPAddress, IPAddress); -+ // IPAddress operator^(IPAddress, IPAddress); -+ // IPAddress operator~(IPAddress); -+ -+ inline IPAddress& operator&=(IPAddress); -+ inline IPAddress& operator|=(IPAddress); -+ inline IPAddress& operator^=(IPAddress); -+ -+ String unparse() const; -+ String unparse_mask() const; -+ String unparse_with_mask(IPAddress) const; -+ -+ inline String s() const; -+ inline operator String() const; -+ -+ private: -+ -+ uint32_t _addr; -+ -+}; -+ -+/** @brief Constructs an IPAddress equal to 0.0.0.0. */ -+inline -+IPAddress::IPAddress() -+ : _addr(0) -+{ -+} -+ -+/** @brief Constructs an IPAddress from an integer in network byte order. -+ @param a the address, in network byte order */ -+inline -+IPAddress::IPAddress(unsigned int a) -+ : _addr(a) -+{ -+} -+ -+/** @brief Constructs an IPAddress from an integer in network byte order. -+ @param a the address, in network byte order */ -+inline -+IPAddress::IPAddress(int a) -+ : _addr(a) -+{ -+} -+ -+/** @brief Constructs an IPAddress from an integer in network byte order. -+ @param a the address, in network byte order */ -+inline -+IPAddress::IPAddress(unsigned long a) -+ : _addr(a) -+{ -+} -+ -+/** @brief Constructs an IPAddress from an integer in network byte order. -+ @param a the address, in network byte order */ -+inline -+IPAddress::IPAddress(long a) -+ : _addr(a) -+{ -+} -+ -+/** @brief Constructs an IPAddress from a struct in_addr. -+ @param ina the address */ -+inline -+IPAddress::IPAddress(struct in_addr ina) -+ : _addr(ina.s_addr) -+{ -+} -+ -+/** @brief Returns true iff the address is not 0.0.0.0. */ -+inline -+IPAddress::operator unspecified_bool_type() const -+{ -+ return _addr != 0 ? &IPAddress::addr : 0; -+} -+ -+/** @brief Returns the address as a uint32_t in network byte order. */ -+inline -+IPAddress::operator uint32_t() const -+{ -+ return _addr; -+} -+ -+/** @brief Returns the address as a uint32_t in network byte order. */ -+inline uint32_t -+IPAddress::addr() const -+{ -+ return _addr; -+} -+ -+/** @relates IPAddress -+ @brief Compares two IPAddress objects for equality. */ -+inline bool -+operator==(IPAddress a, IPAddress b) -+{ -+ return a.addr() == b.addr(); -+} -+ -+/** @relates IPAddress -+ @brief Compares an IPAddress with a network-byte-order address value for -+ equality. -+ @param a an address -+ @param b an address value in network byte order */ -+inline bool -+operator==(IPAddress a, uint32_t b) -+{ -+ return a.addr() == b; -+} -+ -+/** @relates IPAddress -+ @brief Compares two IPAddress objects for inequality. */ -+inline bool -+operator!=(IPAddress a, IPAddress b) -+{ -+ return a.addr() != b.addr(); -+} -+ -+/** @relates IPAddress -+ @brief Compares an IPAddress with a network-byte-order address value for -+ inequality. -+ @param a an address -+ @param b an address value in network byte order */ -+inline bool -+operator!=(IPAddress a, uint32_t b) -+{ -+ return a.addr() != b; -+} -+ -+/** @brief Returns a pointer to the address data. -+ -+ Since the address is stored in network byte order, data()[0] is the top 8 -+ bits of the address, data()[1] the next 8 bits, and so forth. */ -+inline const unsigned char* -+IPAddress::data() const -+{ -+ return reinterpret_cast(&_addr); -+} -+ -+/** @brief Returns a pointer to the address data. -+ -+ Since the address is stored in network byte order, data()[0] is the top 8 -+ bits of the address, data()[1] the next 8 bits, and so forth. */ -+inline unsigned char* -+IPAddress::data() -+{ -+ return reinterpret_cast(&_addr); -+} -+ -+/** @brief Returns a struct in_addr corresponding to the address. */ -+inline struct in_addr -+IPAddress::in_addr() const -+{ -+ struct in_addr ia; -+ ia.s_addr = _addr; -+ return ia; -+} -+ -+/** @brief Returns a struct in_addr corresponding to the address. */ -+inline -+IPAddress::operator struct in_addr() const -+{ -+ return in_addr(); -+} -+ -+StringAccum& operator<<(StringAccum&, IPAddress); -+ -+/** @brief Returns true iff this address matches the address prefix -+ @a addr/@a mask. -+ @param addr prefix address -+ @param mask prefix mask -+ -+ Equivalent to (@a addr & @a mask) == (*this & @a mask). The prefix address -+ @a addr may be nonzero outside the @a mask. */ -+inline bool -+IPAddress::matches_prefix(IPAddress addr, IPAddress mask) const -+{ -+ return ((this->addr() ^ addr.addr()) & mask.addr()) == 0; -+} -+ -+/** @brief Returns true iff this address, considered as a prefix mask, is at -+ least as specific as @a mask. -+ @param mask prefix mask -+ -+ Longer prefix masks are more specific than shorter ones. For example, -+ make_prefix(20).mask_as_specific(make_prefix(18)) is true, but -+ make_prefix(10).mask_as_specific(make_prefix(14)) is false. -+ -+ Equivalent to (*this & @a mask) == @a mask. */ -+inline bool -+IPAddress::mask_as_specific(IPAddress mask) const -+{ -+ return (addr() & mask.addr()) == mask.addr(); -+} -+ -+/** @brief Returns true iff this prefix mask is more specific than @a mask. -+ @param mask prefix mask -+ -+ Both this address and @a mask must be prefix masks -- i.e., -+ mask_to_prefix_len() returns 0-32. Returns true iff this address contains -+ a longer prefix than @a mask. For example, -+ make_prefix(20).mask_more_specific(make_prefix(18)) is true, but -+ make_prefix(20).mask_more_specific(make_prefix(20)) is false. */ -+inline bool -+IPAddress::mask_more_specific(IPAddress mask) const -+{ -+ return ((addr() << 1) & mask.addr()) == mask.addr(); -+} -+ -+/** @relates IPAddress -+ @brief Calculates the IPAddress representing the bitwise-and of @a a and -+ @a b. */ -+inline IPAddress -+operator&(IPAddress a, IPAddress b) -+{ -+ return IPAddress(a.addr() & b.addr()); -+} -+ -+/** @brief Assign this address to its bitwise-and with @a a. */ -+inline IPAddress& -+IPAddress::operator&=(IPAddress a) -+{ -+ _addr &= a._addr; -+ return *this; -+} -+ -+/** @relates IPAddress -+ @brief Calculates the IPAddress representing the bitwise-or of @a a and -+ @a b. */ -+inline IPAddress -+operator|(IPAddress a, IPAddress b) -+{ -+ return IPAddress(a.addr() | b.addr()); -+} -+ -+/** @brief Assign this address to its bitwise-or with @a a. */ -+inline IPAddress& -+IPAddress::operator|=(IPAddress a) -+{ -+ _addr |= a._addr; -+ return *this; -+} -+ -+/** @relates IPAddress -+ @brief Calculates the IPAddress representing the bitwise-xor of @a a and -+ @a b. */ -+inline IPAddress -+operator^(IPAddress a, IPAddress b) -+{ -+ return IPAddress(a.addr() ^ b.addr()); -+} -+ -+/** @brief Assign this address to its bitwise-xor with @a a. */ -+inline IPAddress& -+IPAddress::operator^=(IPAddress a) -+{ -+ _addr ^= a._addr; -+ return *this; -+} -+ -+/** @relates IPAddress -+ @brief Calculates the IPAddress representing the bitwise complement -+ of @a a. */ -+inline IPAddress -+operator~(IPAddress a) -+{ -+ return IPAddress(~a.addr()); -+} -+ -+/** @brief Hash function. -+ * @return The hash value of this IPAddress. -+ * -+ * Equal IPAddress objects always have equal hashcode() values. -+ */ -+inline size_t -+IPAddress::hashcode() const -+{ -+ return addr(); -+} -+ -+/** @brief Unparses this address into a dotted-quad format String. -+ @sa unparse */ -+inline -+IPAddress::operator String() const -+{ -+ return unparse(); -+} -+ -+/** @brief Unparses this address into a dotted-quad format String. -+ @sa unparse */ -+inline String -+IPAddress::s() const -+{ -+ return unparse(); -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/ipflowid.hh click-1.6.0-27/inst/include/click/ipflowid.hh ---- click-1.6.0/inst/include/click/ipflowid.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/ipflowid.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,106 @@ -+// -*- c-basic-offset: 2; related-file-name: "../../lib/ipflowid.cc" -*- -+#ifndef CLICK_IPFLOWID_HH -+#define CLICK_IPFLOWID_HH -+#include -+#include -+CLICK_DECLS -+class Packet; -+ -+class IPFlowID { public: -+ -+ IPFlowID(); -+ IPFlowID(IPAddress, uint16_t, IPAddress, uint16_t); -+ explicit IPFlowID(const Packet *); // reads ip_header and udp_header -+ explicit IPFlowID(const click_ip *); // also reads adjacent TCP/UDP header -+ -+ typedef IPAddress (IPFlowID::*unspecified_bool_type)() const; -+ operator unspecified_bool_type() const; -+ -+ IPAddress saddr() const { return _saddr; } -+ IPAddress daddr() const { return _daddr; } -+ uint16_t sport() const { return _sport; } -+ uint16_t dport() const { return _dport; } -+ -+ void set_saddr(IPAddress a) { _saddr = a; } -+ void set_daddr(IPAddress a) { _daddr = a; } -+ void set_sport(uint16_t p) { _sport = p; } // network order -+ void set_dport(uint16_t p) { _dport = p; } // network order -+ -+ IPFlowID rev() const; -+ -+ inline size_t hashcode() const; -+ -+ String unparse() const; -+ operator String() const { return unparse(); } -+ String s() const { return unparse(); } -+ -+ protected: -+ -+ // note: several functions depend on this field order! -+ IPAddress _saddr; -+ IPAddress _daddr; -+ uint16_t _sport; // network byte order -+ uint16_t _dport; // network byte order -+ -+}; -+ -+inline -+IPFlowID::IPFlowID() -+ : _saddr(), _daddr(), _sport(0), _dport(0) -+{ -+} -+ -+inline -+IPFlowID::IPFlowID(IPAddress saddr, uint16_t sport, -+ IPAddress daddr, uint16_t dport) -+ : _saddr(saddr), _daddr(daddr), _sport(sport), _dport(dport) -+{ -+} -+ -+inline -+IPFlowID::operator unspecified_bool_type() const -+{ -+ return _saddr || _daddr ? &IPFlowID::saddr : 0; -+} -+ -+inline IPFlowID -+IPFlowID::rev() const -+{ -+ return IPFlowID(_daddr, _dport, _saddr, _sport); -+} -+ -+ -+#define ROT(v, r) ((v)<<(r) | ((unsigned)(v))>>(32-(r))) -+ -+inline size_t IPFlowID::hashcode() const -+{ -+ // more complicated hashcode, but causes less collision -+ uint16_t s = ntohs(sport()); -+ uint16_t d = ntohs(dport()); -+ size_t sx = CLICK_NAME(hashcode)(saddr()); -+ size_t dx = CLICK_NAME(hashcode)(daddr()); -+ return (ROT(sx, s%16) -+ ^ ROT(dx, 31-d%16)) -+ ^ ((d << 16) | s); -+} -+ -+#undef ROT -+ -+inline bool -+operator==(const IPFlowID &a, const IPFlowID &b) -+{ -+ return a.dport() == b.dport() && a.sport() == b.sport() -+ && a.daddr() == b.daddr() && a.saddr() == b.saddr(); -+} -+ -+inline bool -+operator!=(const IPFlowID &a, const IPFlowID &b) -+{ -+ return a.dport() != b.dport() || a.sport() != b.sport() -+ || a.daddr() != b.daddr() || a.saddr() != b.saddr(); -+} -+ -+StringAccum &operator<<(StringAccum &, const IPFlowID &); -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/iptable.hh click-1.6.0-27/inst/include/click/iptable.hh ---- click-1.6.0/inst/include/click/iptable.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/iptable.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,38 @@ -+// -*- c-basic-offset: 2; related-file-name: "../../lib/iptable.cc" -*- -+#ifndef CLICK_IPTABLE_HH -+#define CLICK_IPTABLE_HH -+#include -+#include -+#include -+CLICK_DECLS -+ -+// IP routing table. -+// Lookup by longest prefix. -+// Each entry contains a gateway and an output index. -+ -+class IPTable { public: -+ -+ IPTable(); -+ ~IPTable(); -+ -+ bool lookup(IPAddress dst, IPAddress &gw, int &index) const; -+ -+ void add(IPAddress dst, IPAddress mask, IPAddress gw, int index); -+ void del(IPAddress dst, IPAddress mask); -+ void clear() { _v.clear(); } -+ -+ private: -+ -+ struct Entry { -+ IPAddress dst; -+ IPAddress mask; -+ IPAddress gw; -+ int index; -+ bool valid() const { return mask || !dst; } -+ }; -+ Vector _v; -+ -+}; -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/lexer.hh click-1.6.0-27/inst/include/click/lexer.hh ---- click-1.6.0/inst/include/click/lexer.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/lexer.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,194 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/lexer.cc" -*- -+#ifndef CLICK_LEXER_HH -+#define CLICK_LEXER_HH -+#include -+#include -+#include -+#include -+CLICK_DECLS -+class LexerExtra; -+ -+enum Lexemes { -+ lexEOF = 0, -+ lexIdent = 256, -+ lexVariable, -+ lexArrow, -+ lex2Colon, -+ lex2Bar, -+ lex3Dot, -+ lexTunnel, -+ lexElementclass, -+ lexRequire, -+ lexDefine -+}; -+ -+class Lexeme { public: -+ -+ Lexeme() : _kind(lexEOF) { } -+ Lexeme(int k, const String &s) : _kind(k), _s(s) { } -+ -+ int kind() const { return _kind; } -+ bool is(int k) const { return _kind == k; } -+ -+ const String &string() const { return _s; } -+ String &string() { return _s; } -+ -+ private: -+ -+ int _kind; -+ String _s; -+ -+}; -+ -+class Lexer { public: -+ -+ enum { TUNNEL_TYPE = 0, ERROR_TYPE = 1 }; -+ -+ class TunnelEnd; -+ class Compound; -+ typedef Router::Hookup Hookup; -+ -+ Lexer(); -+ virtual ~Lexer(); -+ -+ int begin_parse(const String &data, const String &filename, LexerExtra *, ErrorHandler * = 0); -+ void end_parse(int); -+ -+ VariableEnvironment &global_scope() { return _global_scope; } -+ ErrorHandler *errh() const { return _errh; } -+ -+ String remaining_text() const; -+ void set_remaining_text(const String &); -+ -+ const Lexeme &lex(); -+ void unlex(const Lexeme &); -+ String lex_config(); -+ String landmark() const; -+ -+ bool expect(int, bool report_error = true); -+ -+ typedef Element *(*ElementFactory)(uintptr_t); -+#ifdef CLICK_LINUXMODULE -+ int add_element_type(const String &, ElementFactory factory, uintptr_t thunk, struct module *module, bool scoped = false); -+#else -+ int add_element_type(const String &, ElementFactory factory, uintptr_t thunk, bool scoped = false); -+#endif -+ int element_type(const String &) const; -+ int force_element_type(String); -+ -+ void element_type_names(Vector &) const; -+ -+ int remove_element_type(int t) { return remove_element_type(t, 0); } -+ -+ void connect(int element1, int port1, int element2, int port2); -+ String element_name(int) const; -+ String element_landmark(int) const; -+ -+ void add_tunnel(String, String); -+ -+ bool yport(int &port); -+ bool yelement(int &element, bool comma_ok); -+ void ydeclaration(const String &first_element = String()); -+ bool yconnection(); -+ void yelementclass(); -+ void ytunnel(); -+ void ycompound_arguments(Compound *); -+ int ycompound(String name = String()); -+ void yrequire(); -+ void yvar(); -+ bool ystatement(bool nested = false); -+ -+ Router *create_router(Master *); -+ -+ private: -+ -+ // lexer -+ String _big_string; -+ -+ const char *_data; -+ const char *_end; -+ const char *_pos; -+ -+ String _filename; -+ String _original_filename; -+ unsigned _lineno; -+ LexerExtra *_lextra; -+ -+ const char *skip_line(const char *); -+ const char *skip_slash_star(const char *); -+ const char *skip_backslash_angle(const char *); -+ const char *skip_quote(const char *, char); -+ const char *process_line_directive(const char *); -+ Lexeme next_lexeme(); -+ static String lexeme_string(int); -+ -+ // parser -+ enum { TCIRCLE_SIZE = 8 }; -+ Lexeme _tcircle[TCIRCLE_SIZE]; -+ int _tpos; -+ int _tfull; -+ -+ // element types -+ struct ElementType { -+ ElementFactory factory; -+ uintptr_t thunk; -+#ifdef CLICK_LINUXMODULE -+ struct module *module; -+#endif -+ String name; -+ int next; -+ }; -+ HashMap _element_type_map; -+ Vector _element_types; -+ enum { ET_SCOPED = 0x80000000, ET_TMASK = 0x7FFFFFFF, ET_NULL = 0x7FFFFFFF }; -+ int _last_element_type; -+ int _free_element_type; -+ VariableEnvironment _global_scope; -+ -+ // elements -+ HashMap _element_map; -+ Compound *_c; -+ -+ TunnelEnd *_definputs; -+ TunnelEnd *_defoutputs; -+ -+ // compound elements -+ int _anonymous_offset; -+ -+ // requirements -+ Vector _requirements; -+ -+ // errors -+ ErrorHandler *_errh; -+ -+ int lerror(const char *, ...); -+ -+ String anon_element_name(const String &) const; -+ String deanonymize_element_name(const String &, int); -+ int get_element(String, int, const String & = String(), const String & = String()); -+ int lexical_scoping_in() const; -+ void lexical_scoping_out(int); -+ int remove_element_type(int, int *); -+ int make_compound_element(int); -+ void expand_compound_element(int, VariableEnvironment &); -+ void add_router_connections(int, const Vector &, Router *); -+ -+ void find_connections(const Hookup &, bool, Vector &) const; -+ void expand_connection(const Hookup &, bool, Vector &) const; -+ -+ friend class Compound; -+ friend class TunnelEnd; -+ -+}; -+ -+class LexerExtra { public: -+ -+ LexerExtra() { } -+ virtual ~LexerExtra() { } -+ -+ virtual void require(String, ErrorHandler *); -+ -+}; -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/llrpc.h click-1.6.0-27/inst/include/click/llrpc.h ---- click-1.6.0/inst/include/click/llrpc.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/llrpc.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,182 @@ -+#ifndef CLICK_LLRPC_H -+#define CLICK_LLRPC_H -+#if CLICK_LINUXMODULE -+# include -+# include -+#else -+# include -+# include -+#endif -+ -+/* Click low-level RPC interface */ -+ -+/* Ioctl numbers are not consistent across platforms unless you #define -+ HAVE_PORTABLE_LLRPC. */ -+#define _CLICK_NET_IOC_VOID 0x20000000 -+#define _CLICK_NET_IOC_OUT 0x40000000 -+#define _CLICK_NET_IOC_IN 0x80000000 -+#if HAVE_PORTABLE_LLRPC || !defined(__linux__) -+# define _CLICK_IOC_VOID _CLICK_NET_IOC_VOID -+# define _CLICK_IOC_OUT _CLICK_NET_IOC_OUT -+# define _CLICK_IOC_IN _CLICK_NET_IOC_IN -+#else -+# define _CLICK_IOC_VOID (_IOC_NONE << _IOC_DIRSHIFT) -+# define _CLICK_IOC_OUT (_IOC_READ << _IOC_DIRSHIFT) -+# define _CLICK_IOC_IN (_IOC_WRITE << _IOC_DIRSHIFT) -+#endif -+#define _CLICK_IOC_BASE_MASK 0x0FFFFFFF -+#define _CLICK_IOC_SAFE 0x00008000 -+#define _CLICK_IOC_FLAT 0x00004000 -+#define _CLICK_IOC_SIZE(io) ((io) >> 16 & 0xFFF) -+ -+/* _CLICK_IO[S]: data transfer direction unknown, pass pointer unchanged; -+ _CLICK_IOR[S]: data of specified size sent from kernel to user; -+ _CLICK_IOW[S]: data of specified size sent from user to kernel; -+ _CLICK_IOWR[S]: data of specified size transferred in both directions. */ -+ -+/* "Non-safe" LLRPCs will not be performed in parallel with other LLRPCs or -+ handlers. */ -+#define _CLICK_IOX(d, n, sz) ((d) | ((sz) << 16) | (n)) -+#define _CLICK_IO(n) _CLICK_IOX(_CLICK_IOC_VOID, (n), 0) -+#define _CLICK_IOR(n, sz) _CLICK_IOX(_CLICK_IOC_OUT, (n), (sz)) -+#define _CLICK_IOW(n, sz) _CLICK_IOX(_CLICK_IOC_IN, (n), (sz)) -+#define _CLICK_IOWR(n, sz) _CLICK_IOX(_CLICK_IOC_IN|_CLICK_IOC_OUT, (n), (sz)) -+ -+/* "Safe" LLRPCs may be performed in parallel with read handlers and other -+ safe LLRPCs, but not with write handlers or unsafe LLRPCs. */ -+#define _CLICK_IOS(n) _CLICK_IOX(_CLICK_IOC_VOID|_CLICK_IOC_SAFE, (n), 0) -+#define _CLICK_IORS(n, sz) _CLICK_IOX(_CLICK_IOC_OUT|_CLICK_IOC_SAFE, (n), (sz)) -+#define _CLICK_IOWS(n, sz) _CLICK_IOX(_CLICK_IOC_IN|_CLICK_IOC_SAFE, (n), (sz)) -+#define _CLICK_IOWRS(n, sz) _CLICK_IOX(_CLICK_IOC_IN|_CLICK_IOC_OUT|_CLICK_IOC_SAFE, (n), (sz)) -+ -+/* "Flat" LLRPCs do not contain pointers -- all data read or written is -+ contained in the size. They can be safe or unsafe. */ -+#define _CLICK_IORF(n, sz) _CLICK_IOX(_CLICK_IOC_OUT|_CLICK_IOC_FLAT, (n), (sz)) -+#define _CLICK_IOWF(n, sz) _CLICK_IOX(_CLICK_IOC_IN|_CLICK_IOC_FLAT, (n), (sz)) -+#define _CLICK_IOWRF(n, sz) _CLICK_IOX(_CLICK_IOC_IN|_CLICK_IOC_OUT|_CLICK_IOC_FLAT, (n), (sz)) -+#define _CLICK_IORSF(n, sz) _CLICK_IOX(_CLICK_IOC_OUT|_CLICK_IOC_SAFE|_CLICK_IOC_FLAT, (n), (sz)) -+#define _CLICK_IOWSF(n, sz) _CLICK_IOX(_CLICK_IOC_IN|_CLICK_IOC_SAFE|_CLICK_IOC_FLAT, (n), (sz)) -+#define _CLICK_IOWRSF(n, sz) _CLICK_IOX(_CLICK_IOC_IN|_CLICK_IOC_OUT|_CLICK_IOC_SAFE|_CLICK_IOC_FLAT, (n), (sz)) -+ -+#define CLICK_LLRPC_PROXY _CLICK_IO(0) -+#define CLICK_LLRPC_GET_RATE _CLICK_IOWRSF(1, 4) -+#define CLICK_LLRPC_GET_RATES _CLICK_IOS(2) -+#define CLICK_LLRPC_GET_COUNT _CLICK_IOWRSF(3, 4) -+#define CLICK_LLRPC_GET_COUNTS _CLICK_IOS(4) -+#define CLICK_LLRPC_GET_SWITCH _CLICK_IORSF(5, 4) -+#define CLICK_LLRPC_SET_SWITCH _CLICK_IOWF(6, 4) -+#define CLICK_LLRPC_MAP_IPADDRESS _CLICK_IOWRF(7, 4) -+#define CLICK_LLRPC_IPREWRITER_MAP_TCP _CLICK_IOWRSF(8, 12) -+#define CLICK_LLRPC_IPREWRITER_MAP_UDP _CLICK_IOWRSF(9, 12) -+#define CLICK_LLRPC_IPRATEMON_LEVEL_FWD_AVG _CLICK_IO(10) -+#define CLICK_LLRPC_IPRATEMON_LEVEL_REV_AVG _CLICK_IO(11) -+#define CLICK_LLRPC_IPRATEMON_FWD_N_REV_AVG _CLICK_IO(12) -+#define CLICK_LLRPC_IPRATEMON_SET_ANNO_LEVEL _CLICK_IO(13) -+ -+#define CLICK_IOC_TOUSERDEVICE_GET_MULTI _CLICK_IOS(14) -+#define CLICK_IOC_TOUSERDEVICE_SET_MULTI _CLICK_IOS(15) -+ -+struct click_llrpc_proxy_st { -+ void* proxied_handler; /* const Router::Handler* */ -+ uint32_t proxied_command; -+ void* proxied_data; -+}; -+ -+#define CLICK_LLRPC_COUNTS_SIZE 8 -+struct click_llrpc_counts_st { -+ uint32_t n; -+ uint32_t keys[CLICK_LLRPC_COUNTS_SIZE]; -+ uint32_t values[CLICK_LLRPC_COUNTS_SIZE]; -+}; -+ -+ -+/* data manipulation */ -+ -+#if CLICK_USERLEVEL -+ -+# define CLICK_LLRPC_GET_DATA(local, remote, size) (memcpy(local, remote, size), 0) -+# define CLICK_LLRPC_PUT_DATA(remote, local, size) (memcpy(remote, local, size), 0) -+# define CLICK_LLRPC_GET(local_obj, remote_addr) (memcpy(&(local_obj), remote_addr, sizeof(local_obj)), 0) -+# define CLICK_LLRPC_PUT(remote_addr, local_obj) (memcpy(remote_addr, &(local_obj), sizeof(local_obj)), 0) -+ -+#elif CLICK_LINUXMODULE -+ -+# ifdef __cplusplus -+# define __CLICK_LLRPC_CAST(x) reinterpret_cast< x > -+extern "C" { -+# include -+} -+# else -+# define __CLICK_LLRPC_CAST(x) (x) -+# include -+# endif -+ -+# define __CLICK_LLRPC_GENERIC_GET_DATA(local, remote, size) \ -+ (copy_from_user(local, remote, size) > 0 ? -EFAULT : 0) -+# define __CLICK_LLRPC_CONSTANT_GET_DATA(local, remote, size) \ -+ (size == 1 ? get_user(*__CLICK_LLRPC_CAST(unsigned char *)(local), __CLICK_LLRPC_CAST(unsigned char *)(remote)) \ -+ : (size == 2 ? get_user(*__CLICK_LLRPC_CAST(unsigned short *)(local), __CLICK_LLRPC_CAST(unsigned short *)(remote)) \ -+ : (size == 4 ? get_user(*__CLICK_LLRPC_CAST(unsigned *)(local), __CLICK_LLRPC_CAST(unsigned *)(remote)) \ -+ : __CLICK_LLRPC_GENERIC_GET_DATA(local, remote, size)))) -+ -+# define __CLICK_LLRPC_GENERIC_PUT_DATA(remote, local, size) \ -+ (copy_to_user(remote, local, size) > 0 ? -EFAULT : 0) -+# define __CLICK_LLRPC_CONSTANT_PUT_DATA(remote, local, size) \ -+ (size == 1 ? put_user(*__CLICK_LLRPC_CAST(const unsigned char *)(local), __CLICK_LLRPC_CAST(unsigned char *)(remote)) \ -+ : (size == 2 ? put_user(*__CLICK_LLRPC_CAST(const unsigned short *)(local), __CLICK_LLRPC_CAST(unsigned short *)(remote)) \ -+ : (size == 4 ? put_user(*__CLICK_LLRPC_CAST(const unsigned *)(local), __CLICK_LLRPC_CAST(unsigned *)(remote)) \ -+ : __CLICK_LLRPC_GENERIC_PUT_DATA(remote, local, size)))) -+ -+# define CLICK_LLRPC_GET_DATA(local, remote, size) \ -+ (__builtin_constant_p(size) && size <= 4 \ -+ ? __CLICK_LLRPC_CONSTANT_GET_DATA(local, remote, size) \ -+ : __CLICK_LLRPC_GENERIC_GET_DATA(local, remote, size)) -+# define CLICK_LLRPC_PUT_DATA(remote, local, size) \ -+ (__builtin_constant_p(size) && size <= 4 \ -+ ? __CLICK_LLRPC_CONSTANT_PUT_DATA(remote, local, size) \ -+ : __CLICK_LLRPC_GENERIC_PUT_DATA(remote, local, size)) -+ -+# define CLICK_LLRPC_GET(local_obj, remote_addr) \ -+ get_user((local_obj), (remote_addr)) -+# define CLICK_LLRPC_PUT(remote_addr, local_obj) \ -+ put_user((local_obj), (remote_addr)) -+ -+#elif CLICK_BSDMODULE -+ -+/* -+ * XXX LLRPC isn't implemented for BSD yet. -+ */ -+ -+# define CLICK_LLRPC_GET_DATA(local, remote, size) ((void)(local), (void)(remote), (void)(size), -EFAULT) -+# define CLICK_LLRPC_PUT_DATA(remote, local, size) ((void)(local), (void)(remote), (void)(size), -EFAULT) -+# define CLICK_LLRPC_GET(local_obj, remote_addr) ((void)(local_obj), (void)(remote_addr), -EFAULT) -+# define CLICK_LLRPC_PUT(remote_addr, local_obj) ((void)(local_obj), (void)(remote_addr), -EFAULT) -+ -+#endif -+ -+/* CLICK_NTOH_LLRPC: portable LLRPC numbers to host LLRPC numbers */ -+/* CLICK_HTON_LLRPC: host LLRPC numbers to portable LLRPC numbers */ -+/* both macros are only suitable for integer constants and the like */ -+#if _CLICK_IOC_VOID != _CLICK_NET_IOC_VOID || _CLICK_IOC_OUT != _CLICK_NET_IOC_OUT || _CLICK_IOC_IN != _CLICK_NET_IOC_IN -+# define CLICK_LLRPC_NTOH(command) \ -+ (((command) & _CLICK_NET_IOC_VOID ? _CLICK_IOC_VOID : 0) \ -+ | ((command) & _CLICK_NET_IOC_OUT ? _CLICK_IOC_OUT : 0) \ -+ | ((command) & _CLICK_NET_IOC_IN ? _CLICK_IOC_IN : 0) \ -+ | ((command) & _CLICK_IOC_BASE_MASK)) -+# define CLICK_LLRPC_HTON(command) \ -+ (((command) & _CLICK_IOC_VOID ? _CLICK_NET_IOC_VOID : 0) \ -+ | ((command) & _CLICK_IOC_OUT ? _CLICK_NET_IOC_OUT : 0) \ -+ | ((command) & _CLICK_IOC_IN ? _CLICK_NET_IOC_IN : 0) \ -+ | ((command) & _CLICK_IOC_BASE_MASK)) -+#else -+# define CLICK_LLRPC_NTOH(command) (command) -+# define CLICK_LLRPC_HTON(command) (command) -+#endif -+ -+/* sanity checks */ -+#ifdef __FreeBSD__ -+# if _CLICK_IOC_VOID != IOC_VOID || _CLICK_IOC_OUT != IOC_OUT || _CLICK_IOC_IN != IOC_IN -+# error "bad _CLICK_IOC constants" -+# endif -+#endif -+#endif -diff -Nurb click-1.6.0/inst/include/click/master.hh click-1.6.0-27/inst/include/click/master.hh ---- click-1.6.0/inst/include/click/master.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/master.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,265 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/master.cc" -*- -+#ifndef CLICK_MASTER_HH -+#define CLICK_MASTER_HH -+#include -+#include -+#include -+#include -+#include -+#if CLICK_USERLEVEL -+# include -+# include -+# if HAVE_POLL_H -+# include -+# endif -+#endif -+#if CLICK_NS -+# include -+#endif -+CLICK_DECLS -+class Element; -+ -+#define CLICK_DEBUG_MASTER 0 -+ -+class Master { public: -+ -+ Master(int nthreads); -+ ~Master(); -+ -+ void use(); -+ void unuse(); -+ -+ void pause(); -+ inline void unpause(); -+ -+ inline int nthreads() const; -+ inline RouterThread* thread(int id) const; -+ -+ const volatile int* stopper_ptr() const { return &_stopper; } -+ -+ Timestamp next_timer_expiry() const { return _timer_expiry; } -+ void run_timers(); -+ -+#if CLICK_USERLEVEL -+ int add_select(int fd, Element*, int mask); -+ int remove_select(int fd, Element*, int mask); -+ void run_selects(bool more_tasks); -+ -+ int add_signal_handler(int signo, Router*, const String &handler); -+ int remove_signal_handler(int signo, Router*, const String &handler); -+ inline void run_signals(); -+#endif -+ -+ void kill_router(Router*); -+ -+#if CLICK_NS -+ void initialize_ns(simclick_node_t *simnode); -+ simclick_node_t *simnode() const { return _simnode; } -+#endif -+ -+#if CLICK_DEBUG_MASTER -+ String info() const; -+#endif -+ -+#if CLICK_USERLEVEL -+ static sig_atomic_t signals_pending; -+#endif -+ -+ private: -+ -+ // stick _timer_expiry here so it will most likely fit in a cache line, -+ // & we don't have to worry about its parts being updated separately -+ Timestamp _timer_expiry; -+ -+#if CLICK_LINUXMODULE -+ spinlock_t _master_lock; -+ struct task_struct *_master_lock_task; -+ int _master_lock_count; -+#endif -+ atomic_uint32_t _master_paused; -+ inline void lock_master(); -+ inline void unlock_master(); -+ -+ // ROUTERS -+ Router* _routers; -+ int _refcount; -+ void register_router(Router*); -+ void prepare_router(Router*); -+ void run_router(Router*, bool foreground); -+ void unregister_router(Router*); -+ -+ // THREADS -+ Vector _threads; -+ -+ // DRIVERMANAGER -+ volatile int _stopper; -+ inline void set_stopper(int); -+ bool check_driver(); -+ -+ // PENDING TASKS -+ uintptr_t _pending_head; -+ volatile uintptr_t *_pending_tail; -+ SpinlockIRQ _task_lock; -+ void process_pending(RouterThread*); -+ -+ // TIMERS -+ Vector _timer_heap; -+#if CLICK_LINUXMODULE -+ spinlock_t _timer_lock; -+ struct task_struct *_timer_task; -+#endif -+ void lock_timers(); -+ bool attempt_lock_timers(); -+ void unlock_timers(); -+ void timer_reheapify_from(int, Timer*, bool will_delete); -+ -+#if CLICK_USERLEVEL -+ // SELECT -+# if HAVE_SYS_EVENT_H && HAVE_KQUEUE -+ int _kqueue; -+ int _selected_callno; -+ Vector _selected_callnos; -+# endif -+# if !HAVE_POLL_H -+ struct pollfd { -+ int fd; -+ int events; -+ }; -+ fd_set _read_select_fd_set; -+ fd_set _write_select_fd_set; -+ int _max_select_fd; -+# endif /* HAVE_POLL_H */ -+ Vector _pollfds; -+ Vector _read_poll_elements; -+ Vector _write_poll_elements; -+ Spinlock _select_lock; -+ void remove_pollfd(int pi, int event); -+# if HAVE_SYS_EVENT_H && HAVE_KQUEUE -+ void run_selects_kqueue(bool); -+# endif -+# if HAVE_POLL_H -+ void run_selects_poll(bool); -+# else -+ void run_selects_select(bool); -+# endif -+ -+ // SIGNALS -+ struct SignalInfo { -+ int signo; -+ Router *router; -+ String handler; -+ SignalInfo *next; -+ }; -+ SignalInfo *_siginfo; -+ bool _signal_adding; -+ Spinlock _signal_lock; -+ void process_signals(); -+#endif -+ -+#if CLICK_NS -+ simclick_node_t *_simnode; -+#endif -+ -+ Master(const Master&); -+ Master& operator=(const Master&); -+ -+ friend class Task; -+ friend class Timer; -+ friend class RouterThread; -+ friend class Router; -+ -+}; -+ -+inline int -+Master::nthreads() const -+{ -+ return _threads.size() - 2; -+} -+ -+inline RouterThread* -+Master::thread(int id) const -+{ -+ // return the requested thread, or the quiescent thread if there's no such -+ // thread -+ if ((unsigned)(id + 2) < (unsigned)_threads.size()) -+ return _threads.at_u(id + 2); -+ else -+ return _threads.at_u(1); -+} -+ -+#if CLICK_USERLEVEL -+inline void -+Master::run_signals() -+{ -+ if (signals_pending) -+ process_signals(); -+} -+#endif -+ -+inline void -+Master::set_stopper(int s) -+{ -+ _stopper = s; -+} -+ -+inline void -+Master::lock_master() -+{ -+#if CLICK_LINUXMODULE -+ if (current != _master_lock_task) { -+ spin_lock(&_master_lock); -+ _master_lock_task = current; -+ } else -+ _master_lock_count++; -+#endif -+} -+ -+inline void -+Master::unlock_master() -+{ -+#if CLICK_LINUXMODULE -+ assert(current == _master_lock_task); -+ if (_master_lock_count == 0) { -+ _master_lock_task = 0; -+ spin_unlock(&_master_lock); -+ } else -+ _master_lock_count--; -+#endif -+} -+ -+inline void -+Master::unpause() -+{ -+ _master_paused--; -+} -+ -+inline void -+Master::lock_timers() -+{ -+#if CLICK_LINUXMODULE -+ if (current != _timer_task) -+ spin_lock(&_timer_lock); -+#endif -+} -+ -+inline bool -+Master::attempt_lock_timers() -+{ -+#if CLICK_LINUXMODULE -+ return spin_trylock(&_timer_lock); -+#else -+ return true; -+#endif -+} -+ -+inline void -+Master::unlock_timers() -+{ -+#if CLICK_LINUXMODULE -+ if (current != _timer_task) -+ spin_unlock(&_timer_lock); -+#endif -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/md5.h click-1.6.0-27/inst/include/click/md5.h ---- click-1.6.0/inst/include/click/md5.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/md5.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,146 @@ -+/* -*- related-file-name: "../../lib/md5.cc" -*- -+ Copyright (c) 2006-2007 Regents of the University of California -+ Altered for Click by Eddie Kohler. */ -+/* -+ Copyright (C) 1999, 2002 Aladdin Enterprises. All rights reserved. -+ -+ This software is provided 'as-is', without any express or implied -+ warranty. In no event will the authors be held liable for any damages -+ arising from the use of this software. -+ -+ Permission is granted to anyone to use this software for any purpose, -+ including commercial applications, and to alter it and redistribute it -+ freely, subject to the following restrictions: -+ -+ 1. The origin of this software must not be misrepresented; you must not -+ claim that you wrote the original software. If you use this software -+ in a product, an acknowledgment in the product documentation would be -+ appreciated but is not required. -+ 2. Altered source versions must be plainly marked as such, and must not be -+ misrepresented as being the original software. -+ 3. This notice may not be removed or altered from any source distribution. -+ -+ L. Peter Deutsch -+ ghost@aladdin.com -+ -+ */ -+/* -+ Independent implementation of MD5 (RFC 1321). -+ -+ This code implements the MD5 Algorithm defined in RFC 1321, whose -+ text is available at -+ http://www.ietf.org/rfc/rfc1321.txt -+ The code is derived from the text of the RFC, including the test suite -+ (section A.5) but excluding the rest of Appendix A. It does not include -+ any code or documentation that is identified in the RFC as being -+ copyrighted. -+ -+ The original and principal author of md5.h is L. Peter Deutsch -+ . Other authors are noted in the change history -+ that follows (in reverse chronological order): -+ -+ 2002-04-13 lpd Removed support for non-ANSI compilers; removed -+ references to Ghostscript; clarified derivation from RFC 1321; -+ now handles byte order either statically or dynamically. -+ 1999-11-04 lpd Edited comments slightly for automatic TOC extraction. -+ 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5); -+ added conditionalization for C++ compilation from Martin -+ Purschke . -+ 1999-05-03 lpd Original version. -+ */ -+ -+#ifndef CLICK_MD5_H -+#define CLICK_MD5_H -+#if CLICK_LINUXMODULE -+#include -+CLICK_CXX_PROTECT -+#include -+#include -+CLICK_CXX_UNPROTECT -+#include -+ -+typedef struct crypto_tfm *md5_state_t; -+ -+static inline void md5_init(md5_state_t *pms) { -+ *pms = crypto_alloc_tfm("md5", 0); -+ if (*pms) -+ crypto_digest_init(*pms); -+} -+ -+static inline void md5_append(md5_state_t *pms, const unsigned char *data, int nbytes) { -+ if (*pms) { -+ struct scatterlist sg[1]; -+ sg[0].page = virt_to_page(data); -+ sg[0].offset = offset_in_page(data); -+ sg[0].length = nbytes; -+ crypto_digest_update(*pms, sg, 1); -+ } -+} -+ -+static inline void md5_finish(md5_state_t *pms, const unsigned char digest[16]) { -+ if (*pms) -+ crypto_digest_final(*pms, digest); -+} -+ -+static inline void md5_free(md5_state_t *pms) { -+ crypto_free_tfm(*pms); -+} -+ -+#else -+ -+/* -+ * This package supports both compile-time and run-time determination of CPU -+ * byte order. If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be -+ * compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is -+ * defined as non-zero, the code will be compiled to run only on big-endian -+ * CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to -+ * run on either big- or little-endian CPUs, but will run slightly less -+ * efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined. -+ */ -+ -+typedef unsigned char md5_byte_t; /* 8-bit byte */ -+typedef uint32_t md5_word_t; /* 32-bit word */ -+ -+/* Define the state of the MD5 Algorithm. */ -+typedef struct md5_state_s { -+ md5_word_t count[2]; /* message length in bits, lsw first */ -+ md5_word_t abcd[4]; /* digest buffer */ -+ md5_byte_t buf[64]; /* accumulate block */ -+} md5_state_t; -+ -+#ifdef __cplusplus -+extern "C" -+{ -+#endif -+ -+/* Initialize the algorithm. */ -+void md5_init(md5_state_t *pms); -+ -+/* Append a string to the message. */ -+void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes); -+ -+/* Finish the message and return the digest. */ -+#define MD5_DIGEST_SIZE 16 -+void md5_finish(md5_state_t *pms, md5_byte_t digest[16]); -+ -+/* Finish the message and return the digest in ASCII. DOES NOT write a -+ terminating NUL character. -+ If 'allow_at == 0', the digest uses characters [A-Za-z0-9_], and has -+ length between MD5_TEXT_DIGEST_SIZE and MD5_TEXT_DIGEST_MAX_SIZE. -+ If 'allow_at != 0', the digest uses characters [A-Za-z0-9_@], and has -+ length of exactly MD5_TEXT_DIGEST_SIZE. -+ Returns the number of characters written. Again, this will NOT include -+ a terminating NUL. */ -+#define MD5_TEXT_DIGEST_SIZE 22 /* min len */ -+#define MD5_TEXT_DIGEST_MAX_SIZE 26 /* max len if !allow_at */ -+int md5_finish_text(md5_state_t *pms, char *text_digest, int allow_at); -+ -+#define md5_free(pms) /* do nothing */ -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif -+#endif -+ -diff -Nurb click-1.6.0/inst/include/click/nameinfo.hh click-1.6.0-27/inst/include/click/nameinfo.hh ---- click-1.6.0/inst/include/click/nameinfo.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/nameinfo.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,210 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/nameinfo.cc" -*- -+#ifndef CLICK_NAMEINFO_HH -+#define CLICK_NAMEINFO_HH -+#include -+#include -+#include -+CLICK_DECLS -+class Element; -+class NameDB; -+class ErrorHandler; -+ -+class NameInfo { public: -+ -+ NameInfo(); -+ ~NameInfo(); -+ -+ static void static_initialize(); -+ static void static_cleanup(); -+ -+ enum { -+ T_NONE = 0, -+ T_SCHEDULEINFO = 0x00000001, -+ T_SCRIPT_INSN = 0x00000002, -+ T_SIGNO = 0x00000003, -+ T_ETHERNET_ADDR = 0x01000001, -+ T_IP_ADDR = 0x04000001, -+ T_IP_PREFIX = 0x04000002, -+ T_IP_PROTO = 0x04000003, -+ T_IPFILTER_TYPE = 0x04000004, -+ T_TCP_OPT = 0x04000005, -+ T_ICMP_TYPE = 0x04010000, -+ T_ICMP_CODE = 0x04010100, -+ T_IP_PORT = 0x04020000, -+ T_TCP_PORT = 0x04020006, -+ T_UDP_PORT = 0x04020011, -+ T_IP_FIELDNAME = 0x04030000, -+ T_ICMP_FIELDNAME = 0x04030001, -+ T_TCP_FIELDNAME = 0x04030006, -+ T_UDP_FIELDNAME = 0x04030011, -+ T_IP6_ADDR = 0x06000001, -+ T_IP6_PREFIX = 0x06000002 -+ }; -+ -+ static NameDB *getdb(uint32_t type, const Element *prefix, int value_size, bool create); -+ static void installdb(NameDB *db, const Element *prefix); -+ static void removedb(NameDB *db); -+ -+ static bool query(uint32_t type, const Element *prefix, const String &name, void *value_store, int value_size); -+ static bool query_int(uint32_t type, const Element *prefix, const String &name, int32_t *value_store); -+ static bool query_int(uint32_t type, const Element *prefix, const String &name, uint32_t *value_store); -+ static String revquery(uint32_t type, const Element *prefix, const void *value, int value_size); -+ static inline String revquery_int(uint32_t type, const Element *prefix, int32_t value); -+ static inline void define(uint32_t type, const Element *prefix, const String &name, const void *value, int value_size); -+ static inline void define_int(uint32_t type, const Element *prefix, const String &name, int32_t value); -+ -+#ifdef CLICK_NAMEDB_CHECK -+ void check(ErrorHandler *); -+ static void check(const Element *, ErrorHandler *); -+#endif -+ -+ private: -+ -+ Vector _namedb_roots; -+ Vector _namedbs; -+ -+ inline NameDB *install_dynamic_sentinel() { return (NameDB *) this; } -+ NameDB *namedb(uint32_t type, int value_size, const String &prefix, NameDB *installer); -+ -+#ifdef CLICK_NAMEDB_CHECK -+ uintptr_t _check_generation; -+ void checkdb(NameDB *db, NameDB *parent, ErrorHandler *errh); -+#endif -+ -+}; -+ -+ -+class NameDB { public: -+ -+ inline NameDB(uint32_t type, const String &prefix, int value_size); -+ virtual ~NameDB() { } -+ -+ uint32_t type() const { return _type; } -+ int value_size() const { return _value_size; } -+ const String &prefix() const { return _prefix; } -+ NameDB *prefix_parent() const { return _prefix_parent; } -+ -+ virtual bool query(const String &name, void *value, int vsize) = 0; -+ virtual String revfind(const void *value, int vsize); -+ virtual void define(const String &name, const void *value, int vsize); -+ inline void define_int(const String &name, int32_t value); -+ -+#ifdef CLICK_NAMEDB_CHECK -+ virtual void check(ErrorHandler *); -+#endif -+ -+ private: -+ -+ uint32_t _type; -+ String _prefix; -+ int _value_size; -+ NameDB *_prefix_parent; -+ NameDB *_prefix_sibling; -+ NameDB *_prefix_child; -+ NameInfo *_installed; -+ -+#ifdef CLICK_NAMEDB_CHECK -+ uintptr_t _check_generation; -+#endif -+ -+ friend class NameInfo; -+ -+}; -+ -+class StaticNameDB : public NameDB { public: -+ -+ struct Entry { -+ const char *name; -+ uint32_t value; -+ }; -+ -+ inline StaticNameDB(uint32_t type, const String &prefix, const Entry *entry, int nentry); -+ -+ bool query(const String &name, void *value, int vsize); -+ String revfind(const void *value, int vsize); -+ -+#ifdef CLICK_NAMEDB_CHECK -+ void check(ErrorHandler *); -+#endif -+ -+ private: -+ -+ const Entry *_entries; -+ int _nentries; -+ -+}; -+ -+class DynamicNameDB : public NameDB { public: -+ -+ inline DynamicNameDB(uint32_t type, const String &prefix, int vsize); -+ -+ bool query(const String &name, void *value, int vsize); -+ void define(const String &name, const void *value, int vsize); -+ String revfind(const void *value, int vsize); -+ -+#ifdef CLICK_NAMEDB_CHECK -+ void check(ErrorHandler *); -+#endif -+ -+ private: -+ -+ Vector _names; -+ StringAccum _values; -+ int _sorted; -+ -+ void *find(const String &name, bool create); -+ void sort(); -+ -+}; -+ -+ -+inline -+NameDB::NameDB(uint32_t type, const String &prefix, int vsize) -+ : _type(type), _prefix(prefix), _value_size(vsize), -+ _prefix_parent(0), _prefix_sibling(0), _prefix_child(0), _installed(0) -+{ -+#ifdef CLICK_NAMEDB_CHECK -+ _check_generation = 0; -+#endif -+} -+ -+inline -+StaticNameDB::StaticNameDB(uint32_t type, const String &prefix, const Entry *entry, int nentry) -+ : NameDB(type, prefix, sizeof(entry->value)), _entries(entry), _nentries(nentry) -+{ -+} -+ -+inline -+DynamicNameDB::DynamicNameDB(uint32_t type, const String &prefix, int vsize) -+ : NameDB(type, prefix, vsize), _sorted(0) -+{ -+} -+ -+inline String -+NameInfo::revquery_int(uint32_t type, const Element *e, int32_t value) -+{ -+ return revquery(type, e, &value, sizeof(value)); -+} -+ -+inline void -+NameInfo::define(uint32_t type, const Element *e, const String &name, const void *value, int vsize) -+{ -+ if (NameDB *db = getdb(type, e, vsize, true)) -+ db->define(name, value, vsize); -+} -+ -+inline void -+NameInfo::define_int(uint32_t type, const Element *e, const String &name, const int32_t value) -+{ -+ if (NameDB *db = getdb(type, e, sizeof(value), true)) -+ db->define(name, &value, sizeof(value)); -+} -+ -+inline void -+NameDB::define_int(const String &name, const int32_t value) -+{ -+ define(name, &value, sizeof(value)); -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/notifier.hh click-1.6.0-27/inst/include/click/notifier.hh ---- click-1.6.0/inst/include/click/notifier.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/notifier.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,488 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/notifier.cc" -*- -+#ifndef CLICK_NOTIFIER_HH -+#define CLICK_NOTIFIER_HH -+#include -+#include -+CLICK_DECLS -+ -+class NotifierSignal { public: -+ -+ inline NotifierSignal(); // always active -+ inline NotifierSignal(atomic_uint32_t* value, uint32_t mask); -+ -+ static inline NotifierSignal idle_signal(); -+ static inline NotifierSignal busy_signal(); -+ static inline NotifierSignal overderived_signal(); -+ static inline NotifierSignal uninitialized_signal(); -+ -+ typedef bool (NotifierSignal::*unspecified_bool_type)() const; -+ inline operator unspecified_bool_type() const; -+ inline bool active() const; -+ -+ inline bool idle() const; -+ inline bool busy() const; -+ inline bool overderived() const; -+ inline bool initialized() const; -+ -+ inline void set_active(bool active); -+ -+ NotifierSignal& operator+=(const NotifierSignal& a); -+ -+ String unparse() const; -+ -+ static void static_initialize(); -+ -+ private: -+ -+ atomic_uint32_t* _value; -+ uint32_t _mask; -+ -+ enum { TRUE_MASK = 1, FALSE_MASK = 2, OVERDERIVED_MASK = 4, -+ UNINITIALIZED_MASK = 8 }; -+ static atomic_uint32_t static_value; -+ friend bool operator==(const NotifierSignal&, const NotifierSignal&); -+ friend bool operator!=(const NotifierSignal&, const NotifierSignal&); -+ friend NotifierSignal operator+(NotifierSignal, const NotifierSignal&); -+ -+}; -+ -+class Notifier { public: -+ -+ enum SearchOp { SEARCH_STOP = 0, SEARCH_CONTINUE, SEARCH_CONTINUE_WAKE }; -+ -+ inline Notifier(SearchOp = SEARCH_STOP); -+ inline Notifier(const NotifierSignal &, SearchOp = SEARCH_STOP); -+ virtual ~Notifier(); -+ -+ int initialize(Router *); -+ -+ inline const NotifierSignal &signal() const; -+ inline SearchOp search_op() const; -+ -+ inline bool active() const; -+ -+ inline void set_active(bool active); -+ inline void wake(); -+ inline void sleep(); -+ -+ virtual int add_listener(Task*); -+ virtual void remove_listener(Task*); -+ virtual int add_dependent_signal(NotifierSignal*); -+ -+ static const char EMPTY_NOTIFIER[]; -+ static const char FULL_NOTIFIER[]; -+ -+ static NotifierSignal upstream_empty_signal(Element* e, int port, Task* task, Notifier* dependent_notifier = 0); -+ static NotifierSignal downstream_full_signal(Element* e, int port, Task* task, Notifier* dependent_notifier = 0); -+ -+ private: -+ -+ NotifierSignal _signal; -+ SearchOp _search_op; -+ -+}; -+ -+class ActiveNotifier : public Notifier { public: -+ -+ ActiveNotifier(SearchOp = SEARCH_STOP); -+ ~ActiveNotifier(); -+ -+ int add_listener(Task*); // complains on out of memory -+ void remove_listener(Task*); -+ int add_dependent_signal(NotifierSignal*); -+ void listeners(Vector&) const; -+ -+ inline void set_active(bool active, bool schedule = true); -+ inline void wake(); -+ inline void sleep(); -+ -+ private: -+ -+ typedef union { -+ Task *t; -+ NotifierSignal *s; -+ void *v; -+ } task_or_signal_t; -+ -+ Task* _listener1; -+ task_or_signal_t* _listeners; -+ -+ int listener_change(void *what, int where, bool rem); -+ -+ ActiveNotifier(const ActiveNotifier&); // does not exist -+ ActiveNotifier& operator=(const ActiveNotifier&); // does not exist -+ -+}; -+ -+ -+/** @brief Construct a busy signal. -+ * -+ * The returned signal is always active. -+ */ -+inline -+NotifierSignal::NotifierSignal() -+ : _value(&static_value), _mask(TRUE_MASK) -+{ -+} -+ -+/** @brief Construct an activity signal. -+ * -+ * Elements should not use this constructor directly. -+ * @sa Router::new_notifier_signal -+ */ -+inline -+NotifierSignal::NotifierSignal(atomic_uint32_t* value, uint32_t mask) -+ : _value(value), _mask(mask) -+{ -+} -+ -+/** @brief Return an idle signal. -+ * -+ * The returned signal is never active. -+ */ -+inline NotifierSignal -+NotifierSignal::idle_signal() -+{ -+ return NotifierSignal(&static_value, 0); -+} -+ -+/** @brief Return a busy signal. -+ * -+ * The returned signal is always active. -+ */ -+inline NotifierSignal -+NotifierSignal::busy_signal() -+{ -+ return NotifierSignal(&static_value, TRUE_MASK); -+} -+ -+/** @brief Return an overderived busy signal. -+ * -+ * Overderived signals replace derived signals that are too complex to -+ * represent. An overderived signal, like a busy signal, is always active. -+ */ -+inline NotifierSignal -+NotifierSignal::overderived_signal() -+{ -+ return NotifierSignal(&static_value, OVERDERIVED_MASK | TRUE_MASK); -+} -+ -+/** @brief Return an uninitialized signal. -+ * -+ * Unintialized signals may be used occasionally as placeholders for true -+ * signals to be added later. Uninitialized signals are never active. -+ */ -+inline NotifierSignal -+NotifierSignal::uninitialized_signal() -+{ -+ return NotifierSignal(&static_value, UNINITIALIZED_MASK); -+} -+ -+/** @brief Return whether the signal is active. -+ * @return true iff the signal is currently active. -+ */ -+inline bool -+NotifierSignal::active() const -+{ -+ return (*_value & _mask) != 0; -+} -+ -+/** @brief Return whether the signal is active. -+ * @return true iff the signal is currently active. -+ */ -+inline -+NotifierSignal::operator unspecified_bool_type() const -+{ -+ return active() ? &NotifierSignal::active : 0; -+} -+ -+/** @brief Return whether the signal is idle. -+ * @return true iff the signal is idle, i.e. it will never be active. -+ */ -+inline bool -+NotifierSignal::idle() const -+{ -+ return !_mask; -+} -+ -+/** @brief Return whether the signal is busy. -+ * @return true iff the signal is busy, i.e. it will always be active. -+ * -+ * @note An overderived_signal() is busy(), but a busy_signal() is not -+ * overderived(). -+ */ -+inline bool -+NotifierSignal::busy() const -+{ -+ return (_value == &static_value && (_mask & TRUE_MASK)); -+} -+ -+/** @brief Return whether the signal is overderived. -+ * @return true iff the signal equals overderived_signal(). -+ * -+ * @note An overderived_signal() is busy(), but a busy_signal() is not -+ * overderived(). -+ */ -+inline bool -+NotifierSignal::overderived() const -+{ -+ return (_value == &static_value && (_mask & OVERDERIVED_MASK)); -+} -+ -+/** @brief Return whether the signal is initialized. -+ * @return true iff the signal doesn't equal uninitialized_signal(). -+ */ -+inline bool -+NotifierSignal::initialized() const -+{ -+ return (_value != &static_value || !(_mask & UNINITIALIZED_MASK)); -+} -+ -+/** @brief Set whether the signal is active. -+ * @param active true iff the signal is active -+ * -+ * Use this function to set whether a basic signal is active. -+ * -+ * It is illegal to call set_active() on derived, idle, busy, or overderived -+ * signals. Some of these actions may cause an assertion failure. -+ */ -+inline void -+NotifierSignal::set_active(bool active) -+{ -+ assert(_value != &static_value); -+ if (active) -+ *_value |= _mask; -+ else -+ *_value &= ~_mask; -+} -+ -+/** @relates NotifierSignal -+ * @brief Compare two NotifierSignals for equality. -+ * -+ * Returns true iff the two NotifierSignals are the same -- i.e., they combine -+ * information about exactly the same sets of basic signals. -+ * -+ * All idle() signals compare equal. busy_signal() and overderived_signal() -+ * do not compare equal, however. -+ */ -+inline bool -+operator==(const NotifierSignal& a, const NotifierSignal& b) -+{ -+ return (a._mask == b._mask && (a._value == b._value || a._mask == 0)); -+} -+ -+/** @relates NotifierSignal -+ * @brief Compare two NotifierSignals for inequality. -+ * -+ * Returns true iff !(@a a == @a b). -+ */ -+inline bool -+operator!=(const NotifierSignal& a, const NotifierSignal& b) -+{ -+ return !(a == b); -+} -+ -+/** @relates NotifierSignal -+ * @brief Return a derived signal. -+ * -+ * Returns a derived signal that combines information from its arguments. The -+ * result will be active whenever @a a and/or @a b is active. If the -+ * combination of @a a and @a b is too complex to represent, returns an -+ * overderived signal; this trivially follows the invariant since it is always -+ * active. -+ * -+ * Signal derivation is commutative and associative. The following special -+ * combinations are worth remembering: -+ * -+ * - An idle() signal plus any other signal @a a equals @a a. Thus, -+ * idle_signal() is the identity for signal derivation. -+ * - A busy() signal plus any other signal is busy(). Thus, busy_signal() -+ * is the "zero element" for signal derivation. -+ * -+ * @sa NotifierSignal::operator+= -+ */ -+inline NotifierSignal -+operator+(NotifierSignal a, const NotifierSignal& b) -+{ -+ return a += b; -+} -+ -+/** @brief Constructs a Notifier. -+ * @param search_op controls notifier path search -+ * -+ * This function constructs a Notifier object. The Notifier's associated -+ * NotifierSignal is initially idle; it becomes associated with a signal after -+ * initialize() is called. -+ * -+ * The @a search_op argument controls path search. The rest of this entry -+ * describes it further. -+ * -+ * Elements interested in notification generally search for Notifier objects -+ * along all possible packet paths upstream (or downstream) of one of their -+ * ports. When a Notifier is found along a path, further searching along that -+ * path is cut off, so only the closest Notifiers are found. Sometimes, -+ * however, it makes more sense to continue searching for more Notifiers. The -+ * correct behavior is Notifier-specific, and is controlled by this method. -+ * When the search encounters a Notifier, it consults the Notifier's @a -+ * search_op variable supplied to the constructor. It should equal one of -+ * three SearchOp constants, which correspond to the following behavior: -+ * -+ *
-+ *
SEARCH_STOP
-+ *
Stop searching along this path. This is the default.
-+ *
SEARCH_CONTINUE
-+ *
Continue searching along this path.
-+ *
SEARCH_CONTINUE_WAKE
-+ *
Continue searching along this path, but any further Notifiers should -+ * only be used for adding and removing listeners; ignore their NotifierSignal -+ * objects. This operation is useful, for example, for schedulers that store -+ * packets temporarily. Such schedulers provide their own NotifierSignal, -+ * since the scheduler may still hold a packet even when all upstream sources -+ * are empty, but since they aren't packet sources, they don't know when -+ * new packets arrive and can't wake up sleeping listeners. During -+ * initialization, such schedulers should call Notifier::upstream_empty_signal, -+ * passing their own Notifier as the fourth argument. This will ensure that -+ * their signal is turned on appropriately whenever an upstream queue becomes -+ * nonempty.
-+ *
-+ */ -+inline -+Notifier::Notifier(SearchOp search_op) -+ : _signal(NotifierSignal::uninitialized_signal()), _search_op(search_op) -+{ -+} -+ -+/** @brief Constructs a Notifier associated with a given signal. -+ * @param signal the associated NotifierSignal -+ * @param search_op controls notifier path search -+ * -+ * This function constructs a Notifier object associated with a specific -+ * NotifierSignal, such as NotifierSignal::idle_signal(). Calling -+ * initialize() on this Notifier will not change the associated -+ * NotifierSignal. The @a search_op argument is as in -+ * Notifier::Notifier(SearchOp), above. -+ */ -+inline -+Notifier::Notifier(const NotifierSignal &signal, SearchOp search_op) -+ : _signal(signal), _search_op(search_op) -+{ -+} -+ -+/** @brief Return this Notifier's associated NotifierSignal. -+ * -+ * Every Notifier object corresponds to one NotifierSignal; this method -+ * returns it. The signal is @link NotifierSignal::idle idle() @endlink -+ * before initialize() is called. -+ */ -+inline const NotifierSignal & -+Notifier::signal() const -+{ -+ return _signal; -+} -+ -+/** @brief Return this Notifier's search operation. -+ * -+ * @sa Notifier() for a detailed explanation of search operations. -+ */ -+inline Notifier::SearchOp -+Notifier::search_op() const -+{ -+ return _search_op; -+} -+ -+/** @brief Returns whether the associated signal is active. -+ * -+ * Same as signal().active(). -+ */ -+inline bool -+Notifier::active() const -+{ -+ return _signal.active(); -+} -+ -+/** @brief Sets the associated signal's activity. -+ * @param active true iff the signal should be active -+ */ -+inline void -+Notifier::set_active(bool active) -+{ -+ _signal.set_active(active); -+} -+ -+/** @brief Sets the associated signal to active. -+ * @sa set_active -+ */ -+inline void -+Notifier::wake() -+{ -+ set_active(true); -+} -+ -+/** @brief Sets the associated signal to inactive. -+ * @sa set_active -+ */ -+inline void -+Notifier::sleep() -+{ -+ set_active(false); -+} -+ -+/** @brief Sets the associated signal's activity, possibly scheduling any -+ * listener tasks. -+ * @param active true iff the signal should be active -+ * @param schedule if true, wake up listener tasks -+ * -+ * If @a active and @a schedule are both true, and the signal was previously -+ * inactive, then any listener Tasks are scheduled with Task::reschedule(). -+ * -+ * @sa wake, sleep, add_listener -+ */ -+inline void -+ActiveNotifier::set_active(bool active, bool schedule) -+{ -+ if (active != Notifier::active()) { -+ // 2007.Sep.6: Perhaps there was a race condition here. Make sure -+ // that we set the notifier to active BEFORE rescheduling downstream -+ // tasks. This is because, in a multithreaded environment, a task we -+ // reschedule might run BEFORE we set the notifier; after which it -+ // would go to sleep forever. -+ Notifier::set_active(active); -+ -+ if (active && schedule) { -+ if (_listener1) -+ _listener1->reschedule(); -+ else if (task_or_signal_t *tos = _listeners) { -+ for (; tos->t; tos++) -+ tos->t->reschedule(); -+ for (tos++; tos->s; tos++) -+ tos->s->set_active(true); -+ } -+ } -+ } -+} -+ -+/** @brief Sets the associated signal to active and schedules any listener -+ * tasks. -+ * -+ * If the signal was previously inactive, then any listener Tasks are -+ * scheduled with Task::reschedule(). -+ * -+ * @sa set_active, add_listener -+ */ -+inline void -+ActiveNotifier::wake() -+{ -+ set_active(true, true); -+} -+ -+/** @brief Sets the associated signal to inactive. -+ * @sa set_active -+ */ -+inline void -+ActiveNotifier::sleep() -+{ -+ set_active(false, true); -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/package.hh click-1.6.0-27/inst/include/click/package.hh ---- click-1.6.0/inst/include/click/package.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/package.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,28 @@ -+#ifndef CLICK_PACKAGE_HH -+#define CLICK_PACKAGE_HH -+#include -+#include -+CLICK_DECLS -+#ifndef CLICK_TOOL -+class Element; -+#endif -+CLICK_ENDDECLS -+ -+extern "C" { -+ -+void click_provide(const char *); -+void click_unprovide(const char *); -+bool click_has_provision(const char *); -+void click_public_packages(CLICK_NAME(Vector) &); -+ -+#if CLICK_LINUXMODULE -+int click_add_element_type(const char *element_name, CLICK_NAME(Element) *(*factory)(uintptr_t thunk), uintptr_t thunk, struct module *); -+void click_remove_element_type(int); -+#elif !CLICK_TOOL -+int click_add_element_type(const char *element_name, CLICK_NAME(Element) *(*factory)(uintptr_t thunk), uintptr_t thunk); -+void click_remove_element_type(int); -+#endif -+ -+} -+ -+#endif -diff -Nurb click-1.6.0/inst/include/click/packet.hh click-1.6.0-27/inst/include/click/packet.hh ---- click-1.6.0/inst/include/click/packet.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/packet.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,1171 @@ -+// -*- related-file-name: "../../lib/packet.cc" -*- -+#ifndef CLICK_PACKET_HH -+#define CLICK_PACKET_HH -+#include -+#include -+#include -+#include -+#if CLICK_LINUXMODULE -+# include -+#else -+# include -+#endif -+struct click_ether; -+struct click_ip; -+struct click_icmp; -+struct click_ip6; -+struct click_tcp; -+struct click_udp; -+ -+#if CLICK_NS -+# include -+#endif -+ -+ -+CLICK_DECLS -+ -+class IP6Address; -+class WritablePacket; -+ -+class Packet { public: -+ -+ // PACKET CREATION -+ enum { DEFAULT_HEADROOM = 28, MIN_BUFFER_LENGTH = 64 }; -+ -+ static WritablePacket *make(uint32_t); -+ static WritablePacket *make(const char *, uint32_t); -+ static WritablePacket *make(const unsigned char *, uint32_t); -+ static WritablePacket *make(uint32_t, const unsigned char *, uint32_t, uint32_t); -+ -+#if CLICK_LINUXMODULE -+ // Packet::make(sk_buff *) wraps a Packet around an existing sk_buff. -+ // Packet now owns the sk_buff (ie we don't increment skb->users). -+ static Packet *make(struct sk_buff *); -+ struct sk_buff *skb() { return (struct sk_buff *)this; } -+ const struct sk_buff *skb() const { return (const struct sk_buff*)this; } -+#elif CLICK_BSDMODULE -+ // Packet::make(mbuf *) wraps a Packet around an existing mbuf. -+ // Packet now owns the mbuf. -+ static Packet *make(struct mbuf *); -+ struct mbuf *m() { return _m; } -+ const struct mbuf *m() const { return (const struct mbuf *)_m; } -+ struct mbuf *steal_m(); -+#else /* User-space */ -+ static WritablePacket *make(unsigned char *, uint32_t, void (*destructor)(unsigned char *, size_t)); -+#endif -+ -+ inline void kill(); -+ -+ inline bool shared() const; -+ Packet *clone(); -+ WritablePacket *uniqueify(); -+ -+ inline const unsigned char *data() const; -+ inline const unsigned char *end_data() const; -+ inline uint32_t length() const; -+ inline uint32_t headroom() const; -+ inline uint32_t tailroom() const; -+ inline const unsigned char *buffer() const; -+ inline const unsigned char *end_buffer() const; -+ inline uint32_t buffer_length() const; -+ -+ WritablePacket *push(uint32_t nb); // Add more space before packet. -+ WritablePacket *push_mac_header(uint32_t nb); -+ Packet *nonunique_push(uint32_t nb); -+ void pull(uint32_t nb); // Get rid of initial bytes. -+ WritablePacket *put(uint32_t nb); // Add bytes to end of pkt. -+ Packet *nonunique_put(uint32_t nb); -+ void take(uint32_t nb); // Delete bytes from end of pkt. -+ -+ Packet *shift_data(int offset, bool free_on_failure = true); -+#if CLICK_USERLEVEL -+ inline void shrink_data(const unsigned char *, uint32_t length); -+ inline void change_headroom_and_length(uint32_t headroom, uint32_t length); -+#endif -+ -+ // HEADER ANNOTATIONS -+ inline const unsigned char *mac_header() const; -+ inline void set_mac_header(const unsigned char *); -+ inline void set_mac_header(const unsigned char *, uint32_t); -+ inline int mac_header_offset() const; -+ inline uint32_t mac_header_length() const; -+ inline int mac_length() const; -+ -+ inline const unsigned char *network_header() const; -+ inline void set_network_header(const unsigned char *, uint32_t); -+ inline void set_network_header_length(uint32_t); -+ inline int network_header_offset() const; -+ inline uint32_t network_header_length() const; -+ inline int network_length() const; -+ -+ inline const unsigned char *transport_header() const; -+ inline int transport_header_offset() const; -+ inline int transport_length() const; -+ -+ // CONVENIENCE HEADER ANNOTATIONS -+ inline const click_ether *ether_header() const; -+ inline void set_ether_header(const click_ether *); -+ -+ inline const click_ip *ip_header() const; -+ inline void set_ip_header(const click_ip *, uint32_t); -+ inline int ip_header_offset() const; -+ inline uint32_t ip_header_length() const; -+ -+ inline const click_ip6 *ip6_header() const; -+ inline void set_ip6_header(const click_ip6 *); -+ inline void set_ip6_header(const click_ip6 *, uint32_t); -+ inline int ip6_header_offset() const; -+ inline uint32_t ip6_header_length() const; -+ -+ inline const click_icmp *icmp_header() const; -+ inline const click_tcp *tcp_header() const; -+ inline const click_udp *udp_header() const; -+ -+ // LINKS -+ inline Packet *next() const; -+ inline Packet *&next(); -+ inline void set_next(Packet *p); -+ -+ // ANNOTATIONS -+ -+ private: -+ struct Anno; -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ const Anno *anno() const { return (const Anno *)skb()->cb; } -+ Anno *anno() { return (Anno *)skb()->cb; } -+#else /* User-space and BSD kernel module */ -+ const Anno *anno() const { return (const Anno *)_cb; } -+ Anno *anno() { return (Anno *)_cb; } -+#endif -+ public: -+ -+ enum PacketType { // must agree with if_packet.h -+ HOST = 0, BROADCAST = 1, MULTICAST = 2, OTHERHOST = 3, OUTGOING = 4, -+ LOOPBACK = 5, FASTROUTE = 6 -+ }; -+ -+ enum { ADDR_ANNO_SIZE = 16 }; -+ -+ uint8_t *addr_anno() { return anno()->addr.c; } -+ const uint8_t *addr_anno() const { return anno()->addr.c; } -+ IPAddress dst_ip_anno() const; -+ void set_dst_ip_anno(IPAddress); -+ const IP6Address &dst_ip6_anno() const; -+ void set_dst_ip6_anno(const IP6Address &); -+ -+ inline const Timestamp ×tamp_anno() const; -+ inline Timestamp ×tamp_anno(); -+ inline void set_timestamp_anno(const Timestamp &); -+ -+ inline net_device *device_anno() const; -+ inline void set_device_anno(net_device *); -+ -+ inline PacketType packet_type_anno() const; -+ inline void set_packet_type_anno(PacketType); -+ -+#if CLICK_LINUXMODULE -+# ifdef HAVE_INT64_TYPES -+ uint64_t perfctr_anno() const { return anno()->perfctr; } -+ void set_perfctr_anno(uint64_t pc) { anno()->perfctr = pc; } -+# endif -+ -+#else /* User-space and BSD kernel module */ -+ -+#if CLICK_NS -+ class SimPacketinfoWrapper { -+ public: -+ simclick_simpacketinfo _pinfo; -+ SimPacketinfoWrapper() { -+ // The uninitialized value for the simulator packet data can't be -+ // all zeros (0 is a valid packet id) or random junk out of memory -+ // since the simulator will look at this info to see if the packet -+ // was originally generated by it. Accidental collisions with other -+ // packet IDs or bogus packet IDs can cause weird things to happen. So we -+ // set it to all -1 here to keep the simulator from getting confused. -+ memset(&_pinfo,-1,sizeof(_pinfo)); -+ } -+ }; -+ simclick_simpacketinfo* get_sim_packetinfo() { -+ return &(_sim_packetinfo._pinfo); -+ } -+ void set_sim_packetinfo(simclick_simpacketinfo* pinfo) { -+ _sim_packetinfo._pinfo = *pinfo; -+ } -+#endif -+#endif -+ -+ enum { USER_ANNO_SIZE = 24, -+ USER_ANNO_US_SIZE = 12, -+ USER_ANNO_S_SIZE = 12, -+ USER_ANNO_U_SIZE = 6, -+ USER_ANNO_I_SIZE = 6 }; -+ -+ uint8_t user_anno_c(int i) const { return anno()->user.c[i]; } -+ void set_user_anno_c(int i, uint8_t v) { anno()->user.c[i] = v; } -+ uint16_t user_anno_us(int i) const { return anno()->user.us[i]; } -+ void set_user_anno_us(int i, uint16_t v) { anno()->user.us[i] = v; } -+ int16_t user_anno_s(int i) const { return anno()->user.us[i]; } -+ void set_user_anno_s(int i, int16_t v) { anno()->user.s[i] = v; } -+ uint32_t user_anno_u(int i) const { return anno()->user.u[i]; } -+ void set_user_anno_u(int i, uint32_t v) { anno()->user.u[i] = v; } -+ int32_t user_anno_i(int i) const { return anno()->user.i[i]; } -+ void set_user_anno_i(int i, int32_t v) { anno()->user.i[i] = v; } -+ -+ const uint8_t *all_user_anno() const { return &anno()->user.c[0]; } -+ uint8_t *all_user_anno() { return &anno()->user.c[0]; } -+ const uint32_t *all_user_anno_u() const { return &anno()->user.u[0]; } -+ uint32_t *all_user_anno_u() { return &anno()->user.u[0]; } -+ -+ void clear_annotations(); -+ void copy_annotations(const Packet *); -+ -+ inline const unsigned char *buffer_data() const CLICK_DEPRECATED; -+ -+ private: -+ -+ // Anno must fit in sk_buff's char cb[48]. -+ struct Anno { -+ union { -+ char ch[ADDR_ANNO_SIZE]; -+ uint8_t c[ADDR_ANNO_SIZE]; -+ uint32_t ip4; -+ } addr; -+ -+ union { -+ uint8_t c[USER_ANNO_SIZE]; -+ uint16_t us[USER_ANNO_US_SIZE]; -+ int16_t s[USER_ANNO_S_SIZE]; -+ uint32_t u[USER_ANNO_U_SIZE]; -+ int32_t i[USER_ANNO_I_SIZE]; -+ } user; -+ // flag allocations: see packet_anno.hh -+ -+#if (CLICK_LINUXMODULE || CLICK_BSDMODULE) && defined(HAVE_INT64_TYPES) -+ uint64_t perfctr; -+#endif -+ }; -+ -+#if !CLICK_LINUXMODULE -+ // User-space and BSD kernel module implementations. -+ atomic_uint32_t _use_count; -+ Packet *_data_packet; -+ /* mimic Linux sk_buff */ -+ unsigned char *_head; /* start of allocated buffer */ -+ unsigned char *_data; /* where the packet starts */ -+ unsigned char *_tail; /* one beyond end of packet */ -+ unsigned char *_end; /* one beyond end of allocated buffer */ -+# if CLICK_USERLEVEL -+ void (*_destructor)(unsigned char *, size_t); -+# endif -+ unsigned char _cb[48]; -+ unsigned char *_mac; -+ unsigned char *_nh; -+ unsigned char *_h; -+ PacketType _pkt_type; -+ Timestamp _timestamp; -+# if CLICK_BSDMODULE -+ struct mbuf *_m; -+# endif -+ Packet *_next; -+# if CLICK_NS -+ SimPacketinfoWrapper _sim_packetinfo; -+# endif -+#endif -+ -+ Packet(); -+ Packet(const Packet &); -+ ~Packet(); -+ Packet &operator=(const Packet &); -+ -+#if !CLICK_LINUXMODULE -+ Packet(int, int, int) { } -+ static WritablePacket *make(int, int, int); -+ bool alloc_data(uint32_t, uint32_t, uint32_t); -+#endif -+#if CLICK_BSDMODULE -+ static void assimilate_mbuf(Packet *p); -+ void assimilate_mbuf(); -+#endif -+ -+ inline void shift_header_annotations(int32_t shift); -+ WritablePacket *expensive_uniqueify(int32_t extra_headroom, int32_t extra_tailroom, bool free_on_failure); -+ WritablePacket *expensive_push(uint32_t nbytes); -+ WritablePacket *expensive_put(uint32_t nbytes); -+ -+ friend class WritablePacket; -+ -+}; -+ -+ -+class WritablePacket : public Packet { public: -+ -+ inline unsigned char *data() const; -+ inline unsigned char *end_data() const; -+ inline unsigned char *buffer() const; -+ inline unsigned char *end_buffer() const; -+ inline unsigned char *mac_header() const; -+ inline click_ether *ether_header() const; -+ inline unsigned char *network_header() const; -+ inline click_ip *ip_header() const; -+ inline click_ip6 *ip6_header() const; -+ inline unsigned char *transport_header() const; -+ inline click_icmp *icmp_header() const; -+ inline click_tcp *tcp_header() const; -+ inline click_udp *udp_header() const; -+ -+ inline unsigned char *buffer_data() const CLICK_DEPRECATED; -+ -+ private: -+ -+ WritablePacket() { } -+ WritablePacket(const Packet &) { } -+ ~WritablePacket() { } -+ -+ friend class Packet; -+ -+}; -+ -+ -+ -+inline const unsigned char * -+Packet::data() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->data; -+#else -+ return _data; -+#endif -+} -+ -+inline const unsigned char * -+Packet::end_data() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->tail; -+#else -+ return _tail; -+#endif -+} -+ -+inline uint32_t -+Packet::length() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->len; -+#else -+ return _tail - _data; -+#endif -+} -+ -+inline uint32_t -+Packet::headroom() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->data - skb()->head; -+#else -+ return _data - _head; -+#endif -+} -+ -+inline uint32_t -+Packet::tailroom() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->end - skb()->tail; -+#else -+ return _end - _tail; -+#endif -+} -+ -+inline const unsigned char * -+Packet::buffer() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->head; -+#else -+ return _head; -+#endif -+} -+ -+inline const unsigned char * -+Packet::end_buffer() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->end; -+#else -+ return _end; -+#endif -+} -+ -+inline uint32_t -+Packet::buffer_length() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->end - skb()->head; -+#else -+ return _end - _head; -+#endif -+} -+ -+inline const unsigned char * -+Packet::buffer_data() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->head; -+#else -+ return _head; -+#endif -+} -+ -+ -+inline Packet * -+Packet::next() const -+{ -+#if CLICK_LINUXMODULE -+ return (Packet *)(skb()->next); -+#else -+ return _next; -+#endif -+} -+ -+inline Packet *& -+Packet::next() -+{ -+#if CLICK_LINUXMODULE -+ return (Packet *&)(skb()->next); -+#else -+ return _next; -+#endif -+} -+ -+inline void -+Packet::set_next(Packet *p) -+{ -+#if CLICK_LINUXMODULE -+ skb()->next = p->skb(); -+#else -+ _next = p; -+#endif -+} -+ -+inline const unsigned char * -+Packet::mac_header() const -+{ -+#if CLICK_LINUXMODULE -+ return skb_mac_header(skb()); -+#else -+ return _mac; -+#endif -+} -+ -+inline const unsigned char * -+Packet::network_header() const -+{ -+#if CLICK_LINUXMODULE -+ return skb_network_header(skb()); -+#else -+ return _nh; -+#endif -+} -+ -+inline const unsigned char * -+Packet::transport_header() const -+{ -+#if CLICK_LINUXMODULE -+ return skb_transport_header(skb()); -+#else -+ return _h; -+#endif -+} -+ -+inline const click_ether * -+Packet::ether_header() const -+{ -+ return reinterpret_cast(mac_header()); -+} -+ -+inline const click_ip * -+Packet::ip_header() const -+{ -+ return reinterpret_cast(network_header()); -+} -+ -+inline const click_ip6 * -+Packet::ip6_header() const -+{ -+ return reinterpret_cast(network_header()); -+} -+ -+inline const click_icmp * -+Packet::icmp_header() const -+{ -+ return reinterpret_cast(transport_header()); -+} -+ -+inline const click_tcp * -+Packet::tcp_header() const -+{ -+ return reinterpret_cast(transport_header()); -+} -+ -+inline const click_udp * -+Packet::udp_header() const -+{ -+ return reinterpret_cast(transport_header()); -+} -+ -+inline int -+Packet::mac_length() const -+{ -+ return end_data() - mac_header(); -+} -+ -+inline int -+Packet::network_length() const -+{ -+ return end_data() - network_header(); -+} -+ -+inline int -+Packet::transport_length() const -+{ -+ return end_data() - transport_header(); -+} -+ -+inline const Timestamp & -+Packet::timestamp_anno() const -+{ -+#if CLICK_LINUXMODULE -+# if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 13) -+ return *(const Timestamp *) &skb()->stamp; -+# else -+ return *(const Timestamp *) &skb()->tstamp; -+# endif -+#else -+ return _timestamp; -+#endif -+} -+ -+inline Timestamp & -+Packet::timestamp_anno() -+{ -+#if CLICK_LINUXMODULE -+# if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 13) -+ return *(Timestamp *) &skb()->stamp; -+# else -+ return *(Timestamp *) &skb()->tstamp; -+# endif -+#else -+ return _timestamp; -+#endif -+} -+ -+inline void -+Packet::set_timestamp_anno(const Timestamp ×tamp) -+{ -+#if CLICK_LINUXMODULE -+# if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 13) -+ memcpy(&skb()->stamp, ×tamp, 8); -+# else -+ memcpy(&skb()->tstamp, ×tamp, 8); -+# endif -+#else -+ _timestamp = timestamp; -+#endif -+} -+ -+inline net_device * -+Packet::device_anno() const -+{ -+#if CLICK_LINUXMODULE -+ return skb()->dev; -+#elif CLICK_BSDMODULE -+ if (m()) -+ return m()->m_pkthdr.rcvif; -+ else -+ return 0; -+#else -+ return 0; -+#endif -+} -+ -+inline void -+Packet::set_device_anno(net_device *dev) -+{ -+#if CLICK_LINUXMODULE -+ skb()->dev = dev; -+#elif CLICK_BSDMODULE -+ if (m()) -+ m()->m_pkthdr.rcvif = dev; -+#else -+ (void) dev; -+#endif -+} -+ -+inline Packet::PacketType -+Packet::packet_type_anno() const -+{ -+#if CLICK_LINUXMODULE -+ return (PacketType)(skb()->pkt_type & PACKET_TYPE_MASK); -+#else -+ return _pkt_type; -+#endif -+} -+ -+inline void -+Packet::set_packet_type_anno(PacketType p) -+{ -+#if CLICK_LINUXMODULE -+ skb()->pkt_type = (skb()->pkt_type & PACKET_CLEAN) | p; -+#else -+ _pkt_type = p; -+#endif -+} -+ -+inline WritablePacket * -+Packet::make(uint32_t len) -+{ -+ return make(DEFAULT_HEADROOM, (const unsigned char *)0, len, 0); -+} -+ -+inline WritablePacket * -+Packet::make(const char *s, uint32_t len) -+{ -+ return make(DEFAULT_HEADROOM, (const unsigned char *)s, len, 0); -+} -+ -+inline WritablePacket * -+Packet::make(const unsigned char *s, uint32_t len) -+{ -+ return make(DEFAULT_HEADROOM, (const unsigned char *)s, len, 0); -+} -+ -+#if CLICK_LINUXMODULE -+inline Packet * -+Packet::make(struct sk_buff *skb) -+{ -+ if (atomic_read(&skb->users) == 1) { -+ skb_orphan(skb); -+ return reinterpret_cast(skb); -+ } else { -+ Packet *p = reinterpret_cast(skb_clone(skb, GFP_ATOMIC)); -+ atomic_dec(&skb->users); -+ return p; -+ } -+} -+#endif -+ -+ -+inline void -+Packet::kill() -+{ -+#if CLICK_LINUXMODULE -+ struct sk_buff *b = skb(); -+ b->next = b->prev = 0; -+# if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 15) -+ b->list = 0; -+# endif -+ skbmgr_recycle_skbs(b); -+#else -+ if (_use_count.dec_and_test()) -+ delete this; -+#endif -+} -+ -+ -+#if CLICK_BSDMODULE /* BSD kernel module */ -+inline void -+Packet::assimilate_mbuf(Packet *p) -+{ -+ struct mbuf *m = p->m(); -+ -+ if (!m) return; -+ -+ p->_head = (unsigned char *) -+ (m->m_flags & M_EXT ? m->m_ext.ext_buf : -+ m->m_flags & M_PKTHDR ? m->m_pktdat : -+ m->m_dat); -+ p->_data = (unsigned char *)m->m_data; -+ p->_tail = (unsigned char *)(m->m_data + m->m_len); -+ p->_end = p->_head + ( -+ m->m_flags & M_EXT ? MCLBYTES : -+ m->m_flags & M_PKTHDR ? MHLEN : -+ MLEN); -+} -+ -+inline void -+Packet::assimilate_mbuf() -+{ -+ assimilate_mbuf(this); -+} -+ -+inline Packet * -+Packet::make(struct mbuf *m) -+{ -+ if (!(m->m_flags & M_PKTHDR)) -+ panic("trying to construct Packet from a non-packet mbuf"); -+ -+ Packet *p = new Packet; -+ if (m->m_pkthdr.len != m->m_len) { -+ /* click needs contiguous data */ -+ // click_chatter("m_pulldown, Click needs contiguous data"); -+ -+ if (m_pulldown(m, 0, m->m_pkthdr.len, NULL) == NULL) -+ panic("m_pulldown failed"); -+ } -+ p->_m = m; -+ assimilate_mbuf(p); -+ -+ return p; -+} -+#endif -+ -+inline bool -+Packet::shared() const -+{ -+#if CLICK_LINUXMODULE -+ return skb_cloned(const_cast(skb())); -+#else -+ return (_data_packet || _use_count > 1); -+#endif -+} -+ -+inline WritablePacket * -+Packet::uniqueify() -+{ -+ if (!shared()) -+ return static_cast(this); -+ else -+ return expensive_uniqueify(0, 0, true); -+} -+ -+inline WritablePacket * -+Packet::push(uint32_t nbytes) -+{ -+ if (headroom() >= nbytes && !shared()) { -+ WritablePacket *q = (WritablePacket *)this; -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ __skb_push(q->skb(), nbytes); -+#else /* User-space and BSD kernel module */ -+ q->_data -= nbytes; -+# if CLICK_BSDMODULE -+ q->m()->m_data -= nbytes; -+ q->m()->m_len += nbytes; -+ q->m()->m_pkthdr.len += nbytes; -+# endif -+#endif -+ return q; -+ } else -+ return expensive_push(nbytes); -+} -+ -+inline Packet * -+Packet::nonunique_push(uint32_t nbytes) -+{ -+ if (headroom() >= nbytes) { -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ __skb_push(skb(), nbytes); -+#else /* User-space and BSD kernel module */ -+ _data -= nbytes; -+# if CLICK_BSDMODULE -+ m()->m_data -= nbytes; -+ m()->m_len += nbytes; -+ m()->m_pkthdr.len += nbytes; -+# endif -+#endif -+ return this; -+ } else -+ return expensive_push(nbytes); -+} -+ -+/* Get rid of some bytes at the start of a packet */ -+inline void -+Packet::pull(uint32_t nbytes) -+{ -+ if (nbytes > length()) { -+ click_chatter("Packet::pull %d > length %d\n", nbytes, length()); -+ nbytes = length(); -+ } -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ __skb_pull(skb(), nbytes); -+#else /* User-space and BSD kernel module */ -+ _data += nbytes; -+# if CLICK_BSDMODULE -+ m()->m_data += nbytes; -+ m()->m_len -= nbytes; -+ m()->m_pkthdr.len -= nbytes; -+# endif -+#endif -+} -+ -+inline WritablePacket * -+Packet::put(uint32_t nbytes) -+{ -+ if (tailroom() >= nbytes && !shared()) { -+ WritablePacket *q = (WritablePacket *)this; -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ __skb_put(q->skb(), nbytes); -+#else /* User-space and BSD kernel module */ -+ q->_tail += nbytes; -+# if CLICK_BSDMODULE -+ q->m()->m_len += nbytes; -+ q->m()->m_pkthdr.len += nbytes; -+# endif -+#endif -+ return q; -+ } else -+ return expensive_put(nbytes); -+} -+ -+inline Packet * -+Packet::nonunique_put(uint32_t nbytes) -+{ -+ if (tailroom() >= nbytes) { -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ __skb_put(skb(), nbytes); -+#else /* User-space and BSD kernel module */ -+ _tail += nbytes; -+# if CLICK_BSDMODULE -+ m()->m_len += nbytes; -+ m()->m_pkthdr.len += nbytes; -+# endif -+#endif -+ return this; -+ } else -+ return expensive_put(nbytes); -+} -+ -+/* Get rid of some bytes at the end of a packet */ -+inline void -+Packet::take(uint32_t nbytes) -+{ -+ if (nbytes > length()) { -+ click_chatter("Packet::take %d > length %d\n", nbytes, length()); -+ nbytes = length(); -+ } -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ skb()->tail -= nbytes; -+ skb()->len -= nbytes; -+#else /* User-space and BSD kernel module */ -+ _tail -= nbytes; -+# if CLICK_BSDMODULE -+ m()->m_len -= nbytes; -+ m()->m_pkthdr.len -= nbytes; -+# endif -+#endif -+} -+ -+#if CLICK_USERLEVEL -+inline void -+Packet::shrink_data(const unsigned char *d, uint32_t length) -+{ -+ assert(_data_packet); -+ if (d >= _head && d + length >= d && d + length <= _end) { -+ _head = _data = const_cast(d); -+ _tail = _end = const_cast(d + length); -+ } -+} -+ -+inline void -+Packet::change_headroom_and_length(uint32_t headroom, uint32_t length) -+{ -+ if (headroom + length <= buffer_length()) { -+ _data = _head + headroom; -+ _tail = _data + length; -+ } -+} -+#endif -+ -+inline const IP6Address & -+Packet::dst_ip6_anno() const -+{ -+ return *reinterpret_cast(anno()->addr.ch); -+} -+ -+inline void -+Packet::set_dst_ip6_anno(const IP6Address &a) -+{ -+ memcpy(anno()->addr.ch, &a, 16); -+} -+ -+inline IPAddress -+Packet::dst_ip_anno() const -+{ -+ return IPAddress(anno()->addr.ip4); -+} -+ -+inline void -+Packet::set_dst_ip_anno(IPAddress a) -+{ -+ anno()->addr.ip4 = a.addr(); -+} -+ -+inline void -+Packet::set_mac_header(const unsigned char *h) -+{ -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ skb()->mac_header = const_cast(h); -+#else /* User-space and BSD kernel module */ -+ _mac = const_cast(h); -+#endif -+} -+ -+inline void -+Packet::set_mac_header(const unsigned char *h, uint32_t len) -+{ -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ skb()->mac_header = const_cast(h); -+ skb()->network_header = const_cast(h) + len; -+#else /* User-space and BSD kernel module */ -+ _mac = const_cast(h); -+ _nh = const_cast(h) + len; -+#endif -+} -+ -+inline void -+Packet::set_ether_header(const click_ether *h) -+{ -+ set_mac_header(reinterpret_cast(h), 14); -+} -+ -+inline WritablePacket * -+Packet::push_mac_header(uint32_t nbytes) -+{ -+ WritablePacket *q; -+ if (headroom() >= nbytes && !shared()) { -+ q = (WritablePacket *)this; -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ __skb_push(q->skb(), nbytes); -+#else /* User-space and BSD kernel module */ -+ q->_data -= nbytes; -+# if CLICK_BSDMODULE -+ q->m()->m_data -= nbytes; -+ q->m()->m_len += nbytes; -+ q->m()->m_pkthdr.len += nbytes; -+# endif -+#endif -+ } else if ((q = expensive_push(nbytes))) -+ /* nada */; -+ else -+ return 0; -+ q->set_mac_header(q->data(), nbytes); -+ return q; -+} -+ -+inline void -+Packet::set_network_header(const unsigned char *h, uint32_t len) -+{ -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ skb()->network_header = const_cast(h); -+ skb()->transport_header = const_cast(h) + len; -+#else /* User-space and BSD kernel module */ -+ _nh = const_cast(h); -+ _h = const_cast(h) + len; -+#endif -+} -+ -+inline void -+Packet::set_network_header_length(uint32_t len) -+{ -+#if CLICK_LINUXMODULE /* Linux kernel module */ -+ skb()->transport_header = skb()->network_header + len; -+#else /* User-space and BSD kernel module */ -+ _h = _nh + len; -+#endif -+} -+ -+inline void -+Packet::set_ip_header(const click_ip *iph, uint32_t len) -+{ -+ set_network_header(reinterpret_cast(iph), len); -+} -+ -+inline void -+Packet::set_ip6_header(const click_ip6 *ip6h, uint32_t len) -+{ -+ set_network_header(reinterpret_cast(ip6h), len); -+} -+ -+inline void -+Packet::set_ip6_header(const click_ip6 *ip6h) -+{ -+ set_ip6_header(ip6h, 40); -+} -+ -+inline int -+Packet::mac_header_offset() const -+{ -+ return mac_header() - data(); -+} -+ -+inline uint32_t -+Packet::mac_header_length() const -+{ -+ return network_header() - mac_header(); -+} -+ -+inline int -+Packet::network_header_offset() const -+{ -+ return network_header() - data(); -+} -+ -+inline uint32_t -+Packet::network_header_length() const -+{ -+ return transport_header() - network_header(); -+} -+ -+inline int -+Packet::ip_header_offset() const -+{ -+ return network_header_offset(); -+} -+ -+inline uint32_t -+Packet::ip_header_length() const -+{ -+ return network_header_length(); -+} -+ -+inline int -+Packet::ip6_header_offset() const -+{ -+ return network_header_offset(); -+} -+ -+inline uint32_t -+Packet::ip6_header_length() const -+{ -+ return network_header_length(); -+} -+ -+inline int -+Packet::transport_header_offset() const -+{ -+ return transport_header() - data(); -+} -+ -+inline void -+Packet::clear_annotations() -+{ -+ memset(anno(), '\0', sizeof(Anno)); -+ set_packet_type_anno(HOST); -+ set_device_anno(0); -+ set_timestamp_anno(Timestamp()); -+ set_mac_header(0); -+ set_network_header(0, 0); -+ set_next(0); -+} -+ -+inline void -+Packet::copy_annotations(const Packet *p) -+{ -+ *anno() = *p->anno(); -+ set_packet_type_anno(p->packet_type_anno()); -+ set_device_anno(p->device_anno()); -+ set_timestamp_anno(p->timestamp_anno()); -+} -+ -+inline void -+Packet::shift_header_annotations(int32_t shift) -+{ -+#if CLICK_USERLEVEL || CLICK_BSDMODULE -+ _mac += (_mac ? shift : 0); -+ _nh += (_nh ? shift : 0); -+ _h += (_h ? shift : 0); -+#else -+ struct sk_buff *mskb = skb(); -+ mskb->mac_header += (mskb->mac_header ? shift : 0); -+ mskb->network_header += (mskb->network_header ? shift : 0); -+ mskb->transport_header += (mskb->transport_header ? shift : 0); -+#endif -+} -+ -+ -+inline unsigned char * -+WritablePacket::data() const -+{ -+ return const_cast(Packet::data()); -+} -+ -+inline unsigned char * -+WritablePacket::end_data() const -+{ -+ return const_cast(Packet::end_data()); -+} -+ -+inline unsigned char * -+WritablePacket::buffer() const -+{ -+ return const_cast(Packet::buffer()); -+} -+ -+inline unsigned char * -+WritablePacket::end_buffer() const -+{ -+ return const_cast(Packet::end_buffer()); -+} -+ -+inline unsigned char * -+WritablePacket::buffer_data() const -+{ -+ return const_cast(Packet::buffer()); -+} -+ -+inline unsigned char * -+WritablePacket::mac_header() const -+{ -+ return const_cast(Packet::mac_header()); -+} -+ -+inline unsigned char * -+WritablePacket::network_header() const -+{ -+ return const_cast(Packet::network_header()); -+} -+ -+inline unsigned char * -+WritablePacket::transport_header() const -+{ -+ return const_cast(Packet::transport_header()); -+} -+ -+inline click_ether * -+WritablePacket::ether_header() const -+{ -+ return const_cast(Packet::ether_header()); -+} -+ -+inline click_ip * -+WritablePacket::ip_header() const -+{ -+ return const_cast(Packet::ip_header()); -+} -+ -+inline click_ip6 * -+WritablePacket::ip6_header() const -+{ -+ return const_cast(Packet::ip6_header()); -+} -+ -+inline click_icmp * -+WritablePacket::icmp_header() const -+{ -+ return const_cast(Packet::icmp_header()); -+} -+ -+inline click_tcp * -+WritablePacket::tcp_header() const -+{ -+ return const_cast(Packet::tcp_header()); -+} -+ -+inline click_udp * -+WritablePacket::udp_header() const -+{ -+ return const_cast(Packet::udp_header()); -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/packet_anno.hh click-1.6.0-27/inst/include/click/packet_anno.hh ---- click-1.6.0/inst/include/click/packet_anno.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/packet_anno.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,61 @@ -+#ifndef CLICK_PACKET_ANNO_HH -+#define CLICK_PACKET_ANNO_HH -+ -+// byte 0 -+#define PAINT_ANNO(p) ((p)->user_anno_c(0)) -+#define SET_PAINT_ANNO(p, v) ((p)->set_user_anno_c(0, (v))) -+#define PAINT_ANNO_OFFSET 0 -+#define PAINT_ANNO_LENGTH 1 -+ -+// byte 1 -+#define ICMP_PARAMPROB_ANNO(p) ((p)->user_anno_c(1)) -+#define SET_ICMP_PARAMPROB_ANNO(p, v) ((p)->set_user_anno_c(1, (v))) -+ -+// byte 3 -+#define FIX_IP_SRC_ANNO(p) ((p)->user_anno_c(3)) -+#define SET_FIX_IP_SRC_ANNO(p, v) ((p)->set_user_anno_c(3, (v))) -+ -+// bytes 4-7 -+#define AGGREGATE_ANNO(p) ((p)->user_anno_u(1)) -+#define SET_AGGREGATE_ANNO(p, v) ((p)->set_user_anno_u(1, (v))) -+ -+#define FWD_RATE_ANNO(p) ((p)->user_anno_i(1)) -+#define SET_FWD_RATE_ANNO(p, v) ((p)->set_user_anno_i(1, (v))) -+ -+#define MISC_IP_ANNO(p) ((p)->user_anno_u(1)) -+#define SET_MISC_IP_ANNO(p, v) ((p)->set_user_anno_i(1, (v).addr())) -+ -+// bytes 8-11 -+#define EXTRA_PACKETS_ANNO(p) ((p)->user_anno_u(2)) -+#define SET_EXTRA_PACKETS_ANNO(p, v) ((p)->set_user_anno_u(2, (v))) -+ -+#define REV_RATE_ANNO(p) ((p)->user_anno_i(2)) -+#define SET_REV_RATE_ANNO(p, v) ((p)->set_user_anno_i(2, (v))) -+ -+// byte 10 -+#define SEND_ERR_ANNO(p) ((p)->user_anno_c(10)) -+#define SET_SEND_ERR_ANNO(p, v) ((p)->set_user_anno_c(10, (v))) -+ -+// byte 11 -+#define GRID_ROUTE_CB_ANNO(p) ((p)->user_anno_c(11)) -+#define SET_GRID_ROUTE_CB_ANNO(p, v) ((p)->set_user_anno_c(11, (v))) -+ -+// bytes 12-15 -+#define EXTRA_LENGTH_ANNO(p) ((p)->user_anno_u(3)) -+#define SET_EXTRA_LENGTH_ANNO(p, v) ((p)->set_user_anno_u(3, (v))) -+ -+// bytes 16-23 -+#define PACKET_NUMBER_ANNO(p, n) ((p)->user_anno_u(4 + (n))) -+#define SET_PACKET_NUMBER_ANNO(p, n, v) ((p)->set_user_anno_u(4 + (n), (v))) -+ -+// bytes 16-23 -+#define FIRST_TIMESTAMP_ANNO(p) (*((Timestamp*) ((p)->all_user_anno_u() + 4))) -+#define SET_FIRST_TIMESTAMP_ANNO(p, v) (*((Timestamp*) ((p)->all_user_anno_u() + 4)) = (v)) -+ -+// bytes 16-23 -+#define IPSEC_SPI_ANNO(p) ((p)->user_anno_u(4)) -+#define SET_IPSEC_SPI_ANNO(p, v) ((p)->set_user_anno_u(4, (v))) -+#define IPSEC_SA_DATA_REFERENCE_ANNO(p) ((p)->user_anno_u(5)) -+#define SET_IPSEC_SA_DATA_REFERENCE_ANNO(p, v) ((p)->set_user_anno_u(5, (v))) -+ -+#endif -diff -Nurb click-1.6.0/inst/include/click/pair.hh click-1.6.0-27/inst/include/click/pair.hh ---- click-1.6.0/inst/include/click/pair.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/pair.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,56 @@ -+// -*- c-basic-offset: 4 -*- -+#ifndef CLICK_PAIR_HH -+#define CLICK_PAIR_HH -+#include -+CLICK_DECLS -+ -+template -+struct Pair { -+ T first; -+ U second; -+ Pair() : first(), second() { } -+ Pair(const T &t, const U &u) : first(t), second(u) { } -+ typedef size_t (Pair::*unspecified_bool_type)() const; -+ inline operator unspecified_bool_type() const; -+ inline size_t hashcode() const; -+}; -+ -+template -+inline Pair::operator unspecified_bool_type() const -+{ -+ return first || second ? &Pair::hashcode : 0; -+} -+ -+template -+inline bool operator==(const Pair &a, const Pair &b) -+{ -+ return a.first == b.first && a.second == b.second; -+} -+ -+template -+inline bool operator!=(const Pair &a, const Pair &b) -+{ -+ return a.first != b.first || a.second != b.second; -+} -+ -+template -+inline bool operator<(const Pair &a, const Pair &b) -+{ -+ return a.first < b.first -+ || (!(b.first < a.first) && a.second < b.second); -+} -+ -+template -+inline size_t Pair::hashcode() const -+{ -+ return (CLICK_NAME(hashcode)(first) << 13) ^ CLICK_NAME(hashcode)(second); -+} -+ -+template -+inline Pair make_pair(const T &t, const U &u) -+{ -+ return Pair(t, u); -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/pathvars.h click-1.6.0-27/inst/include/click/pathvars.h ---- click-1.6.0/inst/include/click/pathvars.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/pathvars.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,39 @@ -+/* include/click/pathvars.h. Generated from pathvars.h.in by configure. */ -+/* Process this file with configure to produce pathvars.h. -*- mode: c -*- */ -+#ifndef CLICK_PATHVARS_H -+#define CLICK_PATHVARS_H -+ -+/* Directory for binaries. */ -+#define CLICK_BINDIR "/d/click/click-1.6.0-27/inst/bin" -+ -+/* Directory for packages and kernel module. */ -+#define CLICK_LIBDIR "/d/click/click-1.6.0-27/inst/lib" -+ -+/* Directory for shared files. */ -+#define CLICK_DATADIR "/d/click/click-1.6.0-27/inst/share/click" -+ -+/* FreeBSD kernel include directory. */ -+#define FREEBSD_INCLUDEDIR "/usr/include" -+ -+/* Define if the BSD kernel module driver was compiled. */ -+/* #undef HAVE_BSDMODULE_DRIVER */ -+ -+/* Define if the Click kernel module should provide clickfs. */ -+#define HAVE_CLICKFS 1 -+ -+/* Define if the expat library is available. */ -+#define HAVE_EXPAT 1 -+ -+/* Define if the Click linuxmodule is compiled for a 2.6 kernel. */ -+#define HAVE_LINUXMODULE_2_6 1 -+ -+/* Define if the Linux kernel module driver was compiled. */ -+#define HAVE_LINUXMODULE_DRIVER 1 -+ -+/* Define if the user-level driver was compiled. */ -+#define HAVE_USERLEVEL_DRIVER 1 -+ -+/* Directory containing Linux sources. */ -+#define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport" -+ -+#endif -diff -Nurb click-1.6.0/inst/include/click/perfctr-i586.hh click-1.6.0-27/inst/include/click/perfctr-i586.hh ---- click-1.6.0/inst/include/click/perfctr-i586.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/perfctr-i586.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,33 @@ -+#ifndef CLICK_PERFCTR_HH -+#define CLICK_PERFCTR_HH -+#ifdef __KERNEL__ -+#include -+#include -+#endif -+ -+#define DCU_MISS_OUTSTANDING 0x48 -+#define INST_RETIRED 0xC0 -+#define IFU_FETCH 0x80 -+#define IFU_FETCH_MISS 0x81 -+#define IFU_MEM_STALL 0x86 -+#define L2_LINES_IN 0x24 -+#define L2_LINES_OUT 0x26 -+#define L2_IFETCH 0x28 | (0xF<<8) -+#define L2_LD 0x29 | (0xF<<8) -+#define L2_LINES_OUTM 0x27 -+#define L2_RQSTS 0x2E | (0xF<<8) -+#define BUS_LOCK_CLOCKS 0x63 -+#define BUS_TRAN_RFO 0x66 -+#define BUS_TRAN_INVAL 0x69 -+#define BUS_TRAN_MEM 0x6F -+ -+#define MSR_OS (1<<17) -+#define MSR_OCCURRENCE (1<<18) -+#define MSR_ENABLE (1<<22) -+#define MSR_FLAGS0 (MSR_OS|MSR_OCCURRENCE|MSR_ENABLE) -+#define MSR_FLAGS1 (MSR_OS|MSR_OCCURRENCE) -+ -+#define MSR_EVNTSEL0 0x186 -+#define MSR_EVNTSEL1 0x187 -+ -+#endif -diff -Nurb click-1.6.0/inst/include/click/router.hh click-1.6.0-27/inst/include/click/router.hh ---- click-1.6.0/inst/include/click/router.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/router.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,699 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/router.cc" -*- -+#ifndef CLICK_ROUTER_HH -+#define CLICK_ROUTER_HH -+#include -+#include -+#include -+#include -+#include -+#if CLICK_NS -+# include -+#endif -+CLICK_DECLS -+class Master; -+class ElementFilter; -+class RouterThread; -+class HashMap_ArenaFactory; -+class NotifierSignal; -+class ThreadSched; -+class Handler; -+class NameInfo; -+ -+class Router { public: -+ -+ /** @name Public Member Functions */ -+ //@{ -+ // MASTER -+ inline Master* master() const; -+ -+ // STATUS -+ inline bool initialized() const; -+ inline bool handlers_ready() const; -+ inline bool running() const; -+ -+ // RUNCOUNT AND RUNCLASS -+ enum { STOP_RUNCOUNT = -2147483647 - 1 }; -+ inline int32_t runcount() const; -+ void adjust_runcount(int32_t delta); -+ void set_runcount(int32_t rc); -+ inline void please_stop_driver(); -+ -+ // ELEMENTS -+ inline const Vector& elements() const; -+ inline int nelements() const; -+ // eindex -1 returns root_element(), other out-of-range indexes return 0 -+ inline Element* element(int eindex) const; -+ inline Element* root_element() const; -+ static Element* element(const Router *router, int eindex); -+ -+ Element* find(const String& name, ErrorHandler* errh = 0) const; -+ Element* find(const String& name, String context, ErrorHandler* errh = 0) const; -+ Element* find(const String& name, Element* context, ErrorHandler* errh = 0) const; -+ -+ int downstream_elements(Element* e, int port, ElementFilter* filter, Vector& result); -+ int upstream_elements(Element* e, int port, ElementFilter* filter, Vector& result); -+ -+ const String& ename(int eindex) const; -+ const String& elandmark(int eindex) const; -+ const String& econfiguration(int eindex) const; -+ void set_econfiguration(int eindex, const String& conf); -+ -+ // HANDLERS -+ enum { FIRST_GLOBAL_HANDLER = 0x40000000 }; -+ static int hindex(const Element* e, const String& hname); -+ static void element_hindexes(const Element* e, Vector& result); -+ -+ // 'const Handler*' results last until that element/handlername modified -+ static const Handler* handler(const Router* router, int hindex); -+ static const Handler* handler(const Element* e, const String& hname); -+ -+ static void add_read_handler(const Element* e, const String& hname, ReadHandlerHook hook, void* thunk); -+ static void add_write_handler(const Element* e, const String& hname, WriteHandlerHook hook, void* thunk); -+ static void set_handler(const Element* e, const String& hname, int mask, HandlerHook hook, void* thunk1 = 0, void* thunk2 = 0); -+ static int change_handler_flags(const Element* e, const String& hname, uint32_t clear_flags, uint32_t set_flags); -+ -+ // ATTACHMENTS AND REQUIREMENTS -+ void* attachment(const String& aname) const; -+ void*& force_attachment(const String& aname); -+ void* set_attachment(const String& aname, void* value); -+ -+ ErrorHandler* chatter_channel(const String& channel_name) const; -+ HashMap_ArenaFactory* arena_factory() const; -+ -+ inline ThreadSched* thread_sched() const; -+ inline void set_thread_sched(ThreadSched* scheduler); -+ inline int initial_home_thread_id(Task* task, bool scheduled) const; -+ -+ inline NameInfo* name_info() const; -+ NameInfo* force_name_info(); -+ -+ // UNPARSING -+ inline const String& configuration_string() const; -+ void unparse(StringAccum& sa, const String& indent = String()) const; -+ void unparse_requirements(StringAccum& sa, const String& indent = String()) const; -+ void unparse_classes(StringAccum& sa, const String& indent = String()) const; -+ void unparse_declarations(StringAccum& sa, const String& indent = String()) const; -+ void unparse_connections(StringAccum& sa, const String& indent = String()) const; -+ -+ String element_ports_string(int eindex) const; -+ //@} -+ -+ // INITIALIZATION -+ /** @name Internal Functions */ -+ //@{ -+ Router(const String& configuration, Master* master); -+ ~Router(); -+ -+ static void static_initialize(); -+ static void static_cleanup(); -+ -+ inline void use(); -+ void unuse(); -+ -+ inline const Vector& requirements() const; -+ void add_requirement(const String& requirement); -+ int add_element(Element* e, const String& name, const String& conf, const String& landmark); -+ int add_connection(int from_idx, int from_port, int to_idx, int to_port); -+#if CLICK_LINUXMODULE -+ int add_module_ref(struct module* module); -+#endif -+ -+ inline Router* hotswap_router() const; -+ void set_hotswap_router(Router* router); -+ -+ int initialize(ErrorHandler* errh); -+ void activate(bool foreground, ErrorHandler* errh); -+ inline void activate(ErrorHandler* errh); -+ -+ int new_notifier_signal(NotifierSignal& signal); -+ //@} -+ -+ /** @cond never */ -+ // Needs to be public for Lexer, etc., but not useful outside -+ struct Hookup { -+ int idx; -+ int port; -+ Hookup() : idx(-1) { } -+ Hookup(int i, int p) : idx(i), port(p) { } -+ }; -+ /** @endcond never */ -+ -+#if CLICK_NS -+ simclick_node_t *simnode() const; -+ int sim_get_ifid(const char* ifname); -+ int sim_listen(int ifid, int element); -+ int sim_if_ready(int ifid); -+ int sim_write(int ifid, int ptype, const unsigned char *, int len, -+ simclick_simpacketinfo *pinfo); -+ int sim_incoming_packet(int ifid, int ptype, const unsigned char *, -+ int len, simclick_simpacketinfo* pinfo); -+ void sim_trace(const char* event); -+ int sim_get_node_id(); -+ int sim_get_next_pkt_id(); -+ -+ protected: -+ Vector *> _listenvecs; -+ Vector* sim_listenvec(int ifid); -+#endif -+ -+ private: -+ -+ enum { -+ ROUTER_NEW, ROUTER_PRECONFIGURE, ROUTER_PREINITIALIZE, -+ ROUTER_LIVE, ROUTER_DEAD // order is important -+ }; -+ enum { -+ RUNNING_DEAD = -2, RUNNING_INACTIVE = -1, RUNNING_PREPARING = 0, -+ RUNNING_BACKGROUND = 1, RUNNING_ACTIVE = 2 -+ }; -+ -+ Master* _master; -+ -+ atomic_uint32_t _runcount; -+ -+ atomic_uint32_t _refcount; -+ -+ Vector _elements; -+ Vector _element_names; -+ Vector _element_configurations; -+ Vector _element_landmarks; -+ Vector _element_configure_order; -+ -+ Vector _hookup_from; -+ Vector _hookup_to; -+ -+ /** @cond never */ -+ struct Gport { -+ Vector e2g; -+ Vector g2e; -+ int size() const { return g2e.size(); } -+ }; -+ /** @endcond never */ -+ Gport _gports[2]; -+ -+ Vector _hookup_gports[2]; -+ -+ Vector _requirements; -+ -+ volatile int _state; -+ bool _have_connections : 1; -+ volatile int _running; -+ -+ Vector _ehandler_first_by_element; -+ Vector _ehandler_to_handler; -+ Vector _ehandler_next; -+ -+ Vector _handler_first_by_name; -+ -+ enum { HANDLER_BUFSIZ = 256 }; -+ Handler** _handler_bufs; -+ int _nhandlers_bufs; -+ int _free_handler; -+ -+ Vector _attachment_names; -+ Vector _attachments; -+ -+ Element* _root_element; -+ String _configuration; -+ -+ enum { NOTIFIER_SIGNALS_CAPACITY = 4096 }; -+ atomic_uint32_t* _notifier_signals; -+ int _n_notifier_signals; -+ HashMap_ArenaFactory* _arena_factory; -+ Router* _hotswap_router; -+ ThreadSched* _thread_sched; -+ mutable NameInfo* _name_info; -+ -+ Router* _next_router; -+ -+#if CLICK_LINUXMODULE -+ Vector _modules; -+#endif -+ -+ Router(const Router&); -+ Router& operator=(const Router&); -+ -+ void remove_hookup(int); -+ void hookup_error(const Hookup&, bool, const char*, ErrorHandler*); -+ int check_hookup_elements(ErrorHandler*); -+ int check_hookup_range(ErrorHandler*); -+ int check_hookup_completeness(ErrorHandler*); -+ -+ int processing_error(const Hookup&, const Hookup&, bool, int, ErrorHandler*); -+ int check_push_and_pull(ErrorHandler*); -+ -+ void make_gports(); -+ int ngports(bool isout) const { return _gports[isout].g2e.size(); } -+ inline int gport(bool isoutput, const Hookup&) const; -+ inline Hookup gport_hookup(bool isoutput, int) const; -+ void gport_list_elements(bool, const Bitvector&, Vector&) const; -+ void make_hookup_gports(); -+ -+ void set_connections(); -+ -+ String context_message(int element_no, const char*) const; -+ int element_lerror(ErrorHandler*, Element*, const char*, ...) const; -+ -+ // private handler methods -+ void initialize_handlers(bool, bool); -+ inline Handler* xhandler(int) const; -+ int find_ehandler(int, const String&, bool allow_star) const; -+ static inline Handler fetch_handler(const Element*, const String&); -+ void store_local_handler(int, const Handler&); -+ static void store_global_handler(const Handler&); -+ static inline void store_handler(const Element*, const Handler&); -+ -+ int global_port_flow(bool forward, Element* first_element, int first_port, ElementFilter* stop_filter, Bitvector& results); -+ -+ // global handlers -+ static String router_read_handler(Element*, void*); -+ -+ /** @cond never */ -+ friend class Master; -+ friend class Task; -+ friend int Element::set_nports(int, int); -+ /** @endcond never */ -+ -+}; -+ -+ -+class Handler { public: -+ -+ enum Flags { -+ OP_READ = 0x001, OP_WRITE = 0x002, -+ READ_PARAM = 0x004, ONE_HOOK = 0x008, -+ SPECIAL_FLAGS = OP_READ | OP_WRITE | READ_PARAM | ONE_HOOK, -+ EXCLUSIVE = 0x010, RAW = 0x020, -+ DRIVER_FLAG_0 = 0x040, DRIVER_FLAG_1 = 0x080, -+ DRIVER_FLAG_2 = 0x100, DRIVER_FLAG_3 = 0x200, -+ USER_FLAG_SHIFT = 10, USER_FLAG_0 = 1 << USER_FLAG_SHIFT -+ }; -+ -+ inline const String &name() const; -+ inline uint32_t flags() const; -+ inline void *thunk1() const; -+ inline void *thunk2() const; -+ -+ inline bool readable() const; -+ inline bool read_param() const; -+ inline bool read_visible() const; -+ inline bool writable() const; -+ inline bool write_visible() const; -+ inline bool visible() const; -+ inline bool exclusive() const; -+ inline bool raw() const; -+ -+ inline String call_read(Element *e, ErrorHandler *errh = 0) const; -+ String call_read(Element *e, const String ¶m, bool raw, -+ ErrorHandler *errh) const; -+ int call_write(const String &value, Element *e, bool raw, -+ ErrorHandler *errh) const; -+ -+ String unparse_name(Element *e) const; -+ static String unparse_name(Element *e, const String &hname); -+ -+ static inline const Handler *blank_handler(); -+ -+ private: -+ -+ String _name; -+ union { -+ HandlerHook h; -+ struct { -+ ReadHandlerHook r; -+ WriteHandlerHook w; -+ } rw; -+ } _hook; -+ void *_thunk1; -+ void *_thunk2; -+ uint32_t _flags; -+ int _use_count; -+ int _next_by_name; -+ -+ static const Handler *the_blank_handler; -+ -+ Handler(const String & = String()); -+ -+ bool compatible(const Handler &) const; -+ -+ friend class Router; -+ -+}; -+ -+/* The largest size a write handler is allowed to have. */ -+#define LARGEST_HANDLER_WRITE 65536 -+ -+ -+inline bool -+operator==(const Router::Hookup& a, const Router::Hookup& b) -+{ -+ return a.idx == b.idx && a.port == b.port; -+} -+ -+inline bool -+operator!=(const Router::Hookup& a, const Router::Hookup& b) -+{ -+ return a.idx != b.idx || a.port != b.port; -+} -+ -+/** @brief Increment the router's reference count. -+ * -+ * Routers are reference counted objects. A Router is created with one -+ * reference, which is held by its Master object. Normally the Router and -+ * all its elements will be deleted when the Master drops this reference, but -+ * you can preserve the Router for longer by adding a reference yourself. */ -+inline void -+Router::use() -+{ -+ _refcount++; -+} -+ -+/** @brief Return true iff the router is currently running. -+ * -+ * A running router has been successfully initialized (so running() implies -+ * initialized()), and has not stopped yet. */ -+inline bool -+Router::running() const -+{ -+ return _running > 0; -+} -+ -+/** @brief Return true iff the router has been successfully initialized. */ -+inline bool -+Router::initialized() const -+{ -+ return _state == ROUTER_LIVE; -+} -+ -+/** @brief Return true iff the router's handlers have been initialized. -+ * -+ * handlers_ready() returns false until each element's -+ * Element::add_handlers() method has been called. This happens after -+ * Element::configure(), but before Element::initialize(). */ -+inline bool -+Router::handlers_ready() const -+{ -+ return _state > ROUTER_PRECONFIGURE; -+} -+ -+/** @brief Returns a vector containing all the router's elements. -+ * @invariant elements()[i] == element(i) for all i in range. */ -+inline const Vector& -+Router::elements() const -+{ -+ return _elements; -+} -+ -+/** @brief Returns the number of elements in the router. */ -+inline int -+Router::nelements() const -+{ -+ return _elements.size(); -+} -+ -+/** @brief Returns the element with index @a eindex. -+ * @param eindex element index, or -1 for root_element() -+ * @invariant If eindex(i) isn't null, then eindex(i)->@link Element::eindex eindex@endlink() == i. -+ * -+ * This function returns the element with index @a eindex. If @a eindex == -+ * -1, returns root_element(). If @a eindex is otherwise out of range, -+ * returns null. */ -+inline Element* -+Router::element(int eindex) const -+{ -+ return element(this, eindex); -+} -+ -+/** @brief Returns this router's root element. -+ * -+ * Every router has a root Element. This element has Element::eindex -1 and -+ * name "". It is not configured or initialized, and doesn't appear in the -+ * configuration; it exists only for convenience, when other Click code needs -+ * to refer to some arbitrary element at the top level of the compound -+ * element hierarchy. */ -+inline Element* -+Router::root_element() const -+{ -+ return _root_element; -+} -+ -+inline const Vector& -+Router::requirements() const -+{ -+ return _requirements; -+} -+ -+inline ThreadSched* -+Router::thread_sched() const -+{ -+ return _thread_sched; -+} -+ -+inline void -+Router::set_thread_sched(ThreadSched* ts) -+{ -+ _thread_sched = ts; -+} -+ -+inline int -+Router::initial_home_thread_id(Task* t, bool scheduled) const -+{ -+ if (!_thread_sched) -+ return ThreadSched::THREAD_UNKNOWN; -+ else -+ return _thread_sched->initial_home_thread_id(t, scheduled); -+} -+ -+inline NameInfo* -+Router::name_info() const -+{ -+ return _name_info; -+} -+ -+/** @brief Returns the Master object for this router. */ -+inline Master* -+Router::master() const -+{ -+ return _master; -+} -+ -+/** @brief Return the router's runcount. -+ * -+ * The runcount is an integer that determines whether the router is running. -+ * A running router has positive runcount. Decrementing the router's runcount -+ * to zero or below will cause the router to stop, although elements like -+ * DriverManager can intercept the stop request and continue processing. -+ * -+ * Elements request that the router stop its processing by calling -+ * adjust_runcount() or please_stop_driver(). */ -+inline int32_t -+Router::runcount() const -+{ -+ return _runcount.value(); -+} -+ -+/** @brief Request a driver stop by adjusting the runcount by -1. -+ * @note Equivalent to adjust_runcount(-1). */ -+inline void -+Router::please_stop_driver() -+{ -+ adjust_runcount(-1); -+} -+ -+/** @brief Returns the router's initial configuration string. -+ * @return The configuration string specified to the constructor. */ -+inline const String& -+Router::configuration_string() const -+{ -+ return _configuration; -+} -+ -+inline void -+Router::activate(ErrorHandler* errh) -+{ -+ activate(true, errh); -+} -+ -+/** @brief Finds an element named @a name. -+ * @param name element name -+ * @param errh optional error handler -+ * -+ * Returns the unique element named @a name, if any. If no element named @a -+ * name is found, reports an error to @a errh and returns null. The error is -+ * "no element named 'name'". If @a errh is null, no error is -+ * reported. -+ * -+ * This function is equivalent to find(const String&, String, ErrorHandler*) -+ * with a context argument of the empty string. */ -+inline Element * -+Router::find(const String& name, ErrorHandler *errh) const -+{ -+ return find(name, "", errh); -+} -+ -+inline HashMap_ArenaFactory* -+Router::arena_factory() const -+{ -+ return _arena_factory; -+} -+ -+/** @brief Returns the currently-installed router this router will eventually -+ * replace. -+ * -+ * This function is only meaningful during a router's initialization. If this -+ * router was installed with the hotswap option, then hotswap_router() will -+ * return the currently-installed router that this router will eventually -+ * replace (assuming error-free initialization). Otherwise, hotswap_router() -+ * will return 0. -+ */ -+inline Router* -+Router::hotswap_router() const -+{ -+ return _hotswap_router; -+} -+ -+inline -+Handler::Handler(const String &name) -+ : _name(name), _thunk1(0), _thunk2(0), _flags(0), _use_count(0), -+ _next_by_name(-1) -+{ -+ _hook.rw.r = 0; -+ _hook.rw.w = 0; -+} -+ -+inline bool -+Handler::compatible(const Handler& o) const -+{ -+ return (_hook.rw.r == o._hook.rw.r && _hook.rw.w == o._hook.rw.w -+ && _thunk1 == o._thunk1 && _thunk2 == o._thunk2 -+ && _flags == o._flags); -+} -+ -+/** @brief Returns this handler's name. */ -+inline const String& -+Handler::name() const -+{ -+ return _name; -+} -+ -+/** @brief Returns this handler's flags. -+ -+ The result is a bitwise-or of flags from the Flags enumeration type. */ -+inline uint32_t -+Handler::flags() const -+{ -+ return _flags; -+} -+ -+/** @brief Returns this handler's first callback data. */ -+inline void* -+Handler::thunk1() const -+{ -+ return _thunk1; -+} -+ -+/** @brief Returns this handler's second callback data. */ -+inline void* -+Handler::thunk2() const -+{ -+ return _thunk2; -+} -+ -+/** @brief Returns true iff this is a valid read handler. */ -+inline bool -+Handler::readable() const -+{ -+ return _flags & OP_READ; -+} -+ -+/** @brief Returns true iff this is a valid read handler that may accept -+ parameters. */ -+inline bool -+Handler::read_param() const -+{ -+ return _flags & READ_PARAM; -+} -+ -+/** @brief Returns true iff this is a valid visible read handler. -+ -+ Only visible handlers may be called from outside the router -+ configuration. */ -+inline bool -+Handler::read_visible() const -+{ -+ return _flags & OP_READ; -+} -+ -+/** @brief Returns true iff this is a valid write handler. */ -+inline bool -+Handler::writable() const -+{ -+ return _flags & OP_WRITE; -+} -+ -+/** @brief Returns true iff this is a valid visible write handler. -+ -+ Only visible handlers may be called from outside the router -+ configuration. */ -+inline bool -+Handler::write_visible() const -+{ -+ return _flags & OP_WRITE; -+} -+ -+/** @brief Returns true iff this handler is visible. */ -+inline bool -+Handler::visible() const -+{ -+ return _flags & (OP_READ | OP_WRITE); -+} -+ -+/** @brief Returns true iff this handler is exclusive. -+ -+ Exclusive means mutually exclusive with all other router processing. In -+ the Linux kernel module driver, reading or writing an exclusive handler -+ using the Click filesystem will first lock all router threads and -+ handlers. */ -+inline bool -+Handler::exclusive() const -+{ -+ return _flags & EXCLUSIVE; -+} -+ -+/** @brief Returns true iff quotes should be removed when calling this -+ handler. -+ -+ A raw handler expects and returns raw text. Click will unquote quoted -+ text before passing it to a raw handler, and (in the Linux kernel module) -+ will not add a courtesy newline to the end of a raw handler's value. */ -+inline bool -+Handler::raw() const -+{ -+ return _flags & RAW; -+} -+ -+/** @brief Call a read handler without parameters. -+ @param e element on which to call the handler -+ @param errh error handler -+ -+ The element must be nonnull; to call a global handler, pass the relevant -+ router's Router::root_element(). @a errh may be null, in which case -+ errors are ignored. */ -+inline String -+Handler::call_read(Element* e, ErrorHandler* errh) const -+{ -+ return call_read(e, String(), false, errh); -+} -+ -+/** @brief Returns a handler incapable of doing anything. -+ * -+ * The returned handler returns false for readable() and writable() -+ * and has flags() of zero. */ -+inline const Handler * -+Handler::blank_handler() -+{ -+ return the_blank_handler; -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/routerthread.hh click-1.6.0-27/inst/include/click/routerthread.hh ---- click-1.6.0/inst/include/click/routerthread.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/routerthread.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,328 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/routerthread.cc" -*- -+#ifndef CLICK_ROUTERTHREAD_HH -+#define CLICK_ROUTERTHREAD_HH -+#include -+#include -+#if CLICK_LINUXMODULE -+# include -+CLICK_CXX_PROTECT -+# include -+CLICK_CXX_UNPROTECT -+# include -+#endif -+#if CLICK_BSDMODULE -+# include -+CLICK_CXX_PROTECT -+# include -+CLICK_CXX_UNPROTECT -+# include -+#endif -+ -+#define CLICK_DEBUG_SCHEDULING 0 -+ -+// NB: user must #include before . -+// We cannot #include ourselves because of circular #include -+// dependency. -+CLICK_DECLS -+ -+class RouterThread -+#ifndef HAVE_TASK_HEAP -+ : private Task -+#endif -+{ public: -+ -+ enum { THREAD_QUIESCENT = -1, THREAD_STRONG_UNSCHEDULE = -2, -+ THREAD_UNKNOWN = -1000 }; -+ -+ inline int thread_id() const; -+ -+ // Task list functions -+ inline bool active() const; -+ inline Task *task_begin() const; -+ inline Task *task_next(Task *task) const; -+ inline Task *task_end() const; -+ -+ inline void lock_tasks(); -+ inline bool attempt_lock_tasks(); -+ inline void unlock_tasks(); -+ -+ inline Master* master() const; -+ void driver(); -+ void driver_once(); -+ -+ void unschedule_router_tasks(Router*); -+ -+#ifdef HAVE_ADAPTIVE_SCHEDULER -+ // min_cpu_share() and max_cpu_share() are expressed on a scale with -+ // Task::MAX_UTILIZATION == 100%. -+ unsigned min_cpu_share() const { return _min_click_share; } -+ unsigned max_cpu_share() const { return _max_click_share; } -+ unsigned cur_cpu_share() const { return _cur_click_share; } -+ void set_cpu_share(unsigned min_share, unsigned max_share); -+#endif -+ -+#if CLICK_LINUXMODULE || CLICK_BSDMODULE -+ bool greedy() const { return _greedy; } -+ void set_greedy(bool g) { _greedy = g; } -+#endif -+ -+ inline void wake(); -+ -+#if CLICK_DEBUG_SCHEDULING -+ enum { S_RUNNING, S_PAUSED, S_TIMER, S_BLOCKED }; -+ int thread_state() const { return _thread_state; } -+ static String thread_state_name(int); -+ uint32_t driver_epoch() const { return _driver_epoch; } -+ uint32_t driver_task_epoch() const { return _driver_task_epoch; } -+ timeval task_epoch_time(uint32_t epoch) const; -+# if CLICK_LINUXMODULE -+ struct task_struct *sleeper() const { return _linux_task; } -+# endif -+#endif -+ -+ unsigned _tasks_per_iter; -+ unsigned _iters_per_timers; -+ unsigned _iters_per_os; -+ -+ private: -+ -+#ifdef HAVE_TASK_HEAP -+ Vector _task_heap; -+ int _task_heap_hole; -+ unsigned _pass; -+#endif -+ -+ Master *_master; -+ int _id; -+ -+#if CLICK_LINUXMODULE -+ struct task_struct *_linux_task; -+ spinlock_t _lock; -+ atomic_uint32_t _task_lock_waiting; -+#endif -+ -+ uint32_t _any_pending; -+ -+#if CLICK_LINUXMODULE -+ bool _greedy; -+#endif -+ -+#if CLICK_BSDMODULE -+ // XXX FreeBSD -+ u_int64_t _old_tsc; /* MARKO - temp. */ -+ void *_sleep_ident; -+ int _oticks; -+ bool _greedy; -+#endif -+ -+#ifdef HAVE_ADAPTIVE_SCHEDULER -+ enum { C_CLICK, C_KERNEL, NCLIENTS }; -+ struct Client { // top-level stride clients -+ unsigned pass; -+ unsigned stride; -+ int tickets; -+ Client() : pass(0), tickets(0) { } -+ }; -+ Client _clients[NCLIENTS]; -+ unsigned _global_pass; // global pass -+ unsigned _max_click_share; // maximum allowed Click share of CPU -+ unsigned _min_click_share; // minimum allowed Click share of CPU -+ unsigned _cur_click_share; // current Click share -+#endif -+ -+#if CLICK_DEBUG_SCHEDULING -+ int _thread_state; -+ uint32_t _driver_epoch; -+ uint32_t _driver_task_epoch; -+ enum { TASK_EPOCH_BUFSIZ = 32 }; -+ uint32_t _task_epoch_first; -+ timeval _task_epoch_time[TASK_EPOCH_BUFSIZ]; -+#endif -+ -+ // called by Master -+ RouterThread(Master *, int); -+ ~RouterThread(); -+ -+ // task requests -+ inline void add_pending(); -+ -+ // task running functions -+ inline void driver_lock_tasks(); -+ inline void driver_unlock_tasks(); -+ inline void run_tasks(int ntasks); -+ inline void run_os(); -+#ifdef HAVE_ADAPTIVE_SCHEDULER -+ void client_set_tickets(int client, int tickets); -+ inline void client_update_pass(int client, const struct timeval &before, const struct timeval &after); -+ inline void check_restride(struct timeval &before, const struct timeval &now, int &restride_iter); -+#endif -+#ifdef HAVE_TASK_HEAP -+ void task_reheapify_from(int pos, Task*); -+#endif -+ -+ friend class Task; -+ friend class Master; -+ -+}; -+ -+ -+/** @brief Returns this thread's ID. -+ * -+ * The result is >= 0 for true threads, and < 0 for threads that never run any -+ * of their associated Tasks. -+ */ -+inline int -+RouterThread::thread_id() const -+{ -+ return _id; -+} -+ -+/** @brief Returns this thread's associated Master. */ -+inline Master* -+RouterThread::master() const -+{ -+ return _master; -+} -+ -+/** @brief Returns whether any tasks are scheduled. -+ * -+ * Returns false iff no tasks are scheduled and no events are pending. Since -+ * not all events actually matter (for example, a Task might have been -+ * scheduled and then subsequently unscheduled), active() may temporarily -+ * return true even when no real events are outstanding. -+ */ -+inline bool -+RouterThread::active() const -+{ -+#ifdef HAVE_TASK_HEAP -+ return _task_heap.size() != 0 || _any_pending; -+#else -+ return ((const Task *)_next != this) || _any_pending; -+#endif -+} -+ -+/** @brief Returns the beginning of the scheduled task list. -+ * -+ * Each RouterThread maintains a list of all currently-scheduled tasks. -+ * Elements may traverse this list with the task_begin(), task_next(), and -+ * task_end() functions, using iterator-like code such as: -+ * -+ * @code -+ * thread->lock_tasks(); -+ * for (Task *t = thread->task_begin(); -+ * t != thread->task_end(); -+ * t = thread->task_next(t)) { -+ * // ... do something with t... -+ * } -+ * thread->unlock_tasks(); -+ * @endcode -+ * -+ * The thread's task lock must be held during the traversal, as shown above. -+ * -+ * The return value may not be a real task. Test it against task_end() before -+ * use. -+ * -+ * @sa task_next, task_end, lock_tasks, unlock_tasks -+ */ -+inline Task * -+RouterThread::task_begin() const -+{ -+#ifdef HAVE_TASK_HEAP -+ int p = _task_heap_hole; -+ return (p < _task_heap.size() ? _task_heap[p] : 0); -+#else -+ return _next; -+#endif -+} -+ -+/** @brief Returns the task following @a task in the scheduled task list. -+ * @param task the current task -+ * -+ * The return value may not be a real task. Test it against task_end() before -+ * use. However, the @a task argument must be a real task; do not attempt to -+ * call task_next(task_end()). -+ * -+ * @sa task_begin for usage, task_end -+ */ -+inline Task * -+RouterThread::task_next(Task *task) const -+{ -+#ifdef HAVE_TASK_HEAP -+ int p = task->_schedpos + 1; -+ return (p < _task_heap.size() ? _task_heap[p] : 0); -+#else -+ return task->_next; -+#endif -+} -+ -+/** @brief Returns the end of the scheduled task list. -+ * -+ * The return value is not a real task -+ * -+ * @sa task_begin for usage, task_next -+ */ -+inline Task * -+RouterThread::task_end() const -+{ -+#ifdef HAVE_TASK_HEAP -+ return 0; -+#else -+ return (Task *) this; -+#endif -+} -+ -+inline void -+RouterThread::lock_tasks() -+{ -+#if CLICK_LINUXMODULE -+ if (unlikely(current != _linux_task)) { -+ _task_lock_waiting++; -+ spin_lock(&_lock); -+ _task_lock_waiting--; -+ } -+#endif -+} -+ -+inline bool -+RouterThread::attempt_lock_tasks() -+{ -+#if CLICK_LINUXMODULE -+ if (likely(current == _linux_task)) -+ return true; -+ return spin_trylock(&_lock); -+#else -+ return true; -+#endif -+} -+ -+inline void -+RouterThread::unlock_tasks() -+{ -+#if CLICK_LINUXMODULE -+ if (unlikely(current != _linux_task)) -+ spin_unlock(&_lock); -+#endif -+} -+ -+inline void -+RouterThread::wake() -+{ -+#if CLICK_LINUXMODULE -+ if (_linux_task) -+ wake_up_process(_linux_task); -+#endif -+#if CLICK_BSDMODULE && !BSD_NETISRSCHED -+ if (_sleep_ident) -+ wakeup_one(&_sleep_ident); -+#endif -+} -+ -+inline void -+RouterThread::add_pending() -+{ -+ _any_pending = 1; -+ wake(); -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/simclick.h click-1.6.0-27/inst/include/click/simclick.h ---- click-1.6.0/inst/include/click/simclick.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/simclick.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,114 @@ -+#ifndef SIMCLICK_H -+#define SIMCLICK_H -+/* -+ * simclick.h -+ * -+ * API for sending packets to Click. Mostly intended for use -+ * by a network simulator which wants to use Click to do routing. -+ * -+ */ -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* -+ * Packet types used - generally going to be ethernet, but could -+ * possibly be something else I suppose... -+ */ -+#define SIMCLICK_PTYPE_UNKNOWN 0 -+#define SIMCLICK_PTYPE_ETHER 1 -+#define SIMCLICK_PTYPE_IP 2 -+ -+/* -+ * Not a whole lot to this. We have to create a click router object -+ * and also send packets and trigger events. -+ */ -+ -+/* -+ * This contains per packet data we need to preserve when the packet gets -+ * dragged through click. Heavily biased towards ns-2 right now. -+ */ -+typedef struct { -+ int id; /* Simulator ID number for the packet */ -+ int fid; /* Simulator flow ID number for the packet */ -+ int simtype; /* Original simulator packet type - useful -+ * for morphing between raw and simulator -+ * packet types */ -+} simclick_simpacketinfo; -+ -+ -+/* -+ * Opaque handles for the sim and click instances -+ */ -+typedef struct simclick_node { -+ void *clickinfo; -+ struct timeval curtime; -+} simclick_node_t; -+ -+int simclick_click_create(simclick_node_t *sim, const char *router_file); -+ -+int simclick_click_send(simclick_node_t *sim, -+ int ifid,int type,const unsigned char* data,int len, -+ simclick_simpacketinfo* pinfo); -+int simclick_sim_send(simclick_node_t *sim, -+ int ifid,int type, const unsigned char* data,int len, -+ simclick_simpacketinfo*); -+ -+void simclick_click_run(simclick_node_t *sim); -+ -+void simclick_click_kill(simclick_node_t *sim); -+ -+/* -+ * simclick_click_read_handler will allocate a buffer of adequate length -+ * to receive the handler information. This buffer must be freed -+ * by the caller. If a non-null value for the "memalloc" parameter -+ * is passed in, simclick_click_read_handler will use that function -+ * to allocate the memory. If there's a null value there, "malloc" will -+ * be used by default. The "memparam" parameter is a caller-specified -+ * value which will be passed back to the memory allocation function. -+ */ -+typedef void* (*SIMCLICK_MEM_ALLOC)(size_t,void*); -+char* simclick_click_read_handler(simclick_node_t *sim, -+ const char* elementname, -+ const char* handlername, -+ SIMCLICK_MEM_ALLOC memalloc, -+ void* memparam); -+ -+int simclick_click_write_handler(simclick_node_t *sim, -+ const char* elemname, const char* handlername, -+ const char* writestring); -+ -+/* -+ * We also provide a gettimeofday substitute which utilizes the -+ * state info passed to us by the simulator. -+ */ -+int simclick_gettimeofday(struct timeval* tv); -+ -+/* -+ * The simulated system also has to provide a few services to click, -+ * notably some way of injecting packets back into the system, -+ * mapping interface names to id numbers, and arranging for click -+ * to execute at a specified time in the future. -+ * We implement -+ */ -+#define SIMCLICK_VERSION 0 // none -+#define SIMCLICK_SUPPORTS 1 // int call -+#define SIMCLICK_IFID_FROM_NAME 2 // const char *ifname -+#define SIMCLICK_IPADDR_FROM_NAME 3 // const char *ifname, char *buf, int len -+#define SIMCLICK_MACADDR_FROM_NAME 4 // const char *ifname, char *buf, int len -+#define SIMCLICK_SCHEDULE 5 // struct timeval *when -+#define SIMCLICK_GET_NODE_NAME 6 // char *buf, int len -+#define SIMCLICK_IF_READY 7 // int ifid -+#define SIMCLICK_TRACE 8 // const char *event -+#define SIMCLICK_GET_NODE_ID 9 // none -+#define SIMCLICK_GET_NEXT_PKT_ID 10 // none -+#define SIMCLICK_CHANGE_CHANNEL 11 // int ifid, int channelid -+ -+int simclick_sim_command(simclick_node_t *sim, int cmd, ...); -+int simclick_click_command(simclick_node_t *sim, int cmd, ...); -+ -+#ifdef __cplusplus -+} -+#endif -+#endif -diff -Nurb click-1.6.0/inst/include/click/skbmgr.hh click-1.6.0-27/inst/include/click/skbmgr.hh ---- click-1.6.0/inst/include/click/skbmgr.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/skbmgr.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,16 @@ -+// -*- c-basic-offset: 2; related-file-name: "../../linuxmodule/skbmgr.cc" -*- -+#ifndef CLICK_SKBMGR_HH -+#define CLICK_SKBMGR_HH -+CLICK_DECLS -+ -+void skbmgr_init(); -+void skbmgr_cleanup(); -+ -+/* allocate skbs. Number of skbs allocated is stored in the want variable */ -+struct sk_buff *skbmgr_allocate_skbs(unsigned headroom, unsigned size, int *want); -+ -+/* recycle skb back into pool */ -+void skbmgr_recycle_skbs(struct sk_buff *); -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/standard/addressinfo.hh click-1.6.0-27/inst/include/click/standard/addressinfo.hh ---- click-1.6.0/inst/include/click/standard/addressinfo.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/standard/addressinfo.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,109 @@ -+// -*- c-basic-offset: 2; related-file-name: "../../../elements/standard/addressinfo.cc" -*- -+#ifndef CLICK_ADDRESSINFO_HH -+#define CLICK_ADDRESSINFO_HH -+#include -+#include -+#ifdef HAVE_IP6 -+# include -+#endif -+CLICK_DECLS -+ -+/* -+=c -+ -+AddressInfo(NAME ADDRESS [ADDRESS...], ...) -+ -+=s information -+ -+specifies address information -+ -+=io -+ -+None -+ -+=d -+ -+Lets you use mnemonic names for IPv4 and IPv6 addresses, IPv4 and IPv6 -+address prefixes, and Ethernet addresses. Each argument has the form `NAME -+ADDRESS [ADDRESS...]', which associates the given ADDRESSes with NAME. For -+example, if a configuration contains this AddressInfo element, -+ -+ AddressInfo(mauer 10.0.0.1, mazu 10.0.0.10); -+ -+then other configuration strings can use C and C as mnemonics -+for the IP addresses 10.0.0.1 and 10.0.0.10, respectively. -+ -+The mnemonic names introduced by AddressInfo elements are local with -+respect to compound elements. That is, names created inside a compound -+element apply only within that compound element and its subelements. For -+example: -+ -+ AddressInfo(mauer 10.0.0.1); -+ compound :: { -+ AddressInfo(mazu 10.0.0.10); -+ ... -> IPEncap(6, mauer, mazu) -> ... // OK -+ }; -+ ... -> IPEncap(6, mauer, mazu) -> ... // error: `mazu' undefined -+ -+Any name can be simultaneously associated with an IP address, an IP network -+address, and an Ethernet address. The kind of address that is returned is -+generally determined from context. For example: -+ -+ AddressInfo(mauer 10.0.0.1/8 00:50:BA:85:84:A9); -+ ... -> IPEncap(6, mauer, ...) // as IP address -+ -> EtherEncap(0x0800, mauer, ...) -> ... // as Ethernet address -+ ... -> ARPResponder(mauer) -> ... // as IP prefix AND Ethernet address! -+ -+An optional suffix makes the context unambiguous. C is an ambiguous -+reference to some address, but C is always an IPv4 address, -+C is always an IPv4 network address (IPv4 address prefix), -+C is always an IPv6 address, C is always an IPv6 -+network address, and C is always an Ethernet address. -+ -+=head1 DEFAULT ADDRESSES -+ -+If you do not define an address for a given name, AddressInfo will use the -+default, if any. Defaults are as follows: -+ -+=over 2 -+ -+=item * -+ -+If DEVNAME is the name of an Ethernet device, then C defaults to -+DEVNAME's Ethernet address. (At userlevel, this works only on BSD and Linux.) -+ -+=item * -+ -+C defaults to the first primary IPv4 address associated with the -+device DEVNAME. -+ -+=back -+ -+These defaults are not available on all platforms. -+ -+=a -+ -+PortInfo */ -+ -+class AddressInfo : public Element { public: -+ -+ AddressInfo(); -+ ~AddressInfo(); -+ -+ const char *class_name() const { return "AddressInfo"; } -+ -+ int configure_phase() const { return CONFIGURE_PHASE_FIRST; } -+ int configure(Vector &, ErrorHandler *); -+ -+ static bool query_ip(String, unsigned char *, Element *); -+ static bool query_ip_prefix(String, unsigned char *, unsigned char *, Element *); -+#ifdef HAVE_IP6 -+ static bool query_ip6(String, unsigned char *, Element *); -+ static bool query_ip6_prefix(String, unsigned char *, int *, Element *); -+#endif -+ static bool query_ethernet(String, unsigned char *, Element *); -+ -+}; -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/standard/alignmentinfo.hh click-1.6.0-27/inst/include/click/standard/alignmentinfo.hh ---- click-1.6.0/inst/include/click/standard/alignmentinfo.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/standard/alignmentinfo.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,49 @@ -+// -*- c-basic-offset: 2; related-file-name: "../../../elements/standard/alignmentinfo.cc" -*- -+#ifndef CLICK_ALIGNMENTINFO_HH -+#define CLICK_ALIGNMENTINFO_HH -+#include -+CLICK_DECLS -+ -+/* -+ * =c -+ * AlignmentInfo(ELEMENT [MODULUS OFFSET ...], ...) -+ * =s information -+ * specifies alignment information -+ * =io -+ * None -+ * =d -+ * Provides information about the packet alignment specified elements can -+ * expect. Each configuration argument has the form -+ * `ELEMENT [MODULUS0 OFFSET0 MODULUS1 OFFSET1 ...]', -+ * where there are zero or more MODULUS-OFFSET pairs. -+ * All packets arriving at ELEMENT's -+ * Ith input will start `OFFSETI' bytes -+ * off from a `MODULUSI'-byte boundary. -+ * =n -+ * This element is inserted automatically by click-align(1). -+ * =a Align, click-align(1) -+ */ -+ -+class AlignmentInfo : public Element { public: -+ -+ AlignmentInfo(); -+ ~AlignmentInfo(); -+ -+ const char *class_name() const { return "AlignmentInfo"; } -+ int configure_phase() const { return CONFIGURE_PHASE_INFO; } -+ int configure(Vector &, ErrorHandler *); -+ -+ bool query1(Element *, int port, int &chunk, int &offset) const; -+ static bool query(Element *, int port, int &chunk, int &offset); -+ -+ private: -+ -+ Vector _elem_offset; -+ Vector _elem_icount; -+ Vector _chunks; -+ Vector _offsets; -+ -+}; -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/standard/errorelement.hh click-1.6.0-27/inst/include/click/standard/errorelement.hh ---- click-1.6.0/inst/include/click/standard/errorelement.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/standard/errorelement.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,36 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../../elements/standard/errorelement.cc" -*- -+#ifndef CLICK_ERRORELEMENT_HH -+#define CLICK_ERRORELEMENT_HH -+#include -+CLICK_DECLS -+ -+/* -+ * =c -+ * Error(...) -+ * =s debugging -+ * always fails -+ * =d -+ * The Error element always fails to initialize. It has any number of inputs -+ * and outputs, and accepts any configuration string without complaint. It is -+ * useful to prevent a router from initializing while avoiding -+ * spurious error messages about bad configuration strings or connections. -+ * =a Message -+ */ -+ -+class ErrorElement : public Element { public: -+ -+ ErrorElement(); -+ ~ErrorElement(); -+ -+ const char *class_name() const { return "Error"; } -+ const char *port_count() const { return "-/-"; } -+ const char *processing() const { return AGNOSTIC; } -+ const char *flow_code() const { return "x/y"; } -+ -+ int configure(Vector &, ErrorHandler *); -+ int initialize(ErrorHandler *); -+ -+}; -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/standard/portinfo.hh click-1.6.0-27/inst/include/click/standard/portinfo.hh ---- click-1.6.0/inst/include/click/standard/portinfo.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/standard/portinfo.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,73 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../../elements/standard/portinfo.cc" -*- -+#ifndef CLICK_PORTINFO_HH -+#define CLICK_PORTINFO_HH -+#include -+#include -+CLICK_DECLS -+ -+/* -+=c -+ -+PortInfo(NAME PORT[/PROTOCOL], ...) -+ -+=s information -+ -+stores named TCP/UDP port information -+ -+=io -+ -+None -+ -+=d -+ -+Lets you use mnemonic names for TCP and UDP ports. Each argument has the form -+`NAME PORT[/PROTOCOL]', which associates the given PORT/PROTOCOL pair with the -+NAME. If PROTOCOL is left off, the NAME applies to both TCP and UDP. For -+example, in a configuration containing -+ -+ PortInfo(ssh 22, http 80), -+ -+configuration strings can use C and C as mnemonics for the port -+numbers 22 and 80, respectively. -+ -+PortInfo names are local with respect to compound elements. That is, names -+created inside a compound element apply only within that compound element and -+its subelements. For example: -+ -+ PortInfo(src 10); -+ compound :: { -+ PortInfo(dst 100); -+ ... -> UDPIPEncap(1.0.0.1, src, 2.0.0.1, dst) -> ... // OK -+ }; -+ ... -> UDPIPEncap(1.0.0.1, src, 2.0.0.1, dst) -> ... -+ // error: `dst' undefined -+ -+=n -+ -+If you do not define a port for a given name, PortInfo will use the default, -+if any. At user level, PortInfo uses the L function to look -+up ports by name. In the kernel, there are no default ports. -+ -+PortInfo will parse arguments containing more than one name, as `C', and comments starting with `C<#>' are ignored. Thus, -+lines from F can be used verbatim as PortInfo configuration -+arguments. -+ -+=a -+ -+AddressInfo */ -+ -+class PortInfo : public Element { public: -+ -+ PortInfo(); -+ ~PortInfo(); -+ -+ const char *class_name() const { return "PortInfo"; } -+ -+ int configure_phase() const { return CONFIGURE_PHASE_FIRST; } -+ int configure(Vector &, ErrorHandler *); -+ -+}; -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/standard/scheduleinfo.hh click-1.6.0-27/inst/include/click/standard/scheduleinfo.hh ---- click-1.6.0/inst/include/click/standard/scheduleinfo.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/standard/scheduleinfo.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,105 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../../elements/standard/scheduleinfo.cc" -*- -+#ifndef CLICK_SCHEDULEINFO_HH -+#define CLICK_SCHEDULEINFO_HH -+#include -+CLICK_DECLS -+ -+/* -+=c -+ -+ScheduleInfo(ELEMENT PARAM, ...) -+ -+=s information -+ -+specifies scheduling parameters -+ -+=io -+ -+None -+ -+=d -+ -+Provides scheduling parameters for specified elements. Each configuration -+argument has the form `ELEMENT PARAM', meaning that the element -+named ELEMENT has scheduling parameter PARAM. Scheduling -+parameters are real numbers that set how often one element should be -+scheduled in relation to another. For example, -+if elements A and B have -+scheduling parameters 2 and 0.5, respectively, then A will be scheduled -+2/0.5 = 4 times as often as B. The default scheduling parameter is 1. -+ -+ScheduleInfo elements inside a compound element can specify scheduling -+parameters for that compound's components. -+Outer ScheduleInfo elements -+can specify a ``scheduling parameter'' for the compound -+element as a whole. This ``scheduling parameter'' is really a scaling -+factor affecting the compound's components. For example, consider this -+configuration, -+ -+ elementclass Compound { -+ i :: InfiniteSource -> output; -+ ScheduleInfo(i 0.5); -+ } -+ c :: Compound -> Discard; -+ ScheduleInfo(c 4); -+ -+which is the same as the following configuration, after compound elements -+are expanded. -+ -+ c/i :: InfiniteSource -> Discard@3 :: Discard; -+ c/ScheduleInfo@2 :: ScheduleInfo(i 0.5); -+ ScheduleInfo@4 :: ScheduleInfo(c 4); -+ -+The name of the first ScheduleInfo element starts with `c/', so it is -+used to look up scheduling parameters for elements named `c/I'. -+V<>(This includes all components of the compound element `c'.) -+The second ScheduleInfo element, however, has no slash in its name, -+so it is used to look up all scheduling parameters, -+including scaling factors for compound elements. -+The InfiniteSource's final scaling parameter will be 2: -+the scaling factor 4 times the local scheduling parameter 0.5. -+ -+An outer ScheduleInfo element can override local scheduling parameters. -+For example, if the second ScheduleInfo element above was -+ -+ ScheduleInfo@4 :: ScheduleInfo(c 4, c/i 10.5) -+ -+then the InfiniteSource's final scaling parameter would be 10.5. -+*/ -+ -+class ScheduleInfo : public Element { public: -+ -+ enum { FRAC_BITS = 10 }; -+ -+ ScheduleInfo(); -+ ~ScheduleInfo(); -+ -+ const char* class_name() const { return "ScheduleInfo"; } -+ -+ int configure_phase() const { return CONFIGURE_PHASE_INFO; } -+ int configure(Vector&, ErrorHandler*); -+ -+ bool query(const String&, int&) const; -+ bool query_prefixes(const String&, int&, String&) const; -+ static int query(Element*, ErrorHandler*); -+ static void initialize_task(Element*, Task*, bool sched, ErrorHandler*); -+ static void initialize_task(Element*, Task*, ErrorHandler*); -+ static void join_scheduler(Element*, Task*, ErrorHandler*); -+ -+}; -+ -+ -+inline void -+ScheduleInfo::initialize_task(Element* e, Task* t, ErrorHandler* errh) -+{ -+ initialize_task(e, t, true, errh); -+} -+ -+inline void -+ScheduleInfo::join_scheduler(Element* e, Task* t, ErrorHandler* errh) -+{ -+ initialize_task(e, t, true, errh); -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/standard/storage.hh click-1.6.0-27/inst/include/click/standard/storage.hh ---- click-1.6.0/inst/include/click/standard/storage.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/standard/storage.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,49 @@ -+// -*- c-basic-offset: 4 -*- -+#ifndef CLICK_STORAGE_HH -+#define CLICK_STORAGE_HH -+CLICK_DECLS -+ -+class Storage { public: -+ -+ Storage() : _head(0), _tail(0) { } -+ -+ operator bool() const { return _head != _tail; } -+ bool empty() const { return _head == _tail; } -+ int size() const; -+ int size(int head, int tail) const; -+ int capacity() const { return _capacity; } -+ -+ int head() const { return _head; } -+ int tail() const { return _tail; } -+ -+ int next_i(int i) const { return (i!=_capacity ? i+1 : 0); } -+ int prev_i(int i) const { return (i!=0 ? i-1 : _capacity); } -+ -+ // to be used with care -+ void set_capacity(int c) { _capacity = c; } -+ void set_head(int h) { _head = h; } -+ void set_tail(int t) { _tail = t; } -+ -+ protected: -+ -+ int _capacity; -+ volatile int _head; -+ volatile int _tail; -+ -+}; -+ -+inline int -+Storage::size(int head, int tail) const -+{ -+ int x = tail - head; -+ return (x >= 0 ? x : _capacity + x + 1); -+} -+ -+inline int -+Storage::size() const -+{ -+ return size(_head, _tail); -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/standard/threadsched.hh click-1.6.0-27/inst/include/click/standard/threadsched.hh ---- click-1.6.0/inst/include/click/standard/threadsched.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/standard/threadsched.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,19 @@ -+// -*- c-basic-offset: 4 -*- -+#ifndef CLICK_THREADSCHED_HH -+#define CLICK_THREADSCHED_HH -+CLICK_DECLS -+ -+class ThreadSched { public: -+ -+ enum { THREAD_QUIESCENT = -1, THREAD_STRONG_UNSCHEDULE = -2, -+ THREAD_UNKNOWN = -1000 }; -+ -+ ThreadSched() { } -+ virtual ~ThreadSched() { } -+ -+ virtual int initial_home_thread_id(Task *, bool); -+ -+}; -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/straccum.hh click-1.6.0-27/inst/include/click/straccum.hh ---- click-1.6.0/inst/include/click/straccum.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/straccum.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,518 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/straccum.cc" -*- -+#ifndef CLICK_STRACCUM_HH -+#define CLICK_STRACCUM_HH -+#include -+#include -+#ifdef CLICK_LINUXMODULE -+# include -+#elif defined(CLICK_BSDMODULE) -+# include -+#else /* User-space */ -+# include -+#endif -+CLICK_DECLS -+ -+/** @file -+ @brief Click's StringAccum class, used to construct Strings efficiently from pieces. -+*/ -+ -+class StringAccum { public: -+ -+ /** @brief Create an empty StringAccum (with length 0). */ -+ StringAccum() -+ : _s(0), _len(0), _cap(0) { -+ } -+ -+ explicit inline StringAccum(int); -+ -+ /** @brief Destroy a StringAccum, freeing its memory. */ -+ ~StringAccum() { -+ if (_cap >= 0) -+ CLICK_LFREE(_s, _cap); -+ } -+ -+ /** @brief Return the contents of the StringAccum. -+ @return The StringAccum's contents. -+ -+ The return value is null if the StringAccum is empty or out-of-memory. -+ The returned data() value points to writable memory (unless the -+ StringAccum itself is const). */ -+ inline const char *data() const { -+ return reinterpret_cast(_s); -+ } -+ -+ /** @overload */ -+ inline char *data() { -+ return reinterpret_cast(_s); -+ } -+ -+ /** @brief Return the length of the StringAccum. */ -+ int length() const { -+ return _len; -+ } -+ -+ /** @brief Return the StringAccum's current capacity. -+ -+ The capacity is the maximum length the StringAccum can hold without -+ incurring a memory allocation. Returns -1 for out-of-memory -+ StringAccums. */ -+ int capacity() const { -+ return _cap; -+ } -+ -+ typedef int (StringAccum::*unspecified_bool_type)() const; -+ -+ /** @brief Return true iff the StringAccum contains characters. -+ -+ Returns false for empty and out-of-memory StringAccums. */ -+ operator unspecified_bool_type() const { -+ return _len != 0 ? &StringAccum::capacity : 0; -+ } -+ -+ /** @brief Returns true iff the StringAccum does not contain characters. -+ -+ Returns true for empty and out-of-memory StringAccums. */ -+ bool operator!() const { -+ return _len == 0; -+ } -+ -+ /** @brief Returns true iff the StringAccum is out-of-memory. */ -+ bool out_of_memory() const { -+ return _cap < 0; -+ } -+ -+ const char *c_str(); -+ -+ /** @brief Returns the ith character in the string. -+ @param i character index. -+ -+ @pre 0 <= @a i < length() */ -+ char operator[](int i) const { -+ assert(i>=0 && i<_len); -+ return static_cast(_s[i]); -+ } -+ -+ /** @brief Returns a reference to the ith character in the string. -+ @param i character index. -+ -+ @pre 0 <= @a i < length() */ -+ char &operator[](int i) { -+ assert(i>=0 && i<_len); -+ return reinterpret_cast(_s[i]); -+ } -+ -+ /** @brief Returns the last character in the string. -+ @pre length() > 0 */ -+ char back() const { -+ assert(_len > 0); -+ return static_cast(_s[_len - 1]); -+ } -+ -+ /** @brief Returns a reference to the last character in the string. -+ @pre length() > 0 */ -+ char &back() { -+ assert(_len > 0); -+ return reinterpret_cast(_s[_len - 1]); -+ } -+ -+ inline void clear(); -+ -+ inline char *reserve(int n); -+ void set_length(int len); -+ void adjust_length(int delta); -+ inline char *extend(int nadjust, int nreserve = 0); -+ void pop_back(int n = 1); -+ -+ inline void append(char c); -+ inline void append(unsigned char c); -+ void append_fill(int c, int len); -+ -+ inline void append(const char *suffix, int len); -+ inline void append(const unsigned char *suffix, int len); -+ inline void append(const char *begin, const char *end); -+ -+ void append_numeric(String::uint_large_t num, int base = 10, bool uppercase = true); -+ void append_numeric(String::int_large_t num, int base = 10, bool uppercase = true); -+ -+ StringAccum &snprintf(int n, const char *format, ...); -+ -+ String take_string(); -+ -+ void swap(StringAccum &o); -+ -+ // see also operator<< declarations below -+ -+ void forward(int delta) CLICK_DEPRECATED; -+ -+ private: -+ -+ unsigned char *_s; -+ int _len; -+ int _cap; -+ -+ void make_out_of_memory(); -+ inline void safe_append(const char *, int); -+ bool grow(int); -+ -+ StringAccum(const StringAccum &); -+ StringAccum &operator=(const StringAccum &); -+ -+ friend StringAccum &operator<<(StringAccum &, const char *); -+ -+}; -+ -+inline StringAccum &operator<<(StringAccum &, char); -+inline StringAccum &operator<<(StringAccum &, unsigned char); -+inline StringAccum &operator<<(StringAccum &, const char *); -+inline StringAccum &operator<<(StringAccum &, const String &); -+inline StringAccum &operator<<(StringAccum &, const StringAccum &); -+#ifdef HAVE_PERMSTRING -+inline StringAccum &operator<<(StringAccum &, PermString); -+#endif -+ -+inline StringAccum &operator<<(StringAccum &, bool); -+inline StringAccum &operator<<(StringAccum &, short); -+inline StringAccum &operator<<(StringAccum &, unsigned short); -+inline StringAccum &operator<<(StringAccum &, int); -+inline StringAccum &operator<<(StringAccum &, unsigned); -+StringAccum &operator<<(StringAccum &, long); -+StringAccum &operator<<(StringAccum &, unsigned long); -+#if HAVE_LONG_LONG -+inline StringAccum &operator<<(StringAccum &, long long); -+inline StringAccum &operator<<(StringAccum &, unsigned long long); -+#endif -+#if HAVE_INT64_TYPES && !HAVE_INT64_IS_LONG && !HAVE_INT64_IS_LONG_LONG -+inline StringAccum &operator<<(StringAccum &, int64_t); -+inline StringAccum &operator<<(StringAccum &, uint64_t); -+#endif -+#if defined(CLICK_USERLEVEL) || defined(CLICK_TOOL) -+StringAccum &operator<<(StringAccum &, double); -+#endif -+ -+StringAccum &operator<<(StringAccum &, void *); -+ -+ -+/** @brief Create a StringAccum with room for at least @a capacity characters. -+ @param capacity initial capacity. -+ -+ If @a capacity <= 0, the StringAccum is created empty. If @a capacity is -+ too large (so that @a capacity bytes of memory can't be allocated), the -+ StringAccum is created as out-of-memory. */ -+inline -+StringAccum::StringAccum(int capacity) -+ : _len(0) -+{ -+ assert(capacity >= 0); -+ if (capacity) { -+ _s = (unsigned char *) CLICK_LALLOC(capacity); -+ _cap = (_s ? capacity : -1); -+ } else { -+ _s = 0; -+ _cap = 0; -+ } -+} -+ -+/** @brief Reserve space for at least @a n characters. -+ @param n number of characters to reserve. -+ @return a pointer to at least @a n characters, or null if allocation fails. -+ @pre @a n >= 0 -+ -+ reserve() does not change the string's length(), only its capacity(). In -+ a frequent usage pattern, code calls reserve(), passing an upper bound on -+ the characters that could be written by a series of operations. After -+ writing into the returned buffer, adjust_length() is called to account for -+ the number of characters actually written. */ -+inline char * -+StringAccum::reserve(int n) -+{ -+ assert(n >= 0); -+ if (_len + n <= _cap || grow(_len + n)) -+ return (char *)(_s + _len); -+ else -+ return 0; -+} -+ -+/** @brief Adjust the StringAccum's length. -+ @param delta length adjustment -+ @pre If @a delta > 0, then length() + @a delta <= capacity(). -+ If @a delta < 0, then length() + delta >= 0. -+ -+ The StringAccum's length after adjust_length(@a delta) equals its old -+ length plus @a delta. Generally adjust_length() is used after a call to -+ reserve(). -+ @sa set_length */ -+inline void -+StringAccum::adjust_length(int delta) { -+ assert(_len + delta >= 0 && _len + delta <= _cap); -+ _len += delta; -+} -+ -+/** @brief Adjust the StringAccum's length (deprecated). -+ @param delta length adjustment. -+ @deprecated Use adjust_length() instead. */ -+inline void -+StringAccum::forward(int delta) -+{ -+ adjust_length(delta); -+} -+ -+/** @brief Reserve space and adjust length in one operation. -+ @param nadjust number of characters to reserve and adjust length. -+ @param nreserve additional characters to reserve. -+ @pre @a nadjust >= 0 and @a nreserve >= 0 -+ -+ This operation combines the effects of reserve(@a nadjust + @a nreserve) -+ and adjust_length(@a nadjust). Returns the result of the reserve() call. */ -+inline char * -+StringAccum::extend(int nadjust, int nreserve) -+{ -+ assert(nadjust >= 0 && nreserve >= 0); -+ char *c = reserve(nadjust + nreserve); -+ if (c) -+ _len += nadjust; -+ return c; -+} -+ -+/** @brief Remove characters from the end of the StringAccum. -+ @param n number of characters to remove. -+ @pre @a n >= 0 -+ -+ Same as adjust_length(-@a n). */ -+inline void -+StringAccum::pop_back(int n) { -+ assert(n >= 0 && _len >= n); -+ _len -= n; -+} -+ -+/** @brief Sets the StringAccum's length to @a len. -+ @param len new length in characters. -+ @pre 0 <= @a len <= capacity() -+ @sa adjust_length */ -+inline void -+StringAccum::set_length(int len) { -+ assert(len >= 0 && _len <= _cap); -+ _len = len; -+} -+ -+/** @brief Extend the StringAccum by character @a c. -+ @param c character to extend */ -+inline void -+StringAccum::append(char c) -+{ -+ if (_len < _cap || grow(_len)) -+ _s[_len++] = c; -+} -+ -+/** @overload */ -+inline void -+StringAccum::append(unsigned char c) -+{ -+ append(static_cast(c)); -+} -+ -+inline void -+StringAccum::safe_append(const char *s, int len) -+{ -+ if (char *x = extend(len)) -+ memcpy(x, s, len); -+} -+ -+/** @brief Append the first @a len characters of @a suffix to this StringAccum. -+ @param suffix data to append -+ @param len length of data -+ -+ If @a len < 0, treats @a suffix as a null-terminated C string. */ -+inline void -+StringAccum::append(const char *suffix, int len) -+{ -+ if (len < 0) -+ len = strlen(suffix); -+ if (len == 0 && suffix == String::out_of_memory_data()) -+ make_out_of_memory(); -+ safe_append(suffix, len); -+} -+ -+/** @overload */ -+inline void -+StringAccum::append(const unsigned char *suffix, int len) -+{ -+ append(reinterpret_cast(suffix), len); -+} -+ -+/** @brief Append the data from @a begin to @a end to the end of this StringAccum. -+ -+ Does nothing if @a begin >= @a end. */ -+inline void -+StringAccum::append(const char *begin, const char *end) -+{ -+ if (begin < end) -+ safe_append(begin, end - begin); -+ else if (begin == String::out_of_memory_data()) -+ make_out_of_memory(); -+} -+ -+/** @brief Clear the StringAccum's comments. -+ -+ All characters in the StringAccum are erased. This operation also resets -+ the StringAccum's out-of-memory status. */ -+inline void -+StringAccum::clear() -+{ -+ if (_cap < 0) -+ _cap = 0, _s = 0; -+ _len = 0; -+} -+ -+/** @relates StringAccum -+ @brief Append character @a c to StringAccum @a sa. -+ @return @a sa -+ @note Same as @a sa.append(@a c). */ -+inline StringAccum & -+operator<<(StringAccum &sa, char c) -+{ -+ sa.append(c); -+ return sa; -+} -+ -+/** @relates StringAccum -+ @brief Append character @a c to StringAccum @a sa. -+ @return @a sa -+ @note Same as @a sa.append(@a c). */ -+inline StringAccum & -+operator<<(StringAccum &sa, unsigned char c) -+{ -+ sa.append(c); -+ return sa; -+} -+ -+/** @relates StringAccum -+ @brief Append null-terminated C string @a cstr to StringAccum @a sa. -+ @return @a sa -+ @note Same as @a sa.append(@a cstr, -1). */ -+inline StringAccum & -+operator<<(StringAccum &sa, const char *cstr) -+{ -+ sa.append(cstr, -1); -+ return sa; -+} -+ -+/** @relates StringAccum -+ @brief Append "true" or "false" to @a sa, depending on @a b. -+ @return @a sa */ -+inline StringAccum & -+operator<<(StringAccum &sa, bool b) -+{ -+ return sa << (b ? "true" : "false"); -+} -+ -+/** @relates StringAccum -+ @brief Append decimal representation of @a i to @a sa. -+ @return @a sa */ -+inline StringAccum & -+operator<<(StringAccum &sa, short i) -+{ -+ return sa << static_cast(i); -+} -+ -+/** @relates StringAccum -+ @brief Append decimal representation of @a u to @a sa. -+ @return @a sa */ -+inline StringAccum & -+operator<<(StringAccum &sa, unsigned short u) -+{ -+ return sa << static_cast(u); -+} -+ -+/** @relates StringAccum -+ @brief Append decimal representation of @a i to @a sa. -+ @return @a sa */ -+inline StringAccum & -+operator<<(StringAccum &sa, int i) -+{ -+ return sa << static_cast(i); -+} -+ -+/** @relates StringAccum -+ @brief Append decimal representation of @a u to @a sa. -+ @return @a sa */ -+inline StringAccum & -+operator<<(StringAccum &sa, unsigned u) -+{ -+ return sa << static_cast(u); -+} -+ -+#if HAVE_LONG_LONG -+/** @relates StringAccum -+ @brief Append decimal representation of @a q to @a sa. -+ @return @a sa */ -+inline StringAccum & -+operator<<(StringAccum &sa, long long q) -+{ -+ sa.append_numeric(static_cast(q)); -+ return sa; -+} -+ -+/** @relates StringAccum -+ @brief Append decimal representation of @a q to @a sa. -+ @return @a sa */ -+inline StringAccum & -+operator<<(StringAccum &sa, unsigned long long q) -+{ -+ sa.append_numeric(static_cast(q)); -+ return sa; -+} -+#endif -+ -+#if HAVE_INT64_TYPES && !HAVE_INT64_IS_LONG && !HAVE_INT64_IS_LONG_LONG -+/** @relates StringAccum -+ @brief Append decimal representation of @a q to @a sa. -+ @return @a sa */ -+inline StringAccum & -+operator<<(StringAccum &sa, int64_t q) -+{ -+ sa.append_numeric(static_cast(q)); -+ return sa; -+} -+ -+/** @relates StringAccum -+ @brief Append decimal representation of @a q to @a sa. -+ @return @a sa */ -+inline StringAccum & -+operator<<(StringAccum &sa, uint64_t q) -+{ -+ sa.append_numeric(static_cast(q)); -+ return sa; -+} -+#endif -+ -+/** @relates StringAccum -+ @brief Append the contents of @a str to @a sa. -+ @return @a sa */ -+StringAccum & -+operator<<(StringAccum &sa, const String &str) -+{ -+ sa.append(str.data(), str.length()); -+ return sa; -+} -+ -+#ifdef HAVE_PERMSTRING -+inline StringAccum & -+operator<<(StringAccum &sa, PermString s) -+{ -+ sa.safe_append(s.c_str(), s.length()); -+ return sa; -+} -+#endif -+ -+/** @relates StringAccum -+ @brief Append the contents of @a sb to @a sa. -+ @return @a sa */ -+inline StringAccum & -+operator<<(StringAccum &sa, const StringAccum &sb) -+{ -+ sa.append(sb.data(), sb.length()); -+ return sa; -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/string.hh click-1.6.0-27/inst/include/click/string.hh ---- click-1.6.0/inst/include/click/string.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/string.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,718 @@ -+// -*- c-basic-offset: 2; related-file-name: "../../lib/string.cc" -*- -+#ifndef CLICK_STRING_HH -+#define CLICK_STRING_HH -+#ifdef HAVE_PERMSTRING -+# include "permstr.hh" -+#endif -+#include -+#include -+CLICK_DECLS -+ -+class String { public: -+ -+ // Call static_initialize() before any function which might deal with -+ // Strings, and declare a String::Initializer in any file in which you -+ // declare static global Strings. -+ static void static_initialize(); -+ static void static_cleanup(); -+ struct Initializer { Initializer(); }; -+ -+ inline String(); -+ inline String(const String &str); -+ inline String(const char *cstr); -+ inline String(const char *s, int len); -+ inline String(const char *begin, const char *end); -+ explicit inline String(bool b); -+ explicit inline String(char c); -+ explicit inline String(unsigned char c); -+ explicit String(int i); -+ explicit String(unsigned u); -+ explicit String(long i); -+ explicit String(unsigned long u); -+#if HAVE_LONG_LONG -+ explicit String(long long q); -+ explicit String(unsigned long long q); -+#endif -+#if HAVE_INT64_TYPES && !HAVE_INT64_IS_LONG && !HAVE_INT64_IS_LONG_LONG -+ explicit String(int64_t q); -+ explicit String(uint64_t q); -+#endif -+#ifdef CLICK_USERLEVEL -+ explicit String(double d); -+#endif -+ inline ~String(); -+ -+ static inline const String &empty_string(); -+ static String garbage_string(int len); // len garbage characters -+ static String stable_string(const char *s, int len = -1); // stable read-only mem. -+ static inline String stable_string(const char *begin, const char *end); -+ -+#if HAVE_INT64_TYPES && (!HAVE_LONG_LONG || SIZEOF_LONG_LONG <= 8) -+ typedef int64_t int_large_t; -+ typedef uint64_t uint_large_t; -+#elif HAVE_LONG_LONG -+ typedef long long int_large_t; -+ typedef unsigned long long uint_large_t; -+#else -+ typedef long int_large_t; -+ typedef unsigned long uint_large_t; -+#endif -+ -+ static String numeric_string(int_large_t num, int base = 10, bool uppercase = true); -+ static String numeric_string(uint_large_t num, int base = 10, bool uppercase = true); -+ -+ inline int length() const; -+ inline const char *data() const; -+ -+ typedef const char *const_iterator; -+ typedef const_iterator iterator; -+ inline const_iterator begin() const; -+ inline const_iterator end() const; -+ -+ typedef int (String::*unspecified_bool_type)() const; -+ inline operator unspecified_bool_type() const; -+ -+ inline char operator[](int i) const; -+ inline char at(int i) const; -+ inline char front() const; -+ inline char back() const; -+ -+ const char *c_str() const; // pointer returned is semi-transient -+ -+ size_t hashcode() const; -+ -+ bool equals(const char *s, int len) const; -+ // bool operator==(const String &, const String &); -+ // bool operator==(const String &, const char *); -+ // bool operator==(const char *, const String &); -+ // bool operator!=(const String &, const String &); -+ // bool operator!=(const String &, const char *); -+ // bool operator!=(const char *, const String &); -+ -+ static inline int compare(const String &a, const String &b); -+ inline int compare(const String &str) const; -+ int compare(const char *s, int len) const; -+ // bool operator<(const String &, const String &); -+ // bool operator<=(const String &, const String &); -+ // bool operator>(const String &, const String &); -+ // bool operator>=(const String &, const String &); -+ -+ inline String substring(const char *begin, const char *end) const; -+ String substring(int pos, int len) const; -+ inline String substring(int pos) const; -+ -+ int find_left(char c, int start = 0) const; -+ int find_left(const String &s, int start = 0) const; -+ int find_right(char c, int start = 0x7FFFFFFF) const; -+ -+ String lower() const; // lowercase -+ String upper() const; // uppercase -+ String printable() const; // quote non-ASCII characters -+ String trim_space() const; // trim space from right -+ String quoted_hex() const; // hex enclosed in '\<...>' -+ -+ inline String &operator=(const String &str); -+ inline String &operator=(const char *cstr); -+ -+ void append(const char *s, int len); -+ inline void append(const char *begin, const char *end); -+ void append_fill(int c, int len); -+ char *append_garbage(int len); -+ inline String &operator+=(const String &str); -+ inline String &operator+=(const char *cstr); -+ inline String &operator+=(char c); -+ -+ // String operator+(String, const String &); -+ // String operator+(String, const char *); -+ // String operator+(const char *, const String &); -+ // String operator+(String, PermString); -+ // String operator+(PermString, const String &); -+ // String operator+(PermString, const char *); -+ // String operator+(const char *, PermString); -+ // String operator+(PermString, PermString); -+ // String operator+(String, char); -+ -+ inline bool data_shared() const; -+ char *mutable_data(); -+ char *mutable_c_str(); -+ -+ inline bool out_of_memory() const; -+ static inline const String &out_of_memory_string(); -+ static inline const char *out_of_memory_data(); -+ -+ private: -+ -+ /** @cond never */ -+ struct Memo { -+ atomic_uint32_t _refcount; -+ uint32_t _capacity; -+ atomic_uint32_t _dirty; -+ char *_real_data; -+ -+ Memo(); -+ Memo(char *, int, int); -+ Memo(int, int); -+ ~Memo(); -+ }; -+ /** @endcond never */ -+ -+ mutable const char *_data; // mutable for c_str() -+ mutable int _length; -+ mutable Memo *_memo; -+ -+ inline String(const char *, int, Memo *); -+ -+ inline void assign(const String &) const; -+ void assign(const char *, int); -+ inline void deref() const; -+ void make_out_of_memory(); -+ -+ static Memo *null_memo; -+ static Memo *permanent_memo; -+ static Memo *oom_memo; -+ static String *null_string_p; -+ static String *oom_string_p; -+ static const char oom_string_data; -+ -+ static String claim_string(char *, int, int); // claim memory -+ -+ friend class String::Initializer; -+ friend class StringAccum; -+ -+}; -+ -+ -+inline -+String::String(const char *data, int length, Memo *memo) -+ : _data(data), _length(length), _memo(memo) -+{ -+ _memo->_refcount++; -+} -+ -+inline void -+String::assign(const String &str) const -+{ -+ _data = str._data; -+ _length = str._length; -+ _memo = str._memo; -+ _memo->_refcount++; -+} -+ -+inline void -+String::deref() const -+{ -+ if (_memo->_refcount.dec_and_test()) -+ delete _memo; -+} -+ -+/** @brief Create an empty String (with length 0). */ -+inline -+String::String() -+ : _data(null_memo->_real_data), _length(0), _memo(null_memo) -+{ -+ _memo->_refcount++; -+} -+ -+/** @brief Create a String containing a copy of the C string @a cstr. -+ * @param cstr a null-terminated C string. -+ * @return A String containing the characters of @a cstr, up to but not -+ * including the terminating null character. -+ * -+ * If @a cstr equals String::out_of_memory_data(), returns an -+ * out-of-memory string. -+ */ -+inline -+String::String(const char *cstr) -+{ -+ assign(cstr, -1); -+} -+ -+/** @brief Create a String containing a copy of the first @a len characters of -+ * string @a s. -+ * @param s a string. -+ * @param len number of characters to take from @a cc. If @a len @< 0, then -+ * takes @c strlen(@a s) characters. -+ * @return A String containing @a len characters of @a s. -+ * -+ * If @a s equals String::out_of_memory_data(), returns an -+ * out-of-memory string. -+ */ -+inline -+String::String(const char *s, int len) -+{ -+ assign(s, len); -+} -+ -+/** @brief Create a String containing a copy of the characters from @a begin -+ * to @a end. -+ * @param begin first character in string (begin iterator). -+ * @param end pointer one past last character in string (end iterator). -+ * @return A String containing the characters from @a begin to @a end. -+ * -+ * Returns a null string if @a begin @> @a end. -+ * If @a begin equals String::out_of_memory_data(), returns an -+ * out-of-memory string. -+ */ -+inline -+String::String(const char *begin, const char *end) -+{ -+ assign(begin, (end > begin ? end - begin : 0)); -+} -+ -+/** @brief Create a String equal to "true" or "false" depending on the -+ * value of @a b. -+ * @param b a boolean variable. -+ */ -+inline -+String::String(bool b) -+ : _data(b ? "true" : "false"), _length(b ? 4 : 5), _memo(permanent_memo) -+{ -+ _memo->_refcount++; -+} -+ -+/** @brief Create a String containing the single character @a c. -+ * @param c a character. -+ */ -+inline -+String::String(char c) -+{ -+ assign(&c, 1); -+} -+ -+/** @brief Create a String containing the single character @a c. -+ * @param c an unsigned character. -+ */ -+inline -+String::String(unsigned char c) -+{ -+ assign(reinterpret_cast(&c), 1); -+} -+ -+/** @brief Create a String containing a copy of the String @a str. -+ * @param str a String. -+ */ -+inline -+String::String(const String &str) -+{ -+ assign(str); -+} -+ -+/** @brief Destroy a String, freeing memory if necessary. */ -+inline -+String::~String() -+{ -+ deref(); -+} -+ -+/** @brief Return the string's length. */ -+inline int -+String::length() const -+{ -+ return _length; -+} -+ -+/** @brief Return a pointer to the string's data. -+ * -+ * Only the first length() characters are valid, and the string data might not -+ * be null-terminated. */ -+inline const char * -+String::data() const -+{ -+ return _data; -+} -+ -+/** @brief Return an iterator for the first character in the string. -+ * -+ * String iterators are simply pointers into string data, so they are quite -+ * efficient. @sa String::data */ -+inline String::const_iterator -+String::begin() const -+{ -+ return _data; -+} -+ -+/** @brief Return an iterator for the end of the string. -+ * -+ * The return value points one character beyond the last character in the -+ * string. */ -+inline String::const_iterator -+String::end() const -+{ -+ return _data + _length; -+} -+ -+/** @brief Returns true iff the string is nonempty. */ -+inline -+String::operator unspecified_bool_type() const -+{ -+ return _length != 0 ? &String::length : 0; -+} -+ -+/** @brief Returns the @a i th character in the string. -+ * -+ * Does not check bounds. -+ * @sa String::at */ -+inline char -+String::operator[](int i) const -+{ -+ return _data[i]; -+} -+ -+/** @brief Returns the @a i th character in the string. -+ * -+ * Checks bounds: an assertion will fail if @a i is less than 0 or not less -+ * than length(). -+ * @sa String::operator[] -+ */ -+inline char -+String::at(int i) const -+{ -+ assert(i >= 0 && i < _length); -+ return _data[i]; -+} -+ -+/** @brief Returns the first character in the string. -+ * -+ * Does not do check bounds. Same as (*this)[0]. */ -+inline char -+String::front() const -+{ -+ return _data[0]; -+} -+ -+/** @brief Returns the last character in the string. -+ * -+ * Does not check bounds. Same as (*this)[length() - 1]. */ -+inline char -+String::back() const -+{ -+ return _data[_length - 1]; -+} -+ -+/** @brief Return true iff the String's data is shared or immutable. */ -+inline bool -+String::data_shared() const -+{ -+ return !_memo->_capacity || _memo->_refcount != 1; -+} -+ -+/** @brief Return an empty String. -+ * -+ * Returns a global constant, so it's quicker than String::String(). -+ */ -+inline const String & -+String::empty_string() -+{ -+ return *null_string_p; -+} -+ -+/** @brief Return a String that directly references the character data in -+ * [@a begin, @a end). -+ * @param begin pointer to the first character in the character data. -+ * @param end pointer one beyond the last character in the character data. -+ * -+ * This function is suitable for static constant strings whose data is known -+ * to stay around forever, such as C string constants. Returns a null string -+ * if @a begin @> @a end. -+ */ -+inline String -+String::stable_string(const char *begin, const char *end) -+{ -+ if (begin < end) -+ return String::stable_string(begin, end - begin); -+ else -+ return String(); -+} -+ -+/** @brief Return a substring of the current string starting at @a begin and -+ * ending before @a end. -+ * @param begin pointer to the first character in the desired substring. -+ * @param end pointer one beyond the last character in the desired substring. -+ * -+ * Returns a null string if @a begin @> @a end, or if @a begin or @a end is -+ * out of range (i.e., either less than this->begin() or greater than -+ * this->end()). -+ */ -+inline String -+String::substring(const char *begin, const char *end) const -+{ -+ if (begin < end && begin >= _data && end <= _data + _length) -+ return String(begin, end - begin, _memo); -+ else -+ return String(); -+} -+ -+/** @brief Return the suffix of the current string starting at index @a pos. -+ * -+ * Same as String::substring(@a pos, INT_MAX). -+ */ -+inline String -+String::substring(int pos) const -+{ -+ return substring(pos, _length); -+} -+ -+/** @brief Compare two strings. -+ * @param a first string to compare -+ * @param b second string to compare -+ * -+ * Returns 0 if @a a == @a b, negative if @a a @< @a b in lexicographic -+ * order, and positive if @a a @> @a b in lexicographic order. -+ */ -+inline int -+String::compare(const String &a, const String &b) -+{ -+ return a.compare(b); -+} -+ -+/** @brief Compare this string with string @a str. -+ * -+ * Same as String::compare(*this, @a str). -+ * @sa String::compare(const String &a, const String &b) */ -+inline int -+String::compare(const String &str) const -+{ -+ return compare(str._data, str._length); -+} -+ -+/** @relates String -+ * @brief Compares two strings for equality. -+ * -+ * Returns true iff the two operands have the same lengths and the same -+ * characters in the same order. At most one of the operands can be a -+ * null-terminated C string. -+ * @sa String::compare -+ */ -+inline bool -+operator==(const String &a, const String &b) -+{ -+ return a.equals(b.data(), b.length()); -+} -+ -+/** @relates String */ -+inline bool -+operator==(const char *a, const String &b) -+{ -+ return b.equals(a, -1); -+} -+ -+/** @relates String */ -+inline bool -+operator==(const String &a, const char *b) -+{ -+ return a.equals(b, -1); -+} -+ -+/** @relates String -+ * @brief Compare two Strings for inequality. -+ * -+ * Returns true iff !(@a a == @a b). At most one of the operands can be a -+ * null-terminated C string. */ -+inline bool -+operator!=(const String &a, const String &b) -+{ -+ return !a.equals(b.data(), b.length()); -+} -+ -+/** @relates String */ -+inline bool -+operator!=(const char *a, const String &b) -+{ -+ return !b.equals(a, -1); -+} -+ -+/** @relates String */ -+inline bool -+operator!=(const String &a, const char *b) -+{ -+ return !a.equals(b, -1); -+} -+ -+/** @relates String -+ * @brief Compare two Strings. -+ * -+ * Returns true iff @a a @< @a b in lexicographic order. -+ * @sa String::compare -+ */ -+inline bool -+operator<(const String &a, const String &b) -+{ -+ return a.compare(b.data(), b.length()) < 0; -+} -+ -+/** @relates String -+ * @brief Compare two Strings. -+ * -+ * Returns true iff @a a @<= @a b in lexicographic order. -+ * @sa String::compare -+ */ -+inline bool -+operator<=(const String &a, const String &b) -+{ -+ return a.compare(b.data(), b.length()) <= 0; -+} -+ -+/** @relates String -+ * @brief Compare two Strings. -+ * -+ * Returns true iff @a a @> @a b in lexicographic order. -+ * @sa String::compare -+ */ -+inline bool -+operator>(const String &a, const String &b) -+{ -+ return a.compare(b.data(), b.length()) > 0; -+} -+ -+/** @relates String -+ * @brief Compare two Strings. -+ * -+ * Returns true iff @a a @>= @a b in lexicographic order. -+ * @sa String::compare -+ */ -+inline bool -+operator>=(const String &a, const String &b) -+{ -+ return a.compare(b.data(), b.length()) >= 0; -+} -+ -+/** @brief Makes this string a copy of @a str. */ -+inline String & -+String::operator=(const String &str) -+{ -+ if (&str != this) { -+ deref(); -+ assign(str); -+ } -+ return *this; -+} -+ -+/** @brief Make this string a copy of the C string @a cstr. */ -+inline String & -+String::operator=(const char *cstr) -+{ -+ deref(); -+ assign(cstr, -1); -+ return *this; -+} -+ -+/** @brief Appends the data from @a begin to @a end to the end of this string. -+ * -+ * Does nothing if @a begin @>= @a end. */ -+inline void -+String::append(const char *begin, const char *end) -+{ -+ if (begin < end) -+ append(begin, end - begin); -+} -+ -+/** @brief Append a copy of @a str to the end of this string. -+ * -+ * Returns the result. */ -+inline String & -+String::operator+=(const String &str) -+{ -+ append(str._data, str._length); -+ return *this; -+} -+ -+/** @brief Append a copy of the C string @a cstr to the end of this string. -+ * -+ * Returns the result. */ -+inline String & -+String::operator+=(const char *cstr) -+{ -+ append(cstr, -1); -+ return *this; -+} -+ -+/** @brief Append the character @a c to the end of this string. -+ * -+ * Returns the result. */ -+inline String & -+String::operator+=(char c) -+{ -+ append(&c, 1); -+ return *this; -+} -+ -+/** @relates String -+ * @brief Concatenate the operands and return the result. -+ * -+ * At most one of the two operands can be a null-terminated C string. */ -+inline String -+operator+(String a, const String &b) -+{ -+ a += b; -+ return a; -+} -+ -+/** @relates String */ -+inline String -+operator+(String a, const char *b) -+{ -+ a.append(b, -1); -+ return a; -+} -+ -+/** @relates String */ -+inline String -+operator+(const char *a, const String &b) -+{ -+ String s1(a); -+ s1 += b; -+ return s1; -+} -+ -+/** @relates String -+ * @brief Concatenate the operands and return the result. -+ * -+ * The second operand is a single character. */ -+inline String -+operator+(String a, char b) -+{ -+ a.append(&b, 1); -+ return a; -+} -+ -+/** @brief Returns true iff this is an out-of-memory string. */ -+inline bool -+String::out_of_memory() const -+{ -+ return _data == &oom_string_data; -+} -+ -+/** @brief Return a reference to an out-of-memory String. */ -+inline const String & -+String::out_of_memory_string() -+{ -+ return *oom_string_p; -+} -+ -+/** @brief Return the data pointer used for out-of-memory strings. -+ * -+ * The returned value may be dereferenced; it points to a null character. -+ */ -+inline const char * -+String::out_of_memory_data() -+{ -+ return &oom_string_data; -+} -+ -+// find methods -+ -+inline const char *rfind(const char *begin, const char *end, char c) -+{ -+ for (const char *bb = end - 1; bb >= begin; bb--) -+ if (*bb == c) -+ return bb; -+ return end; -+} -+ -+inline const char *find(const String &s, char c) -+{ -+ return find(s.begin(), s.end(), c); -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/sync.hh click-1.6.0-27/inst/include/click/sync.hh ---- click-1.6.0/inst/include/click/sync.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/sync.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,467 @@ -+// -*- c-basic-offset: 4 -*- -+#ifndef CLICK_SYNC_HH -+#define CLICK_SYNC_HH -+#include -+#include -+#if CLICK_LINUXMODULE && defined(__SMP__) -+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) -+# include -+# else -+# include -+# endif -+# include -+# define my_cpu click_current_processor() -+# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) -+# define num_possible_cpus() smp_num_cpus -+# endif -+#endif -+CLICK_DECLS -+ -+// loop-in-cache spinlock implementation: 8 bytes. if the size of this class -+// changes, change size of padding in ReadWriteLock below. -+ -+/** @file -+ * @brief Classes for synchronizing among multiple CPUs, particularly in the -+ * Linux kernel. -+ */ -+ -+/** @class Spinlock -+ * @brief A spinlock for SMP Click threads. -+ * -+ * The Spinlock class abstracts a spinlock, or polling mutex, in SMP Click. -+ * This is a type of mutual-exclusion lock in which acquiring the lock is a -+ * polling operation (basically a "while (lock.acquired()) do nothing;" loop). -+ * Spinlocks can be used to synchronize access to shared data among multiple -+ * Click SMP threads. Spinlocks should not be held for long periods of time: -+ * use them for quick updates and such. -+ * -+ * Spinlock operations do nothing unless Click was compiled with SMP support -+ * (with --enable-multithread). Therefore, Spinlock should not be used to, -+ * for example, synchronize handlers with main element threads. See also -+ * SpinlockIRQ. -+ * -+ * The main Spinlock operations are acquire(), which acquires the lock, and -+ * release(), which releases the lock. attempt() acquires the lock only if it -+ * can be acquired instantaneously. -+ * -+ * It is OK for a thread to acquire a lock it has already acquired, but you -+ * must release it as many times as you have acquired it. -+ */ -+class Spinlock { public: -+ -+ inline Spinlock(); -+#if CLICK_LINUXMODULE && defined(__SMP__) -+ inline ~Spinlock(); -+#endif -+ -+ inline void acquire(); -+ inline void release(); -+ inline bool attempt(); -+ inline bool nested() const; -+ -+#if CLICK_LINUXMODULE && defined(__SMP__) -+ private: -+ volatile unsigned short _lock; -+ unsigned short _depth; -+ int _owner; -+#endif -+ -+}; -+ -+/** @brief Create a Spinlock. */ -+inline -+Spinlock::Spinlock() -+#if CLICK_LINUXMODULE && defined(__SMP__) -+ : _lock(0), _depth(0), _owner(-1) -+#endif -+{ -+#if CLICK_LINUXMODULE && defined(__SMP__) -+# if !defined(__i386__) && !defined(__x86_64__) -+# error "no multithread support for non i386 click" -+# endif -+#endif -+} -+ -+#if CLICK_LINUXMODULE && defined(__SMP__) -+inline -+Spinlock::~Spinlock() -+{ -+ if (_lock != 0) -+ click_chatter("warning: freeing unreleased lock"); -+} -+#endif -+ -+/** @brief Acquires the Spinlock. -+ * -+ * On return, this thread has acquired the lock. The function will spin -+ * indefinitely until the lock is acquired. It is OK to acquire a lock you -+ * have already acquired, but you must release it as many times as you have -+ * acquired it. -+ */ -+inline void -+Spinlock::acquire() -+{ -+#if CLICK_LINUXMODULE && defined(__SMP__) -+ if (_owner == my_cpu) { -+ _depth++; -+ return; -+ } -+ -+ register unsigned short content = 1; -+ test_and_set: -+ asm volatile ("xchgw %0,%1" -+ : "=r" (content), "=m" (_lock) -+ : "0" (content), "m" (_lock)); -+ if (content != 0) { -+ while(_lock != 0) -+ asm volatile ("" : : : "memory"); -+ goto test_and_set; -+ } -+ -+ _owner = my_cpu; -+ _depth++; -+#endif -+} -+ -+/** @brief Attempts to acquire the Spinlock. -+ * @return True iff the Spinlock was acquired. -+ * -+ * This function will acquire the lock and return true only if the Spinlock -+ * can be acquired right away, without retries. -+ */ -+inline bool -+Spinlock::attempt() -+{ -+#if CLICK_LINUXMODULE && defined(__SMP__) -+ if (_owner == my_cpu) { -+ _depth++; -+ return true; -+ } -+ -+ register unsigned short content = 1; -+ asm volatile ("xchgw %0,%1" -+ : "=r" (content), "=m" (_lock) -+ : "0" (content), "m" (_lock)); -+ if (content != 0) -+ return false; -+ else { -+ _owner = my_cpu; -+ _depth++; -+ return true; -+ } -+#else -+ return true; -+#endif -+} -+ -+/** @brief Releases the Spinlock. -+ * -+ * The Spinlock must have been previously acquired by either Spinlock::acquire -+ * or Spinlock::attempt. -+ */ -+inline void -+Spinlock::release() -+{ -+#if CLICK_LINUXMODULE && defined(__SMP__) -+ if (_owner != my_cpu) -+ click_chatter("releasing someone else's lock"); -+ if (_depth > 0) -+ _depth--; -+ else -+ click_chatter("lock already freed"); -+ if (_depth == 0) { -+ _owner = -1; -+ _lock = 0; -+ } -+#endif -+} -+ -+/** @brief Returns true iff the Spinlock has been acquired more than once by -+ * the current thread. -+ */ -+inline bool -+Spinlock::nested() const -+{ -+#if CLICK_LINUXMODULE && defined(__SMP__) -+ return _depth > 1; -+#else -+ return false; -+#endif -+} -+ -+ -+/** @class SpinlockIRQ -+ * @brief A spinlock that disables interrupts. -+ * -+ * The SpinlockIRQ class abstracts a spinlock, or polling mutex, that also -+ * turns off interrupts. Spinlocks are a type of mutual-exclusion lock in -+ * which acquiring the lock is a polling operation (basically a "while -+ * (lock.acquired()) do nothing;" loop). The SpinlockIRQ variant can be used -+ * to protect Click data structures from interrupts and from other threads. -+ * Very few objects in Click need this protection; the Click Master object, -+ * which protects the task list, uses it, but that's hidden from users. -+ * Spinlocks should not be held for long periods of time: use them for quick -+ * updates and such. -+ * -+ * In the Linux kernel, SpinlockIRQ is equivalent to a combination of -+ * local_irq_save and the spinlock_t type. -+ * -+ * The SpinlockIRQ operations are acquire(), which acquires the lock, and -+ * release(), which releases the lock. -+ * -+ * It is NOT OK for a SpinlockIRQ thread to acquire a lock it has already -+ * acquired. -+ */ -+class SpinlockIRQ { public: -+ -+ inline SpinlockIRQ(); -+ -+#if CLICK_LINUXMODULE -+ typedef unsigned long flags_t; -+#else -+ typedef int flags_t; -+#endif -+ -+ inline flags_t acquire(); -+ inline void release(flags_t); -+ -+#if CLICK_LINUXMODULE -+ private: -+ spinlock_t _lock; -+#endif -+ -+}; -+ -+/** @brief Creates a SpinlockIRQ. */ -+inline -+SpinlockIRQ::SpinlockIRQ() -+{ -+#if CLICK_LINUXMODULE -+ spin_lock_init(&_lock); -+#endif -+} -+ -+/** @brief Acquires the SpinlockIRQ. -+ * @return The current state of the interrupt flags. -+ */ -+inline SpinlockIRQ::flags_t -+SpinlockIRQ::acquire() -+{ -+#if CLICK_LINUXMODULE -+ flags_t flags; -+ spin_lock_irqsave(&_lock, flags); -+ return flags; -+#else -+ return 0; -+#endif -+} -+ -+/** @brief Releases the SpinlockIRQ. -+ * @param flags The value returned by SpinlockIRQ::acquire(). -+ */ -+inline void -+SpinlockIRQ::release(flags_t flags) -+{ -+#if CLICK_LINUXMODULE -+ spin_unlock_irqrestore(&_lock, flags); -+#else -+ (void) flags; -+#endif -+} -+ -+ -+// read-write lock -+// -+// on read: acquire local read lock -+// on write: acquire every read lock -+// -+// alternatively, we could use a read counter and a write lock. we don't do -+// that because we'd like to avoid a cache miss for read acquires. this makes -+// reads very fast, and writes more expensive -+ -+/** @class ReadWriteLock -+ * @brief A read/write lock. -+ * -+ * The ReadWriteLock class abstracts a read/write lock in SMP Click. Multiple -+ * SMP Click threads can hold read locks simultaneously, but if any thread -+ * holds a write lock, then no other thread holds any kind of lock. The -+ * read/write lock is implemented with Spinlock objects, so acquiring a lock -+ * is a polling operation. ReadWriteLocks can be used to synchronize access -+ * to shared data among multiple Click SMP threads. ReadWriteLocks should not -+ * be held for long periods of time: use them for quick updates and such. -+ * -+ * ReadWriteLock operations do nothing unless Click was compiled with SMP -+ * support (with --enable-multithread). Therefore, ReadWriteLock should not -+ * be used to, for example, synchronize handlers with main element threads. -+ * -+ * The main ReadWriteLock operations are acquire_read() and acquire_write(), -+ * which acquire the lock for reading or writing, respectively, and -+ * release_read() and release_write(), which similarly release the lock. -+ * attempt_read() and attempt_write() acquire the lock only if it can be -+ * acquired instantaneously. -+ * -+ * It is OK for a thread to acquire a lock it has already acquired, but you -+ * must release it as many times as you have acquired it. -+ * -+ * ReadWriteLock objects are relatively large in terms of memory usage; don't -+ * create too many of them. -+ */ -+class ReadWriteLock { public: -+ -+ inline ReadWriteLock(); -+#if CLICK_LINUXMODULE && defined(__SMP__) -+ inline ~ReadWriteLock(); -+#endif -+ -+ inline void acquire_read(); -+ inline bool attempt_read(); -+ inline void release_read(); -+ inline void acquire_write(); -+ inline bool attempt_write(); -+ inline void release_write(); -+ -+#if CLICK_LINUXMODULE && defined(__SMP__) -+ private: -+ // allocate 32 bytes (size of a cache line) for every member -+ struct lock_t { -+ Spinlock _lock; -+ unsigned char reserved[24]; -+ } *_l; -+#endif -+ -+}; -+ -+/** @brief Creates a ReadWriteLock. */ -+inline -+ReadWriteLock::ReadWriteLock() -+{ -+#if CLICK_LINUXMODULE && defined(__SMP__) -+ _l = new lock_t[num_possible_cpus()]; -+#endif -+} -+ -+#if CLICK_LINUXMODULE && defined(__SMP__) -+inline -+ReadWriteLock::~ReadWriteLock() -+{ -+ delete[] _l; -+} -+#endif -+ -+/** @brief Acquires the ReadWriteLock for reading. -+ * -+ * On return, this thread has acquired the lock for reading. The function -+ * will spin indefinitely until the lock is acquired. It is OK to acquire a -+ * lock you have already acquired, but you must release it as many times as -+ * you have acquired it. -+ * -+ * @sa Spinlock::acquire -+ */ -+inline void -+ReadWriteLock::acquire_read() -+{ -+#if CLICK_LINUXMODULE && defined(__SMP__) -+ assert(my_cpu >= 0); -+ _l[my_cpu]._lock.acquire(); -+#endif -+} -+ -+/** @brief Attempts to acquire the ReadWriteLock for reading. -+ * @return True iff the ReadWriteLock was acquired. -+ * -+ * This function will acquire the lock for reading and return true only if the -+ * ReadWriteLock can be acquired right away, without retries. -+ */ -+inline bool -+ReadWriteLock::attempt_read() -+{ -+#if CLICK_LINUXMODULE && defined(__SMP__) -+ assert(my_cpu >= 0); -+ return _l[my_cpu]._lock.attempt(); -+#else -+ return true; -+#endif -+} -+ -+/** @brief Releases the ReadWriteLock for reading. -+ * -+ * The ReadWriteLock must have been previously acquired by either -+ * ReadWriteLock::acquire_read or ReadWriteLock::attempt_read. Do not call -+ * release_read() on a lock that was acquired for writing. -+ */ -+inline void -+ReadWriteLock::release_read() -+{ -+#if CLICK_LINUXMODULE && defined(__SMP__) -+ assert(my_cpu >= 0); -+ _l[my_cpu]._lock.release(); -+#endif -+} -+ -+/** @brief Acquires the ReadWriteLock for writing. -+ * -+ * On return, this thread has acquired the lock for writing. The function -+ * will spin indefinitely until the lock is acquired. It is OK to acquire a -+ * lock you have already acquired, but you must release it as many times as -+ * you have acquired it. -+ * -+ * @sa ReadWriteLock::acquire_read -+ */ -+inline void -+ReadWriteLock::acquire_write() -+{ -+#if CLICK_LINUXMODULE && defined(__SMP__) -+ for (unsigned i = 0; i < num_possible_cpus(); i++) -+ _l[i]._lock.acquire(); -+#endif -+} -+ -+/** @brief Attempts to acquire the ReadWriteLock for writing. -+ * @return True iff the ReadWriteLock was acquired. -+ * -+ * This function will acquire the lock for writing and return true only if the -+ * ReadWriteLock can be acquired right away, without retries. Note, however, -+ * that acquiring a ReadWriteLock requires as many operations as there are -+ * CPUs. -+ * -+ * @sa ReadWriteLock::attempt_read -+ */ -+inline bool -+ReadWriteLock::attempt_write() -+{ -+#if CLICK_LINUXMODULE && defined(__SMP__) -+ bool all = true; -+ unsigned i; -+ for (i = 0; i < num_possible_cpus(); i++) -+ if (!(_l[i]._lock.attempt())) { -+ all = false; -+ break; -+ } -+ if (!all) -+ for (unsigned j = 0; j < i; j++) -+ _l[j]._lock.release(); -+ return all; -+#else -+ return true; -+#endif -+} -+ -+/** @brief Releases the ReadWriteLock for writing. -+ * -+ * The ReadWriteLock must have been previously acquired by either -+ * ReadWriteLock::acquire_write or ReadWriteLock::attempt_write. Do not call -+ * release_write() on a lock that was acquired for reading. -+ * -+ * @sa ReadWriteLock::release_read -+ */ -+inline void -+ReadWriteLock::release_write() -+{ -+#if CLICK_LINUXMODULE && defined(__SMP__) -+ for (unsigned i = 0; i < num_possible_cpus(); i++) -+ _l[i]._lock.release(); -+#endif -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/task.hh click-1.6.0-27/inst/include/click/task.hh ---- click-1.6.0/inst/include/click/task.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/task.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,582 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/task.cc" -*- -+#ifndef CLICK_TASK_HH -+#define CLICK_TASK_HH -+#include -+#include -+#if __MTCLICK__ -+# include -+# include -+#endif -+CLICK_DECLS -+ -+#if CLICK_BSDMODULE -+extern "C" { -+ #include -+ #include -+} -+#else -+#define GIANT_REQUIRED -+#endif -+ -+#define PASS_GT(a, b) ((int)(a - b) > 0) -+ -+typedef bool (*TaskHook)(Task *, void *); -+class RouterThread; -+class TaskList; -+class Master; -+ -+class Task { public: -+ -+#ifdef HAVE_STRIDE_SCHED -+ enum { STRIDE1 = 1U<<16, MAX_STRIDE = 1U<<31 }; -+ enum { MAX_TICKETS = 1<<15, DEFAULT_TICKETS = 1<<10 }; -+#endif -+#ifdef HAVE_ADAPTIVE_SCHEDULER -+ enum { MAX_UTILIZATION = 1000 }; -+#endif -+ -+ inline Task(TaskHook hook, void *thunk); -+ inline Task(Element *e); // call element->run_task() -+ ~Task(); -+ -+ inline TaskHook hook() const; -+ inline void *thunk() const; -+ inline Element *element() const; -+ -+ inline bool scheduled() const; -+ -+ void unschedule(); -+ inline void reschedule(); -+ -+ void strong_unschedule(); -+ void strong_reschedule(); -+ -+#ifdef HAVE_TASK_HEAP -+ void fast_reschedule(); -+#else -+ inline void fast_reschedule(); -+#endif -+ -+ inline int home_thread_id() const; -+ void move_thread(int thread_id); -+ -+#ifdef HAVE_STRIDE_SCHED -+ inline int tickets() const; -+ inline void set_tickets(int n); -+ inline void adjust_tickets(int delta); -+#endif -+ -+ inline bool initialized() const; -+ void initialize(Router *, bool scheduled); -+ void initialize(Element *, bool scheduled); -+ inline RouterThread *thread() const; -+ Master *master() const; -+ -+ inline void call_hook(); -+ -+#ifdef HAVE_ADAPTIVE_SCHEDULER -+ inline unsigned runs() const; -+ inline unsigned work_done() const; -+ inline unsigned utilization() const; -+ inline void clear_runs(); -+#endif -+#if __MTCLICK__ -+ inline int cycles() const; -+ inline unsigned cycle_runs() const; -+ inline void update_cycles(unsigned c); -+#endif -+ -+ private: -+ -+ /* if gcc keeps this ordering, we may get some cache locality on a 16 or 32 -+ * byte cache line: the first three fields are used in list traversal */ -+ -+#ifdef HAVE_TASK_HEAP -+ int _schedpos; -+#else -+ Task* _prev; -+ Task* _next; -+#endif -+ unsigned _should_be_scheduled; -+ -+#ifdef HAVE_STRIDE_SCHED -+ unsigned _pass; -+ unsigned _stride; -+ int _tickets; -+#endif -+ -+ TaskHook _hook; -+ void* _thunk; -+ -+#ifdef HAVE_ADAPTIVE_SCHEDULER -+ unsigned _runs; -+ unsigned _work_done; -+#endif -+#if __MTCLICK__ -+ DirectEWMA _cycles; -+ unsigned _cycle_runs; -+#endif -+ -+ RouterThread* _thread; -+ int _home_thread_id; -+ -+ Router* _router; -+ -+ volatile uintptr_t _pending_nextptr; -+ -+ Task(const Task&); -+ Task& operator=(const Task&); -+ void cleanup(); -+ -+ void add_pending(); -+ void process_pending(RouterThread*); -+ inline void fast_schedule(); -+ void true_reschedule(); -+ inline void lock_tasks(); -+ inline bool attempt_lock_tasks(); -+ -+ static bool error_hook(Task*, void*); -+ -+ inline void fast_unschedule(bool should_be_scheduled); -+ -+ static inline Task *pending_to_task(uintptr_t); -+ inline Task *pending_to_task() const; -+ -+ friend class RouterThread; -+ friend class Master; -+ -+}; -+ -+ -+// need RouterThread's definition for inline functions -+CLICK_ENDDECLS -+#include -+CLICK_DECLS -+ -+ -+/** @brief Construct a task that calls @a hook with @a thunk argument. -+ * -+ * @param hook task hook -+ * @param thunk user data for task hook -+ * -+ * Constructs a task that, when fired, calls the @a hook function like so: -+ * -+ * @code -+ * bool work_done = hook(task, thunk); -+ * @endcode -+ * -+ * where @a task is a pointer to this task. The @a hook should return true if -+ * the task accomplished some meaningful work, and false if it did not. For -+ * example, a task that polls a network driver for packets should return true -+ * if it emits at least one packet, and false if no packets were available. -+ */ -+inline -+Task::Task(TaskHook hook, void* thunk) -+#ifdef HAVE_TASK_HEAP -+ : _schedpos(-1), -+#else -+ : _prev(0), _next(0), -+#endif -+ _should_be_scheduled(false), -+#ifdef HAVE_STRIDE_SCHED -+ _pass(0), _stride(0), _tickets(-1), -+#endif -+ _hook(hook), _thunk(thunk), -+#ifdef HAVE_ADAPTIVE_SCHEDULER -+ _runs(0), _work_done(0), -+#endif -+#if __MTCLICK__ -+ _cycle_runs(0), -+#endif -+ _thread(0), _home_thread_id(-1), -+ _router(0), _pending_nextptr(0) -+{ -+} -+ -+/** @brief Construct a task that calls @a e ->@link Element::run_task(Task *) -+ * run_task()@endlink. -+ * -+ * @param e element to call -+ * -+ * Constructs a task that, when fired, calls the element @a e's @link -+ * Element::run_task(Task *) run_task()@endlink method, passing this Task -+ * as an argument. -+ * -+ * @sa Task(TaskHook, void *) -+ */ -+inline -+Task::Task(Element* e) -+#ifdef HAVE_TASK_HEAP -+ : _schedpos(-1), -+#else -+ : _prev(0), _next(0), -+#endif -+ _should_be_scheduled(false), -+#ifdef HAVE_STRIDE_SCHED -+ _pass(0), _stride(0), _tickets(-1), -+#endif -+ _hook(0), _thunk(e), -+#ifdef HAVE_ADAPTIVE_SCHEDULER -+ _runs(0), _work_done(0), -+#endif -+#if __MTCLICK__ -+ _cycle_runs(0), -+#endif -+ _thread(0), _home_thread_id(-1), -+ _router(0), _pending_nextptr(0) -+{ -+} -+ -+/** @brief Returns true iff the task has been initialize()d. */ -+inline bool -+Task::initialized() const -+{ -+ return _router != 0; -+} -+ -+/** @brief Returns true iff the task is currently scheduled to run. -+ * -+ * This function will return false for a task in reschedule-pending state, -+ * where the task will soon be rescheduled but isn't right now due to locking -+ * issues. -+ */ -+inline bool -+Task::scheduled() const -+{ -+#if HAVE_TASK_HEAP -+ return _schedpos >= 0; -+#else -+ return _prev != 0; -+#endif -+} -+ -+/** @brief Returns the task's hook function. -+ * -+ * Returns null if the task was constructed with the Task(Element *) -+ * constructor. -+ */ -+inline TaskHook -+Task::hook() const -+{ -+ return _hook; -+} -+ -+/** @brief Returns the task's thunk (the user data passed to its hook). -+ */ -+inline void * -+Task::thunk() const -+{ -+ return _thunk; -+} -+ -+/** @brief Returns the task's associated element, if any. -+ * -+ * Only works if the task was constructed with the Task(Element *) -+ * constructor. -+ */ -+inline Element * -+Task::element() const -+{ -+ return _hook ? 0 : reinterpret_cast(_thunk); -+} -+ -+/** @brief Returns the task's home thread ID. -+ * -+ * This is the @link RouterThread::thread_id() thread_id()@endlink of the -+ * thread on which this Task would run if it were scheduled. This need not -+ * equal the ID of the current thread(), since changes in home_thread_id() -+ * aren't always implemented immediately (because of locking issues). -+ */ -+inline int -+Task::home_thread_id() const -+{ -+ return _home_thread_id; -+} -+ -+/** @brief Returns the thread on which this element is currently scheduled, or -+ * would be scheduled. -+ * -+ * Usually, task->thread()->@link RouterThread::thread_id() -+ * thread_id()@endlink == task->home_thread_id(). They can differ, however, -+ * if move_thread() was called but the task hasn't yet been moved to -+ * the new thread, or if the task was strongly unscheduled with -+ * strong_unschedule(). (In this last case, task->thread()->@link -+ * RouterThread::thread_id() thread_id()@endlink == -+ * RouterThread::THREAD_STRONG_UNSCHEDULE.) -+ */ -+inline RouterThread * -+Task::thread() const -+{ -+ return _thread; -+} -+ -+inline void -+Task::fast_unschedule(bool should_be_scheduled) -+{ -+#if CLICK_LINUXMODULE -+ assert(!in_interrupt()); -+#endif -+#if CLICK_BSDMODULE -+ GIANT_REQUIRED; -+#endif -+ if (scheduled()) { -+#ifdef HAVE_TASK_HEAP -+ Task* back = _thread->_task_heap.back(); -+ _thread->_task_heap.pop_back(); -+ if (_thread->_task_heap.size() > 0) -+ _thread->task_reheapify_from(_schedpos, back); -+ _schedpos = -1; -+#else -+ _next->_prev = _prev; -+ _prev->_next = _next; -+ _next = _prev = 0; -+#endif -+ } -+ _should_be_scheduled = should_be_scheduled; -+} -+ -+#ifdef HAVE_STRIDE_SCHED -+ -+/** @brief Returns the task's number of tickets. -+ * -+ * Tasks with larger numbers of tickets are scheduled more often. Tasks are -+ * initialized with tickets() == DEFAULT_TICKETS. -+ * -+ * @sa set_tickets, adjust_tickets -+ */ -+inline int -+Task::tickets() const -+{ -+ return _tickets; -+} -+ -+/** @brief Sets the task's number of tickets. -+ * @param n the ticket count -+ * -+ * The ticket count @a n is pinned in the range [1, MAX_TICKETS]. -+ * -+ * @sa tickets, adjust_tickets -+ */ -+inline void -+Task::set_tickets(int n) -+{ -+ if (n > MAX_TICKETS) -+ n = MAX_TICKETS; -+ else if (n < 1) -+ n = 1; -+ _tickets = n; -+ _stride = STRIDE1 / n; -+ assert(_stride < MAX_STRIDE); -+} -+ -+/** @brief Add @a delta to the Task's ticket count. -+ * @param delta adjustment to the ticket count -+ * -+ * The ticket count cannot be adjusted below 1 or above MAX_TICKETS. -+ * -+ * @sa set_tickets -+ */ -+inline void -+Task::adjust_tickets(int delta) -+{ -+ set_tickets(_tickets + delta); -+} -+ -+# ifndef HAVE_TASK_HEAP -+/** @brief Reschedules the task. The task's current thread must be currently -+ * locked. -+ * -+ * This accomplishes the same function as reschedule(), but does a faster job -+ * because it assumes the task's thread lock is held. Generally, this can be -+ * guaranteed only from within a task's run_task() hook function. -+ */ -+inline void -+Task::fast_reschedule() -+{ -+ assert(_thread); -+# if CLICK_LINUXMODULE -+ // tasks never run at interrupt time in Linux -+ assert(!in_interrupt()); -+# endif -+# if CLICK_BSDMODULE -+ GIANT_REQUIRED; -+# endif -+ -+ if (!scheduled()) { -+ // increase pass -+ _pass += _stride; -+ -+# if 0 -+ // look for 'n' immediately before where we should be scheduled -+ Task* n = _thread->_prev; -+ while (n != _thread && PASS_GT(n->_pass, _pass)) -+ n = n->_prev; -+ -+ // schedule after 'n' -+ _next = n->_next; -+ _prev = n; -+ n->_next = this; -+ _next->_prev = this; -+# else -+ // look for 'n' immediately after where we should be scheduled -+ Task* n = _thread->_next; -+# ifdef CLICK_BSDMODULE /* XXX MARKO a race occured here when not spl'ed */ -+ while (n->_next != NULL && n != _thread && !PASS_GT(n->_pass, _pass)) -+# else -+ while (n != _thread && !PASS_GT(n->_pass, _pass)) -+# endif -+ n = n->_next; -+ -+ // schedule before 'n' -+ _prev = n->_prev; -+ _next = n; -+ _prev->_next = this; -+ n->_prev = this; -+# endif -+ } -+} -+# endif /* !HAVE_TASK_HEAP */ -+ -+inline void -+Task::fast_schedule() -+{ -+ GIANT_REQUIRED; -+ assert(_tickets >= 1); -+ _pass = _thread->_pass; -+ fast_reschedule(); -+} -+ -+#else /* !HAVE_STRIDE_SCHED */ -+ -+inline void -+Task::fast_reschedule() -+{ -+ assert(_thread); -+#if CLICK_LINUXMODULE -+ // tasks never run at interrupt time -+ assert(!in_interrupt()); -+#endif -+#if CLICK_BSDMODULE -+ // assert(!intr_nesting_level); -+ GIANT_REQUIRED; -+#endif -+ if (!scheduled()) { -+ _prev = _thread->_prev; -+ _next = _thread; -+ _thread->_prev = this; -+ _thread->_next = this; -+ } -+} -+ -+inline void -+Task::fast_schedule() -+{ -+ fast_reschedule(); -+} -+ -+#endif /* HAVE_STRIDE_SCHED */ -+ -+ -+/** @brief Reschedules the task. -+ * -+ * The task is rescheduled on its home thread. The task will eventually run -+ * (unless the home thread is quiescent). Due to locking issues, the task may -+ * not be scheduled right away -- scheduled() may not immediately return true. -+ * -+ * @sa unschedule, strong_reschedule -+ */ -+inline void -+Task::reschedule() -+{ -+ GIANT_REQUIRED; -+ if (!scheduled()) -+ true_reschedule(); -+} -+ -+ -+/** @brief Call the task's hook. -+ * -+ * This function is generally called by the RouterThread implementation; there -+ * should be no need to call it yourself. -+ */ -+inline void -+Task::call_hook() -+{ -+#if __MTCLICK__ -+ _cycle_runs++; -+#endif -+#ifdef HAVE_ADAPTIVE_SCHEDULER -+ _runs++; -+ if (!_hook) -+ _work_done += ((Element*)_thunk)->run_task(this); -+ else -+ _work_done += _hook(this, _thunk); -+#else -+ if (!_hook) -+ (void) ((Element*)_thunk)->run_task(this); -+ else -+ (void) _hook(this, _thunk); -+#endif -+} -+ -+#ifdef HAVE_ADAPTIVE_SCHEDULER -+inline unsigned -+Task::runs() const -+{ -+ return _runs; -+} -+ -+inline unsigned -+Task::work_done() const -+{ -+ return _work_done; -+} -+ -+inline unsigned -+Task::utilization() const -+{ -+ return (_runs ? (MAX_UTILIZATION * _work_done) / _runs : 0); -+} -+ -+inline void -+Task::clear_runs() -+{ -+ _runs = _work_done = 0; -+} -+#endif -+ -+#if __MTCLICK__ -+inline int -+Task::cycles() const -+{ -+ return _cycles.unscaled_average(); -+} -+ -+inline unsigned -+Task::cycle_runs() const -+{ -+ return _cycle_runs; -+} -+ -+inline void -+Task::update_cycles(unsigned c) -+{ -+ _cycles.update(c); -+ _cycle_runs = 0; -+} -+#endif -+ -+inline Task * -+Task::pending_to_task(uintptr_t ptr) -+{ -+ return reinterpret_cast(ptr & ~(uintptr_t) 3); -+} -+ -+inline Task * -+Task::pending_to_task() const -+{ -+ return pending_to_task(_pending_nextptr); -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/timer.hh click-1.6.0-27/inst/include/click/timer.hh ---- click-1.6.0/inst/include/click/timer.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/timer.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,243 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/timer.cc" -*- -+#ifndef CLICK_TIMER_HH -+#define CLICK_TIMER_HH -+#include -+#include -+#include -+#include -+CLICK_DECLS -+class Element; -+class Router; -+class Timer; -+class Task; -+ -+typedef void (*TimerHook)(Timer *, void *); -+ -+class Timer { public: -+ -+ Timer(); -+ Timer(TimerHook hook, void *thunk); -+ Timer(Element *element); // call element->run_timer() -+ Timer(Task *task); // call task->reschedule() -+ inline ~Timer(); -+ -+ void set_hook(TimerHook hook, void *thunk); -+ void set_hook(Element *element); -+ void set_hook(Task *task); -+ -+ inline bool initialized() const; -+ inline bool scheduled() const; -+ inline const Timestamp &expiry() const; -+ -+ inline void initialize(Router*); -+ inline void initialize(Element*); -+ -+ void schedule_at(const Timestamp &when); -+ inline void reschedule_at(const Timestamp &when); // synonym -+ -+ inline void schedule_now(); -+ void schedule_after(const Timestamp &delta); -+ inline void schedule_after_sec(uint32_t delta_sec); -+ inline void schedule_after_msec(uint32_t delta_msec); -+ inline void reschedule_after(const Timestamp &delta); -+ inline void reschedule_after_sec(uint32_t delta_sec); -+ inline void reschedule_after_msec(uint32_t delta_msec); -+ -+ void unschedule(); -+ -+ inline void schedule_after_s(uint32_t delta_sec) CLICK_DEPRECATED; -+ inline void schedule_after_ms(uint32_t delta_sec) CLICK_DEPRECATED; -+ inline void reschedule_after_s(uint32_t delta_sec) CLICK_DEPRECATED; -+ inline void reschedule_after_ms(uint32_t delta_sec) CLICK_DEPRECATED; -+ -+ private: -+ -+ int _schedpos; -+ Timestamp _expiry; -+ TimerHook _hook; -+ void *_thunk; -+ Router *_router; -+ -+ Timer(const Timer &); -+ Timer &operator=(const Timer &); -+ -+ friend class Master; -+ -+}; -+ -+/** @brief Destroy a Timer, unscheduling it first if necessary. */ -+inline -+Timer::~Timer() -+{ -+ if (scheduled()) -+ unschedule(); -+} -+ -+/** @brief Returns true iff the Timer has been initialized. */ -+inline bool -+Timer::initialized() const -+{ -+ return _router != 0; -+} -+ -+/** @brief Returns true iff the Timer is currently scheduled. */ -+inline bool -+Timer::scheduled() const -+{ -+ return _schedpos >= 0; -+} -+ -+/** @brief Returns the Timer's current expiration time. -+ * -+ * The expiration time is the absolute time at which the timer is next -+ * scheduled to fire. If the timer is not currently scheduled, then expiry() -+ * returns the last assigned expiration time. */ -+inline const Timestamp & -+Timer::expiry() const -+{ -+ return _expiry; -+} -+ -+/** @brief Initialize the timer. -+ * -+ * @param router the containing router -+ * -+ * Before a timer can be used, it must be attached to a containing router. -+ * When that router is destroyed, the timer is automatically unscheduled. -+ */ -+inline void -+Timer::initialize(Router *router) -+{ -+ assert(!initialized()); -+ _router = router; -+} -+ -+/** @brief Initialize the timer. -+ * -+ * @param element identifies the containing router -+ * -+ * @sa initialize(Router *router) -+ */ -+inline void -+Timer::initialize(Element *element) -+{ -+ initialize(element->router()); -+} -+ -+/** @brief Schedule the timer to fire at @a when. -+ * -+ * @param when expiration time -+ * -+ * This element is a synonym for schedule_at(). */ -+inline void -+Timer::reschedule_at(const Timestamp &when) -+{ -+ schedule_at(when); -+} -+ -+/** @brief Shedule the timer to fire immediately. -+ * -+ * Equivalent to schedule_at(Timestamp::now()). */ -+inline void -+Timer::schedule_now() -+{ -+ schedule_at(Timestamp::now()); -+} -+ -+/** @brief Schedule the timer to fire after @a delta_sec seconds. -+ * -+ * @param delta_sec interval until expiration time, in seconds -+ * -+ * @sa schedule_after, reschedule_after_sec */ -+inline void -+Timer::schedule_after_sec(uint32_t delta_sec) -+{ -+ schedule_after(Timestamp(delta_sec, 0)); -+} -+ -+/** @brief Schedule the timer to fire after @a delta_msec milliseconds. -+ * -+ * @param delta_msec interval until expiration time, in milliseconds -+ * -+ * @sa schedule_after, reschedule_after_msec */ -+inline void -+Timer::schedule_after_msec(uint32_t delta_msec) -+{ -+ schedule_after(Timestamp::make_msec(delta_msec)); -+} -+ -+/** @brief Schedule the timer to fire @a delta time after its previous expiry. -+ * -+ * @param delta interval until expiration time -+ * -+ * @sa schedule_after */ -+inline void -+Timer::reschedule_after(const Timestamp &delta) -+{ -+ schedule_at(_expiry + delta); -+} -+ -+/** @brief Schedule the timer to fire @a delta_sec seconds after its previous -+ * expiry. -+ * -+ * @param delta_sec interval until expiration time, in seconds -+ * -+ * @sa schedule_after_sec */ -+inline void -+Timer::reschedule_after_sec(uint32_t delta_sec) -+{ -+ schedule_at(Timestamp(_expiry.sec() + delta_sec, _expiry.subsec())); -+} -+ -+/** @brief Schedule the timer to fire @a delta_msec milliseconds after its -+ * previous expiry. -+ * -+ * @param delta_msec interval until expiration time, in milliseconds -+ * -+ * @sa schedule_after_msec */ -+inline void -+Timer::reschedule_after_msec(uint32_t delta_msec) -+{ -+ schedule_at(_expiry + Timestamp::make_msec(delta_msec)); -+} -+ -+/** @brief Schedule the timer to fire after @a delta_sec seconds (deprecated). -+ * -+ * @deprecated Use schedule_after_sec() instead. */ -+inline void -+Timer::schedule_after_s(uint32_t delta_sec) -+{ -+ schedule_after_sec(delta_sec); -+} -+ -+/** @brief Schedule the timer to fire after @a delta_msec milliseconds (deprecated). -+ * -+ * @deprecated Use schedule_after_msec() instead. */ -+inline void -+Timer::schedule_after_ms(uint32_t delta_msec) -+{ -+ schedule_after_msec(delta_msec); -+} -+ -+/** @brief Schedule the timer to fire @a delta_sec seconds after its previous -+ * expiry time (deprecated). -+ * -+ * @deprecated Use reschedule_after_sec() instead. */ -+inline void -+Timer::reschedule_after_s(uint32_t delta_sec) -+{ -+ reschedule_after_sec(delta_sec); -+} -+ -+/** @brief Schedule the timer to fire @a delta_msec milliseconds after its -+ * previous expiry time (deprecated). -+ * -+ * @deprecated Use reschedule_after_msec() instead. */ -+inline void -+Timer::reschedule_after_ms(uint32_t delta_msec) -+{ -+ reschedule_after_msec(delta_msec); -+} -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/timestamp.hh click-1.6.0-27/inst/include/click/timestamp.hh ---- click-1.6.0/inst/include/click/timestamp.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/timestamp.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,699 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/timestamp.cc" -*- -+#ifndef CLICK_TIMESTAMP_HH -+#define CLICK_TIMESTAMP_HH -+#include -+CLICK_DECLS -+class String; -+#if !HAVE_NANOTIMESTAMP && SIZEOF_STRUCT_TIMEVAL == 8 -+# define TIMESTAMP_PUNS_TIMEVAL 1 -+#endif -+#if HAVE_STRUCT_TIMESPEC && HAVE_NANOTIMESTAMP && SIZEOF_STRUCT_TIMESPEC == 8 -+# define TIMESTAMP_PUNS_TIMESPEC 1 -+#endif -+#if !CLICK_LINUXMODULE && !CLICK_BSDMODULE -+# include -+#endif -+ -+#if HAVE_NANOTIMESTAMP -+# define PRITIMESTAMP "%d.%09d" -+#else -+# define PRITIMESTAMP "%d.%06d" -+#endif -+ -+class Timestamp { public: -+ -+#if HAVE_NANOTIMESTAMP -+ enum { -+ NSUBSEC = 1000000000 /**< Number of subseconds in a second. Can be -+ 1000000 or 1000000000, depending on how -+ Click is compiled. */ -+ }; -+#else -+ enum { -+ NSUBSEC = 1000000 -+ }; -+#endif -+ -+ inline Timestamp(); -+ inline Timestamp(int32_t sec, uint32_t subsec); -+ inline Timestamp(const struct timeval &tv); -+#if HAVE_STRUCT_TIMESPEC -+ inline Timestamp(const struct timespec &ts); -+#endif -+#if !CLICK_LINUXMODULE && !CLICK_BSDMODULE -+ inline Timestamp(double); -+#endif -+ -+ typedef int32_t (Timestamp::*unspecified_bool_type)() const; -+ inline operator unspecified_bool_type() const; -+ -+ inline int32_t sec() const; -+ inline uint32_t subsec() const; -+ -+ inline uint32_t msec() const; -+ inline uint32_t usec() const; -+ inline uint32_t nsec() const; -+ -+ inline int32_t msec1() const; -+ inline int32_t usec1() const; -+ inline int32_t nsec1() const; -+ -+#if TIMESTAMP_PUNS_TIMEVAL -+ inline const struct timeval &timeval() const; -+#else -+ inline struct timeval timeval() const; -+#endif -+#if HAVE_STRUCT_TIMESPEC -+# if TIMESTAMP_PUNS_TIMESPEC -+ inline const struct timespec ×pec() const; -+# else -+ inline struct timespec timespec() const; -+# endif -+#endif -+#if !CLICK_LINUXMODULE && !CLICK_BSDMODULE -+ inline double doubleval() const; -+#endif -+ -+ static inline Timestamp make_msec(uint32_t msec); -+ static inline Timestamp make_usec(int32_t sec, uint32_t usec); -+ static inline Timestamp make_usec(uint32_t usec); -+ static inline Timestamp make_nsec(int32_t sec, uint32_t nsec); -+ -+ static inline Timestamp epsilon(); -+ static inline Timestamp now(); -+ -+ inline void set(int32_t sec, uint32_t subsec); -+ inline void set_sec(int32_t sec); -+ inline void set_subsec(uint32_t subsec); -+ inline void set_usec(int32_t sec, uint32_t usec); -+ inline void set_nsec(int32_t sec, uint32_t nsec); -+ -+ inline void set_now(); -+#if !CLICK_LINUXMODULE && !CLICK_BSDMODULE -+ int set_timeval_ioctl(int fd, int ioctl_selector); -+#endif -+ -+ void add_fix(); -+ void sub_fix(); -+ -+ String unparse() const; -+ -+ inline static uint32_t msec_to_subsec(uint32_t msec); -+ inline static uint32_t usec_to_subsec(uint32_t usec); -+ inline static uint32_t nsec_to_subsec(uint32_t nsec); -+ inline static uint32_t subsec_to_msec(uint32_t subsec); -+ inline static uint32_t subsec_to_usec(uint32_t subsec); -+ inline static uint32_t subsec_to_nsec(uint32_t subsec); -+ -+ int32_t _sec; -+ int32_t _subsec; -+ -+}; -+ -+ -+/** @brief Convert milliseconds to subseconds. -+ @param msec number of milliseconds -+ -+ Converts its parameter to a number of subseconds (that is, either -+ microseconds or nanoseconds, depending on configuration options and driver -+ choice). -+ -+ @sa usec_to_subsec(), nsec_to_subsec(), subsec_to_msec(), subsec_to_usec(), -+ subsec_to_nsec() */ -+inline uint32_t -+Timestamp::msec_to_subsec(uint32_t msec) -+{ -+#if HAVE_NANOTIMESTAMP -+ return msec * 1000000; -+#else -+ return msec * 1000; -+#endif -+} -+ -+/** @brief Convert microseconds to subseconds. -+ @param usec number of microseconds -+ @sa msec_to_subsec() */ -+inline uint32_t -+Timestamp::usec_to_subsec(uint32_t usec) -+{ -+#if HAVE_NANOTIMESTAMP -+ return usec * 1000; -+#else -+ return usec; -+#endif -+} -+ -+/** @brief Convert nanoseconds to subseconds. -+ @param nsec number of nanoseconds -+ @sa msec_to_subsec() */ -+inline uint32_t -+Timestamp::nsec_to_subsec(uint32_t nsec) -+{ -+#if HAVE_NANOTIMESTAMP -+ return nsec; -+#else -+ return (nsec + 500) / 1000; -+#endif -+} -+ -+/** @brief Convert subseconds to milliseconds. -+ @param subsec number of subseconds -+ @sa msec_to_subsec() */ -+inline uint32_t -+Timestamp::subsec_to_msec(uint32_t subsec) -+{ -+#if HAVE_NANOTIMESTAMP -+ return subsec / 1000000; -+#else -+ return subsec / 1000; -+#endif -+} -+ -+/** @brief Convert subseconds to microseconds. -+ @param subsec number of subseconds -+ @sa msec_to_subsec() */ -+inline uint32_t -+Timestamp::subsec_to_usec(uint32_t subsec) -+{ -+#if HAVE_NANOTIMESTAMP -+ return subsec / 1000; -+#else -+ return subsec; -+#endif -+} -+ -+/** @brief Convert subseconds to nanoseconds. -+ @param subsec number of subseconds -+ @sa msec_to_subsec() */ -+inline uint32_t -+Timestamp::subsec_to_nsec(uint32_t subsec) -+{ -+#if HAVE_NANOTIMESTAMP -+ return subsec; -+#else -+ return subsec * 1000; -+#endif -+} -+ -+ -+/** @brief Create a zero-valued Timestamp. */ -+inline -+Timestamp::Timestamp() -+ : _sec(0), _subsec(0) -+{ -+} -+ -+/** @brief Create a Timestamp measuring @a sec seconds plus @a subsec subseconds. -+ @param sec number of seconds -+ @param subsec number of subseconds -+ -+ The @a subsec parameter must be between 0 and NSUBSEC - 1; errors are not -+ necessarily checked. */ -+inline -+Timestamp::Timestamp(int32_t sec, uint32_t subsec) -+ : _sec(sec), _subsec(subsec) -+{ -+} -+ -+/** @brief Create a Timestamp measuring @a tv. -+ @param tv timeval structure */ -+inline -+Timestamp::Timestamp(const struct timeval& tv) -+ : _sec(tv.tv_sec), _subsec(usec_to_subsec(tv.tv_usec)) -+{ -+} -+ -+#if HAVE_STRUCT_TIMESPEC -+/** @brief Create a Timestamp measuring @a ts. -+ @param ts timespec structure */ -+inline -+Timestamp::Timestamp(const struct timespec& ts) -+ : _sec(ts.tv_sec), _subsec(nsec_to_subsec(ts.tv_nsec)) -+{ -+} -+#endif -+ -+/** @brief Returns true iff this timestamp is not zero-valued. */ -+inline -+Timestamp::operator unspecified_bool_type() const -+{ -+ return _sec || _subsec ? &Timestamp::sec : 0; -+} -+ -+/** @brief Sets this timestamp to the current time. -+ -+ The current time is measured in seconds since January 1, 1970 GMT. -+ @sa now() */ -+inline void -+Timestamp::set_now() -+{ -+#if TIMESTAMP_PUNS_TIMEVAL -+ click_gettimeofday((struct timeval*) this); -+#else -+ struct timeval tv; -+ click_gettimeofday(&tv); -+ _sec = tv.tv_sec; -+ _subsec = usec_to_subsec(tv.tv_usec); -+#endif -+} -+ -+/** @brief Return a timestamp representing the current time. -+ -+ The current time is measured in seconds since January 1, 1970 GMT. -+ @sa set_now() */ -+inline Timestamp -+Timestamp::now() -+{ -+ Timestamp t; -+ t.set_now(); -+ return t; -+} -+ -+/** @brief Returns the smallest nonzero timestamp. -+ -+ Same as Timestamp(0, 1). */ -+inline Timestamp -+Timestamp::epsilon() -+{ -+ return Timestamp(0, 1); -+} -+ -+/** @brief Returns a timestamp representing an interval of @a msec -+ milliseconds. -+ @param msec number of milliseconds (may be greater than 1000) */ -+inline Timestamp -+Timestamp::make_msec(uint32_t msec) -+{ -+ return Timestamp(msec / 1000, msec_to_subsec(msec % 1000)); -+} -+ -+/** @brief Returns a timestamp representing @a sec seconds plus @a usec -+ microseconds. -+ @param sec number of seconds -+ @param usec number of microseconds (less than 1000000) */ -+inline Timestamp -+Timestamp::make_usec(int32_t sec, uint32_t usec) -+{ -+ return Timestamp(sec, usec_to_subsec(usec)); -+} -+ -+/** @brief Returns a timestamp representing an interval of @a usec -+ microseconds. -+ @param usec number of microseconds (may be greater than 1000000) */ -+inline Timestamp -+Timestamp::make_usec(uint32_t usec) -+{ -+ return Timestamp(usec / 1000000, usec_to_subsec(usec % 1000000)); -+} -+ -+/** @brief Returns a timestamp representing @a sec seconds plus @a nsec -+ nanoseconds. -+ @param sec number of seconds -+ @param nsec number of nanoseconds (less than 1000000000) */ -+inline Timestamp -+Timestamp::make_nsec(int32_t sec, uint32_t nsec) -+{ -+ return Timestamp(sec, nsec_to_subsec(nsec)); -+} -+ -+/** @brief Sets this timestamp's components. -+ @param sec number of seconds -+ @param subsec number of subseconds */ -+inline void -+Timestamp::set(int32_t sec, uint32_t subsec) -+{ -+ _sec = sec; -+ _subsec = subsec; -+} -+ -+/** @brief Sets this timestamp's seconds component. -+ @param sec number of seconds -+ -+ The subseconds component is left unchanged. */ -+inline void -+Timestamp::set_sec(int32_t sec) -+{ -+ _sec = sec; -+} -+ -+/** @brief Sets this timestamp's subseconds component. -+ @param subsec number of subseconds -+ -+ The seconds component is left unchanged. */ -+inline void -+Timestamp::set_subsec(uint32_t subsec) -+{ -+ _subsec = subsec; -+} -+ -+/** @brief Sets this timestamp to a seconds-and-microseconds value. -+ @param sec number of seconds -+ @param usec number of microseconds (must be less than 1000000) -+ @sa make_usec() */ -+inline void -+Timestamp::set_usec(int32_t sec, uint32_t usec) -+{ -+ _sec = sec; -+ _subsec = usec_to_subsec(usec); -+} -+ -+/** @brief Sets this timestamp to a seconds-and-nanoseconds value. -+ @param sec number of seconds -+ @param nsec number of nanoseconds (must be less than 1000000000) -+ @sa make_nsec() */ -+inline void -+Timestamp::set_nsec(int32_t sec, uint32_t nsec) -+{ -+ _sec = sec; -+ _subsec = nsec_to_subsec(nsec); -+} -+ -+/** @brief Returns this timestamp's seconds component. */ -+inline int32_t -+Timestamp::sec() const -+{ -+ return _sec; -+} -+ -+/** @brief Returns this timestamp's subseconds component. */ -+inline uint32_t -+Timestamp::subsec() const -+{ -+ return _subsec; -+} -+ -+/** @brief Returns this timestamp's subseconds component, converted to -+ milliseconds. */ -+inline uint32_t -+Timestamp::msec() const -+{ -+ return subsec_to_msec(_subsec); -+} -+ -+/** @brief Returns this timestamp's subseconds component, converted to -+ microseconds. */ -+inline uint32_t -+Timestamp::usec() const -+{ -+ return subsec_to_usec(_subsec); -+} -+ -+/** @brief Returns this timestamp's subseconds component, converted to -+ nanoseconds. */ -+inline uint32_t -+Timestamp::nsec() const -+{ -+ return subsec_to_nsec(_subsec); -+} -+ -+/** @brief Returns this timestamp's interval length, converted to -+ milliseconds. -+ -+ Will overflow on intervals of more than 2147483.647 seconds. */ -+inline int32_t -+Timestamp::msec1() const -+{ -+ return _sec * 1000 + subsec_to_msec(_subsec); -+} -+ -+/** @brief Returns this timestamp's interval length, converted to -+ microseconds. -+ -+ Will overflow on intervals of more than 2147.483647 seconds. */ -+inline int32_t -+Timestamp::usec1() const -+{ -+ return _sec * 1000000 + subsec_to_usec(_subsec); -+} -+ -+/** @brief Returns this timestamp's interval length, converted to -+ nanoseconds. -+ -+ Will overflow on intervals of more than 2.147483647 seconds. */ -+inline int32_t -+Timestamp::nsec1() const -+{ -+ return _sec * 1000000000 + subsec_to_nsec(_subsec); -+} -+ -+#if TIMESTAMP_PUNS_TIMEVAL -+inline const struct timeval & -+Timestamp::timeval() const -+{ -+ return *(const struct timeval*) this; -+} -+#else -+/** @brief Returns a struct timeval with the same value as this timestamp. -+ -+ If Timestamp and struct timeval have the same size and representation, -+ then this operation returns a "const struct timeval &" whose address is -+ the same as this Timestamp. */ -+inline struct timeval -+Timestamp::timeval() const -+{ -+ struct timeval tv; -+ tv.tv_sec = _sec; -+ tv.tv_usec = usec(); -+ return tv; -+} -+#endif -+ -+#if HAVE_STRUCT_TIMESPEC -+# if TIMESTAMP_PUNS_TIMESPEC -+inline const struct timespec & -+Timestamp::timespec() const -+{ -+ return *(const struct timespec*) this; -+} -+# else -+/** @brief Returns a struct timespec with the same value as this timestamp. -+ -+ If Timestamp and struct timespec have the same size and representation, -+ then this operation returns a "const struct timespec &" whose address is -+ the same as this Timestamp. */ -+inline struct timespec -+Timestamp::timespec() const -+{ -+ struct timespec tv; -+ tv.tv_sec = _sec; -+ tv.tv_nsec = nsec(); -+ return tv; -+} -+# endif -+#endif -+ -+/** @relates Timestamp -+ @brief Compares two timestamps for equality. -+ -+ Returns true iff the two operands have the same seconds and subseconds -+ components. */ -+inline bool -+operator==(const Timestamp &a, const Timestamp &b) -+{ -+ return a.sec() == b.sec() && a.subsec() == b.subsec(); -+} -+ -+/** @relates Timestamp -+ @brief Compares two timestamps for inequality. -+ -+ Returns true iff !(@a a == @a b). */ -+inline bool -+operator!=(const Timestamp &a, const Timestamp &b) -+{ -+ return !(a == b); -+} -+ -+/** @relates Timestamp -+ @brief Compares two timestamps. -+ -+ Returns true iff @a a represents a shorter interval than @a b, or -+ considered as absolute time, @a a happened before @a b. */ -+inline bool -+operator<(const Timestamp &a, const Timestamp &b) -+{ -+ return a.sec() < b.sec() || (a.sec() == b.sec() && a.subsec() < b.subsec()); -+} -+ -+/** @relates Timestamp -+ @brief Compares two timestamps. -+ -+ Returns true iff @a a measures an interval no larger than @a b, or -+ considered as absolute time, @a a happened at or before @a b. */ -+inline bool -+operator<=(const Timestamp &a, const Timestamp &b) -+{ -+ return !(b < a); -+} -+ -+/** @relates Timestamp -+ @brief Compares two timestamps. -+ -+ Returns true iff @a a measures an interval no shorter than @a b, or -+ considered as absolute time, @a a happened at or after @a b. */ -+inline bool -+operator>=(const Timestamp &a, const Timestamp &b) -+{ -+ return !(a < b); -+} -+ -+/** @relates Timestamp -+ @brief Compares two timestamps. -+ -+ Returns true iff @a a measures a longer interval than @a b, or considered -+ as absolute time, @a a happened after @a b. */ -+inline bool -+operator>(const Timestamp &a, const Timestamp &b) -+{ -+ return b < a; -+} -+ -+inline void -+Timestamp::add_fix() -+{ -+ if (_subsec >= NSUBSEC) -+ _sec++, _subsec -= NSUBSEC; -+} -+ -+inline void -+Timestamp::sub_fix() -+{ -+ if (_subsec < 0) -+ _sec--, _subsec += NSUBSEC; -+} -+ -+/** @brief Adds @a b to @a a. -+ -+ Returns the result (the new value of @a a). */ -+inline Timestamp & -+operator+=(Timestamp &a, const Timestamp &b) -+{ -+ a._sec += b._sec; -+ a._subsec += b._subsec; -+ a.add_fix(); -+ return a; -+} -+ -+/** @brief Subtracts @a b from @a a. -+ -+ Returns the result (the new value of @a a). */ -+inline Timestamp & -+operator-=(Timestamp &a, const Timestamp &b) -+{ -+ a._sec -= b._sec; -+ a._subsec -= b._subsec; -+ a.sub_fix(); -+ return a; -+} -+ -+/** @brief Adds the two operands and returns the result. */ -+inline Timestamp -+operator+(Timestamp a, const Timestamp &b) -+{ -+ a += b; -+ return a; -+} -+ -+/** @brief Subtracts @a b from @a a and returns the result. */ -+inline Timestamp -+operator-(Timestamp a, const Timestamp &b) -+{ -+ a -= b; -+ return a; -+} -+ -+/** @brief Negates @a a and returns the result. */ -+inline Timestamp -+operator-(const Timestamp &a) -+{ -+ if (a._subsec) -+ return Timestamp(-a._sec - 1, Timestamp::NSUBSEC - a._subsec); -+ else -+ return Timestamp(-a._sec, 0); -+} -+ -+#if !CLICK_LINUXMODULE && !CLICK_BSDMODULE -+/** @brief Returns this timestamp's value, converted to a real number. */ -+inline double -+Timestamp::doubleval() const -+{ -+ return _sec + (_subsec / (double) NSUBSEC); -+} -+ -+/** @brief Create a timestamp measuring @a d seconds. */ -+inline -+Timestamp::Timestamp(double d) -+{ -+ double dfloor = floor(d); -+ _sec = (int32_t) dfloor; -+ _subsec = (uint32_t) ((d - dfloor) * NSUBSEC + 0.5); -+ add_fix(); -+} -+ -+/** @brief Scales @a a by a factor of @a b and returns the result. */ -+inline Timestamp -+operator*(const Timestamp &a, double b) -+{ -+ return Timestamp(a.doubleval() * b); -+} -+ -+inline Timestamp -+operator*(const Timestamp &a, int b) -+{ -+ return Timestamp(a.doubleval() * b); -+} -+ -+inline Timestamp -+operator*(const Timestamp &a, unsigned b) -+{ -+ return Timestamp(a.doubleval() * b); -+} -+ -+inline Timestamp -+operator*(double a, const Timestamp &b) -+{ -+ return Timestamp(b.doubleval() * a); -+} -+ -+inline Timestamp -+operator*(int a, const Timestamp &b) -+{ -+ return Timestamp(b.doubleval() * a); -+} -+ -+inline Timestamp -+operator*(unsigned a, const Timestamp &b) -+{ -+ return Timestamp(b.doubleval() * a); -+} -+ -+/** @brief Scales @a a down by a factor of @a b and returns the result. */ -+inline Timestamp -+operator/(const Timestamp &a, double b) -+{ -+ return Timestamp(a.doubleval() / b); -+} -+ -+inline Timestamp -+operator/(const Timestamp &a, int b) -+{ -+ return Timestamp(a.doubleval() / b); -+} -+ -+inline Timestamp -+operator/(const Timestamp &a, unsigned b) -+{ -+ return Timestamp(a.doubleval() / b); -+} -+ -+/** @brief Divides @a a by @a b and returns the result. */ -+inline double -+operator/(const Timestamp &a, const Timestamp &b) -+{ -+ return a.doubleval() / b.doubleval(); -+} -+# endif /* !CLICK_LINUXMODULE && !CLICK_BSDMODULE */ -+ -+StringAccum& operator<<(StringAccum&, const Timestamp&); -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/userutils.hh click-1.6.0-27/inst/include/click/userutils.hh ---- click-1.6.0/inst/include/click/userutils.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/userutils.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,51 @@ -+// -*- c-basic-offset: 2; related-file-name: "../../lib/userutils.cc" -*- -+#ifndef CLICK_USERUTILS_HH -+#define CLICK_USERUTILS_HH -+#include -+#include -+CLICK_DECLS -+class ErrorHandler; -+ -+bool glob_match(const String &string, const String &pattern); -+ -+String percent_substitute(const String &string, int format1, ...); -+ -+int click_strcmp(const String &a, const String &b); -+ -+const char *filename_landmark(const char *, bool file_is_expr = false); -+ -+String file_string(FILE *, ErrorHandler * = 0); -+String file_string(String, ErrorHandler * = 0); -+ -+String unique_tmpnam(const String &, ErrorHandler * = 0); -+void remove_file_on_exit(const String &); -+bool path_allows_default_path(String path); -+String click_mktmpdir(ErrorHandler * = 0); -+ -+const char *clickpath(); -+void set_clickpath(const char *); -+ -+String clickpath_find_file(const String& filename, const char *subdir, -+ String default_path, ErrorHandler * = 0); -+void clickpath_expand_path(const char* subdir, const String& default_path, Vector&); -+ -+void parse_tabbed_lines(const String &, Vector *, ...); -+ -+ArchiveElement init_archive_element(const String &, int); -+ -+String shell_quote(const String &, bool quote_tilde = false); -+String shell_command_output_string(String command_line, const String &command_stdin, ErrorHandler *); -+ -+bool compressed_data(const unsigned char *, int); -+FILE *open_uncompress_pipe(const String &filename, const unsigned char *, int, ErrorHandler *); -+ -+int compressed_filename(const String &filename); -+FILE *open_compress_pipe(const String &filename, ErrorHandler *); -+ -+#if HAVE_DYNAMIC_LINKING -+int clickdl_load_package(String, ErrorHandler *); -+void clickdl_load_requirement(String, const Vector *archive, ErrorHandler *); -+#endif -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/variableenv.hh click-1.6.0-27/inst/include/click/variableenv.hh ---- click-1.6.0/inst/include/click/variableenv.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/variableenv.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,49 @@ -+// -*- c-basic-offset: 4; related-file-name: "../../lib/variableenv.cc" -*- -+#ifndef CLICK_VARIABLEENVIRONMENT_HH -+#define CLICK_VARIABLEENVIRONMENT_HH -+#include -+#include -+CLICK_DECLS -+class StringAccum; -+ -+class VariableExpander { public: -+ -+ VariableExpander() { } -+ virtual ~VariableExpander() { } -+ -+ virtual bool expand(const String &var, int vartype, int quote, StringAccum &) = 0; -+ -+}; -+ -+class VariableEnvironment : public VariableExpander { public: -+ -+ VariableEnvironment(VariableEnvironment *parent); -+ -+ int depth() const { return _depth; } -+ int size() const { return _names.size(); } -+ -+ const String &name(int i) const { return _names[i]; } -+ const Vector &values() const { return _values; } -+ const String &value(int i) const { return _values[i]; } -+ const String &value(const String &name, bool &found) const; -+ -+ void clear() { _names.clear(); _values.clear(); } -+ -+ VariableEnvironment *parent_of(int depth); -+ bool define(const String &name, const String &value, bool override); -+ bool expand(const String &var, int vartype, int quote, StringAccum &); -+ -+ private: -+ -+ Vector _names; -+ Vector _values; -+ int _depth; -+ VariableEnvironment *_parent; -+ -+}; -+ -+String cp_expand(const String &, VariableExpander &, bool expand_quote = false); -+String cp_expand_in_quotes(const String &, int quote); -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/click/vector.cc click-1.6.0-27/inst/include/click/vector.cc ---- click-1.6.0/inst/include/click/vector.cc 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/vector.cc 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,149 @@ -+/* -+ * vector.{cc,hh} -- simple array template class -+ * Eddie Kohler -+ * -+ * Copyright (c) 1999-2000 Massachusetts Institute of Technology -+ * Copyright (c) 2006 Regents of the University of California -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, subject to the conditions -+ * listed in the Click LICENSE file. These conditions include: you must -+ * preserve this copyright notice, and you cannot mention the copyright -+ * holders in advertising related to the Software without their permission. -+ * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+ * notice is a summary of the Click LICENSE file; the license in that file is -+ * legally binding. -+ */ -+ -+#ifndef CLICK_VECTOR_CC -+#define CLICK_VECTOR_CC -+ -+CLICK_ENDDECLS -+#include -+#include -+CLICK_DECLS -+ -+template -+Vector::Vector(const Vector &o) -+ : _l(0), _n(0), _capacity(0) -+{ -+ *this = o; -+} -+ -+template -+Vector::~Vector() -+{ -+ for (size_type i = 0; i < _n; i++) -+ _l[i].~T(); -+ delete[] (unsigned char *)_l; -+} -+ -+template Vector & -+Vector::operator=(const Vector &o) -+{ -+ if (&o != this) { -+ for (size_type i = 0; i < _n; i++) -+ _l[i].~T(); -+ _n = 0; -+ if (reserve(o._n)) { -+ _n = o._n; -+ for (size_type i = 0; i < _n; i++) -+ new(velt(i)) T(o._l[i]); -+ } -+ } -+ return *this; -+} -+ -+template Vector & -+Vector::assign(size_type n, const T &e) -+{ -+ resize(0, e); -+ resize(n, e); -+ return *this; -+} -+ -+template typename Vector::iterator -+Vector::insert(iterator i, const T& e) -+{ -+ assert(i >= begin() && i <= end()); -+ size_type pos = i - begin(); -+ if (_n < _capacity || reserve(RESERVE_GROW)) { -+ for (iterator j = end() - 1; j >= begin() + pos; j--) { -+ new((void*) (j+1)) T(*j); -+ j->~T(); -+ } -+ new(velt(pos)) T(e); -+ _n++; -+ } -+ return begin() + pos; -+} -+ -+template typename Vector::iterator -+Vector::erase(iterator a, iterator b) -+{ -+ if (b > a) { -+ assert(a >= begin() && b <= end()); -+ iterator i = a, j = b; -+ for (; j < end(); i++, j++) { -+ i->~T(); -+ new((void*) i) T(*j); -+ } -+ for (; i < end(); i++) -+ i->~T(); -+ _n -= b - a; -+ return a; -+ } else -+ return b; -+} -+ -+template bool -+Vector::reserve(size_type want) -+{ -+ if (want < 0) -+ want = (_capacity > 0 ? _capacity * 2 : 4); -+ if (want <= _capacity) -+ return true; -+ -+ T *new_l = (T *)new unsigned char[sizeof(T) * want]; -+ if (!new_l) -+ return false; -+ -+ for (size_type i = 0; i < _n; i++) { -+ new(velt(new_l, i)) T(_l[i]); -+ _l[i].~T(); -+ } -+ delete[] (unsigned char *)_l; -+ -+ _l = new_l; -+ _capacity = want; -+ return true; -+} -+ -+template void -+Vector::resize(size_type nn, const T &e) -+{ -+ if (nn <= _capacity || reserve(nn)) { -+ for (size_type i = nn; i < _n; i++) -+ _l[i].~T(); -+ for (size_type i = _n; i < nn; i++) -+ new(velt(i)) T(e); -+ _n = nn; -+ } -+} -+ -+template void -+Vector::swap(Vector &o) -+{ -+ T *l = _l; -+ size_type n = _n; -+ size_type cap = _capacity; -+ _l = o._l; -+ _n = o._n; -+ _capacity = o._capacity; -+ o._l = l; -+ o._n = n; -+ o._capacity = cap; -+} -+ -+#endif -diff -Nurb click-1.6.0/inst/include/click/vector.hh click-1.6.0-27/inst/include/click/vector.hh ---- click-1.6.0/inst/include/click/vector.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/click/vector.hh 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,284 @@ -+#ifndef CLICK_VECTOR_HH -+#define CLICK_VECTOR_HH -+#include -+CLICK_DECLS -+ -+template -+class Vector { public: -+ -+ typedef T value_type; -+ typedef T& reference; -+ typedef const T& const_reference; -+ typedef T* pointer; -+ typedef const T* const_pointer; -+ -+ typedef int size_type; -+ enum { RESERVE_GROW = (size_type) -1 }; -+ -+ typedef T* iterator; -+ typedef const T* const_iterator; -+ -+ explicit Vector() : _l(0), _n(0), _capacity(0) { } -+ explicit Vector(size_type n, const T &e) : _l(0), _n(0), _capacity(0) { resize(n, e); } -+ // template ... -+ Vector(const Vector &); -+ ~Vector(); -+ -+ Vector& operator=(const Vector&); -+ Vector& assign(size_type n, const T& e = T()); -+ // template ... -+ -+ // iterators -+ iterator begin() { return _l; } -+ const_iterator begin() const { return _l; } -+ iterator end() { return _l + _n; } -+ const_iterator end() const { return _l + _n; } -+ -+ // capacity -+ size_type size() const { return _n; } -+ void resize(size_type nn, const T& e = T()); -+ size_type capacity() const { return _capacity; } -+ bool empty() const { return _n == 0; } -+ bool reserve(size_type); -+ -+ // element access -+ T& operator[](size_type i) { assert(i>=0 && i<_n); return _l[i]; } -+ const T& operator[](size_type i) const{ assert(i>=0 && i<_n); return _l[i]; } -+ T& at(size_type i) { return operator[](i); } -+ const T& at(size_type i) const { return operator[](i); } -+ T& front() { return operator[](0); } -+ const T& front() const { return operator[](0); } -+ T& back() { return operator[](_n - 1); } -+ const T& back() const { return operator[](_n - 1); } -+ T& at_u(size_type i) { return _l[i]; } -+ const T& at_u(size_type i) const { return _l[i]; } -+ -+ // modifiers -+ inline void push_back(const T&); -+ inline void pop_back(); -+ inline void push_front(const T&); -+ inline void pop_front(); -+ iterator insert(iterator, const T&); -+ inline iterator erase(iterator); -+ iterator erase(iterator, iterator); -+ void swap(Vector &); -+ void clear() { erase(begin(), end()); } -+ -+ private: -+ -+ T *_l; -+ size_type _n; -+ size_type _capacity; -+ -+ void *velt(size_type i) const { return (void*)&_l[i]; } -+ static void *velt(T* l, size_type i) { return (void*)&l[i]; } -+ -+}; -+ -+template inline void -+Vector::push_back(const T& e) -+{ -+ if (_n < _capacity || reserve(RESERVE_GROW)) { -+ new(velt(_n)) T(e); -+ _n++; -+ } -+} -+ -+template inline void -+Vector::pop_back() -+{ -+ assert(_n > 0); -+ --_n; -+ _l[_n].~T(); -+} -+ -+template inline typename Vector::iterator -+Vector::erase(iterator i) -+{ -+ return (i < end() ? erase(i, i + 1) : i); -+} -+ -+template inline void -+Vector::push_front(const T& e) -+{ -+ insert(begin(), e); -+} -+ -+template inline void -+Vector::pop_front() -+{ -+ erase(begin()); -+} -+ -+ -+template <> -+class Vector { public: -+ -+ typedef void* value_type; -+ typedef void*& reference; -+ typedef void* const& const_reference; -+ typedef void** pointer; -+ typedef void* const* const_pointer; -+ -+ typedef int size_type; -+ enum { RESERVE_GROW = (size_type) -1 }; -+ -+ typedef void** iterator; -+ typedef void* const* const_iterator; -+ -+ explicit Vector() : _l(0), _n(0), _capacity(0) { } -+ explicit Vector(size_type n, void* e) : _l(0), _n(0), _capacity(0) { resize(n, e); } -+ Vector(const Vector &); -+ ~Vector(); -+ -+ Vector &operator=(const Vector &); -+ Vector &assign(size_type n, void* e = 0); -+ -+ // iterators -+ iterator begin() { return _l; } -+ const_iterator begin() const { return _l; } -+ iterator end() { return _l + _n; } -+ const_iterator end() const { return _l + _n; } -+ -+ // capacity -+ size_type size() const { return _n; } -+ void resize(size_type nn, void* e = 0); -+ size_type capacity() const { return _capacity; } -+ bool empty() const { return _n == 0; } -+ bool reserve(size_type); -+ -+ // element access -+ void*& operator[](size_type i) { assert(i>=0 && i<_n); return _l[i]; } -+ void* operator[](size_type i) const { assert(i>=0 && i<_n); return _l[i]; } -+ void*& at(size_type i) { return operator[](i); } -+ void* at(size_type i) const { return operator[](i); } -+ void*& front() { return operator[](0); } -+ void* front() const { return operator[](0); } -+ void*& back() { return operator[](_n - 1); } -+ void* back() const { return operator[](_n - 1); } -+ void*& at_u(size_type i) { return _l[i]; } -+ void* at_u(size_type i) const { return _l[i]; } -+ -+ // modifiers -+ inline void push_back(void*); -+ inline void pop_back(); -+ inline void push_front(void*); -+ inline void pop_front(); -+ iterator insert(iterator, void*); -+ inline iterator erase(iterator); -+ iterator erase(iterator, iterator); -+ void swap(Vector &); -+ void clear() { _n = 0; } -+ -+ private: -+ -+ void **_l; -+ size_type _n; -+ size_type _capacity; -+ -+}; -+ -+inline void -+Vector::push_back(void *e) -+{ -+ if (_n < _capacity || reserve(RESERVE_GROW)) { -+ _l[_n] = e; -+ _n++; -+ } -+} -+ -+inline void -+Vector::pop_back() -+{ -+ assert(_n > 0); -+ --_n; -+} -+ -+inline Vector::iterator -+Vector::erase(Vector::iterator e) -+{ -+ return (e < end() ? erase(e, e + 1) : e); -+} -+ -+inline void -+Vector::push_front(void *e) -+{ -+ insert(begin(), e); -+} -+ -+inline void -+Vector::pop_front() -+{ -+ erase(begin()); -+} -+ -+ -+template -+class Vector: private Vector { -+ -+ typedef Vector Base; -+ -+ public: -+ -+ typedef T* value_type; -+ typedef T*& reference; -+ typedef T* const& const_reference; -+ typedef T** pointer; -+ typedef T* const* const_pointer; -+ -+ typedef int size_type; -+ enum { RESERVE_GROW = Base::RESERVE_GROW }; -+ -+ typedef T** iterator; -+ typedef T* const* const_iterator; -+ -+ explicit Vector() : Base() { } -+ explicit Vector(size_type n, T* e) : Base(n, (void *)e) { } -+ Vector(const Vector &o) : Base(o) { } -+ ~Vector() { } -+ -+ Vector &operator=(const Vector &o) -+ { Base::operator=(o); return *this; } -+ Vector &assign(size_type n, T *e = 0) -+ { Base::assign(n, (void *)e); return *this; } -+ -+ // iterators -+ const_iterator begin() const { return (const_iterator)(Base::begin()); } -+ iterator begin() { return (iterator)(Base::begin()); } -+ const_iterator end() const { return (const_iterator)(Base::end()); } -+ iterator end() { return (iterator)(Base::end()); } -+ -+ // capacity -+ size_type size() const { return Base::size(); } -+ void resize(size_type n, T *e = 0) { Base::resize(n, (void *)e); } -+ size_type capacity() const { return Base::capacity(); } -+ bool empty() const { return Base::empty(); } -+ bool reserve(size_type n) { return Base::reserve(n); } -+ -+ // element access -+ T*& operator[](size_type i) { return (T*&)(Base::at(i)); } -+ T* operator[](size_type i) const { return (T*)(Base::operator[](i)); } -+ T*& at(size_type i) { return (T*&)(Base::operator[](i)); } -+ T* at(size_type i) const { return (T*)(Base::at(i)); } -+ T*& front() { return (T*&)(Base::front()); } -+ T* front() const { return (T*)(Base::front()); } -+ T*& back() { return (T*&)(Base::back()); } -+ T* back() const { return (T*)(Base::back()); } -+ T*& at_u(size_type i) { return (T*&)(Base::at_u(i)); } -+ T* at_u(size_type i) const { return (T*)(Base::at_u(i)); } -+ -+ // modifiers -+ void push_back(T* e) { Base::push_back((void*)e); } -+ void pop_back() { Base::pop_back(); } -+ void push_front(T *e) { Base::push_front((void*)e); } -+ void pop_front() { Base::pop_front(); } -+ iterator insert(iterator i, T* e) { return (iterator)Base::insert((void**)i, (void*)e); } -+ iterator erase(iterator i) { return (iterator)Base::erase((void**)i); } -+ iterator erase(iterator i, iterator j) { return (iterator)Base::erase((void**)i, (void**)j); } -+ void swap(Vector &o) { Base::swap(o); } -+ void clear() { Base::clear(); } -+ -+}; -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/clicknet/dhcp.h click-1.6.0-27/inst/include/clicknet/dhcp.h ---- click-1.6.0/inst/include/clicknet/dhcp.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicknet/dhcp.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,130 @@ -+#ifndef CLICKNET_DHCP_H -+#define CLICKNET_DHCP_H -+ -+CLICK_SIZE_PACKED_STRUCTURE( -+struct click_dhcp {, -+ uint8_t op; /* message type */ -+ uint8_t htype; /* hardware address type */ -+ uint8_t hlen; /* hardware address length */ -+ uint8_t hops; /* should be zero in client's message */ -+ uint32_t xid; /* transaction id */ -+ uint16_t secs; /* elapsed time in sec. from trying to boot */ -+ uint16_t flags; -+ uint32_t ciaddr; /* (previously allocated) client IP address */ -+ uint32_t yiaddr; /* 'your' client IP address */ -+ uint32_t siaddr; /* should be zero in client's messages */ -+ uint32_t giaddr; /* should be zero in client's messages */ -+ uint8_t chaddr[16]; /* client's hardware address */ -+ uint8_t sname[64]; /* server host name, null terminated string */ -+ uint8_t file[128]; /* boot file name, null terminated string */ -+ uint32_t magic; /* magic cookie */ -+ uint8_t options[312]; /* message options */ -+}); -+ -+ -+#define ETH_10MB 1 /* htype */ -+#define ETH_10MB_LEN 6 /* hlen */ -+ -+/* DHCP message OP code */ -+#define DHCP_BOOTREQUEST 1 -+#define DHCP_BOOTREPLY 2 -+ -+/* DHCP Client State*/ -+enum dhcp_client_state { -+ DHCP_CLIENT_INIT_STATE = 1, -+ DHCP_CLIENT_SELECTING_STATE, -+ DHCP_CLIENT_REQUESTING_STATE, -+ DHCP_CLIENT_INIT_REBOOT, -+ DHCP_CLIENT_REBOOTING, -+ DHCP_CLIENT_BOUND, -+ DHCP_CLIENT_RENEWING, -+ DHCP_CLIENT_REBINDING -+}; -+ -+ -+/* DHCP message type */ -+#define DHCP_DISCOVER 1 -+#define DHCP_OFFER 2 -+#define DHCP_REQUEST 3 -+#define DHCP_DECLINE 4 -+#define DHCP_ACK 5 -+#define DHCP_NACK 6 -+#define DHCP_RELEASE 7 -+#define DHCP_INFORM 8 -+ -+#define DHCP_MAGIC 0x63538263 -+ -+ -+ -+/* DHCP Option codes: */ -+#define DHO_PAD 0 -+#define DHO_SUBNET_MASK 1 -+#define DHO_TIME_OFFSET 2 -+#define DHO_ROUTERS 3 -+#define DHO_TIME_SERVERS 4 -+#define DHO_NAME_SERVERS 5 -+#define DHO_DOMAIN_NAME_SERVERS 6 -+#define DHO_LOG_SERVERS 7 -+#define DHO_COOKIE_SERVERS 8 -+#define DHO_LPR_SERVERS 9 -+#define DHO_IMPRESS_SERVERS 10 -+#define DHO_RESOURCE_LOCATION_SERVERS 11 -+#define DHO_HOST_NAME 12 -+#define DHO_BOOT_SIZE 13 -+#define DHO_MERIT_DUMP 14 -+#define DHO_DOMAIN_NAME 15 -+#define DHO_SWAP_SERVER 16 -+#define DHO_ROOT_PATH 17 -+#define DHO_EXTENSIONS_PATH 18 -+#define DHO_IP_FORWARDING 19 -+#define DHO_NON_LOCAL_SOURCE_ROUTING 20 -+#define DHO_POLICY_FILTER 21 -+#define DHO_MAX_DGRAM_REASSEMBLY 22 -+#define DHO_DEFAULT_IP_TTL 23 -+#define DHO_PATH_MTU_AGING_TIMEOUT 24 -+#define DHO_PATH_MTU_PLATEAU_TABLE 25 -+#define DHO_INTERFACE_MTU 26 -+#define DHO_ALL_SUBNETS_LOCAL 27 -+#define DHO_BROADCAST_ADDRESS 28 -+#define DHO_PERFORM_MASK_DISCOVERY 29 -+#define DHO_MASK_SUPPLIER 30 -+#define DHO_ROUTER_DISCOVERY 31 -+#define DHO_ROUTER_SOLICITATION_ADDRESS 32 -+#define DHO_STATIC_ROUTES 33 -+#define DHO_TRAILER_ENCAPSULATION 34 -+#define DHO_ARP_CACHE_TIMEOUT 35 -+#define DHO_IEEE802_3_ENCAPSULATION 36 -+#define DHO_DEFAULT_TCP_TTL 37 -+#define DHO_TCP_KEEPALIVE_INTERVAL 38 -+#define DHO_TCP_KEEPALIVE_GARBAGE 39 -+#define DHO_NIS_DOMAIN 40 -+#define DHO_NIS_SERVERS 41 -+#define DHO_NTP_SERVERS 42 -+#define DHO_VENDOR_ENCAPSULATED_OPTIONS 43 -+#define DHO_NETBIOS_NAME_SERVERS 44 -+#define DHO_NETBIOS_DD_SERVER 45 -+#define DHO_NETBIOS_NODE_TYPE 46 -+#define DHO_NETBIOS_SCOPE 47 -+#define DHO_FONT_SERVERS 48 -+#define DHO_X_DISPLAY_MANAGER 49 -+#define DHO_DHCP_REQUESTED_ADDRESS 50 -+#define DHO_DHCP_LEASE_TIME 51 -+#define DHO_DHCP_OPTION_OVERLOAD 52 -+#define DHO_DHCP_MESSAGE_TYPE 53 -+#define DHO_DHCP_SERVER_IDENTIFIER 54 -+#define DHO_DHCP_PARAMETER_REQUEST_LIST 55 -+#define DHO_DHCP_MESSAGE 56 -+#define DHO_DHCP_MAX_MESSAGE_SIZE 57 -+#define DHO_DHCP_RENEWAL_TIME 58 -+#define DHO_DHCP_REBINDING_TIME 59 -+#define DHO_VENDOR_CLASS_IDENTIFIER 60 -+#define DHO_DHCP_CLIENT_IDENTIFIER 61 -+#define DHO_NWIP_DOMAIN_NAME 62 -+#define DHO_NWIP_SUBOPTIONS 63 -+#define DHO_USER_CLASS 77 -+#define DHO_FQDN 81 -+#define DHO_DHCP_AGENT_OPTIONS 82 -+#define DHO_SUBNET_SELECTION 118 /* RFC3011! */ -+#define DHO_END 255 -+ -+#endif /* CLICKNET_DHCP_H */ -diff -Nurb click-1.6.0/inst/include/clicknet/ether.h click-1.6.0-27/inst/include/clicknet/ether.h ---- click-1.6.0/inst/include/clicknet/ether.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicknet/ether.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,118 @@ -+/* -*- mode: c; c-basic-offset: 4 -*- */ -+#ifndef CLICKNET_ETHER_H -+#define CLICKNET_ETHER_H -+ -+/* -+ * -- Ethernet and ARP headers, based on one of the BSDs. -+ * -+ * Relevant RFCs include: -+ * RFC826 Ethernet Address Resolution Protocol: or, Converting Network -+ * Protocol Addresses to 48.bit Ethernet Address for Transmission -+ * on Ethernet Hardware -+ * RFC894 Standard for the transmission of IP datagrams over Ethernet -+ * networks -+ * Also see the relevant IEEE 802 standards. -+ */ -+ -+CLICK_SIZE_PACKED_STRUCTURE( -+struct click_ether {, -+ uint8_t ether_dhost[6]; /* 0-5 Ethernet destination address */ -+ uint8_t ether_shost[6]; /* 6-11 Ethernet source address */ -+ uint16_t ether_type; /* 12-13 Ethernet protocol */ -+}); -+ -+#define ETHERTYPE_IP 0x0800 -+#define ETHERTYPE_ARP 0x0806 -+#define ETHERTYPE_TRAIL 0x1000 -+#define ETHERTYPE_8021Q 0x8100 -+#define ETHERTYPE_IP6 0x86DD -+#define ETHERTYPE_GRID 0x7fff /* wvlan_cs driver won't transmit frames with high bit of protocol number set */ -+ -+struct click_arp { /* Offsets relative to ARP (Ethernet) header */ -+ uint16_t ar_hrd; /* 0-1 (14-15) hardware address format */ -+#define ARPHRD_ETHER 1 /* Ethernet 10Mbps */ -+#define ARPHRD_IEEE802 6 /* token ring */ -+#define ARPHRD_ARCNET 7 /* Arcnet */ -+#define ARPHRD_FRELAY 15 /* frame relay */ -+#define ARPHRD_STRIP 23 /* Ricochet Starmode Radio */ -+#define ARPHRD_IEEE1394 24 /* IEEE 1394 (FireWire) */ -+#define ARPHRD_80211 801 /* IEEE 802.11 (wifi) */ -+ uint16_t ar_pro; /* 2-3 (16-17) protocol address format */ -+ uint8_t ar_hln; /* 4 (18) hardware address length */ -+ uint8_t ar_pln; /* 5 (19) protocol address length */ -+ uint16_t ar_op; /* 6-7 (20-21) opcode (command) */ -+#define ARPOP_REQUEST 1 /* ARP request */ -+#define ARPOP_REPLY 2 /* ARP reply */ -+#define ARPOP_REVREQUEST 3 /* reverse request: hw->proto */ -+#define ARPOP_REVREPLY 4 /* reverse reply */ -+#define ARPOP_INVREQUEST 8 /* peer identification req */ -+#define ARPOP_INVREPLY 9 /* peer identification reply */ -+}; -+ -+struct click_ether_arp { -+ struct click_arp ea_hdr; /* 0-7 (14-21) fixed-size ARP header */ -+ uint8_t arp_sha[6]; /* 8-13 (22-27) sender hardware address */ -+ uint8_t arp_spa[4]; /* 14-17 (28-31) sender protocol address */ -+ uint8_t arp_tha[6]; /* 18-23 (32-37) target hardware address */ -+ uint8_t arp_tpa[4]; /* 24-27 (38-41) target protocol address */ -+}; -+ -+ -+/* Ethernet with VLAN (802.1q) */ -+ -+CLICK_SIZE_PACKED_STRUCTURE( -+struct click_ether_vlan {, -+ uint8_t ether_dhost[6]; /* 0-5 Ethernet source address */ -+ uint8_t ether_shost[6]; /* 6-11 Ethernet destination address */ -+ uint16_t ether_vlan_proto; /* 12-13 == ETHERTYPE_8021Q */ -+ uint16_t ether_vlan_tci; /* 14-15 tag control information */ -+ uint16_t ether_vlan_encap_proto; /* 16-17 Ethernet protocol */ -+}); -+ -+ -+#define ND_SOL 0x0087 /* Neighborhood Solicitation Message Type */ -+#define ND_ADV 0x0088 /* Neighborhood Advertisement Message Type */ -+ -+/* define structure of Neighborhood Solicitation Message */ -+struct click_nd_sol { -+ uint8_t type; -+ uint8_t code; -+ uint16_t checksum; -+ uint32_t reserved; -+ uint8_t nd_tpa[16]; -+ uint8_t option_type; /*option type: 1 (source link-layer add) */ -+ uint8_t option_length; /*option length: 1 (in units of 8 octets) */ -+ uint8_t nd_sha[6]; /*source link-layer address */ -+}; -+ -+/* define structure of Neighborhood Advertisement Message -reply to multicast neighborhood solitation message */ -+struct click_nd_adv { -+ uint8_t type; -+ uint8_t code; -+ uint16_t checksum; -+ uint8_t flags; /* bit 1: sender_is_router -+ bit 2: solicited -+ bit 3: override -+ all other bits should be zero */ -+ uint8_t reserved[3]; -+ uint8_t nd_tpa[16]; -+ uint8_t option_type; /* option type: 2 (target link-layer add) */ -+ uint8_t option_length; /* option length: 1 (in units of 8 octets) */ -+ uint8_t nd_tha[6]; /* source link-layer address */ -+}; -+ -+ -+/* define structure of Neighborhood Advertisement Message - reply to unicast neighborhood solitation message */ -+struct click_nd_adv2 { -+ uint8_t type; -+ uint8_t code; -+ uint16_t checksum; -+ uint8_t flags; /* bit 1: sender_is_router -+ bit 2: solicited -+ bit 3: override -+ all other bits should be zero */ -+ uint8_t reserved[3]; -+ uint8_t nd_tpa[16]; -+}; -+ -+#endif -diff -Nurb click-1.6.0/inst/include/clicknet/fddi.h click-1.6.0-27/inst/include/clicknet/fddi.h ---- click-1.6.0/inst/include/clicknet/fddi.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicknet/fddi.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,47 @@ -+/* -*- mode: c; c-basic-offset: 4 -*- */ -+#ifndef CLICKNET_FDDI_H -+#define CLICKNET_FDDI_H -+ -+/* -+ * -- our own definitions of FDDI headers -+ * based on a file from Linux -+ */ -+ -+CLICK_SIZE_PACKED_STRUCTURE( -+struct click_fddi {, -+ uint8_t fc; -+ uint8_t daddr[6]; -+ uint8_t saddr[6]; -+}); -+ -+CLICK_SIZE_PACKED_STRUCTURE( -+struct click_fddi_8022_1 {, -+ struct click_fddi h; -+ uint8_t dsap; -+ uint8_t ssap; -+ uint8_t ctrl; -+}); -+ -+CLICK_SIZE_PACKED_STRUCTURE( -+struct click_fddi_8022_2 {, -+ struct click_fddi h; -+ uint8_t dsap; -+ uint8_t ssap; -+ uint8_t ctrl1; -+ uint8_t ctrl2; -+}); -+ -+CLICK_PACKED_STRUCTURE( -+struct click_fddi_snap {, -+ struct click_fddi h; -+ uint8_t dsap; -+ uint8_t ssap; -+ uint8_t ctrl; -+ uint8_t oui[3]; -+ uint16_t ether_type; -+}); -+ -+#define FDDI_FC_LLC_ASYNC 0x50 -+#define FDDI_FC_LLCMASK 0xF0 /* length/class/format bits */ -+ -+#endif -diff -Nurb click-1.6.0/inst/include/clicknet/icmp.h click-1.6.0-27/inst/include/clicknet/icmp.h ---- click-1.6.0/inst/include/clicknet/icmp.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicknet/icmp.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,124 @@ -+/* -*- c-basic-offset: 4 -*- */ -+#ifndef CLICKNET_ICMP_H -+#define CLICKNET_ICMP_H -+#include -+ -+/* -+ * -- ICMP packet definitions, based on FreeBSD. -+ * -+ * Relevant RFCs include: -+ * RFC792 Internet Control Message Protocol -+ * RFC1122 Requirements for Internet Hosts - Communication Layers -+ * RFC1123 Requirements for Internet Hosts - Application and Support -+ * RFC1812 Requirements for IP Version 4 Routers -+ */ -+ -+/* most icmp request types: ICMP_UNREACH, ICMP_SOURCEQUENCH, ICMP_TIMXCEED */ -+struct click_icmp { -+ uint8_t icmp_type; /* 0 ICMP type (see below) */ -+ uint8_t icmp_code; /* 1 ICMP code (see below) */ -+ uint16_t icmp_cksum; /* 2-3 checksum */ -+ uint32_t padding; /* 4-7 should be zero */ -+ /* followed by original IP header and initial portion of data */ -+}; -+ -+/* header for types with sequence numbers: ICMP_ECHO, ICMP_ECHOREPLY, -+ ICMP_INFOREQ, ICMP_INFOREQREPLY */ -+struct click_icmp_sequenced { -+ uint8_t icmp_type; /* 0 ICMP type (see below) */ -+ uint8_t icmp_code; /* 1 ICMP code (see below) */ -+ uint16_t icmp_cksum; /* 2-3 checksum */ -+ uint16_t icmp_identifier; /* 4-5 flow identifier */ -+ uint16_t icmp_sequence; /* 6-7 sequence number in flow */ -+}; -+ -+/* ICMP_PARAMPROB header */ -+struct click_icmp_paramprob { -+ uint8_t icmp_type; /* 0 ICMP type (see below) */ -+ uint8_t icmp_code; /* 1 ICMP code (see below) */ -+ uint16_t icmp_cksum; /* 2-3 checksum */ -+ uint8_t icmp_pointer; /* 4 parameter pointer */ -+ uint8_t padding[3]; /* 5-7 should be zero */ -+ /* followed by original IP header and initial portion of data */ -+}; -+ -+/* Redirect header: ICMP_REDIRECT */ -+struct click_icmp_redirect { -+ uint8_t icmp_type; /* 0 ICMP_REDIRECT (see below) */ -+ uint8_t icmp_code; /* 1 ICMP code (see below) */ -+ uint16_t icmp_cksum; /* 2-3 checksum */ -+ struct in_addr icmp_gateway; /* 4-7 address of gateway */ -+ /* followed by original IP header and initial portion of data */ -+}; -+ -+/* Timestamp and TimestampReply header: ICMP_TSTAMP and ICMP_TSTAMPREPLY */ -+struct click_icmp_tstamp { -+ uint8_t icmp_type; /* 0 ICMP type (see below) */ -+ uint8_t icmp_code; /* 1 ICMP code (see below) */ -+ uint16_t icmp_cksum; /* 2-3 checksum */ -+ uint16_t icmp_identifier; /* 4-5 flow identifier */ -+ uint16_t icmp_sequence; /* 6-7 sequence number in flow */ -+ uint32_t icmp_originate; /* 8-11 originate timestamp */ -+ uint32_t icmp_receive; /* 12-15 receive timestamp */ -+ uint32_t icmp_transmit; /* 16-19 transmit timestamp */ -+}; -+ -+/* Path MTU Discovery header: ICMP_UNREACH_NEEDFRAG */ -+struct click_icmp_needfrag { -+ uint8_t icmp_type; /* 0 ICMP_UNREACH (see below) */ -+ uint8_t icmp_code; /* 1 ICMP_UNREACH_NEEDFRAG */ -+ uint16_t icmp_cksum; /* 2-3 checksum */ -+ uint16_t padding; /* 4-5 should be zero */ -+ uint16_t icmp_nextmtu; /* 6-7 Next-Hop MTU */ -+ /* followed by original IP header and initial portion of data */ -+}; -+ -+#define click_icmp_unreach click_icmp -+#define click_icmp_sourcequench click_icmp -+#define click_icmp_timxceed click_icmp -+#define click_icmp_echo click_icmp_sequenced -+ -+ -+/* ICMP type definitions and (indented) code definitions */ -+#define ICMP_ECHOREPLY 0 /* echo reply */ -+#define ICMP_UNREACH 3 /* dest unreachable, codes: */ -+#define ICMP_UNREACH_NET 0 /* bad net */ -+#define ICMP_UNREACH_HOST 1 /* bad host */ -+#define ICMP_UNREACH_PROTOCOL 2 /* bad protocol */ -+#define ICMP_UNREACH_PORT 3 /* bad port */ -+#define ICMP_UNREACH_NEEDFRAG 4 /* IP_DF caused drop */ -+#define ICMP_UNREACH_SRCFAIL 5 /* src route failed */ -+#define ICMP_UNREACH_NET_UNKNOWN 6 /* unknown net */ -+#define ICMP_UNREACH_HOST_UNKNOWN 7 /* unknown host */ -+#define ICMP_UNREACH_ISOLATED 8 /* src host isolated */ -+#define ICMP_UNREACH_NET_PROHIB 9 /* net prohibited access */ -+#define ICMP_UNREACH_HOST_PROHIB 10 /* host prohibited access */ -+#define ICMP_UNREACH_TOSNET 11 /* bad tos for net */ -+#define ICMP_UNREACH_TOSHOST 12 /* bad tos for host */ -+#define ICMP_UNREACH_FILTER_PROHIB 13 /* admin prohib */ -+#define ICMP_UNREACH_HOST_PRECEDENCE 14 /* host prec violation */ -+#define ICMP_UNREACH_PRECEDENCE_CUTOFF 15 /* prec cutoff */ -+#define ICMP_SOURCEQUENCH 4 /* packet lost, slow down */ -+#define ICMP_REDIRECT 5 /* shorter route, codes: */ -+#define ICMP_REDIRECT_NET 0 /* for network */ -+#define ICMP_REDIRECT_HOST 1 /* for host */ -+#define ICMP_REDIRECT_TOSNET 2 /* for tos and net */ -+#define ICMP_REDIRECT_TOSHOST 3 /* for tos and host */ -+#define ICMP_ECHO 8 /* echo service */ -+#define ICMP_ROUTERADVERT 9 /* router advertisement */ -+#define ICMP_ROUTERSOLICIT 10 /* router solicitation */ -+#define ICMP_TIMXCEED 11 /* time exceeded, code: */ -+#define ICMP_TIMXCEED_TRANSIT 0 /* ttl==0 in transit */ -+#define ICMP_TIMXCEED_REASSEMBLY 1 /* ttl==0 in reassembly */ -+#define ICMP_PARAMPROB 12 /* ip header bad */ -+#define ICMP_PARAMPROB_ERRATPTR 0 /* error at param ptr */ -+#define ICMP_PARAMPROB_OPTABSENT 1 /* req. opt. absent */ -+#define ICMP_PARAMPROB_LENGTH 2 /* bad length */ -+#define ICMP_TSTAMP 13 /* timestamp request */ -+#define ICMP_TSTAMPREPLY 14 /* timestamp reply */ -+#define ICMP_IREQ 15 /* information request */ -+#define ICMP_IREQREPLY 16 /* information reply */ -+#define ICMP_MASKREQ 17 /* address mask request */ -+#define ICMP_MASKREQREPLY 18 /* address mask reply */ -+ -+#endif -diff -Nurb click-1.6.0/inst/include/clicknet/icmp6.h click-1.6.0-27/inst/include/clicknet/icmp6.h ---- click-1.6.0/inst/include/clicknet/icmp6.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicknet/icmp6.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,114 @@ -+/* -*- c-basic-offset: 4 -*- */ -+#ifndef CLICKNET_ICMP6_H -+#define CLICKNET_ICMP6_H -+#include -+ -+/* -+ * -- our own definitions for ICMP6 packets -+ * Based on RFC 1885 -+ */ -+ -+/* types for ICMP6 packets */ -+#define ICMP6_UNREACH 1 -+#define ICMP6_PKTTOOBIG 2 -+#define ICMP6_TIMXCEED 3 -+#define ICMP6_PARAMPROB 4 -+ -+#define ICMP6_ECHO 128 -+#define ICMP6_ECHOREPLY 129 -+#define ICMP6_MEMBERSHIPQUERY 130 -+#define ICMP6_MEMBERSHIPREPORT 131 -+#define ICMP6_MEMBERSHIPREDUCTION 132 -+ -+#define ICMP6_REDIRECT 137 -+ -+/* codes for spefic types of ICMP6 packets */ -+/* ICMP6 Error Message - Type: 1 */ -+#define ICMP6_UNREACH_NOROUTE 0 -+#define ICMP6_UNREACH_ADMIN 1 -+#define ICMP6_UNREACH_NOTNEIGHBOR 2 -+#define ICMP6_UNREACH_ADDR 3 -+#define ICMP6_UNREACH_NOPORT 4 -+ -+/* ICMP6 Time Exceeded Message - Type: 3 */ -+#define ICMP6_TIMXCEED_TRANSIT 0 -+#define ICMP6_TIMXCEED_REASSEMBLY 1 -+ -+/* ICMP6 Parameter Problem Message - Type: 4 */ -+#define ICMP6_PARAMPROB_HEADER 0 -+#define ICMP6_PARAMPROB_NEXTHEADER 1 -+#define ICMP6_PARAMPROB_OPTION 2 -+ -+/* remove possible definitions for symbols */ -+#undef icmp6_identifier -+#undef icmp6_sequence -+#undef icmp6_pointer -+#undef icmp6_maxdelay -+ -+ -+/* most ICMP6 request types */ -+struct click_icmp6 { -+ uint8_t icmp6_type; /* one of the ICMP6_TYPE_*'s above */ -+ uint8_t icmp6_code; /* one of the ICMP6_CODE_*'s above */ -+ uint16_t icmp6_cksum; /* 16 1's comp csum */ -+ uint32_t padding; /* should be zero */ -+ /* followed by as much of invoking packet as will fit without the ICMPv6 packet exceeding 576 octets*/ -+}; -+ -+/* packet too big header */ -+struct click_icmp6_pkttoobig { -+ uint8_t icmp6_type; /* one of the ICMP6_TYPE_*'s above */ -+ uint8_t icmp6_code; /* one of the ICMP6_CODE_*'s above */ -+ uint16_t icmp6_cksum; /* 16 1's comp csum */ -+ uint32_t icmp6_mtusize; /* maximum packet size */ -+ /* followed by as much of invoking packet as will fit without the ICMPv6 packet exceeding 576 octets*/ -+}; -+ -+/* parameter problem header */ -+struct click_icmp6_paramprob { -+ uint8_t icmp6_type; /* one of the ICMP_TYPE_*'s above */ -+ uint8_t icmp6_code; /* one of the ICMP6_CODE_*'s above */ -+ uint16_t icmp6_cksum; /* 16 1's comp csum */ -+ uint32_t icmp6_pointer; /* which octect in orig. IP6 pkt was a problem */ -+ /* followed by as much of invoking packet as will fit without the ICMPv6 packet exceeding 576 octets*/ -+}; -+ -+ -+/* struct for things with sequence numbers - echo request & echo reply msgs*/ -+struct click_icmp6_sequenced { -+ uint8_t icmp6_type; /* one of the ICMP6_TYPE_*'s above */ -+ uint8_t icmp6_code; /* one of the ICMP6_CODE_*'s above */ -+ uint16_t icmp6_cksum; /* 16 1's comp csum */ -+ uint16_t icmp6_identifier; -+ uint16_t icmp6_sequence; -+ /* Followed by: */ -+ /* Echo Request: zero or more octets of arbitary data */ -+ /* Echo Reply: the data fromm the invoking Echo Request msg */ -+}; -+ -+/* struct for group membership messages */ -+struct click_icmp6_membership { -+ uint8_t icmp6_type; /* one of the ICMP6_TYPE_*'s above */ -+ uint8_t icmp6_code; /* one of the ICMP6_CODE_*'s above */ -+ uint16_t icmp6_cksum; /* 16 1's comp csum */ -+ uint16_t icmp6_maxdelay; /* maximum response delay, in milliseconds */ -+ uint16_t padding; -+ /* followed by multicast address */ -+}; -+ -+/* struct for redirect messages */ -+struct click_icmp6_redirect { -+ uint8_t icmp6_type; -+ uint8_t icmp6_code; -+ uint16_t icmp6_cksum; -+ uint32_t padding; -+ struct click_in6_addr icmp6_target; -+ struct click_in6_addr icmp6_dst; -+}; -+ -+/* different struct names for each type of packet */ -+#define click_icmp6_unreach click_icmp6 -+#define click_icmp6_timxceed click_icmp6 -+#define click_icmp6_echo click_icmp6_sequenced -+ -+#endif -diff -Nurb click-1.6.0/inst/include/clicknet/ip.h click-1.6.0-27/inst/include/clicknet/ip.h ---- click-1.6.0/inst/include/clicknet/ip.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicknet/ip.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,157 @@ -+/* -*- mode: c; c-basic-offset: 4 -*- */ -+#ifndef CLICKNET_IP_H -+#define CLICKNET_IP_H -+/* get struct in_addr */ -+#include -+CLICK_CXX_PROTECT -+#if CLICK_LINUXMODULE -+#include -+# include -+# include -+#else -+# include -+# include -+#endif -+ -+/* -+ * -- IP header definitions, based on one of the BSDs. -+ * -+ * Relevant RFCs include: -+ * RFC791 Internet Protocol -+ * RFC3168 The Addition of Explicit Congestion Notification (ECN) to IP -+ */ -+ -+struct click_ip { -+#if CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN -+ unsigned ip_v : 4; /* 0 version == 4 */ -+ unsigned ip_hl : 4; /* header length */ -+#elif CLICK_BYTE_ORDER == CLICK_LITTLE_ENDIAN -+ unsigned ip_hl : 4; /* 0 header length */ -+ unsigned ip_v : 4; /* version == 4 */ -+#else -+# error "unknown byte order" -+#endif -+ uint8_t ip_tos; /* 1 type of service */ -+#define IP_DSCPMASK 0xFC /* diffserv code point */ -+#define IP_ECNMASK 0x03 /* ECN code point */ -+#define IP_ECN_NOT_ECT 0x00 /* not ECN capable transport */ -+#define IP_ECN_ECT1 0x01 /* ECN capable transport */ -+#define IP_ECN_ECT2 0x02 /* ECN capable transport */ -+#define IP_ECN_CE 0x03 /* ECN congestion exp'd */ -+ uint16_t ip_len; /* 2-3 total length */ -+ uint16_t ip_id; /* 4-5 identification */ -+ uint16_t ip_off; /* 6-7 fragment offset field */ -+#define IP_RF 0x8000 /* reserved fragment flag */ -+#define IP_DF 0x4000 /* don't fragment flag */ -+#define IP_MF 0x2000 /* more fragments flag */ -+#define IP_OFFMASK 0X1FFF /* mask for fragmenting bits */ -+ uint8_t ip_ttl; /* 8 time to live */ -+ uint8_t ip_p; /* 9 protocol */ -+ uint16_t ip_sum; /* 10-11 checksum */ -+ struct in_addr ip_src; /* 12-15 source address */ -+ struct in_addr ip_dst; /* 16-19 destination address */ -+}; -+ -+/* ip_protocol */ -+#define IP_PROTO_ICMP 1 -+#define IP_PROTO_IGMP 2 -+#define IP_PROTO_GGP 3 -+#define IP_PROTO_IPIP 4 -+#define IP_PROTO_ST 5 -+#define IP_PROTO_TCP 6 -+#define IP_PROTO_UCL 7 -+#define IP_PROTO_EGP 8 -+#define IP_PROTO_IGP 9 -+#define IP_PROTO_BBN 10 -+#define IP_PROTO_NVPII 11 -+#define IP_PROTO_PUP 12 -+#define IP_PROTO_ARGUS 13 -+#define IP_PROTO_EMCON 14 -+#define IP_PROTO_XNET 15 -+#define IP_PROTO_CHAOS 16 -+#define IP_PROTO_UDP 17 -+#define IP_PROTO_MUX 18 -+#define IP_PROTO_DCN 19 -+#define IP_PROTO_HMP 20 -+#define IP_PROTO_PRM 21 -+#define IP_PROTO_XNS 22 -+#define IP_PROTO_TRUNK1 23 -+#define IP_PROTO_TRUNK2 24 -+#define IP_PROTO_LEAF1 25 -+#define IP_PROTO_LEAF2 26 -+#define IP_PROTO_RDP 27 -+#define IP_PROTO_IRTP 28 -+#define IP_PROTO_ISOTP4 29 -+#define IP_PROTO_NETBLT 30 -+#define IP_PROTO_MFENSP 31 -+#define IP_PROTO_MERIT 32 -+#define IP_PROTO_DCCP 33 -+#define IP_PROTO_ICMP6 58 -+#define IP_PROTO_CFTP 62 -+#define IP_PROTO_SATNET 64 -+#define IP_PROTO_MITSUBNET 65 -+#define IP_PROTO_RVD 66 -+#define IP_PROTO_IPPC 67 -+#define IP_PROTO_SATMON 69 -+#define IP_PROTO_IPCV 71 -+#define IP_PROTO_BRSATMON 76 -+#define IP_PROTO_WBMON 78 -+#define IP_PROTO_WBEXPAK 79 -+#define IP_PROTO_SCTP 132 -+ -+#define IP_PROTO_NONE 257 -+#define IP_PROTO_TRANSP 258 -+#define IP_PROTO_TCP_OR_UDP 256 -+#define IP_PROTO_PAYLOAD 259 -+ -+#define IPOPT_EOL 0 /* end of option list */ -+#define IPOPT_NOP 1 /* no operation */ -+#define IPOPT_RR 7 /* record packet route */ -+#define IPOPT_TS 68 /* timestamp */ -+#define IPOPT_SECURITY 130 /* provide s,c,h,tcc */ -+#define IPOPT_LSRR 131 /* loose source route */ -+#define IPOPT_SATID 136 /* satnet id */ -+#define IPOPT_SSRR 137 /* strict source route */ -+#define IPOPT_RA 148 /* router alert */ -+ -+#define IP_ISFRAG(iph) (((iph)->ip_off & htons(IP_MF | IP_OFFMASK)) != 0) -+#define IP_FIRSTFRAG(iph) (((iph)->ip_off & htons(IP_OFFMASK)) == 0) -+ -+ -+/* checksum functions */ -+ -+#if !CLICK_LINUXMODULE -+uint16_t click_in_cksum(const unsigned char *addr, int len); -+uint16_t click_in_cksum_pseudohdr_raw(uint32_t csum, uint32_t src, uint32_t dst, int proto, int packet_len); -+#else -+# define click_in_cksum(addr, len) \ -+ ip_compute_csum((unsigned char *)(addr), (len)) -+# define click_in_cksum_pseudohdr_raw(csum, src, dst, proto, transport_len) \ -+ csum_tcpudp_magic((src), (dst), (transport_len), (proto), ~(csum) & 0xFFFF) -+#endif -+uint16_t click_in_cksum_pseudohdr_hard(uint32_t csum, const struct click_ip *iph, int packet_len); -+ -+/* use if you're not sure whether there are source routing options */ -+static inline uint16_t -+click_in_cksum_pseudohdr(uint32_t csum, const struct click_ip *iph, -+ int transport_len) -+{ -+ if (iph->ip_hl == 5) -+ return click_in_cksum_pseudohdr_raw(csum, iph->ip_src.s_addr, iph->ip_dst.s_addr, iph->ip_p, transport_len); -+ else -+ return click_in_cksum_pseudohdr_hard(csum, iph, transport_len); -+} -+ -+static inline void -+click_update_in_cksum(uint16_t *csum, uint16_t old_hw, uint16_t new_hw) -+{ -+ /* incrementally update IP checksum according to RFC1624: -+ new_sum = ~(~old_sum + ~old_halfword + new_halfword) */ -+ uint32_t sum = (~*csum & 0xFFFF) + (~old_hw & 0xFFFF) + new_hw; -+ sum = (sum & 0xFFFF) + (sum >> 16); -+ *csum = ~(sum + (sum >> 16)); -+} -+ -+CLICK_CXX_UNPROTECT -+#include -+#endif -diff -Nurb click-1.6.0/inst/include/clicknet/ip6.h click-1.6.0-27/inst/include/clicknet/ip6.h ---- click-1.6.0/inst/include/clicknet/ip6.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicknet/ip6.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,85 @@ -+/* -*- mode: c; c-basic-offset: 4 -*- */ -+#ifndef CLICKNET_IP6_H -+#define CLICKNET_IP6_H -+#include -+#undef s6_addr -+#undef s6_addr16 -+#undef s6_addr32 -+#undef s6_addr64 -+ -+/* -+ * -- our own definitions of IP6 headers -+ * based on RFC 2460 -+ */ -+ -+/* IPv6 address , same as from /usr/include/netinet/in.h */ -+struct click_in6_addr { -+ union { -+ uint8_t u6_addr8[16]; -+ uint16_t u6_addr16[8]; -+ uint32_t u6_addr32[4]; -+#ifdef HAVE_INT64_TYPES -+ uint64_t u6_addr64[2]; -+#endif -+ } in6_u; -+#define s6_addr in6_u.u6_addr8 -+#define s6_addr16 in6_u.u6_addr16 -+#define s6_addr32 in6_u.u6_addr32 -+#define s6_addr64 in6_u.u6_addr64 -+}; -+ -+struct click_ip6 { -+ union { -+ uint32_t ip6_un1_flow; /* 0-3 version, class, flow label */ -+ struct { -+#if CLICK_BYTE_ORDER == CLICK_LITTLE_ENDIAN -+ unsigned ip6_un2_tc : 4; /* 0 top of traffic class */ -+ unsigned ip6_un2_v : 4; /* version == 6 */ -+#elif CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN -+ unsigned ip6_un2_v : 4; /* 0 version == 6 */ -+ unsigned ip6_un2_tc : 4; /* top of traffic class */ -+#else -+# error "unknown endianness!" -+#endif -+ uint8_t ip6_un2_flow[3]; -+ } ip6_un2_vfc; -+ } ip6_flun; -+#define ip6_v ip6_flun.ip6_un2_vfc.ip6_un2_v -+#define ip6_tc ip6_flun.ip6_un2_vfc.ip6_un2_tc -+#define ip6_flow ip6_flun.ip6_un1_flow -+ uint16_t ip6_plen; /* 4-5 payload length */ -+ uint8_t ip6_nxt; /* 6 next header */ -+ uint8_t ip6_hlim; /* 7 hop limit */ -+ struct click_in6_addr ip6_src; /* 8-23 source address */ -+ struct click_in6_addr ip6_dst; /* 24-39 dest address */ -+}; -+ -+#define IP6_FLOW_MASK 0x000FFFFFU -+#define IP6_FLOW_SHIFT 0 -+#define IP6_CLASS_MASK 0x0FF00000U -+#define IP6_CLASS_SHIFT 20 -+#define IP6_DSCP_MASK 0x0FC00000U -+#define IP6_DSCP_SHIFT 22 -+#define IP6_V_MASK 0xF0000000U -+#define IP6_V_SHIFT 28 -+ -+CLICK_DECLS -+ -+uint16_t in6_fast_cksum(const struct click_in6_addr *saddr, -+ const struct click_in6_addr *daddr, -+ uint16_t len, -+ uint8_t proto, -+ uint16_t ori_csum, -+ const unsigned char *addr, -+ uint16_t len2); -+ -+uint16_t in6_cksum(const struct click_in6_addr *saddr, -+ const struct click_in6_addr *daddr, -+ uint16_t len, -+ uint8_t proto, -+ uint16_t ori_csum, -+ unsigned char *addr, -+ uint16_t len2); -+ -+CLICK_ENDDECLS -+#endif -diff -Nurb click-1.6.0/inst/include/clicknet/llc.h click-1.6.0-27/inst/include/clicknet/llc.h ---- click-1.6.0/inst/include/clicknet/llc.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicknet/llc.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,153 @@ -+/* -+ * - contains the definitions for llc frames. -+ * It was originally taken from freebsd and modified for click use. -+ * John Bicket -+ */ -+ -+/* -+ * Copyright (c) 1988, 1993 -+ * The Regents of the University of California. All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by the University of -+ * California, Berkeley and its contributors. -+ * 4. Neither the name of the University nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * @(#)if_llc.h 8.1 (Berkeley) 6/10/93 -+ * $FreeBSD: src/sys/net/if_llc.h,v 1.7 1999/08/28 00:48:18 peter Exp $ -+ */ -+ -+#ifndef CLICKNET_LLC_H -+#define CLICKNET_LLC_H -+ -+/* -+ * IEEE 802.2 Link Level Control headers, for use in conjunction with -+ * 802.{3,4,5} media access control methods. -+ * -+ * Headers here do not use bit fields due to shortcomings in many -+ * compilers. -+ */ -+ -+struct click_llc { -+ uint8_t llc_dsap; -+ uint8_t llc_ssap; -+ union { -+ struct { -+ uint8_t control; -+ uint8_t format_id; -+ uint8_t _class; -+ uint8_t window_x2; -+ } type_u; -+ struct { -+ uint8_t num_snd_x2; -+ uint8_t num_rcv_x2; -+ } type_i; -+ struct { -+ uint8_t control; -+ uint8_t num_rcv_x2; -+ } type_s; -+ struct { -+ uint8_t control; -+ struct frmrinfo { -+ uint8_t rej_pdu_0; -+ uint8_t rej_pdu_1; -+ uint8_t frmr_control; -+ uint8_t frmr_control_ext; -+ uint8_t frmr_cause; -+ } frmrinfo; -+ } type_frmr; -+ struct { -+ uint8_t control; -+ uint8_t org_code[3]; -+ uint16_t ether_type; -+ } type_snap; -+ struct { -+ uint8_t control; -+ uint8_t control_ext; -+ } type_raw; -+ } llc_un; -+}; -+ -+#define llc_control llc_un.type_u.control -+#define llc_control_ext llc_un.type_raw.control_ext -+#define llc_fid llc_un.type_u.format_id -+#define llc_class llc_un.type_u._class -+#define llc_window llc_un.type_u.window_x2 -+#define llc_frmrinfo llc_un.type_frmr.frmrinfo -+#define llc_frmr_pdu0 llc_un.type_frmr.frmrinfo.rej_pdu0 -+#define llc_frmr_pdu1 llc_un.type_frmr.frmrinfo.rej_pdu1 -+#define llc_frmr_control llc_un.type_frmr.frmrinfo.frmr_control -+#define llc_frmr_control_ext llc_un.type_frmr.frmrinfo.frmr_control_ext -+#define llc_frmr_cause llc_un.type_frmr.frmrinfo.frmr_control_ext -+ -+/* -+ * Don't use sizeof(struct llc_un) for LLC header sizes -+ */ -+#define LLC_ISFRAMELEN 4 -+#define LLC_UFRAMELEN 3 -+#define LLC_FRMRLEN 7 -+ -+/* -+ * Unnumbered LLC format commands -+ */ -+#define LLC_UI 0x3 -+#define LLC_UI_P 0x13 -+#define LLC_DISC 0x43 -+#define LLC_DISC_P 0x53 -+#define LLC_UA 0x63 -+#define LLC_UA_P 0x73 -+#define LLC_TEST 0xe3 -+#define LLC_TEST_P 0xf3 -+#define LLC_FRMR 0x87 -+#define LLC_FRMR_P 0x97 -+#define LLC_DM 0x0f -+#define LLC_DM_P 0x1f -+#define LLC_XID 0xaf -+#define LLC_XID_P 0xbf -+#define LLC_SABME 0x6f -+#define LLC_SABME_P 0x7f -+ -+/* -+ * Supervisory LLC commands -+ */ -+#define LLC_RR 0x01 -+#define LLC_RNR 0x05 -+#define LLC_REJ 0x09 -+ -+/* -+ * Info format - dummy only -+ */ -+#define LLC_INFO 0x00 -+ -+/* -+ * ISO PDTR 10178 contains among others -+ */ -+#define LLC_IP_LSAP 0x06 -+#define LLC_X25_LSAP 0x7e -+#define LLC_SNAP_LSAP 0xaa -+#define LLC_ISO_LSAP 0xfe -+ -+#endif -diff -Nurb click-1.6.0/inst/include/clicknet/ppp.h click-1.6.0-27/inst/include/clicknet/ppp.h ---- click-1.6.0/inst/include/clicknet/ppp.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicknet/ppp.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,69 @@ -+#ifndef CLICKNET_PPP_H -+#define CLICKNET_PPP_H -+ -+/* -+ * -- our own definition of the PPP header, borrowed from -+ * tcpdump -+ * -+ * Copyright 1989 by Carnegie Mellon. -+ * -+ * Permission to use, copy, modify, and distribute this program for any -+ * purpose and without fee is hereby granted, provided that this copyright -+ * and permission notice appear on all copies and supporting documentation, -+ * the name of Carnegie Mellon not be used in advertising or publicity -+ * pertaining to distribution of the program without specific prior -+ * permission, and notice be given in supporting documentation that copying -+ * and distribution is by permission of Carnegie Mellon and Stanford -+ * University. Carnegie Mellon makes no representations about the -+ * suitability of this software for any purpose. It is provided "as is" -+ * without express or implied warranty. -+ */ -+ -+#define PPP_ADDRESS 0xff /* The address byte value */ -+#define PPP_CONTROL 0x03 /* The control byte value */ -+ -+/* Protocol numbers */ -+#define PPP_IP 0x0021 /* Raw IP */ -+#define PPP_OSI 0x0023 /* OSI Network Layer */ -+#define PPP_NS 0x0025 /* Xerox NS IDP */ -+#define PPP_DECNET 0x0027 /* DECnet Phase IV */ -+#define PPP_APPLE 0x0029 /* Appletalk */ -+#define PPP_IPX 0x002b /* Novell IPX */ -+#define PPP_VJC 0x002d /* Van Jacobson Compressed TCP/IP */ -+#define PPP_VJNC 0x002f /* Van Jacobson Uncompressed TCP/IP */ -+#define PPP_BRPDU 0x0031 /* Bridging PDU */ -+#define PPP_STII 0x0033 /* Stream Protocol (ST-II) */ -+#define PPP_VINES 0x0035 /* Banyan Vines */ -+#define PPP_IPV6 0x0057 /* IPv6 */ -+#define PPP_COMP 0x00fd /* Compressed Datagram */ -+ -+#define PPP_HELLO 0x0201 /* 802.1d Hello Packets */ -+#define PPP_LUXCOM 0x0231 /* Luxcom */ -+#define PPP_SNS 0x0233 /* Sigma Network Systems */ -+#define PPP_MPLS_UCAST 0x0281 /* rfc 3032 */ -+#define PPP_MPLS_MCAST 0x0283 /* rfc 3022 */ -+ -+#define PPP_IPCP 0x8021 /* IP Control Protocol */ -+#define PPP_OSICP 0x8023 /* OSI Network Layer Control Protocol */ -+#define PPP_NSCP 0x8025 /* Xerox NS IDP Control Protocol */ -+#define PPP_DECNETCP 0x8027 /* DECnet Control Protocol */ -+#define PPP_APPLECP 0x8029 /* Appletalk Control Protocol */ -+#define PPP_IPXCP 0x802b /* Novell IPX Control Protocol */ -+#define PPP_STIICP 0x8033 /* Strean Protocol Control Protocol */ -+#define PPP_VINESCP 0x8035 /* Banyan Vines Control Protocol */ -+#define PPP_IPV6CP 0x8057 /* IPv6 Control Protocol */ -+#define PPP_CCP 0x80fd /* Compress Control Protocol */ -+#define PPP_MPLSCP 0x8281 /* rfc 3022 */ -+ -+#define PPP_LCP 0xc021 /* Link Control Protocol */ -+#define PPP_PAP 0xc023 /* Password Authentication Protocol */ -+#define PPP_LQM 0xc025 /* Link Quality Monitoring */ -+#define PPP_SPAP 0xc027 -+#define PPP_CHAP 0xc223 /* Challenge Handshake Authentication Protocol */ -+#define PPP_BACP 0xc02b /* Bandwidth Allocation Control Protocol */ -+#define PPP_BAP 0xc02d /* BAP */ -+#define PPP_MP 0xc03d /* Multi-Link */ -+#define PPP_SPAP_OLD 0xc123 -+#define PPP_EAP 0xc227 -+ -+#endif -diff -Nurb click-1.6.0/inst/include/clicknet/radiotap.h click-1.6.0-27/inst/include/clicknet/radiotap.h ---- click-1.6.0/inst/include/clicknet/radiotap.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicknet/radiotap.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,243 @@ -+/* $FreeBSD: src/sys/net80211/ieee80211_radiotap.h,v 1.5 2005/01/22 20:12:05 sam Exp $ */ -+/* $NetBSD: ieee80211_radiotap.h,v 1.10 2005/01/04 00:34:58 dyoung Exp $ */ -+ -+/*- -+ * Copyright (c) 2003, 2004 David Young. 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 of David Young may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY DAVID YOUNG ``AS IS'' AND ANY -+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DAVID -+ * YOUNG BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY -+ * OF SUCH DAMAGE. -+ */ -+#ifndef _NET_IF_IEEE80211RADIOTAP_H_ -+#define _NET_IF_IEEE80211RADIOTAP_H_ -+ -+/* A generic radio capture format is desirable. There is one for -+ * Linux, but it is neither rigidly defined (there were not even -+ * units given for some fields) nor easily extensible. -+ * -+ * I suggest the following extensible radio capture format. It is -+ * based on a bitmap indicating which fields are present. -+ * -+ * I am trying to describe precisely what the application programmer -+ * should expect in the following, and for that reason I tell the -+ * units and origin of each measurement (where it applies), or else I -+ * use sufficiently weaselly language ("is a monotonically nondecreasing -+ * function of...") that I cannot set false expectations for lawyerly -+ * readers. -+ */ -+#if defined(__KERNEL__) || defined(_KERNEL) -+#ifndef DLT_IEEE802_11_RADIO -+#define DLT_IEEE802_11_RADIO 127 /* 802.11 plus WLAN header */ -+#endif -+#endif /* defined(__KERNEL__) || defined(_KERNEL) */ -+ -+/* XXX tcpdump/libpcap do not tolerate variable-length headers, -+ * yet, so we pad every radiotap header to 64 bytes. Ugh. -+ */ -+#define IEEE80211_RADIOTAP_HDRLEN 64 -+ -+/* The radio capture header precedes the 802.11 header. */ -+struct ieee80211_radiotap_header { -+ u_int8_t it_version; /* Version 0. Only increases -+ * for drastic changes, -+ * introduction of compatible -+ * new fields does not count. -+ */ -+ u_int8_t it_pad; -+ u_int16_t it_len; /* length of the whole -+ * header in bytes, including -+ * it_version, it_pad, -+ * it_len, and data fields. -+ */ -+ u_int32_t it_present; /* A bitmap telling which -+ * fields are present. Set bit 31 -+ * (0x80000000) to extend the -+ * bitmap by another 32 bits. -+ * Additional extensions are made -+ * by setting bit 31. -+ */ -+} __attribute__((__packed__)); -+ -+/* Name Data type Units -+ * ---- --------- ----- -+ * -+ * IEEE80211_RADIOTAP_TSFT u_int64_t microseconds -+ * -+ * Value in microseconds of the MAC's 64-bit 802.11 Time -+ * Synchronization Function timer when the first bit of the -+ * MPDU arrived at the MAC. For received frames, only. -+ * -+ * IEEE80211_RADIOTAP_CHANNEL 2 x u_int16_t MHz, bitmap -+ * -+ * Tx/Rx frequency in MHz, followed by flags (see below). -+ * -+ * IEEE80211_RADIOTAP_FHSS u_int16_t see below -+ * -+ * For frequency-hopping radios, the hop set (first byte) -+ * and pattern (second byte). -+ * -+ * IEEE80211_RADIOTAP_RATE u_int8_t 500kb/s -+ * -+ * Tx/Rx data rate -+ * -+ * IEEE80211_RADIOTAP_DBM_ANTSIGNAL int8_t decibels from -+ * one milliwatt (dBm) -+ * -+ * RF signal power at the antenna, decibel difference from -+ * one milliwatt. -+ * -+ * IEEE80211_RADIOTAP_DBM_ANTNOISE int8_t decibels from -+ * one milliwatt (dBm) -+ * -+ * RF noise power at the antenna, decibel difference from one -+ * milliwatt. -+ * -+ * IEEE80211_RADIOTAP_DB_ANTSIGNAL u_int8_t decibel (dB) -+ * -+ * RF signal power at the antenna, decibel difference from an -+ * arbitrary, fixed reference. -+ * -+ * IEEE80211_RADIOTAP_DB_ANTNOISE u_int8_t decibel (dB) -+ * -+ * RF noise power at the antenna, decibel difference from an -+ * arbitrary, fixed reference point. -+ * -+ * IEEE80211_RADIOTAP_LOCK_QUALITY u_int16_t unitless -+ * -+ * Quality of Barker code lock. Unitless. Monotonically -+ * nondecreasing with "better" lock strength. Called "Signal -+ * Quality" in datasheets. (Is there a standard way to measure -+ * this?) -+ * -+ * IEEE80211_RADIOTAP_TX_ATTENUATION u_int16_t unitless -+ * -+ * Transmit power expressed as unitless distance from max -+ * power set at factory calibration. 0 is max power. -+ * Monotonically nondecreasing with lower power levels. -+ * -+ * IEEE80211_RADIOTAP_DB_TX_ATTENUATION u_int16_t decibels (dB) -+ * -+ * Transmit power expressed as decibel distance from max power -+ * set at factory calibration. 0 is max power. Monotonically -+ * nondecreasing with lower power levels. -+ * -+ * IEEE80211_RADIOTAP_DBM_TX_POWER int8_t decibels from -+ * one milliwatt (dBm) -+ * -+ * Transmit power expressed as dBm (decibels from a 1 milliwatt -+ * reference). This is the absolute power level measured at -+ * the antenna port. -+ * -+ * IEEE80211_RADIOTAP_FLAGS u_int8_t bitmap -+ * -+ * Properties of transmitted and received frames. See flags -+ * defined below. -+ * -+ * IEEE80211_RADIOTAP_ANTENNA u_int8_t antenna index -+ * -+ * Unitless indication of the Rx/Tx antenna for this packet. -+ * The first antenna is antenna 0. -+ * -+ * IEEE80211_RADIOTAP_RX_FLAGS u_int16_t bitmap -+ * -+ * Properties of received frames. See flags defined below. -+ * -+ * IEEE80211_RADIOTAP_TX_FLAGS u_int16_t bitmap -+ * -+ * Properties of transmitted frames. See flags defined below. -+ * -+ * IEEE80211_RADIOTAP_RTS_RETRIES u_int8_t data -+ * -+ * Number of rts retries a transmitted frame used. -+ * -+ * IEEE80211_RADIOTAP_DATA_RETRIES u_int8_t data -+ * -+ * Number of unicast retries a transmitted frame used. -+ * -+ */ -+enum ieee80211_radiotap_type { -+ IEEE80211_RADIOTAP_TSFT = 0, -+ IEEE80211_RADIOTAP_FLAGS = 1, -+ IEEE80211_RADIOTAP_RATE = 2, -+ IEEE80211_RADIOTAP_CHANNEL = 3, -+ IEEE80211_RADIOTAP_FHSS = 4, -+ IEEE80211_RADIOTAP_DBM_ANTSIGNAL = 5, -+ IEEE80211_RADIOTAP_DBM_ANTNOISE = 6, -+ IEEE80211_RADIOTAP_LOCK_QUALITY = 7, -+ IEEE80211_RADIOTAP_TX_ATTENUATION = 8, -+ IEEE80211_RADIOTAP_DB_TX_ATTENUATION = 9, -+ IEEE80211_RADIOTAP_DBM_TX_POWER = 10, -+ IEEE80211_RADIOTAP_ANTENNA = 11, -+ IEEE80211_RADIOTAP_DB_ANTSIGNAL = 12, -+ IEEE80211_RADIOTAP_DB_ANTNOISE = 13, -+ IEEE80211_RADIOTAP_RX_FLAGS = 14, -+ IEEE80211_RADIOTAP_TX_FLAGS = 15, -+ IEEE80211_RADIOTAP_RTS_RETRIES = 16, -+ IEEE80211_RADIOTAP_DATA_RETRIES = 17, -+ IEEE80211_RADIOTAP_EXT = 31 -+}; -+ -+#if !defined(__KERNEL__) && !defined(_KERNEL) -+/* Channel flags. */ -+#define IEEE80211_CHAN_TURBO 0x0010 /* Turbo channel */ -+#define IEEE80211_CHAN_CCK 0x0020 /* CCK channel */ -+#define IEEE80211_CHAN_OFDM 0x0040 /* OFDM channel */ -+#define IEEE80211_CHAN_2GHZ 0x0080 /* 2 GHz spectrum channel. */ -+#define IEEE80211_CHAN_5GHZ 0x0100 /* 5 GHz spectrum channel */ -+#define IEEE80211_CHAN_PASSIVE 0x0200 /* Only passive scan allowed */ -+#define IEEE80211_CHAN_DYN 0x0400 /* Dynamic CCK-OFDM channel */ -+#define IEEE80211_CHAN_GFSK 0x0800 /* GFSK channel (FHSS PHY) */ -+#endif /* !defined(__KERNEL__) && !defined(_KERNEL) */ -+ -+/* For IEEE80211_RADIOTAP_FLAGS */ -+#define IEEE80211_RADIOTAP_F_CFP 0x01 /* sent/received -+ * during CFP -+ */ -+#define IEEE80211_RADIOTAP_F_SHORTPRE 0x02 /* sent/received -+ * with short -+ * preamble -+ */ -+#define IEEE80211_RADIOTAP_F_WEP 0x04 /* sent/received -+ * with WEP encryption -+ */ -+#define IEEE80211_RADIOTAP_F_FRAG 0x08 /* sent/received -+ * with fragmentation -+ */ -+#define IEEE80211_RADIOTAP_F_FCS 0x10 /* frame includes FCS */ -+#define IEEE80211_RADIOTAP_F_DATAPAD 0x20 /* frame has padding between -+ * 802.11 header and payload -+ * (to 32-bit boundary) -+ */ -+/* For IEEE80211_RADIOTAP_RX_FLAGS */ -+#define IEEE80211_RADIOTAP_F_RX_BADFCS 0x0001 /* frame failed crc check */ -+ -+/* For IEEE80211_RADIOTAP_TX_FLAGS */ -+#define IEEE80211_RADIOTAP_F_TX_FAIL 0x0001 /* failed due to excessive -+ * retries */ -+#define IEEE80211_RADIOTAP_F_TX_CTS 0x0002 /* used cts 'protection' */ -+#define IEEE80211_RADIOTAP_F_TX_RTS 0x0004 /* used rts/cts handshake */ -+ -+ -+ -+#endif /* _NET_IF_IEEE80211RADIOTAP_H_ */ -diff -Nurb click-1.6.0/inst/include/clicknet/rfc1483.h click-1.6.0-27/inst/include/clicknet/rfc1483.h ---- click-1.6.0/inst/include/clicknet/rfc1483.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicknet/rfc1483.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,20 @@ -+/* -*- mode: c; c-basic-offset: 4 -*- */ -+#ifndef CLICKNET_RFC1483_H -+#define CLICKNET_RFC1483_H -+ -+/* -+ * -+ */ -+ -+struct click_rfc1483 { -+ uint8_t dsap; -+ uint8_t ssap; -+ uint8_t ui; -+ uint8_t orgcode[3]; -+ uint16_t ether_type; -+}; -+ -+#define RFC1483_SNAP_IP_EXPECTED "\xAA\xAA\x03\x00\x00\x00" -+#define RFC1483_SNAP_IP_EXPECTED_LEN 6 -+ -+#endif -diff -Nurb click-1.6.0/inst/include/clicknet/tcp.h click-1.6.0-27/inst/include/clicknet/tcp.h ---- click-1.6.0/inst/include/clicknet/tcp.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicknet/tcp.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,78 @@ -+/* -*- c-basic-offset: 4 -*- */ -+#ifndef CLICKNET_TCP_H -+#define CLICKNET_TCP_H -+ -+/* -+ * -- TCP header definitions, based on one of the BSDs. -+ * -+ * Relevant RFCs include: -+ * RFC793 Transmission Control Protocol -+ * RFC1323 TCP Extensions for High Performance -+ * RFC2018 TCP Selective Acknowledgement Options -+ * RFC2581 TCP Congestion Control -+ * RFC2883 An Extension to the Selective Acknowledgement (SACK) Option -+ * for TCP -+ * RFC3168 The Addition of Explicit Congestion Notification (ECN) to IP -+ * RFC3540 Robust Explicit Congestion Notification (ECN) Signaling with -+ * Nonces -+ * among many others. See "A Roadmap for TCP Specification Documents", -+ * currently an Internet-Draft. -+ */ -+ -+typedef uint32_t tcp_seq_t; -+ -+struct click_tcp { -+ uint16_t th_sport; /* 0-1 source port */ -+ uint16_t th_dport; /* 2-3 destination port */ -+ tcp_seq_t th_seq; /* 4-7 sequence number */ -+ tcp_seq_t th_ack; /* 8-11 acknowledgement number */ -+#if CLICK_BYTE_ORDER == CLICK_LITTLE_ENDIAN -+ unsigned th_flags2 : 4; /* 12 more flags */ -+ unsigned th_off : 4; /* data offset in words */ -+#elif CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN -+ unsigned th_off : 4; /* 12 data offset in words */ -+ unsigned th_flags2 : 4; /* more flags */ -+#else -+# error "unknown byte order" -+#endif -+#define TH_NS 0x01 /* in 'th_flags2' */ -+ uint8_t th_flags; /* 13 flags */ -+#define TH_FIN 0x01 -+#define TH_SYN 0x02 -+#define TH_RST 0x04 -+#define TH_PUSH 0x08 -+#define TH_ACK 0x10 -+#define TH_URG 0x20 -+#define TH_ECE 0x40 -+#define TH_CWR 0x80 -+ uint16_t th_win; /* 14-15 window */ -+ uint16_t th_sum; /* 16-17 checksum */ -+ uint16_t th_urp; /* 18-19 urgent pointer */ -+}; -+ -+/* -+ * TCP sequence number comparisons -+ */ -+ -+#define SEQ_LT(x,y) ((int)((x)-(y)) < 0) -+#define SEQ_LEQ(x,y) ((int)((x)-(y)) <= 0) -+#define SEQ_GT(x,y) ((int)((x)-(y)) > 0) -+#define SEQ_GEQ(x,y) ((int)((x)-(y)) >= 0) -+ -+/* -+ * TCP options -+ */ -+ -+#define TCPOPT_EOL 0 -+#define TCPOPT_NOP 1 -+#define TCPOPT_MAXSEG 2 -+#define TCPOLEN_MAXSEG 4 -+#define TCPOPT_WSCALE 3 -+#define TCPOLEN_WSCALE 3 -+#define TCPOPT_SACK_PERMITTED 4 -+#define TCPOLEN_SACK_PERMITTED 2 -+#define TCPOPT_SACK 5 -+#define TCPOPT_TIMESTAMP 8 -+#define TCPOLEN_TIMESTAMP 10 -+ -+#endif -diff -Nurb click-1.6.0/inst/include/clicknet/udp.h click-1.6.0-27/inst/include/clicknet/udp.h ---- click-1.6.0/inst/include/clicknet/udp.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicknet/udp.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,18 @@ -+#ifndef CLICKNET_UDP_H -+#define CLICKNET_UDP_H -+ -+/* -+ * -- UDP header definitions, based on one of the BSDs. -+ * -+ * Relevant RFCs include: -+ * RFC768 User Datagram Protocol -+ */ -+ -+struct click_udp { -+ uint16_t uh_sport; /* 0-1 source port */ -+ uint16_t uh_dport; /* 2-3 destination port */ -+ uint16_t uh_ulen; /* 4-5 UDP length */ -+ uint16_t uh_sum; /* 6-7 checksum */ -+}; -+ -+#endif -diff -Nurb click-1.6.0/inst/include/clicknet/wifi.h click-1.6.0-27/inst/include/clicknet/wifi.h ---- click-1.6.0/inst/include/clicknet/wifi.h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicknet/wifi.h 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,410 @@ -+/* -+ * - contains the definitions for 802.11 frames. -+ * It was originally taken from freebsd and modified for click use. -+ * John Bicket -+ */ -+ -+/* $NetBSD: if_ieee80211.h,v 1.5 2000/07/21 04:47:40 onoe Exp $ */ -+/* $FreeBSD: src/sys/net/if_ieee80211.h,v 1.3.2.3 2001/07/04 00:12:38 brooks Exp $ */ -+ -+#ifndef _CLICKNET_WIFI_H_ -+#define _CLICKNET_WIFI_H_ -+ -+ -+#define WIFI_EXTRA_MAGIC 0x7492001 -+ -+enum { -+ WIFI_EXTRA_TX = (1<<0), /* packet transmission */ -+ WIFI_EXTRA_TX_FAIL = (1<<1), /* transmission failed */ -+ WIFI_EXTRA_TX_USED_ALT_RATE = (1<<2), /* used alternate bitrate */ -+ WIFI_EXTRA_RX_ERR = (1<<3), /* failed crc check */ -+ WIFI_EXTRA_RX_MORE = (1<<4), /* first part of a fragmented skb */ -+ WIFI_EXTRA_NO_SEQ = (1<<5), -+ WIFI_EXTRA_NO_TXF = (1<<6), -+ WIFI_EXTRA_DO_RTS_CTS = (1<<7), -+ WIFI_EXTRA_DO_CTS = (1<<8) -+}; -+ -+ -+ -+CLICK_SIZE_PACKED_STRUCTURE( -+struct click_wifi_extra {, -+ uint32_t magic; -+ uint32_t flags; -+ -+ uint8_t rssi; -+ uint8_t silence; -+ uint8_t power; -+ uint8_t pad; -+ -+ uint8_t rate; /* bitrate in Mbps*2 */ -+ uint8_t rate1; /* bitrate in Mbps*2 */ -+ uint8_t rate2; /* bitrate in Mbps*2 */ -+ uint8_t rate3; /* bitrate in Mbps*2 */ -+ -+ uint8_t max_tries; -+ uint8_t max_tries1; -+ uint8_t max_tries2; -+ uint8_t max_tries3; -+ -+ uint8_t virt_col; -+ uint8_t retries; -+ uint16_t len; -+}); -+ -+ -+/* -+ * generic definitions for IEEE 802.11 frames -+ */ -+#define WIFI_ADDR_LEN 6 -+ -+CLICK_SIZE_PACKED_STRUCTURE( -+struct click_wifi {, -+ uint8_t i_fc[2]; -+ uint8_t i_dur[2]; -+ uint8_t i_addr1[WIFI_ADDR_LEN]; -+ uint8_t i_addr2[WIFI_ADDR_LEN]; -+ uint8_t i_addr3[WIFI_ADDR_LEN]; -+ uint8_t i_seq[2]; -+}); -+ -+#define WIFI_FC0_VERSION_MASK 0x03 -+#define WIFI_FC0_VERSION_0 0x00 -+#define WIFI_FC0_TYPE_MASK 0x0c -+#define WIFI_FC0_TYPE_MGT 0x00 -+#define WIFI_FC0_TYPE_CTL 0x04 -+#define WIFI_FC0_TYPE_DATA 0x08 -+ -+#define WIFI_FC0_SUBTYPE_MASK 0xf0 -+/* for TYPE_MGT */ -+#define WIFI_FC0_SUBTYPE_ASSOC_REQ 0x00 -+#define WIFI_FC0_SUBTYPE_ASSOC_RESP 0x10 -+#define WIFI_FC0_SUBTYPE_REASSOC_REQ 0x20 -+#define WIFI_FC0_SUBTYPE_REASSOC_RESP 0x30 -+#define WIFI_FC0_SUBTYPE_PROBE_REQ 0x40 -+#define WIFI_FC0_SUBTYPE_PROBE_RESP 0x50 -+#define WIFI_FC0_SUBTYPE_BEACON 0x80 -+#define WIFI_FC0_SUBTYPE_ATIM 0x90 -+#define WIFI_FC0_SUBTYPE_DISASSOC 0xa0 -+#define WIFI_FC0_SUBTYPE_AUTH 0xb0 -+#define WIFI_FC0_SUBTYPE_DEAUTH 0xc0 -+/* for TYPE_CTL */ -+#define WIFI_FC0_SUBTYPE_PS_POLL 0xa0 -+#define WIFI_FC0_SUBTYPE_RTS 0xb0 -+#define WIFI_FC0_SUBTYPE_CTS 0xc0 -+#define WIFI_FC0_SUBTYPE_ACK 0xd0 -+#define WIFI_FC0_SUBTYPE_CF_END 0xe0 -+#define WIFI_FC0_SUBTYPE_CF_END_ACK 0xf0 -+/* for TYPE_DATA (bit combination) */ -+#define WIFI_FC0_SUBTYPE_DATA 0x00 -+#define WIFI_FC0_SUBTYPE_CF_ACK 0x10 -+#define WIFI_FC0_SUBTYPE_CF_POLL 0x20 -+#define WIFI_FC0_SUBTYPE_CF_ACPL 0x30 -+#define WIFI_FC0_SUBTYPE_NODATA 0x40 -+#define WIFI_FC0_SUBTYPE_CFACK 0x50 -+#define WIFI_FC0_SUBTYPE_CFPOLL 0x60 -+#define WIFI_FC0_SUBTYPE_CF_ACK_CF_ACK 0x70 -+#define WIFI_FC0_SUBTYPE_QOS 0x80 -+#define WIFI_FC0_SUBTYPE_QOS_NULL 0xc0 -+ -+ -+#define WIFI_FC1_DIR_MASK 0x03 -+#define WIFI_FC1_DIR_NODS 0x00 /* STA->STA */ -+#define WIFI_FC1_DIR_TODS 0x01 /* STA->AP */ -+#define WIFI_FC1_DIR_FROMDS 0x02 /* AP ->STA */ -+#define WIFI_FC1_DIR_DSTODS 0x03 /* AP ->AP */ -+ -+#define WIFI_FC1_MORE_FRAG 0x04 -+#define WIFI_FC1_RETRY 0x08 -+#define WIFI_FC1_PWR_MGT 0x10 -+#define WIFI_FC1_MORE_DATA 0x20 -+#define WIFI_FC1_WEP 0x40 -+#define WIFI_FC1_ORDER 0x80 -+ -+#define WIFI_NWID_LEN 32 -+ -+/* -+ * BEACON management packets -+ * -+ * octect timestamp[8] -+ * octect beacon interval[2] -+ * octect capability information[2] -+ * information element -+ * octect elemid -+ * octect length -+ * octect information[length] -+ */ -+typedef uint8_t * wifi_mgt_beacon_t; -+ -+#define WIFI_BEACON_INTERVAL(beacon) \ -+ (beacon[8] + (beacon[9] << 8)) -+#define WIFI_BEACON_CAPABILITY(beacon) \ -+ (beacon[10] + (beacon[11] << 8)) -+ -+#define WIFI_CAPINFO_ESS 0x01 -+#define WIFI_CAPINFO_IBSS 0x02 -+#define WIFI_CAPINFO_CF_POLLABLE 0x04 -+#define WIFI_CAPINFO_CF_POLLREQ 0x08 -+#define WIFI_CAPINFO_PRIVACY 0x10 -+ -+ -+ -+#define WIFI_MAX_RETRIES 11 -+ -+#define WIFI_QOS_HAS_SEQ(wh) \ -+ (((wh)->i_fc[0] & \ -+ (WIFI_FC0_TYPE_MASK | WIFI_FC0_SUBTYPE_QOS)) == \ -+ (WIFI_FC0_TYPE_DATA | WIFI_FC0_SUBTYPE_QOS)) -+ -+ -+/* -+ * Management information elements -+ */ -+struct wifi_information { -+ char ssid[WIFI_NWID_LEN+1]; -+ struct rates { -+ uint8_t *p; -+ } rates; -+ struct fh { -+ uint16_t dwell; -+ uint8_t set; -+ uint8_t pattern; -+ uint8_t index; -+ } fh; -+ struct ds { -+ uint8_t channel; -+ } ds; -+ struct cf { -+ uint8_t count; -+ uint8_t period; -+ uint8_t maxdur[2]; -+ uint8_t dur[2]; -+ } cf; -+ struct tim { -+ uint8_t count; -+ uint8_t period; -+ uint8_t bitctl; -+ /* uint8_t pvt[251]; The driver never needs to use this */ -+ } tim; -+ struct ibss { -+ uint16_t atim; -+ } ibss; -+ struct challenge { -+ uint8_t *p; -+ uint8_t len; -+ } challenge; -+}; -+ -+#define WIFI_RATES_MAXSIZE 15 -+#define WIFI_NWID_MAXSIZE 32 -+ -+enum { -+ WIFI_ELEMID_SSID = 0, -+ WIFI_ELEMID_RATES = 1, -+ WIFI_ELEMID_FHPARMS = 2, -+ WIFI_ELEMID_DSPARMS = 3, -+ WIFI_ELEMID_CFPARMS = 4, -+ WIFI_ELEMID_TIM = 5, -+ WIFI_ELEMID_IBSSPARMS = 6, -+ WIFI_ELEMID_CHALLENGE = 16, -+ WIFI_ELEMID_ERP = 42, -+ WIFI_ELEMID_XRATES = 50, -+ WIFI_ELEMID_VENDOR = 221 -+}; -+/* -+ * AUTH management packets -+ * -+ * octect algo[2] -+ * octect seq[2] -+ * octect status[2] -+ * octect chal.id -+ * octect chal.length -+ * octect chal.text[253] -+ */ -+typedef uint8_t * wifi_mgt_auth_t; -+ -+#define WIFI_AUTH_ALGORITHM(auth) \ -+ (auth[0] + (auth[1] << 8)) -+#define WIFI_AUTH_TRANSACTION(auth) \ -+ (auth[2] + (auth[3] << 8)) -+#define WIFI_AUTH_STATUS(auth) \ -+ (auth[4] + (auth[5] << 8)) -+ -+#define WIFI_AUTH_ALG_OPEN 0x0000 -+#define WIFI_AUTH_ALG_SHARED 0x0001 -+ -+#define WIFI_AUTH_OPEN_REQUEST 1 -+#define WIFI_AUTH_OPEN_RESPONSE 2 -+ -+#define WIFI_AUTH_SHARED_REQUEST 1 -+#define WIFI_AUTH_SHARED_CHALLENGE 2 -+#define WIFI_AUTH_SHARED_RESPONSE 3 -+#define WIFI_AUTH_SHARED_PASS 4 -+ -+/* -+ * Reason codes -+ * -+ * Unlisted codes are reserved -+ */ -+#define WIFI_REASON_UNSPECIFIED 1 -+#define WIFI_REASON_AUTH_EXPIRE 2 -+#define WIFI_REASON_AUTH_LEAVE 3 -+#define WIFI_REASON_ASSOC_EXPIRE 4 -+#define WIFI_REASON_ASSOC_TOOMANY 5 -+#define WIFI_REASON_NOT_AUTHED 6 -+#define WIFI_REASON_NOT_ASSOCED 7 -+#define WIFI_REASON_ASSOC_LEAVE 8 -+#define WIFI_REASON_ASSOC_NOT_AUTHED 9 -+ -+/* -+ * Status code -+ * -+ * Unlisted codes are reserved -+ */ -+#define WIFI_STATUS_SUCCESS 0x0000 -+#define WIFI_STATUS_UNSPECIFIED 1 -+#define WIFI_STATUS_CAPINFO 10 -+#define WIFI_STATUS_NOT_ASSOCED 11 -+#define WIFI_STATUS_OTHER 12 -+#define WIFI_STATUS_ALG 13 -+#define WIFI_STATUS_SEQUENCE 14 -+#define WIFI_STATUS_CHALLENGE 15 -+#define WIFI_STATUS_TIMEOUT 16 -+#define WIFI_STATUS_BASIC_RATES 18 -+#define WIFI_STATUS_TOO_MANY_STATIONS 22 -+#define WIFI_STATUS_RATES 23 -+#define WIFI_STATUS_SHORTSLOT_REQUIRED 25 -+ -+ -+#define WIFI_WEP_KEYLEN 5 /* 40bit */ -+#define WIFI_WEP_IVLEN 3 /* 24bit */ -+#define WIFI_WEP_KIDLEN 1 /* 1 octet */ -+#define WIFI_WEP_CRCLEN 4 /* CRC-32 */ -+#define WIFI_WEP_NKID 4 /* number of key ids */ -+ -+#define WIFI_WEP_HEADERSIZE (WIFI_WEP_IVLEN + WIFI_WEP_KIDLEN) -+ -+ -+#define WIFI_WEP_NOSUP -1 -+#define WIFI_WEP_OFF 0 -+#define WIFI_WEP_ON 1 -+#define WIFI_WEP_MIXED 2 -+ -+#define WIFI_AUTH_NONE 0 -+#define WIFI_AUTH_OPEN 1 -+#define WIFI_AUTH_SHARED 2 -+ -+#define WIFI_POWERSAVE_NOSUP -1 -+#define WIFI_POWERSAVE_OFF 0 -+#define WIFI_POWERSAVE_CAM 1 -+#define WIFI_POWERSAVE_PSP 2 -+#define WIFI_POWERSAVE_PSP_CAM 3 -+#define WIFI_POWERSAVE_ON WIFI_POWERSAVE_CAM -+ -+#define WIFI_RATE_BASIC 0x80 -+#define WIFI_RATE_VAL 0x7f -+ -+#define WIFI_RATE_SIZE 0x08 -+ -+#define WIFI_SEQ_FRAG_MASK 0x000f -+#define WIFI_SEQ_FRAG_SHIFT 0 -+#define WIFI_SEQ_SEQ_MASK 0xfff0 -+#define WIFI_SEQ_SEQ_SHIFT 4 -+ -+ -+/* -+ * 802.11 protocol crypto-related definitions. -+ */ -+#define WIFI_KEYBUF_SIZE 16 -+#define WIFI_MICBUF_SIZE (8+8) /* space for both tx+rx keys */ -+ -+ -+#ifndef MAX -+#define MAX(a, b) ((a) > (b) ? (a) : (b)) -+#endif -+#ifndef MIN -+#define MIN(a, b) ((a) < (b) ? (a) : (b)) -+#endif -+ -+ -+ -+/* ARPHRD_IEEE80211_PRISM uses a bloated version of Prism2 RX frame header -+ * (from linux-wlan-ng) */ -+ -+/* -+ * For packet capture, define the same physical layer packet header -+ * structure as used in the wlan-ng driver -+ */ -+enum { -+ DIDmsg_lnxind_wlansniffrm = 0x00000044, -+ DIDmsg_lnxind_wlansniffrm_hosttime = 0x00010044, -+ DIDmsg_lnxind_wlansniffrm_mactime = 0x00020044, -+ DIDmsg_lnxind_wlansniffrm_channel = 0x00030044, -+ DIDmsg_lnxind_wlansniffrm_rssi = 0x00040044, -+ DIDmsg_lnxind_wlansniffrm_sq = 0x00050044, -+ DIDmsg_lnxind_wlansniffrm_signal = 0x00060044, -+ DIDmsg_lnxind_wlansniffrm_noise = 0x00070044, -+ DIDmsg_lnxind_wlansniffrm_rate = 0x00080044, -+ DIDmsg_lnxind_wlansniffrm_istx = 0x00090044, -+ DIDmsg_lnxind_wlansniffrm_frmlen = 0x000A0044 -+}; -+enum { -+ P80211ENUM_msgitem_status_no_value = 0x00 -+}; -+enum { -+ P80211ENUM_truth_false = 0x00 -+}; -+ -+ -+typedef struct { -+ uint32_t did; -+ uint16_t status; -+ uint16_t len; -+ uint32_t data; -+} p80211item_uint32_t; -+ -+typedef struct { -+ uint32_t msgcode; -+ uint32_t msglen; -+#define WLAN_DEVNAMELEN_MAX 16 -+ uint8_t devname[WLAN_DEVNAMELEN_MAX]; -+ p80211item_uint32_t hosttime; -+ p80211item_uint32_t mactime; -+ p80211item_uint32_t channel; -+ p80211item_uint32_t rssi; -+ p80211item_uint32_t sq; -+ p80211item_uint32_t signal; -+ p80211item_uint32_t noise; -+ p80211item_uint32_t rate; -+ p80211item_uint32_t istx; -+ p80211item_uint32_t frmlen; -+} wlan_ng_prism2_header; -+ -+ -+#define LWNG_CAP_DID_BASE (4 | (1 << 6)) /* section 4, group 1 */ -+#define LWNG_CAPHDR_VERSION 0x80211001 -+ -+#define WIFI_SLOT_B 20 -+#define WIFI_DIFS_B 50 -+#define WIFI_SIFS_B 10 -+#define WIFI_ACK_B 304 -+#define WIFI_PLCP_HEADER_LONG_B 192 -+#define WIFI_PLCP_HEADER_SHORT_B 192 -+ -+#define WIFI_SLOT_A 9 -+#define WIFI_DIFS_A 28 -+#define WIFI_SIFS_A 9 -+#define WIFI_ACK_A 30 -+#define WIFI_PLCP_HEADER_A 20 -+ -+ -+#define is_b_rate(b) ((b == 2) || (b == 4) || (b == 11) || (b == 22)) -+ -+#define WIFI_CW_MIN 31 -+#define WIFI_CW_MAX 1023 -+ -+// 6-byte LLC header (last byte is terminating NUL) -+#define WIFI_LLC_HEADER ((const uint8_t *) "\xAA\xAA\x03\x00\x00") -+#define WIFI_LLC_HEADER_LEN 6 -+ -+#endif /* !_CLICKNET_WIFI_H_ */ -diff -Nurb click-1.6.0/inst/include/clicktool/eclasst.hh click-1.6.0-27/inst/include/clicktool/eclasst.hh ---- click-1.6.0/inst/include/clicktool/eclasst.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicktool/eclasst.hh 2009-02-05 10:20:38.000000000 -0500 -@@ -0,0 +1,177 @@ -+// -*- c-basic-offset: 4 -*- -+#ifndef CLICK_ECLASST_HH -+#define CLICK_ECLASST_HH -+#include -+#include -+#include -+#include -+#include "etraits.hh" -+class ErrorHandler; -+class StringAccum; -+class RouterT; -+class ElementT; -+class VariableEnvironment; -+class ElementMap; -+class SynonymElementClassT; -+ -+class ElementClassT { public: -+ -+ ElementClassT(const String &); -+ virtual ~ElementClassT(); -+ -+ static void set_base_type_factory(ElementClassT *(*factory)(const String &)); -+ static ElementClassT *base_type(const String &); -+ static ElementClassT *tunnel_type(); -+ -+ void use() { _use_count++; } -+ void unuse() { if (--_use_count <= 0) delete this; } -+ -+ const String &name() const { return _name; } -+ const char *printable_name_c_str(); -+ virtual String landmark() const { return String(); } -+ -+ // 'primitive' means 'not tunnel, not compound, not synonym'. -+ virtual bool primitive() const { return true; } -+ bool tunnel() const { return this == tunnel_type(); } -+ -+ const ElementTraits &traits() const; -+ virtual const ElementTraits *find_traits() const; -+ -+ const String &port_count_code() const; -+ const String &processing_code() const; -+ const String &flow_code() const; -+ bool requires(const String &) const; -+ bool provides(const String &) const; -+ const String &package() const; -+ const String &documentation_name() const; -+ String documentation_url() const; -+ -+ // where was this type declared? -+ virtual RouterT *declaration_scope() const; -+ virtual ElementClassT *overload_type() const; -+ -+ virtual void collect_types(HashMap &) const; -+ virtual void collect_overloads(Vector &) const; -+ -+ static ElementT *expand_element(ElementT *, RouterT *, const String &prefix, VariableEnvironment &, ErrorHandler *); -+ -+ virtual ElementClassT *resolve(int ninputs, int noutputs, Vector &args, ErrorHandler *, const String &landmark); -+ virtual ElementT *complex_expand_element(ElementT *, const String &, Vector &, RouterT *, const String &prefix, VariableEnvironment &, ErrorHandler *); -+ -+ enum UnparseKind { UNPARSE_NAMED, UNPARSE_ANONYMOUS, UNPARSE_OVERLOAD }; -+ virtual void unparse_declaration(StringAccum &, const String &, UnparseKind, ElementClassT *stop); -+ virtual String unparse_signature() const; -+ static String unparse_signature(const String &name, const Vector *formal_types, int nargs, int ninputs, int noutputs); -+ -+ virtual void *cast(const char *) { return 0; } -+ virtual SynonymElementClassT *cast_synonym() { return 0; } -+ virtual RouterT *cast_router() { return 0; } -+ -+ private: -+ -+ String _name; -+ int _use_count; -+ -+ mutable int _traits_version; -+ mutable const ElementTraits *_traits; -+ -+ static ElementClassT *the_tunnel_type; -+ -+ ElementClassT(const ElementClassT &); -+ ElementClassT &operator=(const ElementClassT &); -+ -+ ElementT *direct_expand_element(ElementT *, RouterT *, const String &prefix, VariableEnvironment &, ErrorHandler *); -+ -+}; -+ -+class SynonymElementClassT : public ElementClassT { public: -+ -+ SynonymElementClassT(const String &, ElementClassT *, RouterT *); -+ -+ ElementClassT *synonym_of() const { return _eclass; } -+ -+ ElementClassT *resolve(int, int, Vector &, ErrorHandler *, const String &); -+ ElementT *complex_expand_element(ElementT *, const String &, Vector &, RouterT *, const String &prefix, VariableEnvironment &, ErrorHandler *); -+ -+ void collect_types(HashMap &) const; -+ void collect_overloads(Vector &) const; -+ -+ void unparse_declaration(StringAccum &, const String &, UnparseKind, ElementClassT *); -+ -+ bool primitive() const { return false; } -+ const ElementTraits *find_traits() const; -+ -+ RouterT *declaration_scope() const; -+ ElementClassT *overload_type() const { return _eclass; } -+ -+ SynonymElementClassT *cast_synonym() { return this; } -+ RouterT *cast_router(); -+ -+ private: -+ -+ ElementClassT *_eclass; -+ RouterT *_declaration_scope; -+ -+}; -+ -+ -+extern int32_t default_element_map_version; -+ -+inline ElementClassT * -+ElementClassT::tunnel_type() -+{ -+ assert(the_tunnel_type); -+ return the_tunnel_type; -+} -+ -+inline const ElementTraits & -+ElementClassT::traits() const -+{ -+ if (_traits_version != default_element_map_version) { -+ _traits_version = default_element_map_version; -+ _traits = find_traits(); -+ } -+ return *_traits; -+} -+ -+inline const String & -+ElementClassT::documentation_name() const -+{ -+ return traits().documentation_name; -+} -+ -+inline const String & -+ElementClassT::port_count_code() const -+{ -+ return traits().port_count_code; -+} -+ -+inline const String & -+ElementClassT::processing_code() const -+{ -+ return traits().processing_code; -+} -+ -+inline const String & -+ElementClassT::flow_code() const -+{ -+ return traits().flow_code; -+} -+ -+inline bool -+ElementClassT::requires(const String &req) const -+{ -+ return traits().requires(req); -+} -+ -+inline bool -+ElementClassT::provides(const String &req) const -+{ -+ return traits().provides(req); -+} -+ -+inline size_t hashcode(ElementClassT *e) { -+ return CLICK_NAME(hashcode)(static_cast(e)); -+} -+ -+#endif -diff -Nurb click-1.6.0/inst/include/clicktool/elementmap.hh click-1.6.0-27/inst/include/clicktool/elementmap.hh ---- click-1.6.0/inst/include/clicktool/elementmap.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicktool/elementmap.hh 2009-02-05 10:20:38.000000000 -0500 -@@ -0,0 +1,181 @@ -+// -*- c-basic-offset: 4 -*- -+#ifndef CLICK_ELEMENTMAP_HH -+#define CLICK_ELEMENTMAP_HH -+#include "etraits.hh" -+ -+class ElementMap { public: -+ -+ ElementMap(); -+ ElementMap(const String&, ErrorHandler* = 0); -+ ~ElementMap(); -+ -+ static ElementMap* default_map() { return the_element_map; } -+ static void push_default(ElementMap*); -+ static void pop_default(); -+ -+ void use() { _use_count++; } -+ void unuse() { _use_count--; } -+ -+ int size() const { return _e.size(); } -+ bool empty() const { return _e.size() == 1; } -+ -+ const Traits& traits(const String&) const; -+ const Traits& traits_at(int i) const { return _e[i]; } -+ bool has_traits(const String&) const; -+ int traits_index(const String&) const; -+ -+ bool provides_global(const String&) const; -+ -+ int definition_index(int i) const { return _e[i].def_index; } -+ const String& source_directory(const Traits&) const; -+ const String& package(const Traits&) const; -+ const String& package(const String&) const; -+ String documentation_url(const Traits&) const; -+ -+ class TraitsIterator; -+ TraitsIterator begin_elements() const; -+ -+ int add(const Traits&); -+ void remove_at(int); -+ -+ void parse(const String& data, ErrorHandler* = 0); -+ void parse(const String& data, const String& package_name, ErrorHandler* = 0); -+ void parse_xml(const String& data, const String& package_name, ErrorHandler*); -+ bool parse_default_file(const String& default_path, ErrorHandler*); -+ bool parse_requirement_files(RouterT*, const String& default_path, ErrorHandler*, String* not_found = 0); -+ bool parse_all_files(RouterT*, const String& default_path, ErrorHandler*); -+ static void report_file_not_found(String default_path, bool found_default, ErrorHandler*); -+ String unparse(const String& package = String()) const; -+ String unparse_nonxml() const; -+ -+ int check_completeness(const RouterT*, ErrorHandler*) const; -+ bool driver_indifferent(const RouterT*, int driver_mask = Driver::ALLMASK, ErrorHandler* = 0) const; -+ bool driver_compatible(const RouterT*, int driver, ErrorHandler* = 0) const; -+ -+ int driver_mask() const { return _driver_mask; } -+ void set_driver(int d) { set_driver_mask(1 << d); } -+ void set_driver_mask(int); -+ -+ private: -+ -+ struct Globals { -+ String srcdir; -+ String compile_flags; -+ String package; -+ String dochref; -+ }; -+ -+ Vector _e; -+ HashMap _name_map; -+ -+ Vector _def; -+ -+ int _use_count; -+ int _driver_mask; -+ -+ int get_driver_mask(const String&); -+ int driver_elt_index(int) const; -+ -+ void collect_indexes(const RouterT*, Vector&, ErrorHandler*) const; -+ -+ static ElementMap* the_element_map; -+ static void bump_version(); -+ void incr_version() const; -+ -+}; -+ -+extern int32_t default_element_map_version; -+ -+ -+class ElementMap::TraitsIterator { public: -+ -+ TraitsIterator(const ElementMap*, bool elements_only); -+ -+ operator bool() { return _index < _emap->size(); } -+ void operator++(int); -+ -+ const ElementTraits& value() const { return _emap->traits_at(_index); } -+ int traits_index() const { return _index; } -+ -+ private: -+ -+ const ElementMap* _emap; -+ int _index; -+ bool _elements_only; -+ -+}; -+ -+ -+inline const Traits& -+ElementMap::traits(const String& name) const -+{ -+ int i = _name_map[name]; -+ if (!(_e[i].driver_mask & _driver_mask)) -+ i = driver_elt_index(i); -+ return _e[i]; -+} -+ -+inline bool -+ElementMap::has_traits(const String& name) const -+{ -+ int i = _name_map[name]; -+ if (!(_e[i].driver_mask & _driver_mask) && i > 0) -+ i = driver_elt_index(i); -+ return i > 0; -+} -+ -+inline int -+ElementMap::traits_index(const String& name) const -+{ -+ int i = _name_map[name]; -+ if (!(_e[i].driver_mask & _driver_mask) && i > 0) -+ i = driver_elt_index(i); -+ return i; -+} -+ -+inline const String& -+ElementMap::source_directory(const ElementTraits& t) const -+{ -+ return _def[t.def_index].srcdir; -+} -+ -+inline const String& -+ElementMap::package(const ElementTraits& t) const -+{ -+ return _def[t.def_index].package; -+} -+ -+inline const String& -+ElementMap::package(const String& name) const -+{ -+ return package(traits(name)); -+} -+ -+inline void -+ElementMap::bump_version() -+{ -+ // ensure it stays positive -+ default_element_map_version = -+ (default_element_map_version + 1) & 0x7FFFFFFF; -+} -+ -+inline void -+ElementMap::incr_version() const -+{ -+ if (this == (const ElementMap *)the_element_map) -+ bump_version(); -+} -+ -+inline bool -+ElementMap::provides_global(const String& req) const -+{ -+ return _e[0].provides(req); -+} -+ -+inline ElementMap::TraitsIterator -+ElementMap::begin_elements() const -+{ -+ return TraitsIterator(this, true); -+} -+ -+#endif -diff -Nurb click-1.6.0/inst/include/clicktool/elementt.hh click-1.6.0-27/inst/include/clicktool/elementt.hh ---- click-1.6.0/inst/include/clicktool/elementt.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicktool/elementt.hh 2009-02-05 10:20:38.000000000 -0500 -@@ -0,0 +1,208 @@ -+// -*- c-basic-offset: 4 -*- -+#ifndef CLICK_ELEMENTT_HH -+#define CLICK_ELEMENTT_HH -+#include "eclasst.hh" -+ -+struct ElementT { -+ -+ int flags; -+ -+ ElementT(); -+ ElementT(const String &, ElementClassT *, const String &, const String & = String()); -+ ~ElementT(); -+ -+ RouterT *router() const { return _owner; } -+ int eindex() const { return _eindex; } -+ -+ bool live() const { return _type; } -+ bool dead() const { return !_type; } -+ void kill(); -+ -+ const String &name() const { return _name; } -+ const char *name_c_str() const { return _name.c_str(); } -+ bool anonymous() const { return _name && _name[0] == ';'; } -+ -+ ElementClassT *type() const { return _type; } -+ String type_name() const { return _type->name(); } -+ const char *type_name_c_str() const { return _type->printable_name_c_str(); } -+ void set_type(ElementClassT *); -+ -+ const String &config() const { return _configuration; } -+ const String &configuration() const { return _configuration; } -+ void set_config(const String &s) { _configuration = s; } -+ void set_configuration(const String &s) { _configuration = s; } -+ String &config() { return _configuration; } -+ String &configuration() { return _configuration; } -+ -+ const String &landmark() const { return _landmark; } -+ void set_landmark(const String &s) { _landmark = s; } -+ String &landmark() { return _landmark; } -+ -+ bool tunnel() const { return _type==ElementClassT::tunnel_type(); } -+ inline bool tunnel_connected() const; -+ ElementT *tunnel_input() const { return _tunnel_input; } -+ ElementT *tunnel_output() const { return _tunnel_output; } -+ -+ int ninputs() const { return _ninputs; } -+ int noutputs() const { return _noutputs; } -+ -+ inline String declaration() const; -+ -+ void *user_data() const { return _user_data; } -+ void set_user_data(void *v) { _user_data = v; } -+ void set_user_data(intptr_t v) { _user_data = (void *)v; } -+ -+ static bool name_ok(const String &, bool allow_anon_names = false); -+ static void redeclaration_error(ErrorHandler *, const char *type, String name, const String &landmark, const String &old_landmark); -+ -+ private: -+ -+ int _eindex; -+ String _name; -+ ElementClassT *_type; -+ String _configuration; -+ String _landmark; -+ int _ninputs; -+ int _noutputs; -+ ElementT *_tunnel_input; -+ ElementT *_tunnel_output; -+ RouterT *_owner; -+ void *_user_data; -+ -+ ElementT(const ElementT &); -+ ElementT &operator=(const ElementT &); -+ -+ friend class RouterT; -+ -+}; -+ -+struct PortT { -+ -+ ElementT *element; -+ int port; -+ -+ PortT() : element(0), port(-1) { } -+ PortT(ElementT *e, int p) : element(e), port(p) { } -+ -+ bool live() const { return element != 0; } -+ bool dead() const { return element == 0; } -+ RouterT *router() const { return (element ? element->router() : 0); } -+ -+ int eindex() const { return (element ? element->eindex() : -1); } -+ -+ int index_in(const Vector &, int start = 0) const; -+ int force_index_in(Vector &, int start = 0) const; -+ -+ String unparse_input() const; -+ String unparse_output() const; -+ -+ static void sort(Vector &); -+ -+}; -+ -+class ConnectionT { public: -+ -+ ConnectionT(); -+ ConnectionT(const PortT &, const PortT &, const String & = String()); -+ ConnectionT(const PortT &, const PortT &, const String &, int, int); -+ -+ bool live() const { return _from.live(); } -+ bool dead() const { return _from.dead(); } -+ void kill() { _from.element = 0; } -+ -+ const PortT &from() const { return _from; } -+ const PortT &to() const { return _to; } -+ ElementT *from_element() const { return _from.element; } -+ int from_eindex() const { return _from.eindex(); } -+ int from_port() const { return _from.port; } -+ ElementT *to_element() const { return _to.element; } -+ int to_eindex() const { return _to.eindex(); } -+ int to_port() const { return _to.port; } -+ const String &landmark() const { return _landmark; } -+ -+ int next_from() const { return _next_from; } -+ int next_to() const { return _next_to; } -+ -+ String unparse() const; -+ -+ private: -+ -+ PortT _from; -+ PortT _to; -+ String _landmark; -+ int _next_from; -+ int _next_to; -+ -+ friend class RouterT; -+ -+}; -+ -+ -+inline void -+ElementT::kill() -+{ -+ if (_type) -+ _type->unuse(); -+ _type = 0; -+} -+ -+inline void -+ElementT::set_type(ElementClassT *t) -+{ -+ assert(t); -+ t->use(); -+ if (_type) -+ _type->unuse(); -+ _type = t; -+} -+ -+inline String -+ElementT::declaration() const -+{ -+ assert(_type); -+ return _name + " :: " + _type->name(); -+} -+ -+inline bool -+ElementT::tunnel_connected() const -+{ -+ return _tunnel_input || _tunnel_output; -+} -+ -+inline bool -+operator==(const PortT &h1, const PortT &h2) -+{ -+ return h1.element == h2.element && h1.port == h2.port; -+} -+ -+inline bool -+operator!=(const PortT &h1, const PortT &h2) -+{ -+ return h1.element != h2.element || h1.port != h2.port; -+} -+ -+inline bool -+operator<(const PortT &h1, const PortT &h2) -+{ -+ return h1.eindex() < h2.eindex() || (h1.element == h2.element && h1.port < h2.port); -+} -+ -+inline bool -+operator>(const PortT &h1, const PortT &h2) -+{ -+ return h1.eindex() > h2.eindex() || (h1.element == h2.element && h1.port > h2.port); -+} -+ -+inline bool -+operator<=(const PortT &h1, const PortT &h2) -+{ -+ return h1.eindex() < h2.eindex() || (h1.element == h2.element && h1.port <= h2.port); -+} -+ -+inline bool -+operator>=(const PortT &h1, const PortT &h2) -+{ -+ return h1.eindex() > h2.eindex() || (h1.element == h2.element && h1.port >= h2.port); -+} -+ -+#endif -diff -Nurb click-1.6.0/inst/include/clicktool/etraits.hh click-1.6.0-27/inst/include/clicktool/etraits.hh ---- click-1.6.0/inst/include/clicktool/etraits.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicktool/etraits.hh 2009-02-05 10:20:38.000000000 -0500 -@@ -0,0 +1,85 @@ -+// -*- c-basic-offset: 4 -*- -+#ifndef CLICK_ETRAITS_HH -+#define CLICK_ETRAITS_HH -+#include -+ -+struct Driver { -+ enum { -+ USERLEVEL = 0, LINUXMODULE = 1, BSDMODULE = 2, NSMODULE = 3, -+ ALLMASK = 0xF, COUNT = 4 -+ }; -+ static const char *name(int); -+ static const char *requirement(int); -+ static int driver(const String&); -+ static int driver_mask(const String&); -+}; -+ -+ -+struct ElementTraits { -+ -+ String name; -+ String cxx; -+ String documentation_name; -+ String header_file; -+ String source_file; -+ String port_count_code; -+ String processing_code; -+ String flow_code; -+ String flags; -+ String methods; -+ String requirements; -+ String provisions; -+ String libs; -+ int def_index; -+ int driver_mask; -+ int name_next; -+ -+ ElementTraits(); -+ -+ static const ElementTraits &null_traits() { return the_null_traits; } -+ -+ bool allows_driver(int d) const { return (driver_mask&(1< -+#include -+#include -+class RouterT; -+class ElementClassT; -+class StringAccum; -+class LexerTInfo; -+class VariableEnvironment; -+ -+enum { -+ lexEOF = 0, -+ lexIdent = 256, -+ lexVariable, -+ lexConfig, -+ lexArrow, -+ lex2Colon, -+ lex2Bar, -+ lex3Dot, -+ lexTunnel, -+ lexElementclass, -+ lexRequire, -+ lexDefine -+}; -+ -+class Lexeme { public: -+ -+ Lexeme() : _kind(lexEOF) { } -+ Lexeme(int k, const String &s, const char *p) : _kind(k), _s(s), _pos(p) { } -+ -+ int kind() const { return _kind; } -+ bool is(int k) const { return _kind == k; } -+ operator bool() const { return _kind != lexEOF; } -+ -+ const String &string() const { return _s; } -+ String &string() { return _s; } -+ -+ const char *pos1() const { return _pos; } -+ const char *pos2() const { return _pos + _s.length(); } -+ -+ private: -+ -+ int _kind; -+ String _s; -+ const char *_pos; -+ -+}; -+ -+class LexerT { public: -+ -+ LexerT(ErrorHandler *, bool ignore_line_directives); -+ virtual ~LexerT(); -+ -+ void reset(const String &data, const String &filename = String()); -+ void clear(); -+ void set_lexinfo(LexerTInfo *); -+ void ignore_line_directives(bool g) { _ignore_line_directives = g; } -+ -+ String remaining_text() const; -+ void set_remaining_text(const String &); -+ -+ const Lexeme &lex(); -+ void unlex(const Lexeme &); -+ Lexeme lex_config(); -+ String landmark() const; -+ -+ bool yport(int &port, const char *&pos1, const char *&pos2); -+ bool yelement(int &element, bool comma_ok); -+ void ydeclaration(const Lexeme &first_element = Lexeme()); -+ bool yconnection(); -+ void ycompound_arguments(RouterT *); -+ void yelementclass(const char *pos1); -+ void ytunnel(); -+ ElementClassT *ycompound(String, const char *decl_pos1, const char *name_pos1); -+ void yrequire(); -+ void yvar(); -+ bool ystatement(bool nested = false); -+ -+ RouterT *router() const { return _router; } -+ RouterT *finish(const VariableEnvironment &global_scope); -+ -+ protected: -+ -+ // lexer -+ String _big_string; -+ -+ const char *_data; -+ const char *_end; -+ const char *_pos; -+ -+ String _filename; -+ String _original_filename; -+ unsigned _lineno; -+ bool _ignore_line_directives; -+ -+ bool get_data(); -+ const char *skip_line(const char *); -+ const char *skip_slash_star(const char *); -+ const char *skip_backslash_angle(const char *); -+ const char *skip_quote(const char *, char); -+ const char *process_line_directive(const char *); -+ Lexeme next_lexeme(); -+ static String lexeme_string(int); -+ -+ // parser -+ enum { TCIRCLE_SIZE = 8 }; -+ Lexeme _tcircle[TCIRCLE_SIZE]; -+ int _tpos; -+ int _tfull; -+ -+ // router -+ RouterT *_router; -+ -+ int _anonymous_offset; -+ -+ // what names represent types? (builds up linearly) -+ HashMap _base_type_map; -+ -+ // errors -+ LexerTInfo *_lexinfo; -+ ErrorHandler *_errh; -+ -+ void vlerror(const char *, const char *, const String &, const char *, va_list); -+ int lerror(const char *, const char *, const char *, ...); -+ int lerror(const Lexeme &, const char *, ...); -+ String anon_element_name(const String &) const; -+ -+ bool expect(int, bool report_error = true); -+ const char *next_pos() const; -+ -+ ElementClassT *element_type(const Lexeme &) const; -+ ElementClassT *force_element_type(const Lexeme &); -+ void ydefine(RouterT *, const String &name, const String &value, bool isformal, const Lexeme &, bool &scope_order_error); -+ -+ LexerT(const LexerT &); -+ LexerT &operator=(const LexerT &); -+ int make_element(String, const Lexeme &, const char *decl_pos2, ElementClassT *, const String &, const String &); -+ int make_anon_element(const Lexeme &, const char *decl_pos2, ElementClassT *, const String &, const String &); -+ void connect(int f1, int p1, int p2, int f2); -+ -+}; -+ -+#endif -diff -Nurb click-1.6.0/inst/include/clicktool/lexertinfo.hh click-1.6.0-27/inst/include/clicktool/lexertinfo.hh ---- click-1.6.0/inst/include/clicktool/lexertinfo.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicktool/lexertinfo.hh 2009-02-05 10:20:38.000000000 -0500 -@@ -0,0 +1,29 @@ -+// -*- c-basic-offset: 4 -*- -+#ifndef CLICK_LEXERTINFO_HH -+#define CLICK_LEXERTINFO_HH -+#include "lexert.hh" -+class ElementT; -+class ElementClassT; -+ -+class LexerTInfo { public: -+ -+ LexerTInfo() { } -+ virtual ~LexerTInfo() { } -+ -+ virtual void notify_comment(const char *pos1, const char *pos2); -+ virtual void notify_error(const String &message, const char *pos1, const char *pos2); -+ virtual void notify_line_directive(const char *pos1, const char *pos2); -+ virtual void notify_keyword(const String &keyword, const char *pos1, const char *pos2); -+ virtual void notify_config_string(const char *pos1, const char *pos2); -+ virtual void notify_class_declaration(ElementClassT *, bool anonymous, -+ const char *pos1, const char *name_pos1, const char *pos2); -+ virtual void notify_class_extension(ElementClassT *, const char *pos1, const char *pos2); -+ virtual void notify_class_reference(ElementClassT *, const char *pos1, const char *pos2); -+ virtual void notify_element_declaration( -+ ElementT *e, const char *pos1, const char *name_pos2, const char *decl_pos2); -+ virtual void notify_element_reference( -+ ElementT *e, const char *pos1, const char *pos2); -+ -+}; -+ -+#endif -diff -Nurb click-1.6.0/inst/include/clicktool/processingt.hh click-1.6.0-27/inst/include/clicktool/processingt.hh ---- click-1.6.0/inst/include/clicktool/processingt.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicktool/processingt.hh 2009-02-05 10:20:38.000000000 -0500 -@@ -0,0 +1,187 @@ -+// -*- c-basic-offset: 4 -*- -+#ifndef CLICK_PROCESSINGT_HH -+#define CLICK_PROCESSINGT_HH -+#include "routert.hh" -+class ElementMap; -+class Bitvector; -+ -+class ProcessingT { public: -+ -+ enum ProcessingCode { VAGNOSTIC = 0, VPUSH = 1, VPULL = 2 }; -+ static const char processing_letters[]; -+ -+ ProcessingT(); -+ ProcessingT(const RouterT *, ErrorHandler *); -+ ProcessingT(const RouterT *, ElementMap *, ErrorHandler *); -+ ProcessingT(const RouterT *, ElementMap *, bool flatten, ErrorHandler *); -+ int reset(const RouterT *, ElementMap *, bool flatten, ErrorHandler *); -+ void resolve_agnostics(); // change remaining AGNOSTICs to PUSH -+ -+ int nelements() const { return _input_pidx.size() - 1; } -+ int ninput_pidx() const { return _input_pidx.back(); } -+ int noutput_pidx() const { return _output_pidx.back(); } -+ -+ int input_pidx(const ConnectionT &) const; -+ int output_pidx(const ConnectionT &) const; -+ int input_pidx(const PortT &) const; -+ int output_pidx(const PortT &) const; -+ int input_pidx(int ei, int p = 0) const { return _input_pidx[ei]+p; } -+ int output_pidx(int ei, int p = 0) const { return _output_pidx[ei]+p; } -+ PortT input_port(int pidx) const; -+ PortT output_port(int pidx) const; -+ -+ int input_processing(const PortT &) const; -+ int output_processing(const PortT &) const; -+ int input_processing(int ei, int p) const; -+ int output_processing(int ei, int p) const; -+ bool input_is_pull(int ei, int p) const; -+ bool output_is_push(int ei, int p) const; -+ const PortT &input_connection(int ei, int p) const; -+ const PortT &output_connection(int ei, int p) const; -+ -+ bool same_processing(int, int) const; -+ -+ String processing_code(const ElementT *) const; -+ -+ static int forward_flow(const String &code, int input_port, int noutputs, Bitvector *, ErrorHandler * = 0); -+ static int forward_flow(const PortT &, Bitvector *, ErrorHandler * = 0); -+ static int backward_flow(const String &code, int output_port, int ninputs, Bitvector *, ErrorHandler * = 0); -+ static int backward_flow(const PortT &, Bitvector *, ErrorHandler * = 0); -+ -+ void set_connected_inputs(const Bitvector &, Bitvector &) const; -+ void set_connected_outputs(const Bitvector &, Bitvector &) const; -+ void set_connected_inputs(const PortT &, Bitvector &) const; -+ void set_connected_outputs(const PortT &, Bitvector &) const; -+ void set_flowed_inputs(const Bitvector &, Bitvector &, ErrorHandler* = 0) const; -+ void set_flowed_outputs(const Bitvector &, Bitvector &, ErrorHandler* = 0) const; -+ -+ void forward_reachable_inputs(Bitvector &, ErrorHandler * = 0) const; -+ -+ String compound_processing_code() const; -+ String compound_flow_code(ErrorHandler * = 0) const; -+ -+ private: -+ -+ const RouterT *_router; -+ -+ Vector _input_pidx; -+ Vector _output_pidx; -+ Vector _input_elt; -+ Vector _output_elt; -+ Vector _input_processing; -+ Vector _output_processing; -+ Vector _connected_input; -+ Vector _connected_output; -+ -+ void create_pidx(ErrorHandler *); -+ -+ void initial_processing_for(int, ErrorHandler *); -+ void initial_processing(ErrorHandler *); -+ void processing_error(const ConnectionT &, int, ErrorHandler *); -+ void check_processing(ErrorHandler *); -+ void check_connections(ErrorHandler *); -+ -+}; -+ -+ -+inline int -+ProcessingT::input_pidx(const PortT &h) const -+{ -+ assert(h.router() == _router); -+ return input_pidx(h.eindex(), h.port); -+} -+ -+inline int -+ProcessingT::output_pidx(const PortT &h) const -+{ -+ assert(h.router() == _router); -+ return output_pidx(h.eindex(), h.port); -+} -+ -+inline int -+ProcessingT::input_pidx(const ConnectionT &c) const -+{ -+ return input_pidx(c.to()); -+} -+ -+inline int -+ProcessingT::output_pidx(const ConnectionT &c) const -+{ -+ return output_pidx(c.from()); -+} -+ -+inline PortT -+ProcessingT::input_port(int pidx) const -+{ -+ const ElementT *e = _input_elt[pidx]; -+ return PortT(const_cast(e), pidx - _input_pidx[e->eindex()]); -+} -+ -+inline PortT -+ProcessingT::output_port(int pidx) const -+{ -+ const ElementT *e = _output_elt[pidx]; -+ return PortT(const_cast(e), pidx - _output_pidx[e->eindex()]); -+} -+ -+inline int -+ProcessingT::input_processing(const PortT &h) const -+{ -+ return _input_processing[input_pidx(h)]; -+} -+ -+inline int -+ProcessingT::output_processing(const PortT &h) const -+{ -+ return _output_processing[output_pidx(h)]; -+} -+ -+inline int -+ProcessingT::input_processing(int i, int p) const -+{ -+ return _input_processing[input_pidx(i, p)]; -+} -+ -+inline int -+ProcessingT::output_processing(int i, int p) const -+{ -+ return _output_processing[output_pidx(i, p)]; -+} -+ -+inline bool -+ProcessingT::input_is_pull(int i, int p) const -+{ -+ return input_processing(i, p) == VPULL; -+} -+ -+inline bool -+ProcessingT::output_is_push(int i, int p) const -+{ -+ return output_processing(i, p) == VPUSH; -+} -+ -+inline const PortT & -+ProcessingT::input_connection(int i, int p) const -+{ -+ return _connected_input[input_pidx(i, p)]; -+} -+ -+inline const PortT & -+ProcessingT::output_connection(int i, int p) const -+{ -+ return _connected_output[output_pidx(i, p)]; -+} -+ -+inline int -+ProcessingT::forward_flow(const PortT &p, Bitvector *bv, ErrorHandler *errh) -+{ -+ return forward_flow(p.element->type()->flow_code(), p.port, p.element->noutputs(), bv, errh); -+} -+ -+inline int -+ProcessingT::backward_flow(const PortT &p, Bitvector *bv, ErrorHandler *errh) -+{ -+ return backward_flow(p.element->type()->flow_code(), p.port, p.element->ninputs(), bv, errh); -+} -+ -+#endif -diff -Nurb click-1.6.0/inst/include/clicktool/routert.hh click-1.6.0-27/inst/include/clicktool/routert.hh ---- click-1.6.0/inst/include/clicktool/routert.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicktool/routert.hh 2009-02-05 10:20:38.000000000 -0500 -@@ -0,0 +1,462 @@ -+// -*- c-basic-offset: 4 -*- -+#ifndef CLICK_ROUTERT_HH -+#define CLICK_ROUTERT_HH -+#include "elementt.hh" -+#include "eclasst.hh" -+#include -+#include -+#include -+#include -+typedef HashMap StringMap; -+ -+class RouterT : public ElementClassT { public: -+ -+ RouterT(); -+ RouterT(const String &name, const String &landmark, RouterT *declaration_scope = 0); -+ virtual ~RouterT(); -+ -+ // ELEMENTS -+ int nelements() const { return _elements.size(); } -+ int n_live_elements() const { return _n_live_elements; } -+ -+ inline const ElementT *element(const String &) const; -+ inline ElementT *element(const String &); -+ int eindex(const String &s) const { return _element_name_map[s]; } -+ -+ const ElementT *element(int i) const{ return _elements[i]; } -+ ElementT *element(int i) { return _elements[i]; } -+ -+ class iterator; -+ class const_iterator; -+ class type_iterator; -+ class const_type_iterator; -+ inline iterator begin_elements(); -+ inline const_iterator begin_elements() const; -+ inline type_iterator begin_elements(ElementClassT *); -+ inline const_type_iterator begin_elements(ElementClassT *) const; -+ inline iterator end_elements(); -+ inline const_iterator end_elements() const; -+ -+ bool elive(int i) const { return _elements[i]->live(); } -+ bool edead(int i) const { return _elements[i]->dead(); } -+ inline String ename(int) const; -+ inline ElementClassT *etype(int) const; -+ inline String etype_name(int) const; -+ -+ ElementT *get_element(const String &name, ElementClassT *, const String &configuration, const String &landmark); -+ ElementT *add_anon_element(ElementClassT *, const String &configuration = String(), const String &landmark = String()); -+ void change_ename(int, const String &); -+ void deanonymize_elements(); -+ void free_element(ElementT *); -+ void free_dead_elements(); -+ -+ void set_new_eindex_collector(Vector *v) { _new_eindex_collector=v; } -+ -+ // TYPES -+ ElementClassT *locally_declared_type(const String &) const; -+ inline ElementClassT *declared_type(const String &) const; -+ void add_declared_type(ElementClassT *, bool anonymous); -+ -+ void collect_types(HashMap &) const; -+ void collect_locally_declared_types(Vector &) const; -+ void collect_overloads(Vector &) const; -+ -+ // CONNECTIONS -+ int nconnections() const { return _conn.size(); } -+ const Vector &connections() const { return _conn; } -+ const ConnectionT &connection(int c) const { return _conn[c]; } -+ bool connection_live(int c) const { return _conn[c].live(); } -+ -+ void add_tunnel(const String &, const String &, const String &, ErrorHandler *); -+ -+ bool add_connection(const PortT &, const PortT &, const String &landmark = String()); -+ inline bool add_connection(ElementT *, int, ElementT *, int, const String &landmark = String()); -+ void kill_connection(int); -+ void kill_bad_connections(); -+ void compact_connections(); -+ -+ inline bool has_connection(const PortT &, const PortT &) const; -+ int find_connection(const PortT &, const PortT &) const; -+ void change_connection_to(int, PortT); -+ void change_connection_from(int, PortT); -+ bool find_connection_from(const PortT &, PortT &) const; -+ void find_connections_from(const PortT &, Vector &) const; -+ void find_connections_from(const PortT &, Vector &) const; -+ void find_connections_to(const PortT &, Vector &) const; -+ void find_connections_to(const PortT &, Vector &) const; -+ void find_connection_vector_from(ElementT *, Vector &) const; -+ void find_connection_vector_to(ElementT *, Vector &) const; -+ -+ bool insert_before(const PortT &, const PortT &); -+ bool insert_after(const PortT &, const PortT &); -+ inline bool insert_before(ElementT *, const PortT &); -+ inline bool insert_after(ElementT *, const PortT &); -+ -+ // REQUIREMENTS -+ void add_requirement(const String &); -+ void remove_requirement(const String &); -+ const Vector &requirements() const { return _requirements; } -+ -+ // ARCHIVE -+ void add_archive(const ArchiveElement &); -+ int narchive() const { return _archive.size(); } -+ int archive_index(const String &s) const { return _archive_map[s]; } -+ const Vector &archive() const{ return _archive; } -+ ArchiveElement &archive(int i) { return _archive[i]; } -+ const ArchiveElement &archive(int i) const { return _archive[i]; } -+ inline ArchiveElement &archive(const String &s); -+ inline const ArchiveElement &archive(const String &s) const; -+ -+ void add_components_to(RouterT *, const String &prefix = String()) const; -+ -+ // CHECKING, FLATTENING AND EXPANDING -+ void check() const; -+ -+ void remove_duplicate_connections(); -+ void remove_dead_elements(ErrorHandler * = 0); -+ -+ void remove_compound_elements(ErrorHandler *, bool expand_vars); -+ void remove_tunnels(ErrorHandler * = 0); -+ -+ void expand_into(RouterT *, const String &prefix, VariableEnvironment &, ErrorHandler *); -+ void flatten(ErrorHandler *, bool expand_vars = false); -+ -+ // UNPARSING -+ void unparse(StringAccum &, const String & = String()) const; -+ void unparse_requirements(StringAccum &, const String & = String()) const; -+ void unparse_defines(StringAccum &, const String & = String()) const; -+ void unparse_declarations(StringAccum &, const String & = String()) const; -+ void unparse_connections(StringAccum &, const String & = String()) const; -+ String configuration_string() const; -+ -+ // COMPOUND ELEMENTS -+ String landmark() const { return _type_landmark; } -+ const ElementTraits *find_traits() const; -+ -+ bool primitive() const { return false; } -+ -+ int nformals() const { return _nformals; } -+ const VariableEnvironment &scope() const { return _scope; } -+ inline bool define(const String &name, const String &value, bool isformal); -+ inline void redefine(const VariableEnvironment &); -+ int ninputs() const { return _ninputs; } -+ int noutputs() const { return _noutputs; } -+ -+ RouterT *declaration_scope() const { return _declaration_scope; } -+ ElementClassT *overload_type() const { return _overload_type; } -+ void set_overload_type(ElementClassT *); -+ -+ int finish_type(ErrorHandler *); -+ -+ ElementClassT *resolve(int, int, Vector &, ErrorHandler *, const String &landmark); -+ ElementT *complex_expand_element(ElementT *, const String &, Vector &, RouterT *, const String &prefix, VariableEnvironment &, ErrorHandler *); -+ -+ String unparse_signature() const; -+ void unparse_declaration(StringAccum &, const String &, UnparseKind, ElementClassT *); -+ -+ RouterT *cast_router() { return this; } -+ -+ private: -+ -+ struct Pair { -+ int from; -+ int to; -+ Pair() : from(-1), to(-1) { } -+ Pair(int f, int t) : from(f), to(t) { } -+ }; -+ -+ struct ElementType { -+ ElementClassT * const type; -+ int scope_cookie; -+ int prev_name; -+ ElementType(ElementClassT *c, int sc, int pn) : type(c), scope_cookie(sc), prev_name(pn) { assert(type); type->use(); } -+ ElementType(const ElementType &o) : type(o.type), scope_cookie(o.scope_cookie), prev_name(o.prev_name) { type->use(); } -+ ~ElementType() { type->unuse(); } -+ const String &name() const { return type->name(); } -+ private: -+ ElementType &operator=(const ElementType &); -+ }; -+ -+ StringMap _element_name_map; -+ Vector _elements; -+ ElementT *_free_element; -+ int _n_live_elements; -+ Vector *_new_eindex_collector; -+ -+ Vector _conn; -+ Vector _first_conn; -+ int _free_conn; -+ -+ StringMap _declared_type_map; -+ Vector _declared_types; -+ -+ Vector _requirements; -+ -+ StringMap _archive_map; -+ Vector _archive; -+ -+ RouterT *_declaration_scope; -+ int _declaration_scope_cookie; -+ int _scope_cookie; -+ -+ VariableEnvironment _scope; -+ int _nformals; -+ int _ninputs; -+ int _noutputs; -+ bool _scope_order_error : 1; -+ ElementClassT *_overload_type; -+ String _type_landmark; -+ mutable ElementTraits _traits; -+ bool _circularity_flag; -+ -+ RouterT(const RouterT &); -+ RouterT &operator=(const RouterT &); -+ -+ ElementClassT *declared_type(const String &, int scope_cookie) const; -+ void update_noutputs(int); -+ void update_ninputs(int); -+ ElementT *add_element(const ElementT &); -+ void assign_element_name(int); -+ void free_connection(int ci); -+ void unlink_connection_from(int ci); -+ void unlink_connection_to(int ci); -+ void expand_tunnel(Vector *port_expansions, const Vector &ports, bool is_output, int which, ErrorHandler *) const; -+ int assign_arguments(const Vector &, Vector *) const; -+ -+ friend class RouterUnparserT; -+ -+}; -+ -+class RouterT::const_iterator { public: -+ operator bool() const { return _e; } -+ int eindex() const { return _e->eindex(); } -+ void operator++(int) { if (_e) step(_e->router(), eindex()+1);} -+ void operator++() { (*this)++; } -+ operator const ElementT *() const { return _e; } -+ const ElementT *operator->() const { return _e; } -+ const ElementT &operator*() const { return *_e; } -+ private: -+ const ElementT *_e; -+ const_iterator() : _e(0) { } -+ const_iterator(const RouterT *r, int ei) { step(r, ei); } -+ void step(const RouterT *, int); -+ friend class RouterT; -+ friend class RouterT::iterator; -+}; -+ -+class RouterT::iterator : public RouterT::const_iterator { public: -+ operator ElementT *() const { return const_cast(_e); } -+ ElementT *operator->() const { return const_cast(_e); } -+ ElementT &operator*() const { return const_cast(*_e); } -+ private: -+ iterator() : const_iterator() { } -+ iterator(RouterT *r, int ei) : const_iterator(r, ei) { } -+ friend class RouterT; -+}; -+ -+class RouterT::const_type_iterator { public: -+ operator bool() const { return _e; } -+ int eindex() const { return _e->eindex(); } -+ inline void operator++(int); -+ inline void operator++(); -+ operator const ElementT *() const { return _e; } -+ const ElementT *operator->() const { return _e; } -+ const ElementT &operator*() const { return *_e; } -+ private: -+ const ElementT *_e; -+ const_type_iterator() : _e(0) { } -+ const_type_iterator(const RouterT *r, ElementClassT *t, int i) { step(r, t, i); } -+ void step(const RouterT *, ElementClassT *, int); -+ friend class RouterT; -+ friend class RouterT::type_iterator; -+}; -+ -+class RouterT::type_iterator : public RouterT::const_type_iterator { public: -+ operator ElementT *() const { return const_cast(_e); } -+ ElementT *operator->() const { return const_cast(_e); } -+ ElementT &operator*() const { return const_cast(*_e); } -+ private: -+ type_iterator() : const_type_iterator() { } -+ type_iterator(RouterT *r, ElementClassT *t, int ei) : const_type_iterator(r, t, ei) { } -+ friend class RouterT; -+}; -+ -+ -+inline RouterT::iterator -+RouterT::begin_elements() -+{ -+ return iterator(this, 0); -+} -+ -+inline RouterT::const_iterator -+RouterT::begin_elements() const -+{ -+ return const_iterator(this, 0); -+} -+ -+inline RouterT::type_iterator -+RouterT::begin_elements(ElementClassT *t) -+{ -+ return type_iterator(this, t, 0); -+} -+ -+inline RouterT::const_type_iterator -+RouterT::begin_elements(ElementClassT *t) const -+{ -+ return const_type_iterator(this, t, 0); -+} -+ -+inline RouterT::const_iterator -+RouterT::end_elements() const -+{ -+ return const_iterator(); -+} -+ -+inline RouterT::iterator -+RouterT::end_elements() -+{ -+ return iterator(); -+} -+ -+inline void -+RouterT::const_type_iterator::operator++(int) -+{ -+ if (_e) -+ step(_e->router(), _e->type(), _e->eindex() + 1); -+} -+ -+inline void -+RouterT::const_type_iterator::operator++() -+{ -+ (*this)++; -+} -+ -+inline const ElementT * -+RouterT::element(const String &s) const -+{ -+ int i = _element_name_map[s]; -+ return (i >= 0 ? _elements[i] : 0); -+} -+ -+inline ElementT * -+RouterT::element(const String &s) -+{ -+ int i = _element_name_map[s]; -+ return (i >= 0 ? _elements[i] : 0); -+} -+ -+inline String -+RouterT::ename(int e) const -+{ -+ return _elements[e]->name(); -+} -+ -+inline ElementClassT * -+RouterT::etype(int e) const -+{ -+ return _elements[e]->type(); -+} -+ -+inline String -+RouterT::etype_name(int e) const -+{ -+ return _elements[e]->type()->name(); -+} -+ -+inline ElementClassT * -+RouterT::declared_type(const String &name) const -+{ -+ return declared_type(name, 0x7FFFFFFF); -+} -+ -+inline bool -+RouterT::add_connection(ElementT *from_elt, int from_port, ElementT *to_elt, -+ int to_port, const String &landmark) -+{ -+ return add_connection(PortT(from_elt, from_port), PortT(to_elt, to_port), landmark); -+} -+ -+inline bool -+RouterT::has_connection(const PortT &hfrom, const PortT &hto) const -+{ -+ return find_connection(hfrom, hto) >= 0; -+} -+ -+inline bool -+RouterT::insert_before(ElementT *e, const PortT &h) -+{ -+ return insert_before(PortT(e, 0), h); -+} -+ -+inline bool -+RouterT::insert_after(ElementT *e, const PortT &h) -+{ -+ return insert_after(PortT(e, 0), h); -+} -+ -+inline bool -+RouterT::define(const String &name, const String &value, bool isformal) -+{ -+ assert(!isformal || _nformals == _scope.size()); -+ bool retval = _scope.define(name, value, false); -+ if (isformal) -+ _nformals = _scope.size(); -+ return retval; -+} -+ -+inline void -+RouterT::redefine(const VariableEnvironment &ve) -+{ -+ for (int i = 0; i < ve.size(); i++) -+ _scope.define(ve.name(i), ve.value(i), true); -+} -+ -+inline ArchiveElement & -+RouterT::archive(const String &name) -+{ -+ return _archive[_archive_map[name]]; -+} -+ -+inline const ArchiveElement & -+RouterT::archive(const String &name) const -+{ -+ return _archive[_archive_map[name]]; -+} -+ -+inline bool -+operator==(const RouterT::const_iterator &i, const RouterT::const_iterator &j) -+{ -+ return i.operator->() == j.operator->(); -+} -+ -+inline bool -+operator!=(const RouterT::const_iterator &i, const RouterT::const_iterator &j) -+{ -+ return i.operator->() != j.operator->(); -+} -+ -+inline bool -+operator==(const RouterT::const_type_iterator &i, const RouterT::const_type_iterator &j) -+{ -+ return i.operator->() == j.operator->(); -+} -+ -+inline bool -+operator!=(const RouterT::const_type_iterator &i, const RouterT::const_type_iterator &j) -+{ -+ return i.operator->() != j.operator->(); -+} -+ -+inline bool -+operator==(const RouterT::const_type_iterator &i, const RouterT::const_iterator &j) -+{ -+ return i.operator->() == j.operator->(); -+} -+ -+inline bool -+operator!=(const RouterT::const_type_iterator &i, const RouterT::const_iterator &j) -+{ -+ return i.operator->() != j.operator->(); -+} -+ -+#endif -diff -Nurb click-1.6.0/inst/include/clicktool/runparse.hh click-1.6.0-27/inst/include/clicktool/runparse.hh ---- click-1.6.0/inst/include/clicktool/runparse.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicktool/runparse.hh 2009-02-05 10:20:38.000000000 -0500 -@@ -0,0 +1,31 @@ -+// -*- c-basic-offset: 4 -*- -+#ifndef CLICK_RUNPARSE_HH -+#define CLICK_RUNPARSE_HH -+#include "routert.hh" -+#include -+ -+class RouterUnparserT { public: -+ -+ RouterUnparserT(ErrorHandler *); -+ -+ struct Pair { -+ ElementClassT *first; -+ ElementClassT *second; -+ Pair(ElementClassT *a, ElementClassT *b) : first(a), second(b) { } -+ }; -+ -+ private: -+ -+ HashMap _tuid_map; -+ Vector _types; -+ -+ enum { X_BAD = 0, X_UNK = 1, X_LT = 2, X_LEQ = 3, X_EQ = 4, X_GEQ = 5, X_GT = 6, X_NUM = 7 }; -+ static int relation_negater[X_NUM]; -+ static uint8_t relation_combiner[X_NUM][X_NUM]; -+ HashMap, int> _relation; -+ -+ ErrorHandler *_errh; -+ -+}; -+ -+#endif -diff -Nurb click-1.6.0/inst/include/clicktool/toolutils.hh click-1.6.0-27/inst/include/clicktool/toolutils.hh ---- click-1.6.0/inst/include/clicktool/toolutils.hh 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/include/clicktool/toolutils.hh 2009-02-05 10:20:38.000000000 -0500 -@@ -0,0 +1,18 @@ -+#ifndef CLICK_TOOLUTILS_HH -+#define CLICK_TOOLUTILS_HH -+#include -+class RouterT; -+ -+extern bool ignore_line_directives; -+int click_maybe_define(const char *arg, ErrorHandler *errh); -+RouterT *read_router_string(const String &text, const String &landmark, ErrorHandler *); -+RouterT *read_router_string(String text, const String &landmark, bool, RouterT *, ErrorHandler *); -+RouterT *read_router_file(const char *filename, ErrorHandler *); -+RouterT *read_router_file(const char *filename, bool empty_ok, ErrorHandler *); -+RouterT *read_router(const String &, bool is_expr, ErrorHandler *); -+void write_router_file(RouterT *, FILE *, ErrorHandler * = 0); -+int write_router_file(RouterT *, const char *, ErrorHandler * = 0); -+ -+String xml_quote(const String &); -+ -+#endif -Files click-1.6.0/inst/lib/click.ko and click-1.6.0-27/inst/lib/click.ko differ -Files click-1.6.0/inst/lib/libclick.a and click-1.6.0-27/inst/lib/libclick.a differ -Files click-1.6.0/inst/lib/libclicktool.a and click-1.6.0-27/inst/lib/libclicktool.a differ -Files click-1.6.0/inst/lib/proclikefs.ko and click-1.6.0-27/inst/lib/proclikefs.ko differ -Files click-1.6.0/inst/sbin/click-install and click-1.6.0-27/inst/sbin/click-install differ -Files click-1.6.0/inst/sbin/click-uninstall and click-1.6.0-27/inst/sbin/click-uninstall differ -diff -Nurb click-1.6.0/inst/share/click/config.mk click-1.6.0-27/inst/share/click/config.mk ---- click-1.6.0/inst/share/click/config.mk 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/click/config.mk 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,13 @@ -+clickprefix=/d/click/click-1.6.0-27/inst -+clickbindir=/d/click/click-1.6.0-27/inst/bin -+clicksbindir=/d/click/click-1.6.0-27/inst/sbin -+clicklibdir=/d/click/click-1.6.0-27/inst/lib -+clickincludedir=/d/click/click-1.6.0-27/inst/include -+clickdatadir=/d/click/click-1.6.0-27/inst/share/click -+clicklinuxdir=/d/kernels/linux-2.6.27.10-clickport -+clicksrcdir=/d/click/click-1.6.0-27/inst/share/click/src -+CLICK_HAVE_USERLEVEL_DRIVER=1 -+CLICK_HAVE_LINUXMODULE_DRIVER=1 -+CLICK_HAVE_BSDMODULE_DRIVER=0 -+CLICK_LINUXMODULE_2_6=1 -+CLICK_GMAKE=make -diff -Nurb click-1.6.0/inst/share/click/elementmap.xml click-1.6.0-27/inst/share/click/elementmap.xml ---- click-1.6.0/inst/share/click/elementmap.xml 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/click/elementmap.xml 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,219 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff -Nurb click-1.6.0/inst/share/click/mkinstalldirs click-1.6.0-27/inst/share/click/mkinstalldirs ---- click-1.6.0/inst/share/click/mkinstalldirs 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/click/mkinstalldirs 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,158 @@ -+#! /bin/sh -+# mkinstalldirs --- make directory hierarchy -+ -+scriptversion=2005-06-29.22 -+ -+# Original author: Noah Friedman -+# Created: 1993-05-16 -+# Public domain. -+# -+# This file is maintained in Automake, please report -+# bugs to or send patches to -+# . -+ -+errstatus=0 -+dirmode= -+ -+usage="\ -+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... -+ -+Create each directory DIR (with mode MODE, if specified), including all -+leading file name components. -+ -+Report bugs to ." -+ -+# process command line arguments -+while test $# -gt 0 ; do -+ case $1 in -+ -h | --help | --h*) # -h for help -+ echo "$usage" -+ exit $? -+ ;; -+ -m) # -m PERM arg -+ shift -+ test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } -+ dirmode=$1 -+ shift -+ ;; -+ --version) -+ echo "$0 $scriptversion" -+ exit $? -+ ;; -+ --) # stop option processing -+ shift -+ break -+ ;; -+ -*) # unknown option -+ echo "$usage" 1>&2 -+ exit 1 -+ ;; -+ *) # first non-opt arg -+ break -+ ;; -+ esac -+done -+ -+for file -+do -+ if test -d "$file"; then -+ shift -+ else -+ break -+ fi -+done -+ -+case $# in -+ 0) exit 0 ;; -+esac -+ -+# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and -+# mkdir -p a/c at the same time, both will detect that a is missing, -+# one will create a, then the other will try to create a and die with -+# a "File exists" error. This is a problem when calling mkinstalldirs -+# from a parallel make. We use --version in the probe to restrict -+# ourselves to GNU mkdir, which is thread-safe. -+case $dirmode in -+ '') -+ if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then -+ echo "mkdir -p -- $*" -+ exec mkdir -p -- "$@" -+ else -+ # On NextStep and OpenStep, the `mkdir' command does not -+ # recognize any option. It will interpret all options as -+ # directories to create, and then abort because `.' already -+ # exists. -+ test -d ./-p && rmdir ./-p -+ test -d ./--version && rmdir ./--version -+ fi -+ ;; -+ *) -+ if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && -+ test ! -d ./--version; then -+ echo "mkdir -m $dirmode -p -- $*" -+ exec mkdir -m "$dirmode" -p -- "$@" -+ else -+ # Clean up after NextStep and OpenStep mkdir. -+ for d in ./-m ./-p ./--version "./$dirmode"; -+ do -+ test -d $d && rmdir $d -+ done -+ fi -+ ;; -+esac -+ -+for file -+do -+ case $file in -+ /*) pathcomp=/ ;; -+ *) pathcomp= ;; -+ esac -+ oIFS=$IFS -+ IFS=/ -+ set fnord $file -+ shift -+ IFS=$oIFS -+ -+ for d -+ do -+ test "x$d" = x && continue -+ -+ pathcomp=$pathcomp$d -+ case $pathcomp in -+ -*) pathcomp=./$pathcomp ;; -+ esac -+ -+ if test ! -d "$pathcomp"; then -+ echo "mkdir $pathcomp" -+ -+ mkdir "$pathcomp" || lasterr=$? -+ -+ if test ! -d "$pathcomp"; then -+ errstatus=$lasterr -+ else -+ if test ! -z "$dirmode"; then -+ echo "chmod $dirmode $pathcomp" -+ lasterr= -+ chmod "$dirmode" "$pathcomp" || lasterr=$? -+ -+ if test ! -z "$lasterr"; then -+ errstatus=$lasterr -+ fi -+ fi -+ fi -+ fi -+ -+ pathcomp=$pathcomp/ -+ done -+done -+ -+exit $errstatus -+ -+# Local Variables: -+# mode: shell-script -+# sh-indentation: 2 -+# eval: (add-hook 'write-file-hooks 'time-stamp) -+# time-stamp-start: "scriptversion=" -+# time-stamp-format: "%:y-%02m-%02d.%02H" -+# time-stamp-end: "$" -+# End: -diff -Nurb click-1.6.0/inst/share/click/pkg-Makefile click-1.6.0-27/inst/share/click/pkg-Makefile ---- click-1.6.0/inst/share/click/pkg-Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/click/pkg-Makefile 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,112 @@ -+# pkg-Makefile -- build tools for Click -+# Eddie Kohler -+# -+# Copyright (c) 2006 Regents of the University of California -+# -+# Permission is hereby granted, free of charge, to any person obtaining a -+# copy of this software and associated documentation files (the "Software"), -+# to deal in the Software without restriction, subject to the conditions -+# listed in the Click LICENSE file. These conditions include: you must -+# preserve this copyright notice, and you cannot mention the copyright -+# holders in advertising related to the Software without their permission. -+# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+# notice is a summary of the Click LICENSE file; the license in that file is -+# legally binding. -+ -+VPATH ?= .:$(top_srcdir)/$(subdir):$(top_srcdir) -+ -+include $(clickdatadir)/pkg-config.mk -+ -+ifeq ($(CLICK_PACKAGE_MAKING),userlevel) -+include $(clickdatadir)/pkg-userlevel.mk -+endif -+ -+ifeq ($(CLICK_PACKAGE_MAKING),linuxmodule) -+include $(clickdatadir)/pkg-linuxmodule.mk -+endif -+ -+ifeq ($(CLICK_PACKAGE_MAKING),bsdmodule) -+include $(clickdatadir)/pkg-bsdmodule.mk -+endif -+ -+ifeq ($(CLICK_PACKAGE_MAKING),) -+ -+INSTALL ?= $(CLICKINSTALL) -+INSTALL_DATA ?= $(CLICKINSTALL) -m 644 -+mkinstalldirs ?= $(clickdatadir)/mkinstalldirs -+ -+CLICK_BUILDTOOL = $(clickbindir)/click-buildtool -+CLICK_ELEM2PACKAGE = $(CLICK_BUILDTOOL) elem2package $(ELEM2PACKAGE_INCLUDES) -+ -+# set TARGETS, etc. based on MAKE_UPACKAGE, MAKE_KPACKAGE, and MAKE_BPACKAGE -+ifeq ($(MAKE_UPACKAGE),1) -+TARGETS += $(package).uo -+DRIVERS += userlevel -+endif -+ifeq ($(MAKE_KPACKAGE),1) -+TARGETS += $(package).ko -+DRIVERS += linuxmodule -+endif -+ifeq ($(MAKE_BPACKAGE),1) -+TARGETS += $(package).bo -+DRIVERS += bsdmodule -+endif -+ -+all: $(TARGETS) -+ -+$(package).uo: Makefile always -+ $(MAKE) CLICK_PACKAGE_MAKING=userlevel $(package).uo -+ -+$(package).ko: Makefile always -+ $(MAKE) CLICK_PACKAGE_MAKING=linuxmodule $(package).ko -+ -+ifneq ($(wildcard $(srcdir)/Makefile.in),) -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status -+endif -+ -+ifneq ($(wildcard $(top_srcdir)/configure.ac),) -+$(top_builddir)/config.status: $(top_srcdir)/configure -+ cd $(top_builddir) && ./config.status --recheck -+$(top_srcdir)/configure: $(top_srcdir)/configure.ac -+ cd $(top_srcdir) && autoconf -+endif -+ -+elemlist: -+ for i in $(DRIVERS); do $(MAKE) CLICK_PACKAGE_MAKING=$$i elemlist; done -+ -+elementmap-$(package).xml: $(clickbindir)/click-mkelemmap always -+ r="$(DRIVERS) $(package)"; echo $(srcdir) | $(CLICK_BUILDTOOL) findelem -r "$$r" -P | $(clickbindir)/click-mkelemmap -r "$(package)" -t "$(DRIVERS)" -s `cd $(srcdir) && pwd` > elementmap-$(package).xml -+ -+install: install-obj install-man elementmap-$(package).xml always -+ $(mkinstalldirs) $(DESTDIR)$(clickdatadir) -+ $(INSTALL_DATA) elementmap-$(package).xml $(DESTDIR)$(clickdatadir)/elementmap-$(package).xml -+install-obj: $(TARGETS) always -+ $(mkinstalldirs) $(DESTDIR)$(libdir) -+ for i in $(TARGETS); do $(INSTALL_DATA) $$i $(DESTDIR)$(libdir)/$$i; done -+install-man: always elementmap-$(package).xml -+ $(mkinstalldirs) $(DESTDIR)$(mandir) -+ $(mkinstalldirs) $(DESTDIR)$(mandir)/mann -+ $(clickbindir)/click-elem2man -L -d $(DESTDIR)$(mandir)/mann -P $(package) -e $(clickdatadir)/elementmap.xml elementmap-$(package).xml -+ -+uninstall: uninstall-obj uninstall-man always -+ /bin/rm -f $(DESTDIR)$(clickdatadir)/elementmap-$(package).xml -+uninstall-obj: always -+ for i in $(TARGETS); do /bin/rm -f $(DESTDIR)$(libdir)/$$i; done -+uninstall-man: always elementmap-$(package).xml -+ $(clickbindir)/click-elem2man -L -d $(DESTDIR)$(mandir)/mann -P $(package) -e $(clickdatadir)/elementmap.xml -u elementmap-$(package).xml -+ -+clean: always -+ @for i in $(DRIVERS); do make CLICK_PACKAGE_MAKING=$$i clean; done -+ -rm -f elementmap-$(package).xml conftest.* -+distclean: clean -+ -rm -f Makefile config.h config.status config.cache config.log -+ -+always: -+ @: -+ -+.PHONY: all always clean distclean elemlist \ -+ install install-obj install-man uninstall uninstall-obj uninstall-man -+ -+endif -diff -Nurb click-1.6.0/inst/share/click/pkg-config.mk click-1.6.0-27/inst/share/click/pkg-config.mk ---- click-1.6.0/inst/share/click/pkg-config.mk 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/click/pkg-config.mk 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,43 @@ -+# pkg-config.mk -- build tools for Click -+# Eddie Kohler -+# -+# Copyright (c) 2006 Regents of the University of California -+# -+# Permission is hereby granted, free of charge, to any person obtaining a -+# copy of this software and associated documentation files (the "Software"), -+# to deal in the Software without restriction, subject to the conditions -+# listed in the Click LICENSE file. These conditions include: you must -+# preserve this copyright notice, and you cannot mention the copyright -+# holders in advertising related to the Software without their permission. -+# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+# notice is a summary of the Click LICENSE file; the license in that file is -+# legally binding. -+ -+CLICKCC = gcc -W -Wall -+CLICKCPP = gcc -W -Wall -E -+CLICKCXX = g++ -W -Wall -+CLICKCXXCPP = g++ -W -Wall -E -+ -+CLICKAR_CREATE = ar cru -+CLICKRANLIB = ranlib -+CLICKSTRIP = strip -+ -+CLICKKERNEL_CC = gcc -w -W -Wall -+CLICKKERNEL_CXX = g++ -w -W -Wall -fno-exceptions -fno-rtti -D__SMP__ -+ -+CLICKCPPFLAGS = -+CLICKCFLAGS = -g -O2 -+CLICKCFLAGS_NDEBUG = -O2 -+CLICKCXXFLAGS = -g -O2 -+CLICKCXXFLAGS_NDEBUG = -O2 -+CLICKDEPCFLAGS = -MD -+ -+CLICKDEFS = -DHAVE_CONFIG_H -+CLICKINCLUDES = -I$(clickincludedir) -I$(clicksrcdir) -+CLICKLDFLAGS = -+CLICKLDMODULEFLAGS = -shared -+ -+CLICKAUTOCONF = autoconf -+CLICKGMAKE = make -+CLICKINSTALL = /usr/bin/install -c -+ -diff -Nurb click-1.6.0/inst/share/click/pkg-linuxmodule-26.mk click-1.6.0-27/inst/share/click/pkg-linuxmodule-26.mk ---- click-1.6.0/inst/share/click/pkg-linuxmodule-26.mk 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/click/pkg-linuxmodule-26.mk 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,92 @@ -+# pkg-linuxmodule-26.mk -- build tools for Click -+# Eddie Kohler -+# -+# Copyright (c) 2006-2007 Regents of the University of California -+# -+# Permission is hereby granted, free of charge, to any person obtaining a -+# copy of this software and associated documentation files (the "Software"), -+# to deal in the Software without restriction, subject to the conditions -+# listed in the Click LICENSE file. These conditions include: you must -+# preserve this copyright notice, and you cannot mention the copyright -+# holders in advertising related to the Software without their permission. -+# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+# notice is a summary of the Click LICENSE file; the license in that file is -+# legally binding. -+ -+CLICKBUILD = linux26module -+ -+CLICKCPPFLAGS += -DCLICK_LINUXMODULE -+CLICKINCLUDES := -I$(clickincludedir) -I$(clicksrcdir) -I$(clicklinuxdir)/include -+ -+LINUXCFLAGS = $(shell echo "$(CPPFLAGS) $(CFLAGS)" | sed \ -+ -e s,-fno-unit-at-a-time,, -e s,-Wstrict-prototypes,, \ -+ -e s,-Wdeclaration-after-statement,, \ -+ -e s,-Wno-pointer-sign,, -e s,-fno-common,,) -+ -+CXXFLAGS ?= $(CLICKCXXFLAGS_NDEBUG) -+DEPCFLAGS ?= -Wp,-MD,$(depfile) -+ -+DEFS ?= $(CLICKDEFS) -+INCLUDES ?= $(CLICKINCLUDES) -+ -+CXXCOMPILE = $(CLICKKERNEL_CXX) $(LINUXCFLAGS) $(CLICKCPPFLAGS) \ -+ $(CLICKCFLAGS_NDEBUG) $(CXXFLAGS) $(PACKAGE_CXXFLAGS) \ -+ $(DEFS) $(INCLUDES) $(DEPCFLAGS) -+COMPILE = $(CLICKKERNEL_CC) $(LINUXCFLAGS) $(CLICKCPPFLAGS) \ -+ $(CLICKCFLAGS_NDEBUG) $(PACKAGE_CFLAGS) \ -+ $(DEFS) $(INCLUDES) $(DEPCFLAGS) -+ -+packagesrcdir ?= $(srcdir) -+PACKAGE_OBJS ?= kpackage.ko -+ -+CLICK_BUILDTOOL ?= $(clickbindir)/click-buildtool -+CLICK_ELEM2PACKAGE ?= $(CLICK_BUILDTOOL) elem2package $(ELEM2PACKAGE_INCLUDES) -+ -+quiet_cmd_cxxcompile = CXX $(quiet_modtag) $(subst $(obj)/,,$@) -+cmd_cxxcompile = $(CXXCOMPILE) -c -o $@ $< -+ -+quiet_cmd_ccompile = CC $(quiet_modtag) $(subst $(obj)/,,$@) -+cmd_ccompile = $(COMPILE) -c -o $@ $< -+ -+EXTRA_CFLAGS += $(CLICKCPPFLAGS) $(CLICKCFLAGS_NDEBUG) $(CLICKDEFS) $(CLICKINCLUDES) -+ -+ifneq ($(KBUILD_EXTMOD),) -+ifeq ($(srcdir),.) -+top_srcdir := $(src)/.. -+srcdir := $(src) -+else -+ifneq ($(patsubst /%,/,$(srcdir)),/) -+top_srcdir := $(obj)/$(top_srcdir) -+srcdir := $(obj)/$(srcdir) -+endif -+top_builddir := $(obj)/$(top_builddir) -+builddir := $(obj) -+endif -+ -+-include $(obj)/kelements.mk -+ -+$(package)-objs := $(ELEMENT_OBJS) $(PACKAGE_OBJS) kversion.ko -+endif -+ -+obj-m += $(package).o -+ -+$(obj)/kelements.conf: $(CLICK_BUILDTOOL) -+ echo $(packagesrcdir) | $(CLICK_BUILDTOOL) findelem -r linuxmodule -r $(package) -P $(CLICKFINDELEMFLAGS) > $(obj)/kelements.conf -+$(obj)/kelements.mk: $(obj)/kelements.conf $(CLICK_BUILDTOOL) -+ $(CLICK_BUILDTOOL) elem2make -t linuxmodule < $(obj)/kelements.conf > $(obj)/kelements.mk -+$(obj)/kpackage.ko: $(obj)/kpackage.cc -+ $(call if_changed_dep,cxxcompile) -+$(obj)/kpackage.cc: $(obj)/kelements.conf $(CLICK_BUILDTOOL) -+ $(CLICK_ELEM2PACKAGE) $(package) < $(obj)/kelements.conf > $(obj)/kpackage.cc -+ @rm -f $(obj)/kpackage.kd -+$(obj)/kversion.ko: $(obj)/kversion.c -+ $(call if_changed_dep,ccompile) -+$(obj)/kversion.c: $(CLICK_BUILDTOOL) -+ $(CLICK_BUILDTOOL) kversion $(KVERSIONFLAGS) > $(obj)/kversion.c -+ -+DEPFILES := $(wildcard *.kd) -+ifneq ($(DEPFILES),) -+include $(DEPFILES) -+endif -+ -+.PHONY: clean elemlist -diff -Nurb click-1.6.0/inst/share/click/pkg-linuxmodule.mk click-1.6.0-27/inst/share/click/pkg-linuxmodule.mk ---- click-1.6.0/inst/share/click/pkg-linuxmodule.mk 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/click/pkg-linuxmodule.mk 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,115 @@ -+# pkg-linuxmodule.mk -- build tools for Click -+# Eddie Kohler -+# -+# Copyright (c) 2006 Regents of the University of California -+# -+# Permission is hereby granted, free of charge, to any person obtaining a -+# copy of this software and associated documentation files (the "Software"), -+# to deal in the Software without restriction, subject to the conditions -+# listed in the Click LICENSE file. These conditions include: you must -+# preserve this copyright notice, and you cannot mention the copyright -+# holders in advertising related to the Software without their permission. -+# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+# notice is a summary of the Click LICENSE file; the license in that file is -+# legally binding. -+ -+CLICKBUILD = linuxmodule -+ -+CC ?= $(CLICKKERNEL_CC) -+CPP ?= $(CLICKCPP) -+CXX ?= $(CLICKKERNEL_CXX) -+CXXCPP ?= $(CLICKCXXCPP) -+AR_CREATE ?= $(CLICKAR_CREATE) -+RANLIB ?= $(CLICKRANLIB) -+STRIP ?= $(CLICKSTRIP) -+ -+CPPFLAGS ?= $(CLICKCPPFLAGS) -DCLICK_LINUXMODULE -+CFLAGS ?= $(CLICKCFLAGS_NDEBUG) -+CXXFLAGS ?= $(CLICKCXXFLAGS_NDEBUG) -+DEPCFLAGS ?= $(CLICKDEPCFLAGS) -+ -+DEFS ?= $(CLICKDEFS) -+INCLUDES ?= -I$(clickincludedir) -I$(clicksrcdir) -I$(clicklinuxdir)/include -+LDFLAGS ?= $(CLICKLDFLAGS) -+ -+packagesrcdir ?= $(srcdir) -+PACKAGE_OBJS ?= kpackage.ko -+ -+CLICK_BUILDTOOL ?= $(clickbindir)/click-buildtool -+CLICK_ELEM2PACKAGE ?= $(CLICK_BUILDTOOL) elem2package $(ELEM2PACKAGE_INCLUDES) -+ -+ifneq ($(CLICK_LINUXMODULE_2_6),1) -+ -+CXXCOMPILE = $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(PACKAGE_CXXFLAGS) $(DEFS) $(INCLUDES) $(DEPCFLAGS) -+CXXLD = $(CXX) -+CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ -+COMPILE = $(CC) $(CPPFLAGS) $(CFLAGS) $(PACKAGE_CFLAGS) $(DEFS) $(INCLUDES) $(DEPCFLAGS) -+CCLD = $(CC) -+LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@ -+FIXDEP = @-sed 's/\.o:/\.ko:/' < $*.d > $*.kd; /bin/rm -f $*.d -+ -+ifeq ($(V),1) -+ccompile = $(COMPILE) $(1) -+cxxcompile = $(CXXCOMPILE) $(1) -+else -+ccompile = @/bin/echo ' ' $(2) $< && $(COMPILE) $(1) -+cxxcompile = @/bin/echo ' ' $(2) $< && $(CXXCOMPILE) $(1) -+endif -+ -+.SUFFIXES: -+.SUFFIXES: .c .cc .ko .kii -+ -+.c.ko: -+ $(call ccompile,-c $< -o $@,CC) -+ $(FIXDEP) -+.cc.ko: -+ $(call cxxcompile,-c $< -o $@,CXX) -+ $(FIXDEP) -+.cc.kii: -+ $(call cxxcompile,-E $< > $@,CXXCPP) -+ -+ifneq ($(MAKECMDGOALS),clean) -+-include kelements.mk -+endif -+ -+OBJS = $(ELEMENT_OBJS) $(PACKAGE_OBJS) kversion.ko -+ -+endif -+ -+ifeq ($(CLICK_LINUXMODULE_2_6),1) -+# Jump through hoops to avoid missing symbol warnings -+$(package).ko: Makefile Kbuild always -+ { ( $(MAKE) -C $(clicklinuxdir) M=$(shell pwd) CLICK_PACKAGE_MAKING=linuxmodule-26 modules 2>&1 1>&3; echo $$? > .$(package).ko.status ) | grep -v '^\*\*\* Warning:.*undefined' 1>&2; } 3>&1; v=`cat .$(package).ko.status`; rm .$(package).ko.status; exit $$v -+Kbuild: $(CLICK_BUILDTOOL) -+ echo 'include $$(obj)/Makefile' > Kbuild -+ $(CLICK_BUILDTOOL) kbuild >> Kbuild -+else -+$(package).ko: $(clickdatadir)/pkg-linuxmodule.mk $(OBJS) -+ $(LD) -r -o $(package).ko $(OBJS) -+ $(STRIP) -g $(package).ko -+endif -+ -+elemlist kelements.conf: $(CLICK_BUILDTOOL) -+ echo $(packagesrcdir) | $(CLICK_BUILDTOOL) findelem -r linuxmodule -r $(package) -P $(CLICKFINDELEMFLAGS) > kelements.conf -+kelements.mk: kelements.conf $(CLICK_BUILDTOOL) -+ $(CLICK_BUILDTOOL) elem2make -t linuxmodule < kelements.conf > kelements.mk -+kpackage.cc: kelements.conf $(CLICK_BUILDTOOL) -+ $(CLICK_ELEM2PACKAGE) $(package) < kelements.conf > kpackage.cc -+ @rm -f kpackage.kd -+kversion.c: $(CLICK_BUILDTOOL) -+ $(CLICK_BUILDTOOL) kversion $(KVERSIONFLAGS) > kversion.c -+ -+DEPFILES := $(wildcard *.kd) -+ifneq ($(DEPFILES),) -+include $(DEPFILES) -+endif -+ -+always: -+ @: -+clean: -+ -rm -f $(package).ko .$(package).ko.status -+ -rm -f *.kd *.ko kelements.conf kelements.mk kpackage.cc kversion.c Kbuild -+ -rm -f .*.o.cmd .*.ko.cmd $(package).mod.c $(package).mod.o $(package).o -+ -rm -rf .tmp_versions -+ -+.PHONY: clean elemlist always -diff -Nurb click-1.6.0/inst/share/click/pkg-userlevel.mk click-1.6.0-27/inst/share/click/pkg-userlevel.mk ---- click-1.6.0/inst/share/click/pkg-userlevel.mk 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/click/pkg-userlevel.mk 2009-02-05 10:20:41.000000000 -0500 -@@ -0,0 +1,96 @@ -+# pkg-userlevel.mk -- build tools for Click -+# Eddie Kohler -+# -+# Copyright (c) 2006-2007 Regents of the University of California -+# -+# Permission is hereby granted, free of charge, to any person obtaining a -+# copy of this software and associated documentation files (the "Software"), -+# to deal in the Software without restriction, subject to the conditions -+# listed in the Click LICENSE file. These conditions include: you must -+# preserve this copyright notice, and you cannot mention the copyright -+# holders in advertising related to the Software without their permission. -+# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+# notice is a summary of the Click LICENSE file; the license in that file is -+# legally binding. -+ -+CLICKBUILD = userlevel -+ -+CC ?= $(CLICKCC) -+CPP ?= $(CLICKCPP) -+CXX ?= $(CLICKCXX) -+CXXCPP ?= $(CLICKCXXCPP) -+AR_CREATE ?= $(CLICKAR_CREATE) -+RANLIB ?= $(CLICKRANLIB) -+STRIP ?= $(CLICKSTRIP) -+ -+CPPFLAGS ?= $(CLICKCPPFLAGS) -DCLICK_USERLEVEL -+CFLAGS ?= $(CLICKCFLAGS) -fPIC -+CXXFLAGS ?= $(CLICKCXXFLAGS) -fPIC -+DEPCFLAGS ?= $(CLICKDEPCFLAGS) -+ -+DEFS ?= $(CLICKDEFS) -+INCLUDES ?= $(CLICKINCLUDES) -+LDFLAGS ?= $(CLICKLDMODULEFLAGS) -+ -+packagesrcdir ?= $(srcdir) -+PACKAGE_OBJS ?= upackage.uo -+ -+CLICK_BUILDTOOL ?= $(clickbindir)/click-buildtool -+CLICK_ELEM2PACKAGE ?= $(CLICK_BUILDTOOL) elem2package $(ELEM2PACKAGE_INCLUDES) -+STRIP_UPACKAGE ?= true -+ -+CXXCOMPILE = $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(PACKAGE_CXXFLAGS) $(DEFS) $(INCLUDES) $(DEPCFLAGS) -+CXXLD = $(CXX) -+CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ -+COMPILE = $(CC) $(CPPFLAGS) $(CFLAGS) $(PACKAGE_CFLAGS) $(DEFS) $(INCLUDES) $(DEPCFLAGS) -+CCLD = $(CC) -+LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@ -+FIXDEP = @-sed 's/\.o:/\.uo:/' < $*.d > $*.ud; /bin/rm -f $*.d -+ -+ifeq ($(V),1) -+ccompile = $(COMPILE) $(1) -+cxxcompile = $(CXXCOMPILE) $(1) -+else -+ccompile = @/bin/echo ' ' $(2) $< && $(COMPILE) $(1) -+cxxcompile = @/bin/echo ' ' $(2) $< && $(CXXCOMPILE) $(1) -+endif -+ -+.SUFFIXES: -+.SUFFIXES: .c .cc .uo .uii -+ -+.c.uo: -+ $(call ccompile,-c $< -o $@,CC) -+ $(FIXDEP) -+.cc.uo: -+ $(call cxxcompile,-c $< -o $@,CXX) -+ $(FIXDEP) -+.cc.uii: -+ $(call cxxcompile,-E $< > $@,CXXCPP) -+ -+ifneq ($(MAKECMDGOALS),clean) -+-include uelements.mk -+endif -+ -+OBJS = $(ELEMENT_OBJS) $(PACKAGE_OBJS) -+ -+$(package).uo: $(clickdatadir)/pkg-userlevel.mk $(OBJS) -+ $(CXXLINK) -o $(package).uo $(OBJS) $(ELEMENT_LIBS) -+ $(STRIP_UPACKAGE) $(package).uo -+ -+elemlist uelements.conf: $(CLICK_BUILDTOOL) -+ echo $(packagesrcdir) | $(CLICK_BUILDTOOL) findelem -r userlevel -r $(package) -P $(CLICKFINDELEMFLAGS) > uelements.conf -+uelements.mk: uelements.conf $(CLICK_BUILDTOOL) -+ $(CLICK_BUILDTOOL) elem2make -t userlevel < uelements.conf > uelements.mk -+upackage.cc: uelements.conf $(CLICK_BUILDTOOL) -+ $(CLICK_ELEM2PACKAGE) $(package) < uelements.conf > upackage.cc -+ @rm -f upackage.ud -+ -+DEPFILES := $(wildcard *.ud) -+ifneq ($(DEPFILES),) -+include $(DEPFILES) -+endif -+ -+clean: -+ -rm -f *.ud *.uo uelements.conf uelements.mk upackage.cc $(package).uo -+ -+.PHONY: clean elemlist -diff -Nurb click-1.6.0/inst/share/click/srcdir click-1.6.0-27/inst/share/click/srcdir ---- click-1.6.0/inst/share/click/srcdir 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/click/srcdir 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1 @@ -+/d/click/click-1.6.0-27 -diff -Nurb click-1.6.0/inst/share/info/click.info click-1.6.0-27/inst/share/info/click.info ---- click-1.6.0/inst/share/info/click.info 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/info/click.info 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,2656 @@ -+This is click.info, produced by makeinfo version 4.8 from -+../../doc/click.texi. -+ -+INFO-DIR-SECTION Click modular router -+START-INFO-DIR-ENTRY -+* Click: (click). The Click modular router programming manual. -+END-INFO-DIR-ENTRY -+ -+ -+File: click.info, Node: Top, Next: Overview, Prev: (dir), Up: (dir) -+ -+Click -+***** -+ -+This document describes the Click modular router's programming -+interface. Read this if you're interested in writing new elements for -+Click. You shouldn't need to read it if you are just building routers -+that use existing elements. -+ -+ Most of Click's programming interface documentation is now stored in -+the source code as structured comments. The formatted documentation is -+on the Web: -+ -+* Menu: -+ -+* Overview:: -+* Helper Classes:: -+* Packets:: -+* Tasks:: -+* Timers:: -+* Notification:: -+* Coding Standards:: -+* Index:: Index. -+ -+ --- The Detailed Node Listing --- -+ -+Overview -+ -+* Packet Transfer:: -+ -+Helper Classes -+ -+* ErrorHandler:: -+ -+ErrorHandler -+ -+* ErrorHandler Initialization:: -+* Reporting Errors:: -+* Error Format Strings:: -+* Counting Errors:: -+* Basic ErrorHandlers:: -+* Error Veneers:: -+* Writing ErrorHandlers:: -+ -+Packets -+ -+* Packet Structure and Contents:: -+* Packet Creation:: -+* Packets and sk_buffs:: -+* Packet Sharing:: -+* Packet Buffer Manipulation:: -+* Annotations:: -+* Packet Out-of-Memory:: -+* Handlers:: -+ -+Annotations -+ -+* Header Annotations:: -+* User Annotations:: -+* Specific User Annotations:: -+* Other Annotations:: -+* Annotations In General:: -+ -+Other Annotations -+ -+* Destination Address Annotation:: -+* Timestamp Annotation:: -+* Device Annotation:: -+* Packet Type Annotation:: -+* Performance Counter Annotation:: -+ -+Handlers -+ -+* Read and Write Handler Overview:: -+* Adding Handlers:: -+* Default Handlers:: -+* Accessing Handlers Internally:: -+* LLRPC Overview:: -+ -+Accessing Handlers Internally -+ -+* Handler Objects:: -+* Handlers By Name or Index:: -+ -+Tasks -+ -+* Task Initialization:: -+* Scheduling Tasks:: -+* Tickets:: -+* Task Thread Choice:: -+* Task Status:: -+* Task Handlers:: -+* Task Cleanup:: -+ -+Timers -+ -+* Timer Initialization:: -+* Scheduling Timers:: -+* Timer Status Methods:: -+* Timer Cleanup:: -+ -+Coding Standards -+ -+* Upper and lower case names:: -+* Common name patterns:: -+ -+ -+File: click.info, Node: Overview, Next: Helper Classes, Prev: Top, Up: Top -+ -+1 Overview -+********** -+ -+* Menu: -+ -+* Packet Transfer:: -+ -+ -+File: click.info, Node: Packet Transfer, Prev: Overview, Up: Overview -+ -+1.1 Packet Transfer -+=================== -+ -+ -+File: click.info, Node: Helper Classes, Next: Packets, Prev: Overview, Up: Top -+ -+2 Helper Classes -+**************** -+ -+* Menu: -+ -+* ErrorHandler:: -+ -+ -+File: click.info, Node: ErrorHandler, Prev: Helper Classes, Up: Helper Classes -+ -+2.1 ErrorHandler -+================ -+ -+All Click error messages are passed to an instance of the -+`ErrorHandler' class. `ErrorHandler' separates the generation of error -+messages from the particular way those messages should be printed. It -+also makes it easy to automatically decorate errors with context -+information. -+ -+ Most Click users must know how to report errors to an -+`ErrorHandler', and how `ErrorHandler's count the messages they -+receive. This section also describes how to decorate error messages -+with error veneers, and how to write new `ErrorHandler's. -+ -+ `ErrorHandler' and its important subclasses are defined in -+`'. -+ -+* Menu: -+ -+* ErrorHandler Initialization:: -+* Reporting Errors:: -+* Error Format Strings:: -+* Counting Errors:: -+* Basic ErrorHandlers:: -+* Error Veneers:: -+* Writing ErrorHandlers:: -+ -+ -+File: click.info, Node: ErrorHandler Initialization, Next: Reporting Errors, Prev: ErrorHandler, Up: ErrorHandler -+ -+2.1.1 Class Initialization -+-------------------------- -+ -+The `ErrorHandler' class maintains some global state that must be -+initialized by calling `static_initialize' at the beginning of the -+program, and may be freed by calling `static_cleanup' when execution is -+complete. -+ -+ -- Static Method on ErrorHandler: void static_initialize (ErrorHandler -+ *DEFAULT_ERRH) -+ Call this function exactly once, at the beginning of the program, -+ before any error messages are reported to any `ErrorHandler'. It -+ is OK to create arbitrary `ErrorHandler' objects before calling -+ this method, however. The DEFAULT_ERRH argument becomes the default -+ `ErrorHandler'; see *Note Basic ErrorHandlers::. -+ -+ -- Static Method on ErrorHandler: void static_cleanup () -+ Call this function exactly once, just before the program exits. -+ Destroys the default and silent `ErrorHandler's and cleans up other -+ `ErrorHandler'-related memory. It is an error to call any -+ `ErrorHandler' method after calling `static_cleanup'. -+ -+ -+File: click.info, Node: Reporting Errors, Next: Error Format Strings, Prev: ErrorHandler Initialization, Up: ErrorHandler -+ -+2.1.2 Reporting Errors -+---------------------- -+ -+`ErrorHandler''s basic error reporting methods take a format string, -+which may use `printf'-like `%' escape sequences, and additional -+arguments as required by the format string. *Note Error Format -+Strings::, for more details on the format string. The five methods -+differ in the seriousness of the error they report. -+ -+ -- Method on ErrorHandler: void debug (const char *FORMAT, ...) -+ -- Method on ErrorHandler: void message (const char *FORMAT, ...) -+ -- Method on ErrorHandler: int warning (const char *FORMAT, ...) -+ -- Method on ErrorHandler: int error (const char *FORMAT, ...) -+ -- Method on ErrorHandler: int fatal (const char *FORMAT, ...) -+ Report the error described by FORMAT and any additional arguments. -+ The methods are listed by increasing seriousness. Use `debug' for -+ debugging messages that should not be printed in a production -+ environment; `message' for explanatory messages that do not -+ indicate errors; `warning' for warnings (this function prepends the -+ string `warning: ' to every line of the error message); `error' -+ for errors; and `fatal' for errors so serious that they should -+ halt the execution of the program. The three functions that -+ indicate errors, `warning', `error', and `fatal', always return -+ `-EINVAL'. In some environments, `fatal' will actually exit the -+ program with exit code 1. -+ -+ Each of these methods has an analogue that additionally takes a -+"landmark": a string representing where the error took place. A typical -+landmark contains a file name and line number, separated by a -+colon--`foo.click:31', for example. -+ -+ -- Method on ErrorHandler: void ldebug (const String &LANDMARK, const -+ char *FORMAT, ...) -+ -- Method on ErrorHandler: void lmessage (const String &LANDMARK, -+ const char *FORMAT, ...) -+ -- Method on ErrorHandler: int lwarning (const String &LANDMARK, const -+ char *FORMAT, ...) -+ -- Method on ErrorHandler: int lerror (const String &LANDMARK, const -+ char *FORMAT, ...) -+ -- Method on ErrorHandler: int lfatal (const String &LANDMARK, const -+ char *FORMAT, ...) -+ Report the error described by FORMAT and any additional arguments. -+ The error took place at LANDMARK. Most `ErrorHandler's will simply -+ prepend `LANDMARK: ' to each line of the error message. -+ -+ These methods are all implemented as wrappers around the `verror' -+function. This function takes a landmark, a format string, a `va_list' -+packaging up any additional arguments, and a "seriousness value", which -+encodes how serious the error was. The `Seriousness' enumerated type, -+which is defined in the `ErrorHandler' class, represents seriousness -+values. There are five constants, corresponding to the five -+error-reporting methods: -+ -+`ERR_DEBUG' -+ Corresponds to `debug' and `ldebug'. -+ -+`ERR_MESSAGE' -+ Corresponds to `message' and `lmessage'. -+ -+`ERR_WARNING' -+ Corresponds to `warning' and `lwarning'. -+ -+`ERR_ERROR' -+ Corresponds to `error' and `lerror'. -+ -+`ERR_FATAL' -+ Corresponds to `fatal' and `lfatal'. -+ -+ -- Method on ErrorHandler: int verror (Seriousness SERIOUSNESS, const -+ String &LANDMARK, const char *FORMAT, va_list VAL) -+ Report the error described by FORMAT and VAL. The error took place -+ at LANDMARK, if LANDMARK is nonempty. The SERIOUSNESS value is one -+ of the five constants described above. Always returns `-EINVAL'. -+ -+ -+File: click.info, Node: Error Format Strings, Next: Counting Errors, Prev: Reporting Errors, Up: ErrorHandler -+ -+2.1.3 Format Strings -+-------------------- -+ -+`ErrorHandler''s format strings closely follow C's standard `printf' -+format strings. Most characters in the format string are printed -+verbatim. The `%' character introduces a "conversion", which prints -+data read from the remaining arguments. The format string may contain -+newlines `\n', but it need not end with a newline; `ErrorHandler' will -+add a final newline if one does not exist. -+ -+ Each conversion, or formatting escape, follows this pattern: -+ -+ * First, the `%' character introduces each conversion. -+ -+ * Next comes zero or more "flag characters"; -+ -+ * then an optional "field width"; -+ -+ * then an optional "precision"; -+ -+ * then an optional "length modifier"; -+ -+ * and finally, the mandatory "conversion specifier", which is -+ usually a single character, but may be a name enclosed in braces. -+ -+We discuss each of these is turn. -+ -+ Any conversion may be modified by zero or more of these flag -+characters. -+ -+`#' -+ The value should be converted to an "alternate form". For `o' -+ conversions, the first character of the output string is made `0', -+ by prepending a `0' if there was not one already. For `x' and `X' -+ conversions, nonzero values have `0x' or `0X' prepended, -+ respectively. -+ -+`0' -+ The value should be zero padded. For `d', `i', `u', `o', `x', and -+ `X' conversions, the converted value is padded on the left with -+ `0' characters rather than spaces. -+ -+`-' -+ The value should be left-justified within the field width. -+ -+` ' (a space) -+ Leave a blank before a nonnegative number produced by a signed -+ conversion. -+ -+`+' -+ Print a `+' character before a nonnegative number produced by a -+ signed conversion. -+ -+ -+ The optional "field width", a decimal digit string, forces the -+conversion to use a minimum number of characters. The result of a -+conversion is padded on the left with space characters to reach the -+minimum field width, unless one of the `0' or `-' flags was supplied. -+ -+ The optional "precision" is a decimal digit string preceded by a -+period `.'. For `d', `i', `u', `o', `x', and `X' conversions, the -+precision specifies the minimum number of digits that must appear; -+results with fewer digits are padded on the left with `0' characters. -+For the `s' conversion, the precision specifies the maximum number of -+characters that can be printed. For `e', `f', `E', and `F' conversions, -+it specifies the number of digits to appear after the radix character; -+for `g' and `G' conversions, the number of significant digits. -+ -+ If either the field width or precision is specified as a star `*', -+`ErrorHandler' reads the next argument as an integer and uses that -+instead. -+ -+ Length modifiers affect the argument type read by the conversion. -+There are three modifiers: -+ -+`h' -+ The next argument is a `short' or `unsigned short'. Affects the -+ `d', `i', `u', `o', `x', and `X' conversions. -+ -+`l' -+ The next argument is a `long' or `unsigned long'. Affects the `d', -+ `i', `u', `o', `x', and `X' conversions. -+ -+`ll' -+ The next argument is a `long long' or `unsigned long long'. -+ Affects the `d', `i', `u', `o', `x', and `X' conversions. -+ -+ Finally, these are the conversions themselves. -+ -+`s' -+ Print the `const char *' argument, treated as a C string. -+ -+`c' -+ The `int' argument is treated as a character constant. Printable -+ ASCII characters (values between 32 and 126) are printed verbatim. -+ Characters `\n', `\t', `\r', and `\0' use those C escape -+ representations. Other characters use the representation `\%03o'. -+ -+`d', `i' -+ The argument is an `int'; print its decimal representation. -+ -+`u' -+ The argument is an `unsigned int'; print its decimal -+ representation. -+ -+`o' -+ The argument is an `unsigned int'; print its octal representation. -+ -+`x', `X' -+ The argument is an `unsigned int'; print its hexadecimal -+ representation. The `%x' conversion uses lowercase letters; `%X' -+ uses uppercase letters. -+ -+`e', `f', `g', `E', `F', `G' -+ The argument is a `double'; print its representation as if by -+ `printf' (user-level drivers only). -+ -+`p' -+ The `void *' argument is cast to `unsigned long' and printed as by -+ `%#lx'. -+ -+`%' -+ Print a literal `%' character. -+ -+`{element}' -+ The argument is an `Element *'. Print that element's declaration. -+ -+ -+ Note that `ErrorHandler' does not support the `n' conversion. -+ -+ -+File: click.info, Node: Counting Errors, Next: Basic ErrorHandlers, Prev: Error Format Strings, Up: ErrorHandler -+ -+2.1.4 Counting Errors -+--------------------- -+ -+`ErrorHandler' objects count the number of errors and warnings they -+have received and make those values available to the user. -+ -+ -- Method on ErrorHandler: virtual int nwarnings () const -+ -- Method on ErrorHandler: virtual int nerrors () const -+ Returns the number of warnings or errors received by this -+ `ErrorHandler' so far. -+ -+ -- Method on ErrorHandler: virtual void reset_counts () -+ Resets the `nwarnings' and `nerrors' counters to zero. -+ -+ These counters are typically used to determine whether an error has -+taken place in some complex piece of code. For example: -+ -+ int before_nerrors = errh->nerrors(); -+ // ... complex code that may report errors to `errh' ... -+ if (errh->nerrors() != before_nerrors) { -+ // an error has taken place -+ } -+ -+ -+File: click.info, Node: Basic ErrorHandlers, Next: Error Veneers, Prev: Counting Errors, Up: ErrorHandler -+ -+2.1.5 Basic `ErrorHandler's -+--------------------------- -+ -+Every Click error message eventually reaches some "basic" -+`ErrorHandler', which generally prints the messages it receives. The -+user-level driver's basic `ErrorHandler' prints error messages to -+standard error, while in the Linux kernel module, the basic -+`ErrorHandler' logs messages to the syslog and stores them for access -+via `/click/errors'. -+ -+ Two basic `ErrorHandlers' are always accessible via static methods: -+the "default `ErrorHandler'", returned by `default_handler' and set by -+`set_default_handler'; and the "silent `ErrorHandler'", returned by -+`silent_handler', which ignores any error messages it receives. -+ -+ -- Static Method on ErrorHandler: ErrorHandler * default_handler () -+ Returns the default `ErrorHandler'. -+ -+ -- Static Method on ErrorHandler: void set_default_handler -+ (ErrorHandler *errh) -+ Sets the default `ErrorHandler' to ERRH. The `static_initialize' -+ method also sets the default `ErrorHandler'; see *Note -+ ErrorHandler Initialization::. -+ -+ -- Static Method on ErrorHandler: ErrorHandler * silent_handler () -+ Returns the silent `ErrorHandler'. This handler ignores any error -+ messages it receives. It maintains correct `nwarnings' and -+ `nerrors' counts, however. -+ -+ `FileErrorHandler', a kind of basic `ErrorHandler', is available in -+any user-level program. It prints every message it receives to some -+file, usually standard error. It can also prepend an optional context -+string to every line of every error message. -+ -+ -- Constructor on FileErrorHandler: FileErrorHandler (FILE *F, -+ const String &PREFIX = "") -+ Constructs a `FileErrorHandler' that prints error messages to file -+ F. If PREFIX is nonempty, then every line of every error message -+ is prepended by PREFIX. -+ -+ -+File: click.info, Node: Error Veneers, Next: Writing ErrorHandlers, Prev: Basic ErrorHandlers, Up: ErrorHandler -+ -+2.1.6 Error Veneers -+------------------- -+ -+"Error veneers" wrap around basic `ErrorHandler' objects and change how -+error text is generated. An error veneer generally changes each error -+message's text in some way, perhaps by adding a context message or some -+indentation. It then passes the altered text to the basic -+`ErrorHandler' for printing. Error veneers can be easily nested. -+ -+ The first argument to each error veneer constructor is a pointer to -+another `ErrorHandler' object. The veneer will pass altered error text -+to this handler, the "base handler", for further processing and -+printing. It also delegates `nwarnings()' and `nerrors()' calls to the -+base handler. -+ -+ Click comes with three error veneers: one for adding context, one for -+prepending text to every line, and one for supplying missing landmarks. -+It is easy to write others; see *Note Writing ErrorHandlers::, for -+details. -+ -+ -- Constructor on ContextErrorHandler: ContextErrorHandler -+ (ErrorHandler *BASE_ERRH, const String &CONTEXT, -+ const String &INDENT = " ") -+ Constructs a `ContextErrorHandler' with BASE_ERRH as base. -+ -+ The first time this handler receives an error message, it will -+ precede the message with the CONTEXT string--generally more -+ detailed information about where the error has occurred. Every -+ line in every received error message is prepended with INDENT, two -+ spaces by default, to set off the message from its context. -+ -+ -- Constructor on PrefixErrorHandler: PrefixErrorHandler -+ (ErrorHandler *BASE_ERRH, const String &PREFIX) -+ Constructs a `PrefixErrorHandler' with BASE_ERRH as base. -+ -+ This handler precedes every line of every error message with -+ PREFIX. -+ -+ -- Constructor on LandmarkErrorHandler: LandmarkErrorHandler -+ (ErrorHandler *BASE_ERRH, const String &LANDMARK) -+ Constructs a `LandmarkErrorHandler' with BASE_ERRH as base. -+ -+ This handler supplies LANDMARK in place of any blank landmark -+ passed to it. This will cause the base handler to include LANDMARK -+ in its error message. -+ -+ To demonstrate these veneers in practice, we'll use the following -+function, which prints two error messages: -+ -+ void f(ErrorHandler *errh) { -+ errh->error("First line\nSecond line"); -+ errh->lwarning("here", "Third line"); -+ } -+ -+ A simple `FileErrorHandler' shows the base case. -+ -+ FileErrorHandler errh1(stderr); -+ f(&errh1); -+ -| First line -+ -| Second line -+ -| here: warning: Third line -+ -+ The simplest error veneer, `PrefixErrorHandler', just prepends text -+to every line. -+ -+ PrefixErrorHandler errh2(&errh1, "prefix - "); -+ f(&errh2); -+ -| prefix - First line -+ -| prefix - Second line -+ -| prefix - here: warning: Third line -+ -+ `ContextErrorHandler' supplies a line of context before the first -+error message, and indents all messages except the context. -+ -+ ContextErrorHandler errh3(&errh1, "This was called from ...", "** "); -+ f(&errh3); -+ -| This was called from ... -+ -| ** First line -+ -| ** Second line -+ -| here: ** warning: Third line -+ -+Note that the indentation `** ' is printed after the landmark. This -+often looks better than the alternative. -+ -+ Of course, an error veneer can take another error veneer as its "base -+handler", leading to cumulative effects. -+ -+ ContextErrorHandler errh4(&errh2, "This was called from ...", "** "); -+ f(&errh4); -+ -| prefix - This was called from ... -+ -| prefix - ** First line -+ -| prefix - ** Second line -+ -| prefix - here: ** warning: Third line -+ -+ -+File: click.info, Node: Writing ErrorHandlers, Prev: Error Veneers, Up: ErrorHandler -+ -+2.1.7 Writing `ErrorHandler's -+----------------------------- -+ -+`ErrorHandler' constructs an error message using three virtual -+functions. The first, `make_text', parses a format string and argument -+list into a single `String'. This is passed to the second function, -+`decorate_text', which may transform the string. The final function, -+`handle_text', prints the resulting error message. This structure -+makes `ErrorHandler' easy to extend. To write a new basic -+`ErrorHandler', you will need to override just `handle_text' and the -+counting functions (`nwarnings', `nerrors', and `reset_counts'). The -+`ErrorVeneer' helper class, described below, lets you override just -+`decorate_text' when writing an error veneer. -+ -+ -- Method on ErrorHandler: virtual String make_text (Seriousness S, -+ const char *FORMAT, va_list VAL) -+ Parses the format string FORMAT with arguments from VAL, returning -+ the results as a STRING object. -+ -+ The default implementation processes the formatting escapes -+ described above (*note Error Format Strings::). It also prepends -+ every line of the error message with `warning: ' if S equals -+ `ERR_WARNING'. -+ -+ -- Method on ErrorHandler: virtual String decorate_text (Seriousness -+ S, const String &PREFIX, const String &LANDMARK, const String -+ &TEXT) -+ Decorates the error message TEXT as appropriate and returns the -+ result. At minimum, every line of the result should be prepended by -+ PREFIX and, if it is nonempty, the landmark string LANDMARK. -+ -+ The default implementation creates lines like this: -+ -+ PREFIXLANDMARK: TEXT (if LANDMARK is nonempty) -+ PREFIXTEXT (if LANDMARK is empty) -+ -+ Any spaces and/or a final colon are stripped from the end of -+ LANDMARK. Special landmarks, which begin and end with a backslash -+ `\', are ignored. -+ -+ -- Method on ErrorHandler: virtual void handle_text -+ (Seriousness S, const String &TEXT) -+ This method is responsible for printing or otherwise informing the -+ user about the error message TEXT. If S equals `ERR_FATAL', the -+ method should exit the program or perform some other drastic -+ action. It should also maintain the `nwarnings()' and `nerrors()' -+ counters. In most cases, it should ensure that the last character -+ in TEXT is a newline. -+ -+ This method has no default implementation. -+ -+ The `ErrorVeneer' class, a subclass of `ErrorHandler', supplies -+default implementations for these functions that ease the construction -+of new error veneers. `ErrorVeneer''s single instance variable, -+`ErrorHandler *_errh', is the base handler. `ErrorVeneer' overrides -+all the relevant virtual functions--`nwarnings', `nerrors', -+`reset_counts', `make_text', `decorate_text', and `handle_text'. Its -+versions simply delegate to the corresponding methods on `_errh'. An -+error veneer designer will generally subclass `ErrorVeneer' rather than -+`ErrorHandler'; then she will override only the methods she cares about -+(usually `decorate_text'), relying on `ErrorVeneer''s default -+implementations for the rest. -+ -+ -- Constructor on ErrorVeneer: ErrorVeneer (ErrorHandler *BASE_ERRH) -+ Constructs an `ErrorVeneer' helper class with BASE_ERRH as its -+ base error handler. This constructor simply sets `_errh = -+ base_errh'. -+ -+ -+File: click.info, Node: Packets, Next: Tasks, Prev: Helper Classes, Up: Top -+ -+3 Packets -+********* -+ -+The `Packet' class represents Click packets. The single `Packet' -+interface has multiple implementations, one per driver. Inside the -+Linux kernel driver, a `Packet' object is equivalent to a Linux -+`sk_buff' structure; most `Packet' methods are inline functions that -+expand to `sk_buff' calls. The user-level driver, however, uses a -+purpose-built `Packet' implementation. -+ -+ Click packets separate header information from data. The `Packet *' -+pointer points to a header structure, which holds pointers to the -+actual packet data and a set of "annotations". Packet data may be -+shared by two or more packet headers. Packet headers, however, should -+never be shared. -+ -+ Packets come in two flavors, `Packet' and `WritablePacket'. A -+`Packet' object represents a packet header whose data might be shared -+with other packets. Because of this potential sharing, `Packet' data is -+read-only, and its methods return `const' pointers to data. A -+`WritablePacket' object, in contrast, represents a packet header whose -+data is known not to be shared. Its methods return non-`const' -+pointers. The `uniqueify' method turns a `Packet' into a -+`WritablePacket', possibly by making a copy of the packet's data. -+`WritablePacket' is a subclass of `Packet', so you can turn a -+`WritablePacket' into a `Packet' implicitly. -+ -+ The `Packet' and `WritablePacket' classes are defined in -+`'. -+ -+* Menu: -+ -+* Packet Structure and Contents:: -+* Packet Creation:: -+* Packets and sk_buffs:: -+* Packet Sharing:: -+* Packet Buffer Manipulation:: -+* Annotations:: -+* Packet Out-of-Memory:: -+* Handlers:: -+ -+ -+File: click.info, Node: Packet Structure and Contents, Next: Packet Creation, Prev: Packets, Up: Packets -+ -+3.1 Structure and Contents -+========================== -+ -+Packet data is stored in a single flat array of bytes. There is no -+support for linked chains a` la BSD `mbuf'. The actual packet data is -+embedded inside a buffer that may be much larger, leaving unused spaces -+called "headroom" and "tailroom" before and after the data proper. -+Therefore, tasks like prepending a header need not always reallocate -+memory. If the headroom is big enough, prepending space for a new -+header just requires bumping a pointer. -+ -+ This diagram shows how a typical packet is laid out, with the -+relevant `Packet' methods' names. -+ -+ data -+ |<- headroom ->|<----- length ----->|<- tailroom ->| -+ | | | | -+ +==============+====================+==============+ -+ |XXXXXXXXXXXXXX| PACKET CONTENTS... |XXXXXXXXXXXXXX| -+ +==============+====================+==============+ -+ | | -+ |<---------------- buffer_length ----------------->| -+ buffer_data -+ -+ -+ And here are those methods' descriptions. -+ -+ -- Method on Packet: const unsigned char * data () const -+ Returns a pointer to the packet data proper. -+ -+ -- Method on Packet: unsigned length () const -+ Returns the length of the packet data proper. -+ -+ -- Method on Packet: const unsigned char * buffer_data () const -+ Returns a pointer to the buffer that contains the packet data. -+ -+ -- Method on Packet: unsigned headroom () const -+ -- Method on Packet: unsigned tailroom () const -+ -- Method on Packet: unsigned buffer_length () const -+ Returns the length of the headroom area, the tailroom area, and the -+ whole buffer, respectively. -+ -+ -- Method on WritablePacket: unsigned char * data () const -+ -- Method on WritablePacket: unsigned char * buffer_data () const -+ These `WritablePacket' methods are identical to `Packet''s `data' -+ and `buffer_data' methods except for their non-`const' return type. -+ -+ Two invariants relate these methods' values: -+ -+ buffer_length() = headroom() + length() + tailroom() -+ data() = buffer_data() + headroom() -+ -+ -+File: click.info, Node: Packet Creation, Next: Packets and sk_buffs, Prev: Packet Structure and Contents, Up: Packets -+ -+3.2 Creation and Destruction -+============================ -+ -+Packets are created with the `Packet::make' static methods, and -+destroyed with the `Packet::kill' method. (The `Packet' and -+`WritablePacket' classes have private constructors and destructors; you -+cannot create or destroy packets with `new' or `delete'.) -+ -+3.2.1 `Packet::make' -+-------------------- -+ -+The `make' methods always take the length of the packet data; some of -+them take the packet contents and the headroom and tailroom lengths as -+well. (The contents of any headroom and tailroom areas are always -+undefined.) Most of them return a `WritablePacket *', since new packets -+are not shared. -+ -+ The `Packet' class defines two constants related to packet creation, -+`DEFAULT_HEADROOM' and `MIN_BUFFER_LENGTH'. Those `make' methods that -+do not take an explicit headroom parameter use `DEFAULT_HEADROOM' -+instead. Furthermore, no `make' method will create a packet with buffer -+length less than `MIN_BUFFER_LENGTH'. If the sum of a packet's -+headroom and length is less than this, the packet buffer is given extra -+tailroom to bump the buffer length up to `MIN_BUFFER_LENGTH'. These -+constants have the values `DEFAULT_HEADROOM' = 28 and -+`MIN_BUFFER_LENGTH' = 64. -+ -+ -- Static Method on Packet: WritablePacket * make (unsigned LEN) -+ Returns a new packet containing LEN bytes of undefined data. -+ -+ -- Static Method on Packet: WritablePacket * make -+ (const char *DATA, unsigned LEN) -+ -- Static Method on Packet: WritablePacket * make -+ (const unsigned char *DATA, unsigned LEN) -+ Returns a new packet whose contents equal the first LEN bytes of -+ DATA. DATA may be a null pointer, in which case the packet -+ contains LEN bytes of undefined data. -+ -+ -- Static Method on Packet: WritablePacket * make (unsigned HEADROOM, -+ const unsigned char *DATA, unsigned LEN, unsigned TAILROOM) -+ Returns a new packet containing HEADROOM bytes of headroom, LEN -+ bytes of contents, and at least TAILROOM bytes of tailroom. The -+ packet contents will equal the first LEN bytes of DATA unless DATA -+ is a null pointer, in which case the contents are undefined. -+ -+ The following `make' method is only available in the user-level -+driver. -+ -+ -- Static Method on Packet: WritablePacket * make -+ (unsigned char *DATA, unsigned LEN, -+ void (*DESTRUCTOR)(unsigned char *, size_t)) -+ Returns a new packet that uses DATA as a buffer. That is, the new -+ packet will have the following characteristics: -+ -+ `buffer_data' DATA -+ `buffer_length' LEN -+ `headroom' 0 -+ `length' LEN -+ `tailroom' 0 -+ -+ When the resulting packet is destroyed, the function DESTRUCTOR -+ will be called with DATA and LEN as arguments. DESTRUCTOR may be -+ a null pointer, in which case `Packet' calls `delete[] DATA' -+ instead. -+ -+ This method lets a user-level element manage packet memory itself, -+ rather than relying on `Packet'. -+ -+*Note Packets and sk_buffs::, for a `make' method only available in the -+Linux kernel driver. -+ -+3.2.2 `Packet::kill' -+-------------------- -+ -+To destroy a `Packet', simply call its `kill' method. -+ -+ -- Method on Packet: void kill () -+ Frees this packet. If this packet contained the last reference to -+ its data buffer, then frees the data buffer as well. -+ -+ -+File: click.info, Node: Packets and sk_buffs, Next: Packet Sharing, Prev: Packet Creation, Up: Packets -+ -+3.3 `Packet's and `sk_buff's -+============================ -+ -+In the Linux kernel driver, `Packet' objects are equivalent to `struct -+sk_buff's. This avoids indirection overhead and makes it cheap to pass -+packets back and forth between Linux and Click. The `Packet' operations -+described in this section are mostly inline functions that expand to -+conventional `sk_buff' calls like `skb_clone()'. -+ -+ Click `Packet' `sk_buff's should always have `skb->users' equal to -+1. That is, the `sk_buff' headers should not be shared, although the -+data buffers they point to may be shared. -+ -+ The `make', `skb', and `steal_skb' methods described in this section -+convert `Packet's to `sk_buff's and vice versa. -+ -+ -- Static Method on Packet: Packet * make (struct sk_buff *SKB) -+ Returns a new packet equivalent to the `sk_buff' SKB. All of SKB's -+ data pointers and annotations are left unchanged. This method -+ generally does nothing, since `Packet's and `sk_buff's are -+ equivalent in the Linux kernel. However, if `SKB->users' field is -+ bigger than 1, the method will return a clone of SKB. This method -+ returns a `Packet *', not a `WritablePacket *', because the SKB -+ argument might share data with some other `sk_buff'. -+ -+ Do not use or manipulate SKB after passing it to this method, -+ since Click and the `Packet' implementation now own SKB. -+ -+ -- Method on Packet: struct sk_buff * skb () -+ -- Method on Packet: const struct sk_buff * skb () const -+ Returns the `sk_buff' corresponding to this packet. Use this method -+ to examine the `sk_buff' version of a `Packet'. -+ -+ Do not pass the result to a function that might free it or -+ increment its `users' field; use `steal_skb' for that. -+ -+ -- Method on Packet: struct sk_buff * steal_skb () -+ Returns the `sk_buff' corresponding to this packet. Use this -+ method to permanently change a `Packet' into an `sk_buff'--for -+ example, to create an `sk_buff' you'd like to send to Linux. -+ -+ Do not use or manipulate a `Packet' after calling its `steal_skb' -+ method, since Linux now owns the resulting `sk_buff'. -+ -+ -+File: click.info, Node: Packet Sharing, Next: Packet Buffer Manipulation, Prev: Packets and sk_buffs, Up: Packets -+ -+3.4 Sharing--`clone' and `uniqueify' -+==================================== -+ -+The `clone' method creates a new packet header that shares data with an -+existing packet. The `uniqueify' method, in contrast, ensures that a -+packet's data is not shared by anyone, perhaps by making a copy of the -+data. -+ -+ -- Method on Packet: Packet * clone () -+ Creates and returns a new packet header that shares this packet's -+ data. The new packet's annotations are copied from this packet's -+ annotations. -+ -+ The result may be a null pointer if there was not enough memory to -+ make a new packet header. -+ -+ -- Method on Packet: WritablePacket * uniqueify () -+ Ensures that this packet does not share data with any other -+ packet. This may involve copying the packet data, and perhaps -+ creating a new packet header, but if this packet is already -+ unshared, no real work is required. Returns a `WritablePacket *' -+ because the new packet is unshared. -+ -+ Do not use, manipulate, or free a `Packet' after calling its -+ `uniqueify' method. Manipulate the returned `WritablePacket *' -+ instead. -+ -+ The result may be a null pointer if there was not enough memory to -+ make a required data copy. In this case, the old packet is freed. -+ -+ -- Method on Packet: bool shared () const -+ Returns true if and only if this packet shares data with some other -+ packet. -+ -+ -+File: click.info, Node: Packet Buffer Manipulation, Next: Annotations, Prev: Packet Sharing, Up: Packets -+ -+3.5 Buffer Manipulation--`push', `pull', `put', and `take' -+========================================================== -+ -+The `push', `pull', `put', and `take' methods manipulate a packet's -+contents by adding or removing space from its headroom or tailroom. -+Given a packet, use `push' to add space to its beginning, `pull' to -+remove space from its beginning, `put' to add space to its end, and -+`take' to remove space from its end. The methods that add space, `push' -+and `put', uniqueify the relevant packet as a side effect. This ensures -+that the packet's data is unshared so you can immediately manipulate -+the added space. -+ -+ -- Method on Packet: WritablePacket * push (unsigned AMT) -+ Adds AMT bytes of space to the beginning of the packet's data and -+ returns the resulting packet. The new space is uninitialized. The -+ result will not share data with any other packet; thus, it is a -+ `WritablePacket *'. If this packet is unshared and its headroom is -+ bigger than AMT, then this operation is cheap, amounting to a bit -+ of pointer arithmetic. Otherwise, it requires copying the packet -+ data and possibly creating a new packet header. -+ -+ Do not use, manipulate, or free a `Packet' after calling its -+ `push' method. Manipulate the returned `WritablePacket *' instead. -+ -+ The result may be a null pointer if there was not enough memory to -+ make a required new packet. In this case, the old packet is freed. -+ -+ -- Method on Packet: void pull (unsigned AMT) -+ Removes AMT bytes of space from the beginning of the packet's -+ data. AMT must be less than or equal to the packet's `length()'. -+ This operation is always cheap, amounting to a bit of pointer -+ arithmetic. -+ -+ -- Method on Packet: WritablePacket * put (unsigned AMT) -+ Adds AMT bytes of space to the end of the packet's data and -+ returns the resulting packet. The new space is uninitialized. The -+ result will not share data with any other packet; thus, it is a -+ `WritablePacket *'. If this packet is unshared and its tailroom is -+ bigger than AMT, then this operation is cheap, amounting to a bit -+ of pointer arithmetic. Otherwise, it requires copying the packet -+ data and possibly creating a new packet header. -+ -+ Do not use, manipulate, or free a `Packet' after calling its `put' -+ method. Manipulate the returned `WritablePacket *' instead. -+ -+ The result may be a null pointer if there was not enough memory to -+ make a required new packet. In this case, the old packet is freed. -+ -+ -- Method on Packet: void take (unsigned AMT) -+ Removes AMT bytes of space from the end of the packet's data. AMT -+ must be less than or equal to the packet's `length()'. This -+ operation is always cheap, amounting to a bit of pointer -+ arithmetic. -+ -+ The `push' and `put' methods have "nonunique" variants, -+`nonunique_push' and `nonunique_put', which do not have the side effect -+of uniqueifying their resulting packet. These methods are rarely used. -+ -+ -- Method on Packet: Packet * nonunique_push (unsigned AMT) -+ Adds AMT bytes of space to the beginning of the packet's data and -+ returns the resulting packet. The new space is uninitialized. The -+ result may share data with other packets. If this packet's -+ headroom is bigger than AMT, then this operation is cheap, -+ amounting to a bit of pointer arithmetic. Otherwise, it requires -+ copying the packet data and possibly creating a new packet header. -+ -+ Do not use, manipulate, or free a `Packet' after calling its -+ `nonunique_push' method. Manipulate the returned `Packet *' -+ instead. -+ -+ The result may be a null pointer if there was not enough memory to -+ make a required new packet. In this case, the old packet is freed. -+ -+ -- Method on Packet: Packet * nonunique_put (unsigned AMT) -+ Adds AMT bytes of space to the end of the packet's data, returning -+ the resulting packet. The new space is uninitialized. The result -+ may share data with other packets. If this packet's tailroom is -+ bigger than AMT, then this operation is cheap, amounting to a bit -+ of pointer arithmetic. Otherwise, it requires copying the packet -+ data and possibly creating a new packet header. -+ -+ Do not use, manipulate, or free a `Packet' after calling its -+ `nonunique_put' method. Manipulate the returned `Packet *' instead. -+ -+ The result may be a null pointer if there was not enough memory to -+ make a required new packet. In this case, the old packet is freed. -+ -+ -+File: click.info, Node: Annotations, Next: Packet Out-of-Memory, Prev: Packet Buffer Manipulation, Up: Packets -+ -+3.6 Annotations -+=============== -+ -+Each packet header has space for a number of "annotations", extra -+information about the packet that is not contained in its data. Click -+supports "header annotations", which indicate where in the packet a -+network header, such as an IP header, is located; "user annotations", -+whose semantics are left undefined by Click--different elements can -+treat them in different ways; and other specialized annotations, such -+as the "timestamp annotation", the "destination IP address annotation", -+and so forth. -+ -+ New packets begin with all annotations cleared: numeric annotations -+are zero, pointer annotations are null pointers. `clone', `uniqueify', -+and their equivalents always copy each of the original packet's -+annotations in the appropriate way. (For example, the new header -+annotations will point into the new data, if a data copy was made.) -+ -+* Menu: -+ -+* Header Annotations:: -+* User Annotations:: -+* Specific User Annotations:: -+* Other Annotations:: -+* Annotations In General:: -+ -+ -+File: click.info, Node: Header Annotations, Next: User Annotations, Prev: Annotations, Up: Annotations -+ -+3.6.1 Header Annotations -+------------------------ -+ -+Many packets contain a network header of some kind, such as an IP -+header. This header may be located anywhere in the packet depending on -+how the packet was encapsulated. Furthermore, the data encapsulated by -+that network header may be located anywhere after the network header, -+given the presence of options. With the "network header annotation" and -+the "transport header annotation", one element can determine where a -+network header is and how long it is, then store this information for -+other elements to use. For example, the `CheckIPHeader' element sets -+the header annotations on packets it receives. Elements like -+`SetIPDSCP' then require a non-null IP header annotation on their input -+packets. -+ -+ The header annotations on new packets are each set to a null pointer. -+ -+ -- Method on Packet: const unsigned char * network_header () const -+ -- Method on WritablePacket: unsigned char * network_header () const -+ Returns the network header annotation. The resulting pointer is -+ read-only on `Packet's and read/write on `WritablePacket's. -+ -+ -- Method on Packet: const unsigned char * transport_header () const -+ -- Method on WritablePacket: unsigned char * transport_header () const -+ Returns the transport header annotation. The resulting pointer is -+ read-only on `Packet's and read/write on `WritablePacket's. -+ -+ -- Method on Packet: int network_header_offset () const -+ Returns the offset from `data()' to `network_header()'. The result -+ might be negative, since the `data' pointer may have been advanced -+ past the network header annotation with the `pull' method. -+ -+ -- Method on Packet: int network_header_length () const -+ Returns the network header's length. This equals -+ `transport_header()' - `network_header()'. -+ -+ -- Method on Packet: unsigned transport_header_offset () const -+ Returns the offset from `data()' to `transport_header()'. The -+ result might be negative, since the `data' pointer may have been -+ advanced past the transport header annotation with the `pull' -+ method. -+ -+ Several invariants relate these methods' values whenever the header -+annotations are non-null: -+ -+ `buffer_data()' <= `network_header()' <= `transport_header()' -+ <= `buffer_data()' + `buffer_length()' -+ `network_header_offset()' = `network_header()' - `data()' -+ `transport_header_offset()' = `transport_header()' - `data()' -+ `network_header_length()' = `transport_header()' - `network_header()' -+ -+ -+ Set the network and transport header annotations simultaneously with -+the `set_network_header' method. -+ -+ -- Method on Packet: void set_network_header -+ (const unsigned char *HEADER, unsigned LEN) -+ Sets the network header annotation to HEADER, which must lie -+ between `buffer_data()' and `buffer_data()' + `buffer_length()'. -+ The network header is LEN bytes long, so `network_header_length()' -+ will equal LEN and `transport_header()' will equal HEADER + LEN. -+ -+3.6.1.1 Typed Header Annotations -+................................ -+ -+For convenience, `Packet' provides methods for accessing and setting -+the network header annotation as an IP or IPv6 header. These methods -+use the same annotations as the generic `network_header' methods; they -+are just typed differently. -+ -+ -- Method on Packet: const click_ip * ip_header () const -+ -- Method on WritablePacket: click_ip * ip_header () const -+ -- Method on Packet: const click_ip6 * ip6_header () const -+ -- Method on WritablePacket: click_ip6 * ip6_header () const -+ Returns `network_header()' as a pointer to an IP or IPv6 header -+ structure. -+ -+ -- Method on Packet: int ip_header_offset () const -+ -- Method on Packet: unsigned ip_header_length () const -+ -- Method on Packet: int ip6_header_offset () const -+ -- Method on Packet: unsigned ip6_header_length () const -+ Equivalent to `network_header_offset()' and -+ `network_header_length()'. -+ -+ -- Method on Packet: void set_ip_header (const click_ip *HEADER, -+ unsigned LEN) -+ -- Method on Packet: void set_ip6_header (const click_ip6 *HEADER, -+ unsigned LEN) -+ Equivalent to `set_network_header(HEADER, LEN)'. -+ -+ -- Method on Packet: void set_ip6_header (const click_ip6 *HEADER) -+ Equivalent to `set_ip6_header(HEADER, 40)'. -+ -+ -- Method on Packet: const click_tcp * tcp_header () const -+ -- Method on WritablePacket: click_tcp * tcp_header () const -+ -- Method on Packet: const click_udp * udp_header () const -+ -- Method on WritablePacket: click_udp * udp_header () const -+ Returns `transport_header()' as a pointer to a TCP or UDP header -+ structure. -+ -+ -+File: click.info, Node: User Annotations, Next: Specific User Annotations, Prev: Header Annotations, Up: Annotations -+ -+3.6.2 User Annotations -+---------------------- -+ -+Each packet header has a "user annotation area", space reserved for -+arbitrary annotations. Different methods access this space as an array -+of bytes, integers, or unsigned integers. The `Packet' class does not -+assign semantics to any particular byte in the user annotation area. -+Instead, macros in `' provide names for -+particular bytes. Some of these names have overlapping byte ranges; the -+user must take care not to define a configuration whose elements use an -+annotation byte on a packet for different purposes. The next section -+describes the macros in Click's default `'. -+ -+ These constants define the size of the annotation area. -+ -+`Packet::USER_ANNO_SIZE' -+ The size of the annotation area in bytes. -+ -+`Packet::USER_ANNO_US_SIZE' -+ The size of the annotation area in `unsigned short's. -+ -+`Packet::USER_ANNO_S_SIZE' -+ The size of the annotation area in `short's. -+ -+`Packet::USER_ANNO_U_SIZE' -+ The size of the annotation area in `unsigned int's. -+ -+`Packet::USER_ANNO_I_SIZE' -+ The size of the annotation area in `int's. -+ -+Currently, `USER_ANNO_SIZE' is 24, `USER_ANNO_U_SIZE' and -+`USER_ANNO_I_SIZE' are both 6, and `USER_ANNO_US_SIZE' and -+`USER_ANNO_S_SIZE' are both 12. -+ -+ The user annotation area may be accessed as an array of bytes, an -+array of `unsigned int's, or an array of `int's. The elements of these -+arrays are numbered from 0 to K - 1, where K is the appropriate `SIZE' -+constant. -+ -+ -- Method on Packet: unsigned char user_anno_c (int I) const -+ Returns the Ith byte in the user annotation area. I must be -+ between 0 and `USER_ANNO_SIZE' - 1. -+ -+ -- Method on Packet: unsigned user_anno_u (int I) -+ -- Method on Packet: int user_anno_i (int I) -+ Returns the Ith `unsigned int' or `int' in the user annotation -+ area. I must be between 0 and `USER_ANNO_U_SIZE' - 1. The Ith -+ `unsigned int' or `int' annotation occupies bytes 4I through 4I + -+ 3 of the user annotation area. -+ -+ -- Method on Packet: void set_user_anno_c (int I, unsigned char VALUE) -+ -- Method on Packet: void set_user_anno_u (int I, unsigned VALUE) -+ -- Method on Packet: void set_user_anno_i (int I, int VALUE) -+ Sets the Ith byte, `unsigned int', or `int' user annotation to -+ VALUE. -+ -+ -- Method on Packet: unsigned * all_user_anno_u () -+ Returns a pointer to the user annotation area, treated as an array -+ of `unsigned int's. -+ -+ -+File: click.info, Node: Specific User Annotations, Next: Other Annotations, Prev: User Annotations, Up: Annotations -+ -+3.6.3 Specific User Annotations -+------------------------------- -+ -+The `' header file defines macros for accessing a -+packet's user annotation area by name. These macros follow some simple -+guidelines. Each user annotation is given a name like `PAINT' or -+`FIX_IP_SRC'. Then, two macros are written for each annotation, -+`NAME_ANNO' and `SET_NAME_ANNO'. -+ -+ -- Macro: NAME_ANNO (const Packet *P) -+ Returns the value of P's NAME annotation. -+ -+ -- Macro: SET_NAME_ANNO (Packet *P, VALUE) -+ Sets P's NAME annotation to VALUE. -+ -+For example, here are the definitions of `PAINT_ANNO' and -+`SET_PAINT_ANNO' from Click's default `'. -+ -+ #define PAINT_ANNO(p) ((p)->user_anno_c(0)) -+ #define SET_PAINT_ANNO(p, v) ((p)->set_user_anno_c(0, (v))) -+ -+ -+ This table lists the annotations declared in Click's default -+`'. -+ -+Annotation name Type Bytes Some relevant elements -+`PAINT' `unsigned char' 0 `Paint', `CheckPaint', `PaintTee' -+`ICMP_PARAM_PROB' `unsigned char' 1 `IPGWOptions', `ICMPError' -+`FIX_IP_SRC' `unsigned char' 3 `ICMPError', `FixIPSrc' -+`FWD_RATE' `int' 4-7 `IPRateMonitor' -+`REV_RATE' `int' 8-11 `IPRateMonitor' -+ -+ -+File: click.info, Node: Other Annotations, Next: Annotations In General, Prev: Specific User Annotations, Up: Annotations -+ -+3.6.4 Other Annotations -+----------------------- -+ -+Packet headers have space for four other particular annotations, and -+special methods for accessing them. These annotations do not overlap the -+user annotation area. There are annotations that hold a destination IP -+address, a timestamp, the device on which the packet arrived, a packet -+type constant, and, in the Linux kernel module, a performance counter -+value. -+ -+* Menu: -+ -+* Destination Address Annotation:: -+* Timestamp Annotation:: -+* Device Annotation:: -+* Packet Type Annotation:: -+* Performance Counter Annotation:: -+ -+ -+File: click.info, Node: Destination Address Annotation, Next: Timestamp Annotation, Prev: Other Annotations, Up: Other Annotations -+ -+3.6.4.1 Destination Address -+........................... -+ -+The destination address annotation stores the IP or IPv6 address of the -+next hop towards the packet's destination. Elements check and manipulate -+this address, rather than the IP header's destination address, since the -+next-hop address often differs from the final destination. The -+destination IP address and IPv6 address are different annotations, but -+they overlap; you may set only one at a time. -+ -+ -- Method on Packet: IPAddress dst_ip_anno () const -+ Returns this packet's destination IP address annotation. -+ -+ -- Method on Packet: const IP6Address & dst_ip6_anno () const -+ Returns a reference to this packet's destination IPv6 address -+ annotation. -+ -+ -- Method on Packet: void set_dst_ip_anno (IPAddress VALUE) -+ -- Method on Packet: void set_dst_ip6_anno (const IP6Address &VALUE) -+ Sets this packet's destination IP or IPv6 address annotation to -+ VALUE. -+ -+ The destination IP address annotation is set by the `GetIPAddress' -+and `SetIPAddress' elements, manipulated by `LookupIPRoute' and its -+cousins, and used by `ARPQuerier'. It defaults to zero. -+ -+ -+File: click.info, Node: Timestamp Annotation, Next: Device Annotation, Prev: Destination Address Annotation, Up: Other Annotations -+ -+3.6.4.2 Timestamp -+................. -+ -+The timestamp annotation generally indicates when a packet was received. -+ -+ -- Method on Packet: const struct timeval & timestamp_anno () const -+ -- Method on Packet: struct timeval & timestamp_anno () -+ Returns a reference to this packet's timestamp annotation. -+ -+ -- Method on Packet: void set_timestamp_anno -+ (const struct timeval &VALUE) -+ Sets this packet's timestamp annotation to VALUE. -+ -+ -- Method on Packet: void set_timestamp_anno (int SEC, int USEC) -+ Sets this packet's timestamp annotation to SEC and USEC. -+ Equivalent to `struct timeval tv; tv.tv_sec = SEC; tv.tv_usec = -+ USEC; set_timestamp_anno(tv)'. -+ -+ Linux device drivers set this annotation, so packets emitted by -+`FromDevice' and `PollDevice' in the Linux kernel driver have the -+annotation set. Packet sources like `InfiniteSource' and `RatedSource' -+also set the annotation, as does `FromDump' in the user-level driver. -+Debugging elements like `Print' generally take a keyword argument that -+makes them print packet timestamps. -+ -+ The timestamp annotation defaults to zero. -+ -+ -+File: click.info, Node: Device Annotation, Next: Packet Type Annotation, Prev: Timestamp Annotation, Up: Other Annotations -+ -+3.6.4.3 Device -+.............. -+ -+In the Linux kernel, packets received from some device are annotated -+with a pointer to the relevant `struct net_device' object. (In versions -+of the kernel prior to 2.3, this type was called `struct device'.) The -+`Packet' class provides access to this annotation. The annotation has -+type `net_device *'; Click defines `net_device' as a synonym for -+`struct device' in kernel versions 2.2 and prior. -+ -+ -- Method on Packet: net_device * device_anno () const -+ Returns this packet's device annotation. -+ -+ -- Method on Packet: void set_device_anno (net_device *VALUE) -+ Sets this packet's device annotation to VALUE. -+ -+In the user-level driver, `device_anno' always returns 0, and -+`set_device_anno' does nothing. -+ -+ The `ARPResponder' element sets this annotation on every generated -+response to the value of the annotation on the relevant query. Because -+of this, those responses can be safely forwarded to Linux: Linux's -+ARP-response code requires a correct device annotation. -+ -+ The device annotation defaults to a null pointer. -+ -+ -+File: click.info, Node: Packet Type Annotation, Next: Performance Counter Annotation, Prev: Device Annotation, Up: Other Annotations -+ -+3.6.4.4 Packet Type -+................... -+ -+The packet type annotation specifies how a packet was received. Its -+value is one of the following constants, which are defined in the -+`Packet::PacketType' enumeration. -+ -+`HOST' -+ The packet was sent to this host. -+ -+`BROADCAST' -+ The packet was sent to a link-level broadcast address. -+ -+`MULTICAST' -+ The packet was sent to a link-level multicast address. -+ -+`OTHERHOST' -+ The packet was sent to a different host, but received anyway. The -+ relevant device is probably in promiscuous mode. -+ -+`OUTGOING' -+ The packet was generated at this host and is being sent to another -+ host. -+ -+`LOOPBACK', `FASTROUTE' -+ See the Linux kernel documentation. These values correspond to -+ `PACKET_LOOPBACK' and `PACKET_FASTROUTE', which are defined in -+ `'. -+ -+ -- Method on Packet: Packet::PacketType packet_type_anno () const -+ Returns this packet's packet type annotation. -+ -+ -- Method on Packet: void set_packet_type_anno -+ (Packet::PacketType VALUE) -+ Sets this packet's packet type annotation to VALUE. -+ -+ In the Linux kernel, device drivers set the packet type annotation -+for the packets they receive. Thus, the `FromDevice' and `PollDevice' -+elements generate packets with correct packet type annotations. The -+user-level driver's `FromDevice' also sets the packet type annotation. -+The `ICMPError' and `DropBroadcasts' elements use the annotation's -+value. -+ -+ The packet type annotation defaults to `Packet::HOST'. -+ -+ -+File: click.info, Node: Performance Counter Annotation, Prev: Packet Type Annotation, Up: Other Annotations -+ -+3.6.4.5 Performance Counter -+........................... -+ -+This annotation is available only in the Linux kernel driver. Its value -+is an `unsigned long long' that generally corresponds to some -+performance counter value. -+ -+ -- Method on Packet: unsigned long long perfctr_anno () const -+ Returns this packet's performance counter annotation. -+ -+ -- Method on Packet: void set_perfctr_anno (unsigned long long VALUE) -+ Sets this packet's performance counter annotation to VALUE. -+ -+ The `SetCycleCount', `SetPerfCount', `CycleCountAccum', and -+`PerfCountAccum' elements manipulate this annotation. Its default value -+is zero. -+ -+ -+File: click.info, Node: Annotations In General, Prev: Other Annotations, Up: Annotations -+ -+3.6.5 Annotations In General -+---------------------------- -+ -+`Packet' provides methods for clearing a packet's annotations, and for -+copying all of a packet's annotations from another packet. -+ -+ -- Method on Packet: void clear_annotations () -+ Clears all of this packet's annotations to their default state, -+ which is generally zero. -+ -+ -- Method on Packet: void copy_annotations (const Packet *P) -+ Copies all of P's annotations into this packet except for its -+ header annotations. (This packet's current header annotations are -+ left unchanged.) -+ -+ -+File: click.info, Node: Packet Out-of-Memory, Next: Handlers, Prev: Annotations, Up: Packets -+ -+3.7 Out-of-Memory Conditions -+============================ -+ -+Any method that potentially allocates memory for a `Packet' may fail -+due to an out-of-memory condition. The complete list of these methods -+follows: -+ -+ * `make' variants -+ -+ * `clone' -+ -+ * `uniqueify' -+ -+ * `push' -+ -+ * `put' -+ -+ * `nonunique_push' -+ -+ * `nonunique_put' -+ -+These methods always return a null pointer on out-of-memory. Methods -+that manipulate existing packets--`uniqueify', `push', `put', -+`nonunique_push', and `nonunique_put'--additionally free any existing -+packet before returning a null pointer. You should always check the -+results of these methods to see if you have run out of memory. -+ -+ -+File: click.info, Node: Handlers, Prev: Packet Out-of-Memory, Up: Packets -+ -+3.8 Handlers -+============ -+ -+"Handlers" are access points through which users can interact with -+elements in a running Click router, or with the router as a whole. -+"Read" and "write handlers" behave like files in a file system, while -+"LLRPCs" provide a remote procedure call interface. -+ -+* Menu: -+ -+* Read and Write Handler Overview:: -+* Adding Handlers:: -+* Default Handlers:: -+* Accessing Handlers Internally:: -+* LLRPC Overview:: -+ -+ -+File: click.info, Node: Read and Write Handler Overview, Next: Adding Handlers, Prev: Handlers, Up: Handlers -+ -+3.8.1 Read and Write Handler Overview -+------------------------------------- -+ -+Read and write handlers appear to the user like files in a file system, -+or alternatively, like a limited RPC mechanism that uses ASCII strings -+for data transfer. To the element programmer, a read handler is simply a -+function that takes an element and returns a String; a write handler is -+a function that takes an element and a String and returns an error code. -+ -+ -- Function Type: String (*ReadHandler) (Element *ELEMENT, void *THUNK) -+ Read handler functions have this type. When the user accesses a -+ read handler on an element, Click calls some `ReadHandler' function -+ and passes the element as an argument. The THUNK argument contains -+ callback data specified when the handler was added. The function's -+ String return value is passed back to the user. -+ -+ -- Function Type: int (*WriteHandler) (const String &DATA, -+ Element *ELEMENT, void *THUNK, ErrorHandler *ERRH) -+ Write handler functions have this type. When the user accesses some -+ element write handler by passing in a string, Click calls some -+ `WriteHandler' function and passes the data and the relevant -+ element as arguments. The THUNK argument contains callback data -+ specified when the handler was added. The return value is an error -+ code: zero when there are no errors, and the negative of some -+ `errno' value when there is an error. More detailed information -+ about any errors should be reported to the ERRH argument. -+ -+ Each handler has an ASCII "name". Handler names must be unique -+within each element; for example, there can be at most one `x' read -+handler in a given element. A given name can be shared by a read handler -+and a write handler, however. Such a handler pair is colloquially called -+a "read/write handler", although its two components need not have -+anything to do with one another. -+ -+ There is currently no way to pass data to a read handler or return -+data from a write handler. Use LLRPCs if you need a more RPC-like -+read-write interface. -+ -+ Note that read and write handler functions are regular functions, not -+virtual functions. Often, therefore, handler functions are defined as -+private static member functions in the relevant element class. -+ -+ Read and write handlers need not use ASCII-formatted data. Most -+existing handlers do format their data in ASCII, however, and use -+`cp_uncomment' to ignore leading and trailing whitespace and comments. -+You may want to do the same for consistency's sake. -+ -+ Be careful when writing handlers that modify element state, or read -+state that packet processing can modify. On an SMP machine, a handler -+may be called on one processor while packets are passing through the -+router on another processor. Furthermore, multiple read handlers and -+safe LLRPCs (*note LLRPC Overview::) may be active simultaneously on -+different processors. Write handlers are serialized with respect to -+other handlers and LLRPCs (but not packet processing). That is, no other -+handler or LLRPC will proceed while a write handler is active. -+ -+ -+File: click.info, Node: Adding Handlers, Next: Default Handlers, Prev: Read and Write Handler Overview, Up: Handlers -+ -+3.8.2 Adding Handlers -+--------------------- -+ -+Use `Element''s `add_read_handler' and `add_write_handler' methods to -+add handlers for an element. You will generally call these methods only -+from within your element's `add_handlers' method, although nothing -+prevents you from adding handlers at any time. -+ -+ -- Method on Element: void add_read_handler (const String &NAME, -+ ReadHandler FUNC, void *THUNK) -+ Adds a read handler named NAME for this element. When the handler -+ is accessed, FUNC will be called with `this' and THUNK as -+ parameters. -+ -+ -- Method on Element: void add_write_handler (const String &NAME, -+ WriteHandler FUNC, void *THUNK) -+ Adds a write handler named NAME for this element. When the handler -+ is accessed, FUNC will be called with the relevant data, `this', -+ THUNK, and an `ErrorHandler' as parameters. -+ -+ To create a read/write handler, call `add_read_handler' and -+`add_write_handler' and supply the same handler name. -+ -+ These methods simply forward their requests to static -+`add_read_handler' and `add_write_handler' methods on the `Router' -+class. Call those methods directly to add handlers to other elements, -+or to add global handlers. -+ -+ -- Static Method on Router: void add_read_handler -+ (const Element *ELEMENT, const String &NAME, -+ ReadHandler FUNC, void *THUNK) -+ -- Static Method on Router: void add_write_handler -+ (const Element *ELEMENT, const String &NAME, -+ WriteHandler FUNC, void *THUNK) -+ Adds a read or write handler for ELEMENT, or a global read or -+ write handler if ELEMENT is null. The handler is named NAME. -+ -+ The `change_handler_flags' method lets you change a handler's flags -+word (*note Handler Objects::). -+ -+ -- Static Method on Router: void change_handler_flags -+ (Element *ELEMENT, const String &NAME, uint32_t CLEAR_FLAGS, -+ uint32_t SET_FLAGS) -+ Changes the flags for ELEMENT's NAME handler, or the global NAME -+ handler if ELEMENT is null. The flags are changed by first -+ clearing the bits set in CLEAR_FLAGS, then setting the bits set in -+ SET_FLAGS. This method fails and returns -1 when the specified -+ handler does not exist; otherwise, it returns 0. -+ -+ -+File: click.info, Node: Default Handlers, Next: Accessing Handlers Internally, Prev: Adding Handlers, Up: Handlers -+ -+3.8.3 Default Read and Write Handlers -+------------------------------------- -+ -+Every element automatically provides five handlers, `class', `name', -+`config', `ports', and `handlers'. There is no need to add these -+handlers yourself. The default handlers behave as follows: -+ -+`class' -+ Returns the element's class name, as returned by `class_name()', -+ followed by a newline. Example result: "ARPQueriern". -+ -+`name' -+ Returns the element's name, as returned by `id()', followed by a -+ newline. Example result: "arpq_0n". -+ -+`config' -+ Returns the element's configuration string. If the configuration -+ string does not end in newline, the hander appends a newline -+ itself. Example result: "18.26.7.1, 00:00:C0:4F:71:EFn". -+ -+ If `can_live_reconfigure' returns true, `config' is also a write -+ handler, and writing to it reconfigures the element. -+ -+`ports' -+ Returns a multi-line string describing the element's ports and -+ what they are connected to. The string has the form -+ -+ M input[s] -+ ... M input port descriptions, one per line ... -+ N output[s] -+ ... N output port descriptions, one per line ... -+ -+ Each port description lists the port's processing type, a dash, -+ and then a comma-separated list of all the ports to which this -+ port is connected. The processing type is either `push' or -+ `pull'; formerly agnostic ports are indicated by a trailing tilde -+ (`push~' or `pull~'). Example result: -+ -+ 1 input -+ push~ - Strip@2 [0] -+ 2 outputs -+ push~ - [0] GetIPAddress@4 -+ push - [0] Print@7 -+ -+ If Click was compiled with statistics collection enabled, the dash -+ on each line is replaced by a packet count. -+ -+`handlers' -+ Returns a string listing the element's visible handlers, one per -+ line. Each line contains the handler name, a tab, and then either -+ `r', `w', or `rw', depending on whether the handler is read-only, -+ write-only, or read/write. Example result for an `InfiniteSource' -+ element, which has many handlers: -+ -+ scheduled r -+ tickets r -+ reset w -+ count r -+ active rw -+ burstsize rw -+ limit rw -+ data rw -+ handlers r -+ ports r -+ config rw -+ name r -+ class r -+ -+ -+File: click.info, Node: Accessing Handlers Internally, Next: LLRPC Overview, Prev: Default Handlers, Up: Handlers -+ -+3.8.4 Accessing Handlers Internally -+----------------------------------- -+ -+Element handlers are stored in the relevant `Router' as objects of type -+`Router::Handler'. (This design allows handler objects to be shared -+between elements when possible.) Handlers are often referred to by -+index; indexes between 0 and `Router::FIRST_GLOBAL_HANDLER - 1' refer -+to element handlers, while indexes above `Router::FIRST_GLOBAL_HANDLER' -+refer to global handlers. Indexes less than 0 are used for error -+returns, such as nonexistent handlers. `Router' methods translate -+between handler indexes and `Router::Handler' objects, and find -+handlers or handler indexes given handler names. -+ -+* Menu: -+ -+* Handler Objects:: -+* Handlers By Name or Index:: -+ -+ -+File: click.info, Node: Handler Objects, Next: Handlers By Name or Index, Prev: Accessing Handlers Internally, Up: Accessing Handlers Internally -+ -+3.8.4.1 The Router::Handler Type -+................................ -+ -+The `Router::Handler' type allows you to check a handler's properties -+and call the handler. All of its methods are `const'; you must go -+through `Router' to change a handler's properties. `Router::Handler' -+objects do not contain element references, since they are shared among -+elements. That means you can't easily find the element (if any) to -+which a particular `Router::Handler' is attached. -+ -+ -- Method on Router::Handler: const String & name () const -+ Returns the handler's name. -+ -+ -- Method on Router::Handler: uint32_t flags () const -+ Returns the handler's flags as an integer. The lower bits of the -+ flags word are reserved for the system, and four bits are reserved -+ for drivers, but the upper bits (at least 16) are left -+ uninterpreted, and may be used by elements. The first user flag -+ bit is called `Router::Handler::USER_FLAG_0'; its position in the -+ word equals `Router::Handler::USER_FLAG_SHIFT'. To change a -+ handler's flags, use the `Router::change_handler_flags' method -+ (*note Changing Handler Flags::). -+ -+ -- Method on Router::Handler: bool readable () const -+ Returns true iff this handler is readable. -+ -+ -- Method on Router::Handler: bool read_visible () const -+ Returns true iff this handler is readable, and that read handler -+ should be externally visible. Drivers and the ControlSocket -+ element use `read_visible' rather than `readable' when deciding -+ whether to tell the user that a read handler exists. Inter-element -+ communication within the router, however, may use `readable' -+ rather than `read_visible'. -+ -+ -- Method on Router::Handler: bool writable () const -+ -- Method on Router::Handler: bool write_visible () const -+ The analogous methods for write handlers. -+ -+ -- Method on Router::Handler: bool visible () const -+ Equivalent to `read_visible() || write_visible()'. -+ -+ -- Method on Router::Handler: String unparse_name (Element *ELEMENT) -+ const -+ Returns the handler's name, including its attached element's name -+ if ELEMENT is non-null. For example, calling `unparse_name' on -+ element `e''s `foo' handler would return `e.foo', while calling it -+ on a global `bar' handler would return `bar'. -+ -+ -- Static Method on Router::Handler: String unparse_name -+ (Element *ELEMENT, const String &NAME) -+ Returns a string representing ELEMENT's hypothetical NAME handler, -+ or the global NAME handler if ELEMENT is null. -+ -+ -- Method on Router::Handler: String call_read (Element *ELEMENT) const -+ Calls this read handler on ELEMENT and returns the result. Do not -+ use this method unless you know the handler is `readable()'. -+ -+ -- Method on Router::Handler: int call_write (const String &DATA, -+ Element *ELEMENT, ErrorHandler *ERRH) const -+ Calls this write handler on ELEMENT, passing it DATA and ERRH, and -+ returns the result. Do not use this method unless you know the -+ handler is `writable()'. -+ -+ -+File: click.info, Node: Handlers By Name or Index, Prev: Handler Objects, Up: Accessing Handlers Internally -+ -+3.8.4.2 Handlers By Name or Index -+................................. -+ -+These `Router' methods locate handlers by name, returning either a -+pointer to a handler object or a handler index. The methods are static -+to allow access to global handlers outside the context of a running -+router. -+ -+ -- Static Method on Router: const Router::Handler * handler -+ (const Element *ELEMENT, const String &NAME) -+ Returns a pointer to the handler object for ELEMENT's handler -+ named NAME, or null if no such handler exists. ELEMENT may be -+ null, in which case the method looks for a global handler named -+ NAME. -+ -+ *Caution*: Handler pointers returned by `Router::handler' and -+ similar methods should be treated as transient, since they may -+ become invalid when new handlers are added. -+ -+ -- Static Method on Router: int hindex (const Element *ELEMENT, -+ const String &NAME) -+ Like `Router::handler', above, but returns an integer handler -+ index for the named handler, or a negative number if no such -+ handler exists. All valid handler indexes are nonnegative. -+ -+ -- Static Method on Router: const Router::Handler * handler -+ (const Router *ROUTER, int HINDEX) -+ Returns ROUTER's handler object corresponding to HINDEX, or a null -+ pointer if HINDEX is invalid with respect to ROUTER. There are -+ three possibilities: (1) HINDEX coresponds to a valid global -+ handler, which is returned. In this case, ROUTER need not be -+ valid. (2) HINDEX corresponds to a valid local handler in class -+ ROUTER, which is returned. (3) Otherwise, a null pointer is -+ returned. -+ -+ -- Static Method on Router: const Router::Handler * handler -+ (const Element *ELEMENT, int HINDEX) -+ Convenience function equivalent to `handler(ELEMENT->router(), -+ HINDEX)'. Note that HINDEX need not refer to one of ELEMENT's -+ handlers. -+ -+ -- Method on Router: const Router::Handler * handler (int HINDEX) const -+ Convenience function equivalent to `handler(this, HINDEX)'. -+ -+ Finally, the `element_hindexes' static method returns all the -+handler indices that apply to a given element. -+ -+ -- Static Method on Router: void element_hindexes -+ (const Element *ELEMENT, Vector &RESULTS) -+ Appends to RESULTS all the handler indexes for ELEMENT's handlers, -+ or all global handlers if ELEMENT is null. -+ -+ -+File: click.info, Node: LLRPC Overview, Prev: Accessing Handlers Internally, Up: Handlers -+ -+3.8.5 LLRPC Overview -+-------------------- -+ -+ -+File: click.info, Node: Tasks, Next: Timers, Prev: Packets, Up: Top -+ -+4 Tasks -+******* -+ -+Click schedules a router's CPU or CPUs with one or more "task queues". -+These queues are simply lists of "tasks", which represent functions -+that would like access to the CPU. Tasks are generally associated with -+elements. When scheduled, most tasks call some element's `run_task' -+method. -+ -+ Click tasks are represented by `Task' objects. An element that would -+like special access to a router's CPU should include and initialize a -+`Task' instance variable. -+ -+ Tasks are generally called very frequently, up to tens of thousands -+of times per second. For infrequent events, it is far more efficient to -+use timers than to use tasks; see *Note Timers::. -+ -+ Executing a task should not take a long time. The Click driver loop -+is not currently adaptive, so very long tasks can inappropriately delay -+timers and other periodic events. We may address this problem in a -+future release, but for now, keep tasks short. -+ -+ See the Doxygen documentation on class `Task' for more information. -+ -+ The `Task' class is defined in the `' header file. -+ -+* Menu: -+ -+* Task Initialization:: -+* Scheduling Tasks:: -+* Tickets:: -+* Task Thread Choice:: -+* Task Status:: -+* Task Handlers:: -+* Task Cleanup:: -+ -+ -+File: click.info, Node: Task Initialization, Next: Scheduling Tasks, Prev: Tasks, Up: Tasks -+ -+4.1 Task Initialization -+======================= -+ -+Task initialization is a two-step process. First, when a `Task' object -+is constructed, you must supply information about the function that it -+should call when it is scheduled. Second, when the router is -+initialized, you must initialize the task by supplying it with the -+relevant router. (You must initialize the task even if it will not be -+scheduled right away.) -+ -+ `Task' has two constructors. One of them asks the task to call an -+element's `run_task' method when scheduled; the other asks it to call -+an arbitrary function pointer. -+ -+ -- Constructor on Task: Task (Element *E) -+ When this task is scheduled, call `E->run_task()'. -+ -+ -- Constructor on Task: Task (TaskHook HOOK, void *THUNK) -+ When this task is scheduled, call `HOOK(this, THUNK)'. The HOOK -+ argument is a function pointer with type `void (*)(Task *, void -+ *)'. -+ -+ The `Task::initialize' method places the task on a router-wide list -+of `Task's, associates the task with a particular task queue, and, -+optionally, schedules it. Typically, an element's `initialize' method -+calls `Task::initialize'. -+ -+ -- Method on Task: void initialize (Router *R, bool SCHEDULED) -+ -- Method on Task: void initialize (Element *E, bool SCHEDULED) -+ Attaches the task to the router object R (or `E->router()'). -+ Additionally sets the task's tickets to a default value, and -+ schedules the task if SCHEDULED is true. -+ -+ Many elements call `ScheduleInfo::initialize_task' instead of -+calling `Task::initialize' directly. This method queries any -+`ScheduleInfo' elements in the configuration to determine the task's -+scheduling parameters, sets those parameters, and calls -+`Task::initialize' to schedule the task. The -+`ScheduleInfo::initialize_task' method is defined in the -+`' header file. -+ -+ -- Static Method on ScheduleInfo: void initialize_task (Element *E, -+ Task *TASK, bool SCHEDULE, ErrorHandler *ERRH) -+ Sets TASK's scheduling parameters as specified by any -+ `ScheduleInfo' elements in the router configuration. The element E -+ is used to find the correct router, and provides the relevant name -+ for parameter lookup--the user supplies parameters to -+ `ScheduleInfo' by element name. If SCHEDULE is true, also -+ schedules TASK on `E->router()''s task queue. Reports any errors -+ to ERRH. -+ -+ -- Static Method on ScheduleInfo: void initialize_task (Element *E, -+ Task *TASK, ErrorHandler *ERRH) -+ A synonym for `initialize_task(E, TASK, true, ERRH)'. -+ -+ -- Static Method on ScheduleInfo: void join_scheduler (Element *E, -+ Task *TASK, ErrorHandler *ERRH) -+ A synonym for `initialize_task(E, TASK, true, ERRH)'. -+ -+ The `initialize_task' method is generally called like this: -+ -+ int -+ SomeElement::initialize(ErrorHandler *errh) -+ { -+ ScheduleInfo::initialize_task(this, &_task, errh); -+ } -+ -+Here, `_task', a `Task' object, is one of `SomeElement''s instance -+variables. -+ -+ -+File: click.info, Node: Scheduling Tasks, Next: Tickets, Prev: Task Initialization, Up: Tasks -+ -+4.2 Scheduling Tasks -+==================== -+ -+The user may take a task off its task queue with the `unschedule' -+method, and place it back onto its task queue with the `reschedule' -+method. As tasks move to the head of the task queue, they are -+unscheduled and their callbacks are called. Within these callback -+functions, the user will typically call `fast_reschedule', which is -+like `reschedule' without the locking overhead. -+ -+ -- Method on Task: void unschedule () -+ Unschedules the task by removing it from its task queue. Does -+ nothing if if the task is currently unscheduled, or if it was -+ never initialized. When this function returns, the task will not -+ be scheduled. -+ -+ -- Method on Task: void reschedule () -+ Reschedules the task by placing it on its task queue. If the task -+ is already scheduled, then this method does nothing. -+ -+ All three functions lock the task queue before manipulating it. This -+avoids corruption when there are multiple processors executing -+simultaneously. If `reschedule' cannot immediately lock a task -+queue--perhaps because it is being used on another processor--then they -+register a task request, which will be executed in the near future. In -+contrast, the `unschedule' function will wait until it can lock the -+task queue. -+ -+ Sometimes unscheduling a task is not enough: you don't want the task -+to run, even if someone else (an upstream queue, for example) were to -+reschedule it. The `strong_unschedule' method both unschedules the task -+and shifts the task to the quiescent thread, which never runs. Thus, a -+`strong_unschedule'd task will not run until someone calls -+`strong_reschedule', which reschedules the task on its original -+preferred thread. -+ -+ -- Method on Task: void strong_unschedule () -+ Unschedules the task by removing it from its task queue and -+ shifting it to the quiescent thread. Does nothing if if the task -+ is currently unscheduled, or if it was never initialized. When -+ this function returns, the task will not be scheduled. -+ -+ -- Method on Task: void strong_reschedule () -+ Reschedules the task by placing it on the task queue corresponding -+ to its thread preference. The task will not be scheduled -+ immediately upon return, but it will become scheduled -+ soon--`strong_reschedule' uses a task request to avoid locking. -+ -+ The `fast_reschedule' method avoids locking overhead in the common -+case that a task must be rescheduled from within its callback. -+ -+ -- Method on Task: void fast_reschedule () -+ Reschedules the task by placing it on its preferred task queue. -+ This method avoids locking overhead, so it is faster than -+ `reschedule'. -+ -+ *Caution*: You may call a `Task''s `fast_reschedule' method -+ only from within its callback function. For instance, if an -+ element has a task, `_task', that calls the element's -+ `run_task' method when scheduled, and if `run_task' is called -+ only by that task's callback, then that element's `run_task' -+ method should call `_task.fast_reschedule()' instead of -+ `_task.reschedule()'. -+ -+ The `fast_unschedule' method is to `unschedule' as `fast_reschedule' -+is to `reschedule'. It is rarely used, since tasks are automatically -+unscheduled before they are run. -+ -+ -- Method on Task: void fast_unschedule () -+ Unschedules the task by removing it from its task queue. Does -+ nothing if if the task is currently unscheduled, or if it was -+ never initialized. This method avoids locking overhead, so it is -+ faster than `unschedule'. -+ -+ *Caution*: You may call a `Task''s `fast_unschedule' method -+ only from within its callback function. -+ -+ -+File: click.info, Node: Tickets, Next: Task Thread Choice, Prev: Scheduling Tasks, Up: Tasks -+ -+4.3 Tickets -+=========== -+ -+Click tasks are scheduled using the flexible, lightweight stride -+scheduling algorithm.(1) This algorithm assigns each task a parameter -+called its "tickets". A task with twice as many tickets as usual is -+scheduled twice as frequently. -+ -+ `Task's have methods for querying, setting, and adjusting their -+tickets. -+ -+ -- Method on Task: int tickets () const -+ Returns this task's tickets. This number will be at least 1 and no -+ more than `Task::MAX_TICKETS', which equals 32768. -+ -+ -- Method on Task: void set_tickets (int T) -+ Sets this task's tickets to T. The T parameter should lie between -+ 1 and `Task::MAX_TICKETS', inclusive; numbers outside this range -+ are constrained to the nearest valid value. -+ -+ -- Method on Task: void adj_tickets (int DELTA) -+ Equivalent to `set_tickets(tickets() + DELTA)'. -+ -+ ---------- Footnotes ---------- -+ -+ (1) For more information, see MIT Laboratory for Computer Science -+Technical Memo MIT/LCS/TM-528, `Stride scheduling: deterministic -+proportional-share resource management', by Carl A. Waldspurger and -+William E. Weihl, June 1995. -+ -+ -+File: click.info, Node: Task Thread Choice, Next: Task Status, Prev: Tickets, Up: Tasks -+ -+4.4 Choosing a Thread -+===================== -+ -+Each task belongs to some task queue, which generally corresponds to a -+thread of control. Single-threaded Click has one active thread, and -+therefore one task queue, but multithreaded Click can have an arbitrary -+number of threads. Either Click has a special thread, the "quiescent -+thread", numbered -1; tasks belonging to the quiescent thread never -+run, whether or not they are scheduled. Every task starts out belonging -+to the first thread, thread 0. The `change_thread' method moves a task -+to another thread. -+ -+ -- Method on Task: void change_thread (int THREAD_ID) -+ Move this task to thread THREAD_ID, which should be a number -+ between -1 and the relevant `Router''s `nthreads()'. -+ -+ The task is scheduled on the new task queue if and only if it was -+ scheduled on the old task queue. -+ -+ Like `reschedule', `change_thread' must lock the task queue before -+manipulating it. (Unlike those methods, `change_thread' must lock two -+task queues, the old and the new.) If `change_thread' cannot lock a -+task queue, then it registers a task request that will be executed in -+the near future. This implies that a task may remain on the same -+thread, or become unscheduled, for some time after `change_thread' is -+called. -+ -+ -+File: click.info, Node: Task Status, Next: Task Handlers, Prev: Task Thread Choice, Up: Tasks -+ -+4.5 Task Status Methods -+======================= -+ -+These methods let a user check various properties of a task--for -+instance, whether it is initialized or scheduled. -+ -+ -- Method on Task: bool initialized () const -+ Returns true iff the task has been initialized--that is, if it is -+ associated with some router. -+ -+ -- Method on Task: bool scheduled () const -+ Returns true iff the task is currently scheduled on some task -+ queue. -+ -+ -- Method on Task: RouterThread * scheduled_list () const -+ Returns the task queue with which this task is associated. Even -+ unscheduled tasks are associated with some task queue; this is the -+ task queue on which the task will be placed if `reschedule' is -+ called. -+ -+ -- Method on Task: TaskHook hook () const -+ Returns the callback function that is called when the task is -+ scheduled. If the task is associated with some element, this -+ method returns a null pointer. -+ -+ -- Method on Task: void * thunk () const -+ Returns the extra data passed to the callback function when the -+ task is scheduled. -+ -+ -- Method on Task: Element * element () const -+ If the task is associated with some element, this method returns -+ that element. Otherwise, returns a null pointer. -+ -+ -+File: click.info, Node: Task Handlers, Next: Task Cleanup, Prev: Task Status, Up: Tasks -+ -+4.6 Task Handlers -+================= -+ -+By convention, elements with tasks should provide handlers that access -+task properties. The `Element::add_task_handlers' method automatically -+adds these handlers for a given `Task' object. -+ -+ -- Method on Element: void add_task_handlers (Task *TASK, -+ const String &PREFIX = String()) -+ Adds task handlers for TASK to this element. The string PREFIX is -+ prepended to every handler name. -+ -+ This method adds at least the following handlers: -+ -+`scheduled' -+ Returns a Boolean value saying whether the task is currently -+ scheduled on some task queue. Example result: "truen". -+ -+`tickets' -+ Returns or sets the task's currently allocated tickets. This -+ handler is only available if Click was compiled to support stride -+ scheduling. Example result: "1024n". -+ -+`thread_preference' -+ Returns the task's thread preference. This handler is only -+ available on multithreaded Click. Example result: "2n". -+ -+ -+File: click.info, Node: Task Cleanup, Prev: Task Handlers, Up: Tasks -+ -+4.7 Task Cleanup -+================ -+ -+You generally don't need to worry about destroying `Task' objects: they -+are automatically unscheduled and removed when the `Router' is -+destroyed. This only works if the `Task' objects have the same lifetime -+as the `Router', however. This includes the normal case, when `Task's -+are element instance variables. If you create and destroy `Task' -+objects as the router runs, however, you will need to call the -+following method before deleting the `Task'. -+ -+ -- Method on Task: void cleanup () -+ Cleans up the `Task' object. -+ -+ -+File: click.info, Node: Timers, Next: Notification, Prev: Tasks, Up: Top -+ -+5 Timers -+******** -+ -+Click "timers", like Click tasks, represent callback functions that the -+driver calls when appropriate. Unlike tasks, however, you schedule -+timers to go off at a specified time. Timers are intended for more -+infrequent and/or slower tasks. -+ -+ As with `Task', most `Timer' objects are declared as instance -+variables of elements and scheduled when needed. -+ -+ Timers may be scheduled with microsecond precision, but on current -+hardware, only millisecond precision is likely to be achievable. -+ -+ The `Timer' class is defined in the `' header file. -+ -+* Menu: -+ -+* Timer Initialization:: -+* Scheduling Timers:: -+* Timer Status Methods:: -+* Timer Cleanup:: -+ -+ -+File: click.info, Node: Timer Initialization, Next: Scheduling Timers, Prev: Timers, Up: Timers -+ -+5.1 Timer Initialization -+======================== -+ -+Timer initialization resembles task initialization. When the timer is -+constructed, you must supply it with information about its callback -+function. Later, after the router is initialized, you must initialize -+and, optionally, schedule it. -+ -+ -- Constructor on Timer: Timer (Element *E) -+ When this timer goes off, call `E->run_timer()'. -+ -+ -- Constructor on Timer: Timer (Task *T) -+ When this timer goes off, call `T->reschedule()'. -+ -+ -- Constructor on Timer: Timer (TimerHook HOOK, void *THUNK) -+ When this timer goes off, call `HOOK(this, THUNK)'. The HOOK -+ argument is a function pointer with type `void (*)(Timer *, void -+ *)'. -+ -+ -- Method on Timer: void initialize (Router *R) -+ -- Method on Timer: void initialize (Element *E) -+ Attaches the timer to the router object R (or `E->router()'). -+ -+ Typically, an element's `initialize' method calls -+`Timer::initialize', and possibly one of the `schedule' functions -+described below. -+ -+ -+File: click.info, Node: Scheduling Timers, Next: Timer Status Methods, Prev: Timer Initialization, Up: Timers -+ -+5.2 Scheduling Timers -+===================== -+ -+A variety of methods schedule timers to go off at specified times. The -+basic method is `schedule_at', which schedules the timer for a -+specified time. Subsidiary methods schedule the timer relative to the -+current time (the `schedule_after' methods), or relative to the last -+time the timer was scheduled to run (the `reschedule_after' methods). -+Finally, `unschedule' unschedules the timer. -+ -+ All `schedule' and `reschedule' functions first unschedule the timer -+if it was already scheduled. -+ -+ The `reschedule' methods are particularly useful for timers that -+should occur periodically. For example, this callback function will -+cause its timer to go off at 20-second intervals: -+ -+ void timer_callback(Timer *t, void *) { -+ t->reschedule_after_s(20); -+ } -+ -+ -- Method on Timer: void schedule_at (const struct timeval &WHEN) -+ Schedule the timer to go off at WHEN. You must have initialized -+ the timer earlier. -+ -+ -- Method on Timer: void schedule_now () -+ Schedule the timer to go off as soon as possible. -+ -+ -- Method on Timer: void schedule_after (const struct timeval &DELAY) -+ Schedule the timer to go off DELAY after the current time. -+ -+ -- Method on Timer: void schedule_after_s (uint32_t DELAY) -+ Schedule the timer to go off DELAY seconds after the current time. -+ -+ -- Method on Timer: void schedule_after_ms (uint32_t DELAY) -+ Schedule the timer to go off DELAY milliseconds after the current -+ time. -+ -+ -- Method on Timer: void reschedule_after (const struct timeval &DELAY) -+ Schedule the timer to go off DELAY after it was last scheduled to -+ go off. If the timer was never previously scheduled, this method -+ will schedule the timer for some arbitrary time. -+ -+ -- Method on Timer: void reschedule_after_s (uint32_t DELAY) -+ Schedule the timer to go off DELAY seconds after it was last -+ scheduled to go off. -+ -+ -- Method on Timer: void reschedule_after_ms (uint32_t DELAY) -+ Schedule the timer to go off DELAY milliseconds after it was last -+ scheduled to go off. -+ -+ -- Method on Timer: void unschedule () -+ Unschedules the timer, if it was scheduled. -+ -+ -+File: click.info, Node: Timer Status Methods, Next: Timer Cleanup, Prev: Scheduling Timers, Up: Timers -+ -+5.3 Timer Status Methods -+======================== -+ -+These methods return information about a timer, including when it is -+scheduled to expire. -+ -+ -- Method on Timer: bool initialized () const -+ Returns true iff the timer has been initialized with a call to -+ `initialize()'. Uninitialized timers must not be scheduled. -+ -+ -- Method on Timer: bool scheduled () const -+ Returns true iff the timer is scheduled to expire some time in the -+ future. -+ -+ -- Method on Timer: const struct timeval & expiry () const -+ Returns the time that the timer is set to expire. If the timer has -+ never been scheduled, the value is garbage. If the timer was -+ scheduled but is not scheduled currently, the value is most -+ recently set expiry time. -+ -+ -+File: click.info, Node: Timer Cleanup, Prev: Timer Status Methods, Up: Timers -+ -+5.4 Timer Cleanup -+================= -+ -+You don't need to worry about cleaning up `Timer' objects. They are -+automatically unscheduled and removed when the `Router' is destroyed, -+and deleting a `Timer' automatically removes it from any relevant -+lists. The following function is nevertheless provided for consistency -+with `Task's, which do need to be cleaned up in certain circumstances -+(*note Task Cleanup::). -+ -+ -- Method on Timer: void cleanup () -+ Cleans up the `Timer' object. -+ -+ -+File: click.info, Node: Notification, Next: Coding Standards, Prev: Timers, Up: Top -+ -+6 Notification -+************** -+ -+ -+File: click.info, Node: Coding Standards, Next: Index, Prev: Notification, Up: Top -+ -+7 Coding Standards -+****************** -+ -+* Menu: -+ -+* Upper and lower case names:: -+* Common name patterns:: -+ -+ -+File: click.info, Node: Upper and lower case names, Next: Common name patterns, Prev: Coding Standards, Up: Coding Standards -+ -+7.1 Upper and Lower Case in Names -+================================= -+ -+Keep to the following consistent scheme for choosing between upper and -+lower case when naming variables, types, and functions. -+ -+*Classes* -+ Use mixed case with an initial capital letter and no underscores: -+ `LookupIPRoute'. -+ -+*Methods* -+ Use all lower case with underscores separating words: -+ `negation_is_simple'. -+ -+*Constants* -+ Use all upper case with underscores separating words: -+ `TYPE_ICMP_TYPE'. -+ -+*Instance variables* -+ Begin with an underscore, then use all lower case with underscores -+ separating words: `_length'. -+ -+*Regular variables* -+ Use all lower case with underscores separating words: `i', -+ `the_handler'. -+ -+*Class variables* -+ These variables are declared as `static' in the class header. Name -+ them like regular variables: `nelements_allocated'. -+ -+*Functions* -+ Name them like methods: `quicksort_hook'. -+ -+*Other types* -+ This includes typedefs and enumerated types. Name them like -+ classes: `CpVaParseCmd', `ConfigurePhase'. -+ -+ There are exceptions to these guidelines. In particular: -+ -+ * Instance variables in C structs--that is, classes with few methods -+ whose instance variables are mostly public--may be named like -+ regular variables, without a preceding underscore. The same goes -+ for the components of unions. -+ -+ * Classes that act like simple types, such as `uatomic32_t', take -+ names similar to the types they replace (in this case `uint32_t'). -+ -+ -+File: click.info, Node: Common name patterns, Prev: Upper and lower case names, Up: Coding Standards -+ -+7.2 Common Name Patterns -+======================== -+ -+ * Many instance variables have associated "getter methods" that -+ return their values, and/or "setter methods" that change their -+ values. For an instance variable named `_x', the getter method -+ should be named `x()' and the setter method should be named -+ `set_x()'. -+ -+ * A variable or method which counts something is often named -+ `nOBJECTs'--for instance, `_nwarnings', `ninputs()', `_npackets'. -+ -+ * Use a bare `0' for a null pointer, except where some ambiguity -+ might arise (for example, where an incorrect overloading might be -+ selected). -+ -+ -+File: click.info, Node: Index, Prev: Coding Standards, Up: Top -+ -+Index -+***** -+ -+[index] -+* Menu: -+ -+* (*ReadHandler): Read and Write Handler Overview. -+ (line 13) -+* (*WriteHandler): Read and Write Handler Overview. -+ (line 21) -+* add_read_handler on Element: Adding Handlers. (line 13) -+* add_read_handler on Router: Adding Handlers. (line 34) -+* add_task_handlers on Element: Task Handlers. (line 12) -+* add_write_handler on Element: Adding Handlers. (line 19) -+* add_write_handler on Router: Adding Handlers. (line 37) -+* adj_tickets on Task: Tickets. (line 24) -+* all_user_anno_u on Packet: User Annotations. (line 60) -+* buffer_data on Packet: Packet Structure and Contents. -+ (line 37) -+* buffer_data on WritablePacket: Packet Structure and Contents. -+ (line 47) -+* buffer_length on Packet: Packet Structure and Contents. -+ (line 42) -+* call_read on Router::Handler: Handler Objects. (line 57) -+* call_write on Router::Handler: Handler Objects. (line 62) -+* change_handler_flags on Router: Adding Handlers. (line 46) -+* change_thread on Task: Task Thread Choice. (line 16) -+* cleanup on Task: Task Cleanup. (line 15) -+* cleanup on Timer: Timer Cleanup. (line 14) -+* clear_annotations on Packet: Annotations In General. -+ (line 10) -+* clone on Packet: Packet Sharing. (line 12) -+* ContextErrorHandler on ContextErrorHandler: Error Veneers. (line 26) -+* copy_annotations on Packet: Annotations In General. -+ (line 14) -+* data on Packet: Packet Structure and Contents. -+ (line 31) -+* data on WritablePacket: Packet Structure and Contents. -+ (line 46) -+* debug on ErrorHandler: Reporting Errors. (line 13) -+* decorate_text on ErrorHandler: Writing ErrorHandlers. -+ (line 30) -+* default ErrorHandler: Basic ErrorHandlers. (line 13) -+* default_handler on ErrorHandler: Basic ErrorHandlers. (line 19) -+* device_anno on Packet: Device Annotation. (line 14) -+* dst_ip6_anno on Packet: Destination Address Annotation. -+ (line 17) -+* dst_ip_anno on Packet: Destination Address Annotation. -+ (line 14) -+* element on Task: Task Status. (line 33) -+* element_hindexes on Router: Handlers By Name or Index. -+ (line 52) -+* error on ErrorHandler: Reporting Errors. (line 16) -+* ErrorHandler, default: Basic ErrorHandlers. (line 13) -+* ErrorVeneer: Writing ErrorHandlers. -+ (line 54) -+* ErrorVeneer on ErrorVeneer: Writing ErrorHandlers. -+ (line 67) -+* expiry on Timer: Timer Status Methods. -+ (line 18) -+* fast_reschedule on Task: Scheduling Tasks. (line 55) -+* fast_unschedule on Task: Scheduling Tasks. (line 72) -+* fatal on ErrorHandler: Reporting Errors. (line 17) -+* FileErrorHandler on FileErrorHandler: Basic ErrorHandlers. (line 39) -+* flags on Router::Handler: Handler Objects. (line 17) -+* handle_text on ErrorHandler: Writing ErrorHandlers. -+ (line 45) -+* handler on Router: Handlers By Name or Index. -+ (line 13) -+* headroom on Packet: Packet Structure and Contents. -+ (line 40) -+* hindex on Router: Handlers By Name or Index. -+ (line 24) -+* hook on Task: Task Status. (line 24) -+* initialize on Task: Task Initialization. (line 31) -+* initialize on Timer: Timer Initialization. -+ (line 23) -+* initialize_task on ScheduleInfo: Task Initialization. (line 46) -+* initialized on Task: Task Status. (line 10) -+* initialized on Timer: Timer Status Methods. -+ (line 10) -+* ip6_header on Packet: Header Annotations. (line 76) -+* ip6_header on WritablePacket: Header Annotations. (line 77) -+* ip6_header_length on Packet: Header Annotations. (line 84) -+* ip6_header_offset on Packet: Header Annotations. (line 83) -+* ip_header on Packet: Header Annotations. (line 74) -+* ip_header on WritablePacket: Header Annotations. (line 75) -+* ip_header_length on Packet: Header Annotations. (line 82) -+* ip_header_offset on Packet: Header Annotations. (line 81) -+* join_scheduler on ScheduleInfo: Task Initialization. (line 60) -+* kill on Packet: Packet Creation. (line 80) -+* LandmarkErrorHandler on LandmarkErrorHandler: Error Veneers. -+ (line 43) -+* ldebug on ErrorHandler: Reporting Errors. (line 36) -+* length on Packet: Packet Structure and Contents. -+ (line 34) -+* lerror on ErrorHandler: Reporting Errors. (line 42) -+* lfatal on ErrorHandler: Reporting Errors. (line 44) -+* lmessage on ErrorHandler: Reporting Errors. (line 38) -+* lwarning on ErrorHandler: Reporting Errors. (line 40) -+* make on Packet <1>: Packets and sk_buffs. -+ (line 20) -+* make on Packet: Packet Creation. (line 31) -+* make_text on ErrorHandler: Writing ErrorHandlers. -+ (line 19) -+* message on ErrorHandler: Reporting Errors. (line 14) -+* name on Router::Handler: Handler Objects. (line 14) -+* NAME_ANNO: Specific User Annotations. -+ (line 13) -+* nerrors on ErrorHandler: Counting Errors. (line 11) -+* network_header on Packet: Header Annotations. (line 21) -+* network_header on WritablePacket: Header Annotations. (line 22) -+* network_header_length on Packet: Header Annotations. (line 36) -+* network_header_offset on Packet: Header Annotations. (line 31) -+* nonunique_push on Packet: Packet Buffer Manipulation. -+ (line 62) -+* nonunique_put on Packet: Packet Buffer Manipulation. -+ (line 77) -+* nwarnings on ErrorHandler: Counting Errors. (line 10) -+* packet_type_anno on Packet: Packet Type Annotation. -+ (line 33) -+* perfctr_anno on Packet: Performance Counter Annotation. -+ (line 11) -+* PrefixErrorHandler on PrefixErrorHandler: Error Veneers. (line 36) -+* pull on Packet: Packet Buffer Manipulation. -+ (line 31) -+* push on Packet: Packet Buffer Manipulation. -+ (line 16) -+* put on Packet: Packet Buffer Manipulation. -+ (line 37) -+* read_visible on Router::Handler: Handler Objects. (line 30) -+* readable on Router::Handler: Handler Objects. (line 27) -+* reschedule on Task: Scheduling Tasks. (line 20) -+* reschedule_after on Timer: Scheduling Timers. (line 42) -+* reschedule_after_ms on Timer: Scheduling Timers. (line 51) -+* reschedule_after_s on Timer: Scheduling Timers. (line 47) -+* reset_counts on ErrorHandler: Counting Errors. (line 15) -+* schedule_after on Timer: Scheduling Timers. (line 32) -+* schedule_after_ms on Timer: Scheduling Timers. (line 38) -+* schedule_after_s on Timer: Scheduling Timers. (line 35) -+* schedule_at on Timer: Scheduling Timers. (line 25) -+* schedule_now on Timer: Scheduling Timers. (line 29) -+* scheduled on Task: Task Status. (line 14) -+* scheduled on Timer: Timer Status Methods. -+ (line 14) -+* scheduled_list on Task: Task Status. (line 18) -+* set_default_handler on ErrorHandler: Basic ErrorHandlers. (line 23) -+* set_device_anno on Packet: Device Annotation. (line 17) -+* set_dst_ip6_anno on Packet: Destination Address Annotation. -+ (line 22) -+* set_dst_ip_anno on Packet: Destination Address Annotation. -+ (line 21) -+* set_ip6_header on Packet: Header Annotations. (line 91) -+* set_ip_header on Packet: Header Annotations. (line 89) -+* SET_NAME_ANNO: Specific User Annotations. -+ (line 16) -+* set_network_header on Packet: Header Annotations. (line 60) -+* set_packet_type_anno on Packet: Packet Type Annotation. -+ (line 37) -+* set_perfctr_anno on Packet: Performance Counter Annotation. -+ (line 14) -+* set_tickets on Task: Tickets. (line 19) -+* set_timestamp_anno on Packet: Timestamp Annotation. -+ (line 14) -+* set_user_anno_c on Packet: User Annotations. (line 54) -+* set_user_anno_i on Packet: User Annotations. (line 56) -+* set_user_anno_u on Packet: User Annotations. (line 55) -+* shared on Packet: Packet Sharing. (line 34) -+* silent_handler on ErrorHandler: Basic ErrorHandlers. (line 28) -+* skb on Packet: Packets and sk_buffs. -+ (line 32) -+* static_cleanup on ErrorHandler: ErrorHandler Initialization. -+ (line 20) -+* static_initialize on ErrorHandler: ErrorHandler Initialization. -+ (line 13) -+* steal_skb on Packet: Packets and sk_buffs. -+ (line 40) -+* strong_reschedule on Task: Scheduling Tasks. (line 46) -+* strong_unschedule on Task: Scheduling Tasks. (line 40) -+* tailroom on Packet: Packet Structure and Contents. -+ (line 41) -+* take on Packet: Packet Buffer Manipulation. -+ (line 52) -+* Task on Task: Task Initialization. (line 18) -+* tcp_header on Packet: Header Annotations. (line 97) -+* tcp_header on WritablePacket: Header Annotations. (line 98) -+* thunk on Task: Task Status. (line 29) -+* tickets on Task: Tickets. (line 15) -+* Timer on Timer: Timer Initialization. -+ (line 12) -+* timestamp_anno on Packet: Timestamp Annotation. -+ (line 9) -+* transport_header on Packet: Header Annotations. (line 26) -+* transport_header on WritablePacket: Header Annotations. (line 27) -+* transport_header_offset on Packet: Header Annotations. (line 40) -+* udp_header on Packet: Header Annotations. (line 99) -+* udp_header on WritablePacket: Header Annotations. (line 100) -+* uniqueify on Packet: Packet Sharing. (line 20) -+* unparse_name on Router::Handler: Handler Objects. (line 46) -+* unschedule on Task: Scheduling Tasks. (line 14) -+* unschedule on Timer: Scheduling Timers. (line 55) -+* user_anno_c on Packet: User Annotations. (line 43) -+* user_anno_i on Packet: User Annotations. (line 48) -+* user_anno_u on Packet: User Annotations. (line 47) -+* verror on ErrorHandler: Reporting Errors. (line 73) -+* visible on Router::Handler: Handler Objects. (line 42) -+* warning on ErrorHandler: Reporting Errors. (line 15) -+* writable on Router::Handler: Handler Objects. (line 38) -+* write_visible on Router::Handler: Handler Objects. (line 39) -+ -+ -+ -+Tag Table: -+Node: Top233 -+Node: Overview2218 -+Node: Packet Transfer2353 -+Node: Helper Classes2470 -+Node: ErrorHandler2618 -+Node: ErrorHandler Initialization3523 -+Node: Reporting Errors4673 -+Node: Error Format Strings8229 -+Node: Counting Errors12734 -+Node: Basic ErrorHandlers13677 -+Node: Error Veneers15602 -+Node: Writing ErrorHandlers19343 -+Node: Packets22748 -+Node: Packet Structure and Contents24424 -+Node: Packet Creation26727 -+Node: Packets and sk_buffs30171 -+Node: Packet Sharing32385 -+Node: Packet Buffer Manipulation33889 -+Node: Annotations38510 -+Node: Header Annotations39633 -+Node: User Annotations44362 -+Node: Specific User Annotations46926 -+Node: Other Annotations48352 -+Node: Destination Address Annotation49046 -+Node: Timestamp Annotation50312 -+Node: Device Annotation51557 -+Node: Packet Type Annotation52750 -+Node: Performance Counter Annotation54390 -+Node: Annotations In General55128 -+Node: Packet Out-of-Memory55784 -+Node: Handlers56549 -+Node: Read and Write Handler Overview57053 -+Node: Adding Handlers60246 -+Ref: Changing Handler Flags62106 -+Node: Default Handlers62591 -+Node: Accessing Handlers Internally65097 -+Node: Handler Objects65946 -+Node: Handlers By Name or Index69116 -+Node: LLRPC Overview71591 -+Node: Tasks71730 -+Node: Task Initialization73013 -+Node: Scheduling Tasks76105 -+Node: Tickets79882 -+Ref: Tickets-Footnote-180864 -+Node: Task Thread Choice81096 -+Node: Task Status82460 -+Node: Task Handlers83806 -+Node: Task Cleanup84870 -+Node: Timers85502 -+Node: Timer Initialization86263 -+Node: Scheduling Timers87370 -+Node: Timer Status Methods89646 -+Node: Timer Cleanup90505 -+Node: Notification91069 -+Node: Coding Standards91191 -+Node: Upper and lower case names91386 -+Node: Common name patterns93028 -+Node: Index93763 -+ -+End Tag Table -diff -Nurb click-1.6.0/inst/share/info/dir click-1.6.0-27/inst/share/info/dir ---- click-1.6.0/inst/share/info/dir 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/info/dir 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,18 @@ -+This is the file .../info/dir, which contains the -+topmost node of the Info hierarchy, called (dir)Top. -+The first time you invoke Info you start off looking at this node. -+ -+File: dir, Node: Top This is the top of the INFO tree -+ -+ This (the Directory node) gives a menu of major topics. -+ Typing "q" exits, "?" lists all Info commands, "d" returns here, -+ "h" gives a primer for first-timers, -+ "mEmacs" visits the Emacs manual, etc. -+ -+ In Emacs, you can click mouse button 2 on a menu item or cross reference -+ to select it. -+ -+* Menu: -+ -+Click modular router -+* Click: (click). The Click modular router programming manual. -diff -Nurb click-1.6.0/inst/share/man/man1/click-align.1 click-1.6.0-27/inst/share/man/man1/click-align.1 ---- click-1.6.0/inst/share/man/man1/click-align.1 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/man1/click-align.1 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,129 @@ -+.\" -*- mode: nroff -*- -+.ds V 1.0 -+.ds E " \-\- -+.if t .ds E \(em -+.de Sp -+.if n .sp -+.if t .sp 0.4 -+.. -+.de Es -+.Sp -+.RS 5 -+.nf -+.. -+.de Ee -+.fi -+.RE -+.PP -+.. -+.de Rs -+.RS -+.Sp -+.. -+.de Re -+.Sp -+.RE -+.. -+.de M -+.BR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RB "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH CLICK-ALIGN 1 "27/Nov/1999" "Version \*V" -+.SH NAME -+click-align \- adds required Align elements to a Click configuration -+' -+.SH SYNOPSIS -+.B click-align -+.RI \%[ options ] -+.RI \%[ param = value " ...]" -+.RI \%[ router\-file ] -+' -+.SH DESCRIPTION -+The -+.B click-align -+tool makes Click router configurations usable on machines that don't -+support unaligned accesses. It reads a router configuration file in the -+.M click 5 -+language, adds any required -+.M Align n -+elements, and writes the new configuration to the standard output. -+.PP -+Several Click elements, such as -+.M CheckIPHeader n -+and -+.M ToLinux n , -+have alignment requirements. The CheckIPHeader element, for example, -+expects that the packet begins with an IP header, and that this IP header -+is four-byte-aligned. Normally, Click does not guarantee this: elements -+cannot know how input packets will be aligned. The -+.B click-align -+tool first analyzes the router configuration, then inserts -+.M Align n -+elements as required to ensure that packets will be properly aligned. It -+also adds an -+.M AlignmentInfo n -+element so elements can figure out what packet alignment they can expect. -+.PP -+The list of alignment requirements is currently built in to the -+.B click-align -+tool and cannot be changed except by recompilation. -+' -+.SH "OPTIONS" -+' -+If any filename argument is a single dash "-", -+.B click-align -+will use the standard input or output instead, as appropriate. -+' -+.TP 5 -+.BI \-f " file" -+.PD 0 -+.TP -+.BI \-\-file " file" -+Read the router configuration to transform from -+.IR file . -+The default is the standard input. -+' -+.Sp -+.TP -+.BI \-e " expr" -+.PD 0 -+.TP -+.BI \-\-expr " expr" -+Use -+.IR expr , -+a string in the Click language, as the router configuration to transform. -+' -+.Sp -+.TP -+.BI \-o " file" -+.TP -+.BI \-\-output " file" -+Write the output router configuration to -+.IR file . -+The default is the standard output. -+' -+.Sp -+.TP 5 -+.BI \-\-help -+Print usage information and exit. -+' -+.Sp -+.TP -+.BI \-\-version -+Print the version number and some quickie warranty information and exit. -+' -+.PD -+' -+.SH "SEE ALSO" -+.M click 5 , -+.M Align n , -+.M AlignmentInfo n -+' -+.SH AUTHOR -+.na -+Eddie Kohler, kohler@cs.ucla.edu -+.br -+http://www.pdos.lcs.mit.edu/click/ -+' -diff -Nurb click-1.6.0/inst/share/man/man1/click-combine.1 click-1.6.0-27/inst/share/man/man1/click-combine.1 ---- click-1.6.0/inst/share/man/man1/click-combine.1 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/man1/click-combine.1 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,182 @@ -+.\" -*- mode: nroff -*- -+.ds V 1.0.5 -+.ds E " \-\- -+.if t .ds E \(em -+.de Sp -+.if n .sp -+.if t .sp 0.4 -+.. -+.de Es -+.Sp -+.RS 5 -+.nf -+.. -+.de Ee -+.fi -+.RE -+.PP -+.. -+.de Rs -+.RS -+.Sp -+.. -+.de Re -+.Sp -+.RE -+.. -+.de M -+.BR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RB "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH CLICK-COMBINE 1 "27/Apr/2000" "Version \*V" -+.SH NAME -+click-combine \- combines two or more Click configurations into one -+' -+.SH SYNOPSIS -+.B click-combine -+.RI \%[ options ] -+\%\fIname\fR=\fIfile\fR ... \e -+.br -+\% \fIname1\fR.\fIelement1\fR=\fIname2\fR.\fIelement2\fR ... -+' -+.SH DESCRIPTION -+The -+.B click-combine -+tool combines two or more Click router configurations into a single -+configuration representing the network. For example, say there is a -+point-to-point link from router A's eth0 interface to router B's eth1 -+interface. Then in the combined configuration, A's ToDevice(eth0) element -+and B's PollDevice(eth1) element will be replaced with a new RouterLink -+element; packets will flow from A to B via the RouterLink element. You can -+edit the combined configuration with tools, which are effectively able to -+consider the whole network. For example, they can check cross-router -+properties or perform cross-router optimizations. Use the -+.M click-uncombine 1 -+tool to extract a component router configuration from the combination. -+.PP -+Component routers are identified by name. This name must be a legal Click -+identifier (see -+.M click 5 ) -+that does not contain a slash. To add a router component named -+.I N -+whose configuration is in the file -+.IR f , -+supply the option -+.RI ` N = f '. -+You will generally supply at least two such options. -+.PP -+A link says that packets leaving one router via one element will arrive at -+another router via another element. The routers are specified by component -+name, and the elements can be specified by element name or by device name. -+To connect the -+.I e1 -+element from router component -+.I A -+to the -+.I e2 -+element from router component -+.IR B , -+supply the option -+.RI ` A . e1 = B . e2 '. -+If -+.I e1 -+is a -+.M ToDevice n -+element, then you can use its device name argument instead of its name. -+Similarly, if -+.I e2 -+is a -+.M PollDevice n -+or -+.M FromDevice n -+element, you can use its device name argument instead of its name. -+.PP -+Link options are one-way, so if there is a duplex connection, you will need -+to give two arguments: `A.eth0=B.eth1 B.eth1=A.eth0', for example. You can -+also support more than two routers sharing a link; for example, -+`A.eth0=B.eth1 A.eth0=C.eth2'. -+' -+.SH "OPTIONS" -+' -+If any filename argument is a single dash "-", -+.B click-combine -+will use the standard input or output instead, as appropriate. -+' -+.TP 5 -+.BR \-o ", " \-\-output " \fIfile" -+.PD 0 -+Write the output router configuration to -+.IR file . -+The default is the standard output. -+' -+.Sp -+.TP -+.BR \-n ", " \-\-name " \fIname" -+The next router component will be named -+.IR name . -+This option and the -+.BR \-\-file -+provide an alternative to the -+.IR name = file -+syntax. -+' -+.Sp -+.TP -+.BR \-f ", " \-\-file " \fIfile" -+Read a router configuration from -+.IR file . -+Together with the -+.BR \-\-name -+option, the -+.B \-\-file -+and -+.B \-\-expression -+options provide an alternative to the -+.IR name = file -+syntax. -+' -+.Sp -+.TP -+.BR \-e ", " \-\-expression " \fIexpr" -+Use -+.IR expr , -+a string in the Click language, as the next router configuration. -+' -+.Sp -+.TP -+.BR \-l ", " \-\-link " \fIcomponent1\fR.\fIelement1\fR=\fIcomponent2\fR.\fIelement2" -+Add a link specification as described above. -+' -+.Sp -+.TP -+.BR \-c ", " \-\-config -+Output new configuration only (not an archive with extra information). -+' -+.Sp -+.TP 5 -+.BI \-\-help -+Print usage information and exit. -+' -+.Sp -+.TP -+.BI \-\-version -+Print the version number and some quickie warranty information and exit. -+' -+.PD -+' -+.SH "SEE ALSO" -+.M click-uncombine 1 , -+.M click-xform 1 , -+.M click 5 , -+.M PollDevice n , -+.M FromDevice n , -+.M ToDevice n -+' -+.SH AUTHOR -+.na -+Eddie Kohler, kohler@cs.ucla.edu -+.br -+http://www.pdos.lcs.mit.edu/click/ -+' -diff -Nurb click-1.6.0/inst/share/man/man1/click-devirtualize.1 click-1.6.0-27/inst/share/man/man1/click-devirtualize.1 ---- click-1.6.0/inst/share/man/man1/click-devirtualize.1 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/man1/click-devirtualize.1 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,190 @@ -+.\" -*- mode: nroff -*- -+.ds V 1.0.3 -+.ds E " \-\- -+.if t .ds E \(em -+.de Sp -+.if n .sp -+.if t .sp 0.4 -+.. -+.de Es -+.Sp -+.RS 5 -+.nf -+.. -+.de Ee -+.fi -+.RE -+.PP -+.. -+.de Rs -+.RS -+.Sp -+.. -+.de Re -+.Sp -+.RE -+.. -+.de M -+.BR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RB "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH CLICK-DEVIRTUALIZE 1 "31/Mar/2000" "Version \*V" -+.SH NAME -+click-devirtualize \- removes virtual function calls from a Click configuration -+' -+.SH SYNOPSIS -+.B click-devirtualize -+.RI \%[ options ] -+.RI \%[ param = value " ...]" -+.RI \%[ router\-file ] -+' -+.SH DESCRIPTION -+The -+.B click-devirtualize -+tool speeds up a Click configuration by removing virtual function calls -+from its elements. It reads a router configuration file in the -+.M click 5 -+language and creates specialized C++ source code for each element. The -+virtual function calls in this specialized C++ code are replaced with -+direct function calls to other elements in the configuration. -+.PP -+After creating the source code, -+.B click-devirtualize -+will optionally compile it into dynamically loadable packages. The elements -+in the input configuration are changed to use new, specially generated -+element classes, and the resulting configuration, plus source code and any -+compiled packages, are combined into an archive and written to the standard -+output. You can install such an archive into the -+.M click.o 8 -+Linux kernel module with -+.M click-install 1 : -+.Sp -+.nf -+ % click-devirtualize -k CONFIGURATION | click-install -+.fi -+.Sp -+The -+.M click 1 -+user level driver can read the archives directly. -+.PP -+The -+.B click-devirtualize -+transformation can be reversed with the -+.B \-\-reverse -+option. -+' -+.SH "OPTIONS" -+' -+If any filename argument is a single dash "-", -+.B click-devirtualize -+will use the standard input or output instead, as appropriate. -+' -+.TP 5 -+.BI \-f " file" -+.PD 0 -+.TP -+.BI \-\-file " file" -+Read the router configuration to transform from -+.IR file . -+The default is the standard input. -+' -+.Sp -+.TP 5 -+.BI \-e " expr" -+.PD 0 -+.TP -+.BI \-\-expr " expr" -+Use -+.IR expr , -+a string in the Click language, as the router configuration to transform. -+' -+.Sp -+.TP -+.BI \-o " file" -+.TP -+.BI \-\-output " file" -+Write the output router configuration to -+.IR file . -+The default is the standard output. -+' -+.Sp -+.TP -+.BR \-l ", " \-\-linuxmodule -+Generate a dynamically loadable package for the -+.M click.o 8 -+Linux kernel module. -+' -+.Sp -+.TP -+.BR \-u ", " \-\-userlevel -+Generate a dynamically loadable package for the -+.M click 1 -+user-level driver. -+' -+.Sp -+.TP 5 -+.BR \-s ", " \-\-source -+Output only the specialized element class source code. -+' -+.Sp -+.TP 5 -+.BR \-c ", " \-\-config -+Output only the new configuration (the one that includes specialized -+elements). -+' -+.Sp -+.TP 5 -+.BR \-r ", " \-\-reverse -+Reverse the tranformation. That is, change any existing devirtualized -+element classes into the equivalent normal elements. -+' -+.Sp -+.TP -+.BI \-n " class" -+.TP -+.BI \-\-no\-devirtualize " class" -+Do not devirtualize elements whose element class is -+.IR class . -+Such elements will continue using normal source code. -+' -+.Sp -+.TP -+.BI \-i " file" -+.TP -+.BI \-\-instructions " file" -+Read devirtualization instructions from -+.IR file . -+This file can contain any number of lines. Comments start with `#'; -+non-blank, non-comment lines should have devirtualization directives. There -+is currently one directive: "noclass -+.IR "class1 class2" "...""" -+is equivalent to several `\-\-no\-devirtualize -+.IR class "i'" -+options. -+' -+.Sp -+.TP 5 -+.BI \-\-help -+Print usage information and exit. -+' -+.Sp -+.TP -+.BI \-\-version -+Print the version number and some quickie warranty information and exit. -+' -+.PD -+' -+.SH "SEE ALSO" -+.M click 1 , -+.M click-install 1 , -+.M click 5 , -+.M click.o 8 -+' -+.SH AUTHOR -+.na -+Eddie Kohler, kohler@cs.ucla.edu -+.br -+http://www.pdos.lcs.mit.edu/click/ -+' -diff -Nurb click-1.6.0/inst/share/man/man1/click-fastclassifier.1 click-1.6.0-27/inst/share/man/man1/click-fastclassifier.1 ---- click-1.6.0/inst/share/man/man1/click-fastclassifier.1 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/man1/click-fastclassifier.1 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,194 @@ -+.\" -*- mode: nroff -*- -+.ds V 1.0.3 -+.ds E " \-\- -+.if t .ds E \(em -+.de Sp -+.if n .sp -+.if t .sp 0.4 -+.. -+.de Es -+.Sp -+.RS 5 -+.nf -+.. -+.de Ee -+.fi -+.RE -+.PP -+.. -+.de Rs -+.RS -+.Sp -+.. -+.de Re -+.Sp -+.RE -+.. -+.de M -+.BR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RB "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH CLICK-FASTCLASSIFIER 1 "9/Feb/2000" "Version \*V" -+.SH NAME -+click-fastclassifier \- specializes Classifier code in a Click configuration -+' -+.SH SYNOPSIS -+.B click-fastclassifier -+.RI \%[ options ] -+.RI \%[ param = value " ...]" -+.RI \%[ router\-file ] -+' -+.SH DESCRIPTION -+The -+.B click-fastclassifier -+tool speeds up a Click configuration by creating fast versions of all its -+.M Classifier n , -+.M IPClassifier n , -+and -+.M IPFilter n -+elements. It reads a router configuration file in the -+.M click 5 -+language and creates specialized C++ source code for each Classifier-like -+element. A Classifier is expanded into a series of if statements; for -+example, the expansion of `Classifier(0/80, -)' contains something like -+this function: -+.PP -+.nf -+inline void -+FastClassifier_a_ac::length_unchecked_push(Packet *p) -+{ -+ const unsigned *data = (const unsigned *)(p->data() - 0); -+ step_0: -+ if ((data[0] & 255U) == 128U) { -+ output(0).push(p); -+ return; -+ } -+ output(1).push(p); -+ return; -+} -+.fi -+.PP -+After creating the source code, -+.B click-fastclassifier -+will optionally compile it into dynamically loadable packages. The -+Classifier elements in the input configuration are changed to use new -+FastClassifier elements, and the resulting configuration, plus source code -+and any compiled packages, are combined into an archive and written to the -+standard output. You can install such an archive into the -+.M click.o 8 -+Linux kernel module with -+.M click-install 1 : -+.Sp -+.nf -+ % click-fastclassifier -k CONFIGURATION | click-install -+.fi -+.Sp -+The -+.M click 1 -+user level driver can read the archives directly. -+.PP -+The -+.B click-fastclassifier -+transformation can be reversed with the -+.B \-\-reverse -+option. -+' -+.SH "OPTIONS" -+' -+If any filename argument is a single dash "-", -+.B click-fastclassifier -+will use the standard input or output instead, as appropriate. -+' -+.TP 5 -+.BI \-f " file" -+.PD 0 -+.TP -+.BI \-\-file " file" -+Read the router configuration to transform from -+.IR file . -+The default is the standard input. -+' -+.Sp -+.TP 5 -+.BI \-e " expr" -+.PD 0 -+.TP -+.BI \-\-expression " expr" -+Use -+.IR expr , -+a string in the Click language, as the router configuration to transform. -+' -+.Sp -+.TP -+.BI \-o " file" -+.TP -+.BI \-\-output " file" -+Write the output router configuration to -+.IR file . -+The default is the standard output. -+' -+.Sp -+.TP -+.BR \-k ", " \-\-kernel -+Generate a dynamically loadable package for the -+.M click.o 8 -+Linux kernel module. -+' -+.Sp -+.TP -+.BR \-u ", " \-\-user -+Generate a dynamically loadable package for the -+.M click 1 -+user-level driver. -+' -+.Sp -+.TP 5 -+.BR \-s ", " \-\-source -+Output only the source code for the FastClassifier elements. -+' -+.Sp -+.TP 5 -+.BR \-c ", " \-\-config -+Output only the new configuration (the one that includes FastClassifiers). -+' -+.Sp -+.TP 5 -+.BR \-r ", " \-\-reverse -+Reverse the tranformation. That is, remove any existing FastClassifier -+elements and replace them with equivalent Classifiers. -+' -+.Sp -+.TP 5 -+.BR \-q ", " \-\-quiet -+Compile code quietly (without echoing commands or top-level warnings). -+' -+.Sp -+.TP 5 -+.BI \-\-help -+Print usage information and exit. -+' -+.Sp -+.TP -+.BI \-\-version -+Print the version number and some quickie warranty information and exit. -+' -+.PD -+' -+.SH "SEE ALSO" -+.M click 1 , -+.M click-devirtualize 1 , -+.M click-install 1 , -+.M click 5 , -+.M click.o 8 , -+.M Classifier n , -+.M IPClassifier n , -+.M IPFilter n -+' -+.SH AUTHOR -+.na -+Eddie Kohler, kohler@cs.ucla.edu -+.br -+http://www.pdos.lcs.mit.edu/click/ -+' -diff -Nurb click-1.6.0/inst/share/man/man1/click-flatten.1 click-1.6.0-27/inst/share/man/man1/click-flatten.1 ---- click-1.6.0/inst/share/man/man1/click-flatten.1 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/man1/click-flatten.1 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,133 @@ -+.\" -*- mode: nroff -*- -+.ds V 1.5.0 -+.ds E " \-\- -+.if t .ds E \(em -+.de Sp -+.if n .sp -+.if t .sp 0.4 -+.. -+.de Es -+.Sp -+.RS 5 -+.nf -+.. -+.de Ee -+.fi -+.RE -+.PP -+.. -+.de Rs -+.RS -+.Sp -+.. -+.de Re -+.Sp -+.RE -+.. -+.de M -+.BR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RB "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH CLICK-FLATTEN 1 "21/May/2001" "Version \*V" -+.SH NAME -+click-flatten \- removes compound elements from a Click configuration -+' -+.SH SYNOPSIS -+.B click-flatten -+.RI \%[ options ] -+.RI \%[ param = value " ...]" -+.RI \%[ router\-file ] -+' -+.SH DESCRIPTION -+The -+.B click-flatten -+tool flattens a Click router configuration, compiling all its compound -+elements away, and writes the resulting configuration to the standard -+output. It can also output information about the file. -+' -+.SH "OPTIONS" -+' -+If any filename argument is a single dash "-", -+.B click-flatten -+will use the standard input or output instead, as appropriate. -+' -+.TP 5 -+.BR \-c ", " \-\-classes -+.PD 0 -+Output an alphabetical list of the element classes used by the flattened -+router file, one per line, instead of the usual configuration. -+' -+.Sp -+.TP 5 -+.BR \-n ", " \-\-elements -+Output an alphabetical list of the element names in the flattened router -+file, one per line, instead of the usual configuration. -+' -+.Sp -+.TP 5 -+.BR \-d ", " \-\-declaration -+Output the element declarations in the flattened router file, one per line, -+instead of the usual configuration. -+' -+.Sp -+.TP 5 -+.BR \-f ", " \-\-file " \fIfile" -+Read the router configuration to flatten from -+.IR file . -+The default is the standard input. -+' -+.Sp -+.TP 5 -+.BR \-e ", " \-\-expression " \fIexpr" -+Use -+.IR expr , -+a string in the Click language, as the router configuration to flatten. -+' -+.Sp -+.TP -+.BR \-\-config -+Output flattened configuration only -- if the input was an archive, ignore -+other archive elements. -+' -+.Sp -+.TP -+.BR \-\-expand\-vars -+Expand global variables. By default, -+.B click-flatten -+does not expand global variables into configuration strings, allowing later -+operations, such as -+.BR click-install , -+to override their values. -+' -+.Sp -+.TP -+.BR \-o ", " \-\-output " \fIfile" -+Write the flattened router configuration to -+.IR file . -+The default is the standard output. -+' -+.Sp -+.TP 5 -+.BI \-\-help -+Print usage information and exit. -+' -+.Sp -+.TP -+.BI \-\-version -+Print the version number and some quickie warranty information and exit. -+' -+.PD -+' -+.SH "SEE ALSO" -+.M click 5 , -+.M click-check 1 , -+.M click-xform 1 -+' -+.SH AUTHOR -+.na -+Eddie Kohler, kohler@cs.ucla.edu -+.br -+http://www.pdos.lcs.mit.edu/click/ -+' -diff -Nurb click-1.6.0/inst/share/man/man1/click-install.1 click-1.6.0-27/inst/share/man/man1/click-install.1 ---- click-1.6.0/inst/share/man/man1/click-install.1 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/man1/click-install.1 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,237 @@ -+.\" -*- mode: nroff -*- -+.ds V 1.2 -+.ds D 27/Apr/2000 -+.ds E " \-\- -+.if t .ds E \(em -+.de Sp -+.if n .sp -+.if t .sp 0.4 -+.. -+.de Es -+.Sp -+.RS 5 -+.nf -+.. -+.de Ee -+.fi -+.RE -+.PP -+.. -+.de Rs -+.RS -+.Sp -+.. -+.de Re -+.Sp -+.RE -+.. -+.de M -+.BR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RB "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH CLICK-INSTALL 1 "\*D" "Version \*V" -+.SH NAME -+click-install \- installs a Click configuration into the kernel module driver -+' -+.SH SYNOPSIS -+.B click-install -+.RI \%[ options ] -+.RI \%[ param = value " ...]" -+.RI \%[ router\-file ] -+' -+.SH DESCRIPTION -+.B Click-install -+is a convenience program that installs a Click router configuration -+into the current Linux kernel. It reads a router configuration file in the -+.M click 5 -+language, installs the -+.M click.o 8 -+kernel module if necessary, compiles and/or installs any dynamically -+loadable packages required by the router configuration, installs the router -+configuration itself by writing it to /click/config, and uninstalls -+any unused packages. It reports any errors to standard error, including -+errors reported by the Click module, and returns a zero (true) exit status -+if and only if the configuration was successfully installed. -+' -+.SH "OPTIONS" -+' -+Arguments such as "NAME=value" set configuration parameters, overriding any -+existing settings. Thus, "echo \%'Message($MSG)' | \fBclick\-install\fR -+MSG=Hi" will cause the kernel module to print "Hi". -+.PP -+If any filename argument is a single dash "-", -+.B click-install -+will use the standard input or output instead, as appropriate. -+' -+.TP 5 -+.BI \-f " file" -+.PD 0 -+.TP -+.BI \-\-file " file" -+Read the router configuration to transform from -+.IR file . -+The default is the standard input. -+' -+.Sp -+.TP -+.BI \-e " expr" -+.TP -+.BI \-\-expression " expr" -+Use -+.IR expr , -+a string in the Click language, as the router configuration. -+' -+.Sp -+.TP 5 -+.BR \-h ", " \-\-hotswap -+Hot-swap install the new configuration. If you supply this option, the new -+configuration will only be installed if it initializes correctly. If it -+fails, the old configuration will continue to route packets without -+interruption. Furthermore, state from the old configuration\*Esuch as -+packets contained in -+.M Queue n -+elements\*Ewill be swapped into the new configuration under certain -+conditions. See under -+.B /click/hotconfig -+in -+.M click.o 8 -+for details. -+' -+.Sp -+.TP 5 -+.BR \-u ", " \-\-uninstall -+Uninstall and reinstall the Click kernel module. -+.B \-\-hotswap -+and -+.B \-\-uninstall -+are mutually exclusive. -+' -+.Sp -+.TP 5 -+.BR \-t ", " "\-\-threads=\fIN\fP" -+The Click kernel module will run -+.I N -+threads per router. Click must have been build with -+\f(CW\-\-enable\-multithread\fR. This option only matters when -+.B click-install -+installs a Click kernel module. The thread count on an installed kernel -+module cannot be changed. (The -+.B \-\-uninstall -+option is useful here.) -+' -+.Sp -+.TP 5 -+.BR \-n ", " "\-\-priority=\fIN\fP" -+Set the Click kernel thread's priority to -+.IR N . -+Lower numbers have higher priority. A typical range for priority values is -+-20 (highest) to +19 (lowest). If you do not give a -+.B \-\-priority -+option, then the current priority is left unchanged. -+' -+.Sp -+.TP 5 -+.BR \-G ", " "\-\-greedy" -+The Click kernel module will claim an entire CPU, not allowing any other -+process to run. This option only matters when -+.B click-install -+installs a Click kernel module; the greediness of an installed kernel -+module cannot be changed. (The -+.B \-\-uninstall -+option is useful here.) -+' -+.Sp -+.TP 5 -+.BR \-p ", " "\-\-private" -+Make the /click directory hierarchy readable only by the owning user, which -+is usually root. Generally, files under /click are writable only by the -+owner, but readable by everyone. Works only when simultaneously loading a -+Click kernel module; see -+.BR \-\-uninstall . -+' -+.Sp -+.TP 5 -+.BR \-U ", " "\-\-user=\fIUSER\fR[:\fIGROUP\fR]" -+Set the user ID and group ID of the /click directory hierarchy to -+.I USER -+and group -+.IR GROUP . -+By default -+.IR USER " and " GROUP -+are both root. Works only when simultaneously loading a -+Click kernel module; see -+.BR \-\-uninstall . -+' -+.Sp -+.TP 5 -+.BR \-\-\cpu =\fIN -+Sets the Click thread to preferentially run on CPU -+.IR N . -+If Click is running -+.I K -+threads, they are run preferentially on CPUs -+.I N -+up to, but not including, -+.I N -++ -+.IR K . -+Thread affinities are ignored if they refer to unavailable CPUs. Works -+only when simultaneously loading a Click kernel module; see -+.BR \-\-uninstall . -+' -+.Sp -+.TP 5 -+.BR \-m ", " \-\-map -+(Linux 2.4 only) If a Click kernel module is installed, write its load map -+to standard output. This can make it easier to debug kernel panics. -+' -+.Sp -+.TP 5 -+.BR \-V ", " \-\-verbose -+Print information about each step in the install process, including the -+filenames of any installed modules. -+' -+.Sp -+.TP 5 -+.BI \-\-help -+Print usage information and exit. -+' -+.Sp -+.TP -+.BI \-\-version -+Print the version number and some quickie warranty information and exit. -+' -+.PD -+' -+.SH "EXIT STATUS" -+.B Click-install -+exits with one of the following return values: -+.TP 5 -+.B 0 -+The configuration was successfully installed. -+.TP -+.B 1 -+Some error prevented -+.B click-install -+from attempting to install the configuration. For example, perhaps the -+configuration could not be parsed, or the kernel module could not be -+loaded. -+.TP -+.B 2 -+The configuration was installed, but the kernel module reports that it -+could not be initialized. -+.PD -+' -+.SH "SEE ALSO" -+.M click-uninstall 1 , -+.M click 5 , -+.M click.o 8 -+' -+.SH AUTHOR -+.na -+Eddie Kohler, kohler@cs.ucla.edu -+.br -+http://www.pdos.lcs.mit.edu/click/ -+' -diff -Nurb click-1.6.0/inst/share/man/man1/click-mkmindriver.1 click-1.6.0-27/inst/share/man/man1/click-mkmindriver.1 ---- click-1.6.0/inst/share/man/man1/click-mkmindriver.1 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/man1/click-mkmindriver.1 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,196 @@ -+.\" -*- mode: nroff -*- -+.ds V 1.2.0 -+.ds E " \-\- -+.if t .ds E \(em -+.de Sp -+.if n .sp -+.if t .sp 0.4 -+.. -+.de Es -+.Sp -+.RS 5 -+.nf -+.. -+.de Ee -+.fi -+.RE -+.PP -+.. -+.de Rs -+.RS -+.Sp -+.. -+.de Re -+.Sp -+.RE -+.. -+.de M -+.BR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RB "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH CLICK-MKMINDRIVER 1 "28/Apr/2001" "Version \*V" -+.SH NAME -+click-mkmindriver \- generates a build environment for a minimal Click driver -+' -+.SH SYNOPSIS -+.B click-mkmindriver -+.RI "-p " packagename -+.RI \%[ options "] \e" -+.RI \%[ param = value " ...]" -+.br -+.RI "\% [" router\-files... ] -+' -+.SH DESCRIPTION -+The -+.B click-mkmindriver -+tool generates a build environment for a minimal Click driver\*Ethat is, a -+driver containing only the elements necessary to run the configurations in -+the -+.IR router\-files . -+You must supply a name for the driver, -+.IR packagename . -+Running -+.RI "`make MINDRIVER=" packagename "'" -+will create either a user-level driver named -+.RI "`" packagename "click'," -+or a Linux kernel module named -+.RI "`" packagename "click.o'." -+Run -+.B click-mkmindriver -+from the respective Click build directory, or supply a relevant -+.B \-\-directory -+option. -+.PP -+Sometimes one element depends weakly on another, especially for parsing. -+For instance, the -+.M IPEncap n -+element can take advantage of protocol names supplied by the -+.M IPNameInfo n -+class; if IPNameInfo is not available, IPEncap will still work, it just -+won't be able to parse protocol names. -+.B Click-mkmindriver -+does not include weakly dependent elements automatically, so you must -+supply them explicitly with -+.B \-E -+options if you want them. Common examples include IPNameInfo and -+IPFieldInfo. If a configuration fails to parse, try including these -+elements. -+' -+.SH "OPTIONS" -+' -+If any filename argument is a single dash "-", -+.B click-mkmindriver -+will use the standard input or output instead, as appropriate. -+' -+.TP 5 -+.BI \-p " packagename" -+.PD 0 -+.TP -+.BI \-\-package " packagename" -+Specifies the package name. -+' -+.Sp -+.TP -+.BI \-f " file" -+.TP -+.BI \-\-file " file" -+Read a router configuration from -+.IR file . -+' -+.Sp -+.TP -+.BI \-e " expr" -+.TP -+.BI \-\-expression " expr" -+Use -+.IR expr , -+a string in the Click language, as a router configuration. -+' -+.Sp -+.TP -+.BR \-a ", " \-\-all -+Include every primitive element class, even those in compound elements that -+are not themselves used, in the following router configurations. This is -+useful to add support for -+.M click-xform 1 , -+for example. -+' -+.Sp -+.TP -+.BR \-l ", " \-\-linuxmodule -+Output a build environment for a Linux kernel module driver. -+' -+.Sp -+.TP -+.BR \-u ", " \-\-userlevel -+Output a build environment for a user-level driver. This is the default. -+' -+.Sp -+.TP -+.BI \-d " dir" -+.TP -+.BI \-\-directory " dir" -+Write output file `elements_\fIpackagename\fR.conf' to the directory -+.IR dir . -+This directory must already contain a normal build environment for the -+Click Linux module or user-level driver. (The driver required depends on -+the -+.B \-k -+and -+.B \-u -+options.) The default directory is `.'. -+' -+' -+.Sp -+.TP -+.BI \-E " elts" -+.TP -+.BI \-\-elements " elts" -+Include the element classes -+.IR elts , -+a space-separated list of element class names. -+.B Click-mkmindriver -+will also read a router configuration, but see -+.B \-\-no\-file -+below. -+' -+.Sp -+.TP -+.BR \-\-no\-extras -+Do not add optional, but useful, element classes by default. Currently, -+these classes are -+.M Align n -+and -+.M IPNameInfo n ". " -+If a configuration or option explicitly requires one of these classes, it -+will of course be included. -+' -+.Sp -+.TP -+.BR \-V ", " \-\-verbose -+Print verbose progress information to standard error. -+' -+.Sp -+.TP 5 -+.BI \-\-help -+Print usage information and exit. -+' -+.Sp -+.TP -+.BI \-\-version -+Print the version number and some quickie warranty information and exit. -+' -+.PD -+' -+.SH "SEE ALSO" -+.M click 1 , -+.M click.o 8 -+' -+.SH AUTHOR -+.na -+Eddie Kohler, kohler@cs.ucla.edu -+.br -+http://www.read.cs.ucla.edu/click/ -+' -diff -Nurb click-1.6.0/inst/share/man/man1/click-pretty.1 click-1.6.0-27/inst/share/man/man1/click-pretty.1 ---- click-1.6.0/inst/share/man/man1/click-pretty.1 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/man1/click-pretty.1 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,591 @@ -+.\" -*- mode: nroff -*- -+.ds V 1.5.0 -+.ds E " \-\- -+.if t .ds E \(em -+.de Sp -+.if n .sp -+.if t .sp 0.4 -+.. -+.de Es -+.Sp -+.RS 5 -+.nf -+.. -+.de Ee -+.fi -+.RE -+.PP -+.. -+.de Rs -+.RS -+.Sp -+.. -+.de Re -+.Sp -+.RE -+.. -+.de M -+.BR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RB "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH CLICK-PRETTY 1 "4/Jan/2002" "Version \*V" -+.SH NAME -+click-pretty \- pretty-prints a Click configuration in HTML -+' -+.SH SYNOPSIS -+.B click-pretty -+.RI \%[ options ", " param = value " ...]" -+.RI \%[ routerfile ] -+.RI "> " output\fR.html -+.br -+.B click-pretty -+.B \-\-dot -+.RI \%[...] -+.RI \%[ routerfile \] -+.RB "| " "dot \fR\-Tpng" -+.RI "> " output\fR.png -+' -+.SH DESCRIPTION -+The -+.B click-pretty -+tool pretty-prints Click configurations into HTML files, including syntax -+highlighting and optional indexes; or, optionally, it can output a graph -+definition suitable for passing to -+.M dot 1 . -+.B Click-pretty -+reads a router configuration and, optionally, an HTML-like template file, -+replaces special tags in the template with HTML code derived from the -+configuration, and writes the result to the standard output. -+' -+.SH "HTML TEMPLATES" -+.BR Click-pretty 's -+HTML output is based on a template file that contains special HTML-like -+tags. These tags, which start with a tilde "~", control -+.BR click-pretty 's -+operation. -+' -+.SS "The config Tag" -+' -+.PP -+The -+.B <~config> -+tag expands to a pretty-printed version of the router configuration. -+Various features in the configuration are highlighted with HTML -+.B -+tags; the class differs from feature to feature, so you can affect the -+output with CSS. The classes are: -+.PP -+.TP 10 -+.B c-cmt -+.PD 0 -+Comments. -+.TP -+.B c-kw -+Keywords. -+.TP -+.B c-cfg -+Configuration strings. -+.TP -+.B c-cd -+Element class declarations. -+.TP -+.B c-ed -+Element declarations. -+.TP -+.B c-err -+Configuration errors. -+.PD -+.PP -+Other features of the output include: -+.TP 3 -+\(bu -+' -+Anchors marking element declarations and element class declarations. For -+example, the tag -+.BR "" -+encloses the declaration of an element named -+.BR X . -+' -+.TP -+\(bu -+' -+A -+.B span title -+attribute encloses every element reference, giving that element's -+declaration. Thus, a user can find out what class an element has by -+hovering their mouse over a reference to it. -+' -+.TP -+\(bu -+' -+Similarly, -+.BR "span title" s -+explain configuration errors in more detail. -+' -+.TP -+\(bu -+' -+Element class names are linked to element class declarations, for compound -+elements, or, optionally, to Web documentation, for primitive element -+classes. See the -+.B \-u -+option, below. -+' -+.SS "The elements Tag" -+' -+.PP -+The -+.B "<~elements>" -+tag expands to an alphabetical list of the elements and/or element classes -+used in the router configuration. The -+.B entry -+attribute determines how elements are rendered; -+.B typeentry -+does the same for classes. Inside these attributes, subtags like -+.BR <~name> , -+.BR <~type> , -+and -+.BR <~inputs> -+expand to information about the relevant element or type. For example, this -+.B <~elements> -+tag expands to a comma-separated list of the configuration's elements: -+.Es -+<~elements entry="<~name>" sep=", "> -+.Ee -+This one expands to an unordered list of declarations, with element names -+and type names linked to relevant declarations in the configuration: -+.Es -+
    -+<~elements entry="
  • <~name link> :: <~type link>
  • "> -+
-+.Ee -+' -+.SS "elements Tag Attributes" -+.TP 5 -+.BR entry =\fItext -+Sets the text used for each element in the configuration. If this attribute -+is absent, the -+.B <~element> -+tag's expansion will not mention elements. -+' -+.TP 5 -+.BR typeentry =\fItext -+Sets the text used for each element type used by the configuration. If this -+attribute is absent, the -+.B <~element> -+tag's expansion will not mention element types. -+' -+.TP 5 -+.BR sep =\fItext -+Sets the text used to separate entries in the expansion. -+' -+.TP 5 -+.BR column =\fIwhich\fR/\fIcount -+If present, -+.I count -+should be a number greater than 1, and -+.I which -+should be between 1 and -+.IR count . -+The -+.B <~element> -+tag is expanded, then broken into -+.I count -+columns at entry boundaries. Only the -+.IR which th -+column is printed. -+' -+.TP 5 -+.BR configlink =\fItext -+See the -+.B <~configlink> -+subtag below. -+' -+.TP 5 -+.BR typeref =\fItext -+See the -+.B <~typerefs> -+subtag below. -+' -+.TP 5 -+.BR inputentry "=\fItext\fR, " noinputentry "=\fItext\fR" -+See the -+.B <~inputs> -+subtag below. -+' -+.TP 5 -+.BR outputentry "=\fItext\fR, " nooutputentry "=\fItext\fR" -+See the -+.B <~outputs> -+subtag below. -+' -+.TP 5 -+.BR inputconnection "=\fItext\fR, " noinputconnection "=\fItext\fR" -+See the -+.B <~inputconnections> -+subtag below. -+' -+.TP 5 -+.BR outputconnection "=\fItext\fR, " nooutputconnection "=\fItext\fR" -+See the -+.B <~outputconnections> -+subtag below. -+' -+.PD -+' -+.SS "Subtags" -+.PP -+These subtags apply only within -+.B <~elements> -+entries and type entries. -+' -+.TP 5 -+.BR "<~name [link" "=\fIlink\fR" "]>" -+Expands to the current element's name. When the -+.B link -+attribute is present, the name is contained in a link pointing at the -+declaration site within the router configuration or, when -+.I link -+equals "type", the element class's Web documentation. -+' -+.TP 5 -+.BR "<~type [link]>" -+Expands to the current element type's name, or the current element's -+type-name. When the -+.B link -+attribute is present, the name is contained in a link pointing at the -+the element class's Web documentation. -+' -+.TP 5 -+.BR "<~config [limit" "=\fIlimit" "] [parens]>" -+Elements only. Expands to the current element's configuration string. The -+result contains at most \fIlimit\fR characters; if the configuration string -+was longer, -+.B click-pretty -+prints its first \fIlimit\fR characters, followed by an ellipsis. If -+.B parens -+was supplied, non-empty configuration strings are enclosed in parentheses. -+' -+.TP 5 -+.BR "<~configlink [text" "=\fItext" "]>" -+Elements only. Expands to a link to the element's declaration in the router -+configuration. The -+.B text -+attribute gives the link text; it defaults to the -+.B <~elements> -+tag's -+.B configlink -+attribute. -+' -+.TP 5 -+.BR "<~typerefs [entry" "=\fItext" "] [sep" "=\fIsep" "]>" -+Expands to an alphabetical list of elements in the configuration that have -+the current element type, separated by \fIsep\fR. The -+.B entry -+attribute specifies how to render each element; it defaults to the -+.B <~elements> -+tag's -+.B typeref -+attribute. -+' -+.TP 5 -+.BR "<~ninputs [english]>" -+Elements only. Expands to the current element's number of input ports. If -+.B english -+was supplied, either "input" or "inputs" follows the number. -+' -+.TP 5 -+.BR "<~outputs [english]>" -+Elements only. Expands to the current element's number of output ports. If -+.B english -+was supplied, either "input" or "inputs" follows the number. -+' -+.TP 5 -+.BR "<~inputs [entry" "=\fItext" "] [noentry" "=\fItext" "] [sep" "=\fIsep" "]>" -+Elements only. Expands to a list of the element's input ports. The -+.B entry -+attribute specifies how to render each port; it defaults to the -+.B <~elements> -+tag's -+.B inputentry -+attribute. If the element has no input ports, the -+.B noentry -+attribute is used instead, which defaults to the -+.B <~elements> -+tag's -+.B noinputentry -+attribute. -+' -+.TP 5 -+.BR "<~outputs [entry" "=\fItext" "] [noentry" "=\fItext" "] [sep" "=\fIsep" "]>" -+Elements only. Expands to a list of the element's output ports. The -+.B entry -+attribute specifies how to render each port; it defaults to the -+.B <~elements> -+tag's -+.B outputentry -+attribute. If the element has no output ports, the -+.B noentry -+attribute is used instead, which defaults to the -+.B <~elements> -+tag's -+.B nooutputentry -+attribute. -+.PD -+' -+.TP 5 -+.BR "<~if test" "=\fItext" " [then" "=\fItext" "] [else" "=\fItext" "] [eq" "=\fItext" "]" -+.PD 0 -+.TP -+.BR " [ne" "=\fItext" "] [gt" "=\fItext" "] [lt" "=\fItext" "] [ge" "=\fItext" "] [le" "=\fItext" "]>" -+.PD -+Silently expands the -+.B test -+attribute, then makes a comparison. If that comparison is true, expands the -+.B then -+attribute; otherwise, expands the -+.B else -+attribute. The comparison depends on which of the other attributes is -+present. When -+.B eq -+is supplied, the comparison is true if -+.BR test 's -+expansion equals -+.BR eq 's -+expansion. -+.B ne -+checks for inequality. -+The -+.BR gt , -+.BR lt , -+.BR ge , -+and -+.BR le -+attributes compare strings (or integers) in alphabetical (or numeric) -+sorting order. A -+.B gt -+comparison is true when -+.BR test 's -+expansion is greater than -+.BR gt 's -+expansion; similarly, -+.B lt -+checks for less than, -+.B ge -+for greater-than-or-equal-to, and -+.B le -+for less-than-or-equal-to. If none of these attributes are present, the -+test is true if -+.B test -+expands to a nonempty string. -+' -+.SS "Port-Specific Subtags" -+These subtags apply only within -+.B <~inputs> -+and -+.B <~outputs> -+entries. -+' -+.TP 5 -+.BR "<~port>" -+Expands to the current port number. -+' -+.TP 5 -+.BR "<~processing>" -+Expands to the current port's processing value: either "push", "pull", or -+(rarely) "agnostic". -+' -+.TP 5 -+.BR "<~inputconnections [entry" "=\fItext" "] [noentry" "=\fItext" "] [sep" "=\fIsep\fR" "]>" -+Expands to a list of the output ports to which this input port is -+connected. List entries are separated by \fIsep\fR. The -+.B entry -+attribute specifies how to render each port; it defaults to the -+.B <~elements> -+tag's -+.B inputconnection -+attribute. If the port is not connected to anything, the -+.B noentry -+attribute is used instead, which defaults to the -+.B <~elements> -+tag's -+.B noinputconnection -+attribute. -+' -+.TP 5 -+.BR "<~outputconnections [entry" "=\fItext" "] [noentry" "=\fItext" "] [sep" "=\fIsep\fR" "]>" -+Expands to a list of the input ports to which this output port is -+connected. List entries are separated by \fIsep\fR. The -+.B entry -+attribute specifies how to render each port; it defaults to the -+.B <~elements> -+tag's -+.B outputconnection -+attribute. If the port is not connected to anything, the -+.B noentry -+attribute is used instead, which defaults to the -+.B <~elements> -+tag's -+.B nooutputconnection -+attribute. -+.PD -+' -+.SH "OPTIONS" -+' -+If any filename argument is a single dash "-", -+.B click-align -+will use the standard input or output instead, as appropriate. -+' -+.TP 5 -+.BI \-f " file" -+.PD 0 -+.TP -+.BI \-\-file " file" -+Read the router configuration from -+.IR file . -+The default is the standard input. -+' -+.Sp -+.TP -+.BI \-e " expr" -+.TP -+.BI \-\-expression " expr" -+Use -+.IR expr , -+a string in the Click language, as the router configuration. -+' -+.Sp -+.TP -+.BI \-o " file" -+.TP -+.BI \-\-output " file" -+Write HTML output to -+.IR file . -+The default is the standard output. -+' -+.Sp -+.TP -+.BI \-t " file" -+.TP -+.BI \-\-template " file" -+Use -+.I file -+as the HTML template file. If no template is specified, -+.B click-pretty -+will use a built-in default. -+' -+.Sp -+.TP -+.BI \-d "name\fR=\fItext" -+.TP -+.BI \-\-define " name\fR=\fItext" -+Defines a new tag named -+.IR name . -+Occurrences of -+.BI <~ name > -+in the template will be replaced with the expansion of -+.IR text . -+' -+.Sp -+.TP -+.BR \-\-userlevel -+.TP -+.BR \-k ", " \-\-linuxmodule -+.TP -+.BR \-b ", " \-\-bsdmodule -+Specifies the driver for which the configuration was designed. This is -+necessary to discover whether ports are push or pull. Usually, you don't -+have to give any of these options; -+.B click-pretty -+will figure out the right answer by looking at the configuration. -+' -+.Sp -+.TP -+.BI \-u " url" -+.TP -+.BI \-\-class\-docs " url" -+Web documentation for primitive element classes is available at -+.IR url . -+The -+.I url -+may contain a single "%s", which is replaced with the element class's -+documentation name. (This is the same as its regular name, unless -+.B =title -+was specified in the documentation comment.) URLs specified in elementmap -+files with $webdoc take precedence over -+.BR \-u . -+' -+.Sp -+.TP -+.BI \-\-package\-docs " package\fR=\fIurl" -+Web documentation for primitive element classes in package -+.I package -+is available at -+.IR url . -+The -+.I url -+may contain a single "%s", which is replaced with the element class's -+documentation name. URLs specified in elementmap files take precedence over -+.BR \-\-package\-docs . -+' -+.Sp -+.TP -+.BI \-\-write\-template -+Output the template unmodified. This is useful for getting a look at the -+built-in default. -+' -+.Sp -+.TP -+.BI \-\-dot -+Rather than generating HTML, generate a graph definition suitable for input -+to the -+.M dot 1 -+program (part of the -+.B graphviz -+suite originally from Bell Labs). Using -+.BR \-\-dot , -+you can automatically generate a PNG or PostScript graphic showing a -+picture of the Click configuration, as in "\fBclick-pretty\fR router.click -+| \fBdot\fR \-Tpng >routerpicture.png". -+' -+.Sp -+.TP -+.BI \-C " path" -+.TP -+.BI \-\-clickpath " path" -+Use -+.I path -+for CLICKPATH. -+' -+.Sp -+.TP 5 -+.BI \-\-help -+Print usage information and exit. -+' -+.Sp -+.TP -+.BI \-\-version -+Print the version number and some quickie warranty information and exit. -+' -+.PD -+' -+.SH FILES -+.TP 5 -+.B CLICKDIR/share/click/elementmap -+.B Click-pretty -+uses elementmap files to determine whether ports are push or pull. You can -+also add `$webdoc URL' lines to elementmap files; -+.B click-pretty -+will use that URL for element classes described in that elementmap. As with -+the -+.B \-u -+option, a $webdoc URL can contain `%s', which is replaced with the element -+class name. -+' -+.SH AUTHOR -+.na -+Eddie Kohler, kohler@cs.ucla.edu -+.br -+http://www.pdos.lcs.mit.edu/click/ -diff -Nurb click-1.6.0/inst/share/man/man1/click-uncombine.1 click-1.6.0-27/inst/share/man/man1/click-uncombine.1 ---- click-1.6.0/inst/share/man/man1/click-uncombine.1 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/man1/click-uncombine.1 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,107 @@ -+.\" -*- mode: nroff -*- -+.ds V 1.0.5 -+.ds E " \-\- -+.if t .ds E \(em -+.de Sp -+.if n .sp -+.if t .sp 0.4 -+.. -+.de Es -+.Sp -+.RS 5 -+.nf -+.. -+.de Ee -+.fi -+.RE -+.PP -+.. -+.de Rs -+.RS -+.Sp -+.. -+.de Re -+.Sp -+.RE -+.. -+.de M -+.BR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RB "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH CLICK-UNCOMBINE 1 "27/Apr/2000" "Version \*V" -+.SH NAME -+click-uncombine \- separates a component from a combined Click configuration -+' -+.SH SYNOPSIS -+.B click-uncombine -+.RI \%[ param = value " ...]" -+.RI \%[ options ] -+.RI \%[ router\-file " [" \fIcomponent\fR ]] -+' -+.SH DESCRIPTION -+The -+.B click-uncombine -+tool reads a combined router configuration created by -+.M click-combine 1 -+and outputs one of its components. The chosen component is specified by its -+name, as originally specified to -+.M click-combine 1 . -+' -+.SH "OPTIONS" -+' -+If any filename argument is a single dash "-", -+.B click-uncombine -+will use the standard input or output instead, as appropriate. You can give -+one or two non-option arguments; the first is the router file and the -+second, the component name. -+' -+.TP 5 -+.BI \-f " file" -+.PD 0 -+.TP -+.BI \-\-file " file" -+Read the combined router configuration from -+.IR file . -+The default is the standard input. -+' -+.Sp -+.TP -+.BI \-n " name" -+.TP -+.BI \-\-name " name" -+Output the router component named -+.IR name . -+' -+.Sp -+.TP 5 -+.BI \-o " file" -+.TP -+.BI \-\-output " file" -+Write the output router configuration to -+.IR file . -+The default is the standard output. -+' -+.Sp -+.TP 5 -+.BI \-\-help -+Print usage information and exit. -+' -+.Sp -+.TP -+.BI \-\-version -+Print the version number and some quickie warranty information and exit. -+' -+.PD -+' -+.SH "SEE ALSO" -+.M click-combine 1 , -+.M click 5 -+' -+.SH AUTHOR -+.na -+Eddie Kohler, kohler@cs.ucla.edu -+.br -+http://www.pdos.lcs.mit.edu/click/ -+' -diff -Nurb click-1.6.0/inst/share/man/man1/click-undead.1 click-1.6.0-27/inst/share/man/man1/click-undead.1 ---- click-1.6.0/inst/share/man/man1/click-undead.1 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/man1/click-undead.1 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,203 @@ -+.\" -*- mode: nroff -*- -+.ds V 1.1 -+.ds E " \-\- -+.if t .ds E \(em -+.de Sp -+.if n .sp -+.if t .sp 0.4 -+.. -+.de Es -+.Sp -+.RS 5 -+.nf -+.. -+.de Ee -+.fi -+.RE -+.PP -+.. -+.de Rs -+.RS -+.Sp -+.. -+.de Re -+.Sp -+.RE -+.. -+.de M -+.BR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RB "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH CLICK-UNDEAD 1 "28/Aug/2000" "Version \*V" -+.SH NAME -+click-undead \- removes dead code from a Click configuration -+' -+.SH SYNOPSIS -+.B click-undead -+.RI \%[ param = value " ...]" -+.RI \%[ options ] -+.RI \%[ router\-file ] -+' -+.SH DESCRIPTION -+The -+.B click-undead -+tool speeds up some Click configurations by removing dead code. This -+includes: -+.IP "\(bu" 3 -+Any -+.M Null n , -+.M StaticSwitch n , -+and -+.M StaticPullSwitch n -+elements. -+.IP "\(bu" 3 -+Any elements not reachable from both a -+.I source element -+and a -+.IR "sink element" . -+Click packet source elements include -+.M FromDevice n -+and -+.M InfiniteSource n ; -+packet sink elements include -+.M ToDump n , -+.M ToDevice n , -+and -+.M Discard n -+(when it is used as a pull element). -+.IP "\(bu" 3 -+Dead ports on scheduler elements -+.RM ( RoundRobinSched n , -+.M PrioSched n , -+.M StrideSched n , -+and so on) are removed. These are ports that no packet could ever enter. -+.IP "\(bu" 3 -+Scheduler elements that have only one attached input are redundant, so they -+are removed. -+.IP "\(bu" 3 -+Dead ports on tee elements -+.RM ( Tee n , -+.M PullTee n ) -+are removed. These are ports with no packet sink downstream. -+.IP "\(bu" 3 -+Tee elements that have only one attached output are redundant, so they are -+removed. -+.PP -+.B click-undead -+will not remove any information elements. Connections to removed elements -+are rerouted appropriately. -+.PP -+For example, -+.B click-undead -+will transform this configuration, -+.Sp -+.nf -+ Idle -> Counter -> td1 :: ToDump(a); -+ InfiniteSource -> ss :: StaticSwitch(1); -+ ss[0] -> ToDump(c); -+ ss[1] -> Queue -> rr :: RoundRobinSched; -+ Idle -> [1]rr; -+ rr -> td2 :: ToDump(b); -+.fi -+.Sp -+into this configuration: -+.Sp -+.nf -+ InfiniteSource -> Queue -> td2 :: ToDump(b); -+.fi -+.Sp -+Note that the resulting configuration is not guaranteed to have the same -+semantics as the input configuration. Here, for example, the result -+configuration does not truncate the files `a' and `c'. -+.PP -+The resulting configuration is written to the standard output. -+' -+.SH "OPTIONS" -+' -+If any filename argument is a single dash "-", -+.B click-undead -+will use the standard input or output instead, as appropriate. -+' -+.TP 5 -+.BI \-f " file" -+.PD 0 -+.TP -+.BI \-\-file " file" -+Read the router configuration to transform from -+.IR file . -+The default is the standard input. -+' -+.Sp -+.TP -+.BI \-e " expr" -+.TP -+.BI \-\-expression " expr" -+Use -+.IR expr , -+a string in the Click language, as the router configuration to transform. -+' -+.Sp -+.TP -+.BI \-o " file" -+.TP -+.BI \-\-output " file" -+Write the output router configuration to -+.IR file . -+The default is the standard output. -+' -+.Sp -+.TP -+.BR \-k ", " \-\-kernel -+Check the configuration only for the -+.M click.o 8 -+Linux kernel module driver. -+' -+.Sp -+.TP -+.BR \-u ", " \-\-user -+Check the configuration only for the -+.M click 1 -+user-level driver. -+' -+.Sp -+.TP 5 -+.BR \-c ", " \-\-config -+Output only the new configuration, not any archived packages. -+' -+.Sp -+.TP 5 -+.BR \-V ", " \-\-verbose -+Print debugging information about the transformation\*Efor example, which -+elements are chosen as sources and sinks. -+' -+.Sp -+.TP 5 -+.BI \-\-help -+Print usage information and exit. -+' -+.Sp -+.TP -+.BI \-\-version -+Print the version number and some quickie warranty information and exit. -+' -+.PD -+' -+.SH "SEE ALSO" -+.M click 1 , -+.M click-install 1 , -+.M click 5 , -+.M click.o 8 , -+.M Discard n , -+.M FromDevice n , -+.M InfiniteSource n , -+.M ToDump n , -+.M ToDevice n -+' -+.SH AUTHOR -+.na -+Eddie Kohler, kohler@cs.ucla.edu -+.br -+http://www.pdos.lcs.mit.edu/click/ -+' -diff -Nurb click-1.6.0/inst/share/man/man1/click-uninstall.1 click-1.6.0-27/inst/share/man/man1/click-uninstall.1 ---- click-1.6.0/inst/share/man/man1/click-uninstall.1 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/man1/click-uninstall.1 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,73 @@ -+.\" -*- mode: nroff -*- -+.ds V 1.0 -+.ds E " \-\- -+.if t .ds E \(em -+.de Sp -+.if n .sp -+.if t .sp 0.4 -+.. -+.de Es -+.Sp -+.RS 5 -+.nf -+.. -+.de Ee -+.fi -+.RE -+.PP -+.. -+.de Rs -+.RS -+.Sp -+.. -+.de Re -+.Sp -+.RE -+.. -+.de M -+.BR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RB "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH CLICK-UNINSTALL 1 "9/Feb/2000" "Version \*V" -+.SH NAME -+click-uninstall \- uninstalls the Click kernel module -+' -+.SH SYNOPSIS -+.B click-uninstall -+.I \%[options] -+' -+.SH DESCRIPTION -+.B Click-uninstall -+is a convenience program that uninstalls Click from the current Linux -+kernel. It uninstalls the currently running configuration, any dynamically -+loadable Click packages, and the -+.M click.o 8 -+kernel module itself. -+' -+.SH "OPTIONS" -+' -+.TP 5 -+.BI \-\-help -+.PD 0 -+Print usage information and exit. -+' -+.Sp -+.TP -+.BI \-\-version -+Print the version number and some quickie warranty information and exit. -+' -+.PD -+' -+.SH "SEE ALSO" -+.M click-install 1 , -+.M click 5 , -+.M click.o 8 -+' -+.SH AUTHOR -+.na -+Eddie Kohler, kohler@cs.ucla.edu -+.br -+http://www.pdos.lcs.mit.edu/click/ -+' -diff -Nurb click-1.6.0/inst/share/man/man1/click-xform.1 click-1.6.0-27/inst/share/man/man1/click-xform.1 ---- click-1.6.0/inst/share/man/man1/click-xform.1 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/man1/click-xform.1 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,310 @@ -+.\" -*- mode: nroff -*- -+.ds V 1.0.3 -+.ds E " \-\- -+.if t .ds E \(em -+.de Sp -+.if n .sp -+.if t .sp 0.4 -+.. -+.de Es -+.Sp -+.RS 5 -+.nf -+.. -+.de Ee -+.fi -+.RE -+.PP -+.. -+.de Rs -+.RS -+.Sp -+.. -+.de Re -+.Sp -+.RE -+.. -+.de M -+.BR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RB "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH CLICK-XFORM 1 "31/Mar/2000" "Version \*V" -+.SH NAME -+click-xform \- pattern-based Click configuration optimizer -+' -+.SH SYNOPSIS -+.B click-xform -+.RI \%[ options ] -+.RI \%[ param = value " ...]" -+.RI \%[ router\-file " [" pattern\-files ...]] -+' -+.SH DESCRIPTION -+The -+.B click-xform -+tool is a Click router configuration optimizer. It reads files giving Click -+configuration patterns and their replacements, and a router configuration -+file. Then it replaces pattern matches in the configuration until none -+remain and writes the new configuration to the standard output. -+.PP -+Pattern files use the Click language (see -+.M click 5 ). -+They contain pairs of `elementclass' definitions, where each pair consists -+of one pattern text and one replacement text. The replacement for a pattern -+named -+.RI ` X ' -+must be named -+.RI ` X _Replacement'. -+This example pattern file replaces all Queues with Queue-Shaper -+combinations: -+.Rs -+.nf -+elementclass QueuePattern { -+ input -> Queue -> output; -+} -+elementclass QueuePattern_Replacement { -+ input -> Queue -> Shaper(200) -> output; -+} -+.fi -+.Re -+.PP -+A pattern text can contain an arbitrary number of elements, and an -+arbitrary number of input and output ports. Basically, a pattern matches a -+fragment of a router configuration when they have the same number of -+elements; their element classes match; all of the pattern's connections are -+duplicated in the fragment; and any connections into or out of the fragment -+correspond to connections to or from the pattern's input and output ports. -+The formal definition of matching is given below. -+.PP -+Any configuration strings in the pattern must match the configuration -+strings in the configuration subset. The pattern can use variables, which -+look like `$[letters, numbers and underscores]', to match a set of -+configuration strings; except for variables, the strings must match -+verbatim. A variable matches a single configuration argument. The same -+variable can be used multiple times in a pattern; if so, then it must match -+the same text on each occurrence. If a variable is used in the -+replacement's configuration strings, then when a replacement is made, the -+text that matched in the pattern will be inserted instead. For example, -+applying this pattern -+.Rs -+.nf -+elementclass Meters { -+ input -> Meter($a) -+ -> Shaper($b) -> output; -+} -+elementclass Meters_Replacement { -+ input -> Meter($b) -+ -> SlowShaper($a) -> output; -+} -+.fi -+.Re -+to this configuration -+.Rs -+.nf -+\&... -> Meter(1000) -> Shaper(2000) -> ... -+.fi -+.Re -+will create this result: -+.Rs -+.nf -+\&... -> Meter(2000) -> SlowShaper(1000) -> ... -+.fi -+.Re -+.PP -+The optimizer will not apply the same pattern to a configuration subset -+twice in succession. Specifically, every replacement element is marked with -+the pattern that generated it; a pattern will not match a configuration -+fragment if every element in that fragment came from that pattern. Thus, a -+pattern like the QueuePattern above won't cause an infinite loop. You can -+still cause an infinite loop, if you'd like, by having two patterns that -+match the same text: -+.Rs -+.nf -+elementclass Evil1 { -+ input -> Queue -> output; -+} -+elementclass Evil1_Replacement { -+ input -> Queue -> output; -+} -+elementclass Evil2 { -+ input -> Queue -> output; -+} -+elementclass Evil2_Replacement { -+ input -> Queue -> output; -+} -+.fi -+.Re -+This collection of patterns will make the optimizer run forever on any -+configuration that has a Queue. -+.PP -+The -+.B click-xform -+transformation can be reversed with the -+.B \-\-reverse -+option. -+' -+.SH "OPTIONS" -+' -+If any filename argument is a single dash "-", -+.B click-xform -+will use the standard input or output instead, as appropriate. -+' -+.TP 5 -+.BI \-p " file" -+.PD 0 -+.TP -+.BI \-\-patterns " file" -+Read patterns and replacements from -+.IR file . -+You can give any number of these options. -+' -+.Sp -+.TP -+.BI \-f " file" -+.TP -+.BI \-\-file " file" -+Read the router configuration to transform from -+.IR file . -+The default is the standard input. -+' -+.Sp -+.TP -+.BI \-e " expr" -+.TP -+.BI \-\-expression " expr" -+Use -+.IR expr , -+a string in the Click language, as the router configuration to transform. -+' -+.Sp -+.TP -+.BI \-o " file" -+.TP -+.BI \-\-output " file" -+Write the output router configuration to -+.IR file . -+The default is the standard output. -+' -+.Sp -+.TP -+.BR \-r ", " \-\-reverse -+Apply the patterns in reverse. That is, replace occurrences of the -+replacement texts with the corresponding pattern texts. -+' -+.Sp -+.TP 5 -+.BI \-\-help -+Print usage information and exit. -+' -+.Sp -+.TP -+.BI \-\-version -+Print the version number and some quickie warranty information and exit. -+' -+.PD -+' -+.SH "FORMAL DEFINITION OF MATCHING" -+' -+A pattern -+.I P -+matches a subset -+.I S -+of the configuration's elements if the following conditions hold: -+.TP 4 -+\(bu -+There is a one-to-one mapping -+.I map -+from -+.I P -+to -+.I S -+that respects element classes (that is, if an element -+.IR p " in " P -+has class -+.IR K , -+then -+.RI map( p ") also has class " K ). -+.TP 4 -+\(bu -+The configuration strings match, possibly by using a consistent variable -+assignment. -+.TP 4 -+\(bu -+For every connection -+.RI ` p1 " [" x "] -> [" y "] " p2 ' -+in the pattern -+.IR P , -+there exists a connection -+.RI `map( p1 ") [" x "] -> [" y "] map(" p2 )' -+in the configuration subset -+.IR S . -+.TP 4 -+\(bu -+For every connection -+.RI ` c1 " [" x "] -> [" y "] " c2 ' -+in the configuration, one of four conditions hold: -+.RS -+.TP 3 -+\(bu -+The connection is wholly outside the subset -+.IR S . -+(That is, -+.IR c1 " is not in " S -+and -+.IR c2 " is not in " S .) -+.TP 3 -+\(bu -+The connection is inside the subset, and corresponds to a connection in the -+pattern. (That is, -+.IR c1 " is in " S , -+.IR c2 " is in " S , -+and -+.I P -+has a connection -+.RI "`map-1(" c1 ") [" x "] -> [" y "] map-1(" c2 ")'.)" -+.TP 3 -+\(bu -+The connection goes into the subset, and corresponds to an input port in -+the pattern. (That is, -+.IR c1 " is not in " S -+but -+.IR c2 " is in " S , -+and there exists an input port number -+.I i -+so that -+.I P -+has a connection -+.RI "`input [" i "] -> [" y "] map-1(" c2 ")'," -+and for every connection in the pattern -+.RI "`input [" i "] -> [" z "] " q ', -+there is a connection in the configuration -+.RI ` c1 " [" x "] -> [" z "] map(" q ")'.)" -+.TP 3 -+\(bu -+The connection goes out of the subset, and corresponds to an output port in -+the pattern. (That is, -+.IR c1 " is in " S -+but -+.IR c2 " is not in " S , -+and there exists an output port number -+.I o -+so that -+.I P -+has a connection -+.RI "`map-1(" c1 ") [" x "] -> [" o "] output'," -+and for every connection in the pattern -+.RI ` q " [" z "] -> [" o "] output'," -+there is a connection in the configuration -+.RI "`map(" q ") [" z "] -> [" y "] " c2 "'.)" -+.RE -+' -+.SH "SEE ALSO" -+.M click 5 -+' -+.SH AUTHOR -+.na -+Eddie Kohler, kohler@cs.ucla.edu -+.br -+http://www.pdos.lcs.mit.edu/click/ -+' -diff -Nurb click-1.6.0/inst/share/man/man1/click.1 click-1.6.0-27/inst/share/man/man1/click.1 ---- click-1.6.0/inst/share/man/man1/click.1 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/man1/click.1 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,259 @@ -+.\" -*- mode: nroff -*- -+.ds V 1.3 -+.ds E " \-\- -+.if t .ds E \(em -+.de Sp -+.if n .sp -+.if t .sp 0.4 -+.. -+.de Es -+.Sp -+.RS 5 -+.nf -+.. -+.de Ee -+.fi -+.RE -+.PP -+.. -+.de Rs -+.RS -+.Sp -+.. -+.de Re -+.Sp -+.RE -+.. -+.de M -+.BR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RB "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH CLICK 1 "26/Mar/2003" "Version \*V" -+.SH NAME -+click \- Click user-level driver -+' -+.SH SYNOPSIS -+.B click -+.RI \%[ options ] -+.RI \%[ param = value " ...]" -+.RI \%[ router\-file ] -+' -+.SH DESCRIPTION -+The -+.B click -+driver executes a Click modular router specification in a user-level -+program. It reads a router configuration file, sets up the router according -+to that file, and generally continues until interrupted. The router -+configuration is written in the Click language (see -+.M click 5 ), -+and can contain dynamically loadable code, which -+.B click -+will link against before installing the configuration. -+.PP -+The -+.B click -+program can read and write packets from the network using Berkeley Packet -+Filters\*Esee -+.M FromDevice.u n -+and -+.M ToDevice.u n . -+It can also read and write BPF dump files, such as those created by -+.M tcpdump 1 "\*Esee" -+.M FromDump n -+and -+.M ToDump n . -+The -+.M InfiniteSource n -+element, and others like it, may be useful for testing configurations -+without affecting the network. -+' -+.SH "OPTIONS" -+' -+Arguments such as "NAME=value" set configuration parameters, overriding any -+existing settings. Thus, "echo \%'Message($MSG)' | \fBclick\fR MSG=Hi" will -+print "Hi". -+.PP -+If any filename argument is a single dash "-", -+.B click -+will use the standard input or output instead, as appropriate. -+' -+.TP 5 -+.BI \-f " file" -+.PD 0 -+.TP -+.BI \-\-file " file" -+Read the router configuration from -+.IR file . -+The default is the standard input. -+' -+.Sp -+.TP -+.BI \-e " expr" -+.TP -+.BI \-\-expression " expr" -+Use -+.IR expr , -+a string in the Click language, as the router configuration. -+' -+.Sp -+.TP -+.BI \-p " port" -+.TP -+.BI \-\-port " port" -+Open a -+.M ControlSocket n -+connection listening on TCP port -+.IR port . -+ControlSockets allow users to connect to the router and call its read and -+write handlers remotely. -+' -+.Sp -+.TP -+.BI \-u " file" -+.TP -+.BI \-\-unix\-socket " file" -+Open a -+.M ControlSocket n -+connection listening on a Unix socket, on file -+.IR file . -+' -+.Sp -+.TP -+.BR \-R ", " \-\-allow\-reconfigure -+Provide a "hotconfig" handler, which allows remote -+.M ControlSocket n -+users, and elements within the router, to reconfigure the router -+dynamically. See -+.M click.o 8 's -+"/click/hotconfig" section for more information on hot-swapping. -+' -+.Sp -+.TP -+.BI \-h " \fR[\fPelement\fR.]\fPhandler" -+.TP -+.BI \-\-handler " \fR[\fPelement\fR.]\fPhandler" -+After running the driver, call -+.IR element 's -+read handler named -+.IR handler , -+or the global read handler named -+.IR handler , -+and print the result to standard output. Each element has several generic -+handlers\*Efor example, -+.BR config -+returns the element's configuration string and -+.BR class -+returns the element's class name. Some elements have additional handlers; -+.M Counter n , -+for example, has -+.BR count " and " rate -+handlers that return the number of packets arrived and the recent arrival -+rate in packets per second. See -+.M click.o 8 -+for more information on generic handlers, and the element documentation for -+more information on element-specific handlers. -+.Sp -+.I element -+may be a pattern that uses the shell's globbing syntax (*, ?, and -+[...]). In this case, -+.B click -+will run each -+.I handler -+whose element's name matches the pattern. -+.I element -+may also be an element class or interface name, such as "Queue" or "Storage"; -+.B click -+will run each -+.I handler -+whose element has that class or interface. -+' -+.Sp -+.TP -+.BI \-x " \fR[\fPelement\fR.]\fPhandler" -+.TP -+.BI \-\-exit-handler " \fR[\fPelement\fR.]\fPhandler" -+After running the driver, call -+.IR element 's -+read handler named -+.IR handler , -+or the global read handler named -+.IR handler , -+and use the result as the -+.B click -+process exit value. The handler should return an integer, which is used directly, or a boolean (true means 0, false means 1). -+' -+.Sp -+.TP -+.BI \-o " file" -+.TP -+.BI \-\-output " file" -+Write a flattened version of the router configuration to -+.IR file . -+The flattening process removes all compound elements and additional archive -+members. -+' -+.Sp -+.TP 5 -+.BR \-q ", " \-\-quit -+Do not run the driver. This option can be used to check a configuration for -+errors, or to check handler results (with the -+.B \-\-handler -+option) without running the configuration. -+' -+.Sp -+.TP 5 -+.BR \-t ", " \-\-time -+Print the time it took to run the driver. -+' -+.Sp -+.TP 5 -+.BR \-w ", " \-\-no\-warnings -+Do not print any warning messages. -+' -+.Sp -+.TP -+.BI \-C " path" -+.TP -+.BI \-\-clickpath " path" -+Use -+.I path -+for CLICKPATH. -+' -+.Sp -+.TP 5 -+.BI \-\-help -+Print usage information and exit. -+' -+.Sp -+.TP -+.BI \-\-version -+Print the version number and some quickie warranty information and exit. -+' -+.PD -+' -+.SH "BUGS" -+If you get an unaligned access error, try running your configuration -+through -+.M click-align 1 -+first. -+' -+.SH "SEE ALSO" -+.M click-align 1 , -+.M click 5 , -+.M click.o 8 , -+.M ControlSocket n , -+.M FromDevice.u n , -+.M ToDevice.u n , -+.M FromDump n , -+.M ToDump n , -+.M tcpdump 1 , -+.M InfiniteSource n -+' -+.SH AUTHOR -+.na -+Eddie Kohler, kohler@cs.ucla.edu -+.br -+http://www.pdos.lcs.mit.edu/click/ -+' -diff -Nurb click-1.6.0/inst/share/man/man1/testie.1 click-1.6.0-27/inst/share/man/man1/testie.1 ---- click-1.6.0/inst/share/man/man1/testie.1 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/man1/testie.1 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,309 @@ -+.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 -+.\" -+.\" Standard preamble: -+.\" ======================================================================== -+.de Sh \" Subsection heading -+.br -+.if t .Sp -+.ne 5 -+.PP -+\fB\\$1\fR -+.PP -+.. -+.de Sp \" Vertical space (when we can't use .PP) -+.if t .sp .5v -+.if n .sp -+.. -+.de Vb \" Begin verbatim text -+.ft CW -+.nf -+.ne \\$1 -+.. -+.de Ve \" End verbatim text -+.ft R -+.fi -+.. -+.\" Set up some character translations and predefined strings. \*(-- will -+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -+.\" double quote, and \*(R" will give a right double quote. | will give a -+.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -+.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -+.\" expand to `' in nroff, nothing in troff, for use with C<>. -+.tr \(*W-|\(bv\*(Tr -+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' -+.ie n \{\ -+. ds -- \(*W- -+. ds PI pi -+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch -+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch -+. ds L" "" -+. ds R" "" -+. ds C` "" -+. ds C' "" -+'br\} -+.el\{\ -+. ds -- \|\(em\| -+. ds PI \(*p -+. ds L" `` -+. ds R" '' -+'br\} -+.\" -+.\" If the F register is turned on, we'll generate index entries on stderr for -+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index -+.\" entries marked with X<> in POD. Of course, you'll have to process the -+.\" output yourself in some meaningful fashion. -+.if \nF \{\ -+. de IX -+. tm Index:\\$1\t\\n%\t"\\$2" -+.. -+. nr % 0 -+. rr F -+.\} -+.\" -+.\" For nroff, turn off justification. Always turn off hyphenation; it makes -+.\" way too many mistakes in technical documents. -+.hy 0 -+.if n .na -+.\" -+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). -+.\" Fear. Run. Save yourself. No user-serviceable parts. -+. \" fudge factors for nroff and troff -+.if n \{\ -+. ds #H 0 -+. ds #V .8m -+. ds #F .3m -+. ds #[ \f1 -+. ds #] \fP -+.\} -+.if t \{\ -+. ds #H ((1u-(\\\\n(.fu%2u))*.13m) -+. ds #V .6m -+. ds #F 0 -+. ds #[ \& -+. ds #] \& -+.\} -+. \" simple accents for nroff and troff -+.if n \{\ -+. ds ' \& -+. ds ` \& -+. ds ^ \& -+. ds , \& -+. ds ~ ~ -+. ds / -+.\} -+.if t \{\ -+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" -+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' -+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' -+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' -+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' -+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' -+.\} -+. \" troff and (daisy-wheel) nroff accents -+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' -+.ds 8 \h'\*(#H'\(*b\h'-\*(#H' -+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] -+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' -+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' -+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] -+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] -+.ds ae a\h'-(\w'a'u*4/10)'e -+.ds Ae A\h'-(\w'A'u*4/10)'E -+. \" corrections for vroff -+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' -+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' -+. \" for low resolution devices (crt and lpr) -+.if \n(.H>23 .if \n(.V>19 \ -+\{\ -+. ds : e -+. ds 8 ss -+. ds o a -+. ds d- d\h'-1'\(ga -+. ds D- D\h'-1'\(hy -+. ds th \o'bp' -+. ds Th \o'LP' -+. ds ae ae -+. ds Ae AE -+.\} -+.rm #[ #] #H #V #F C -+.\" ======================================================================== -+.\" -+.IX Title "TESTIE 1" -+.TH TESTIE 1 "" "perl v5.8.8" "" -+.SH "NAME" -+testie \- simple test harness -+.SH "SYNOPSIS" -+.IX Header "SYNOPSIS" -+.Vb 1 -+\& testie [OPTIONS] [FILE]... -+.Ve -+.SH "DESCRIPTION" -+.IX Header "DESCRIPTION" -+Testie is a simple test harness. Each testie test file incorporates a shell -+script to be run and, optionally, input and expected output files for that -+script. Testie runs the script; the test fails if any of the script -+commands fail, or if the script generates unexpected output. -+.PP -+To run testie, pass it one or more test filenames. It will print useful -+error messages for failed tests. Alternatively, give it directory names; -+the directories are recursively searched for '\fI*.testie\fR' files. -+.PP -+Return status is 0 if all tests succeed, 1 if any test fails, and 2 if a -+test fails due to an internal error. Tests whose \f(CW%require\fR prerequisites -+fail do not affect the return status, except that if all tests' -+prerequisites fail, the return status is 1 instead of 0. -+.SH "OPTIONS" -+.IX Header "OPTIONS" -+.IP "\fI\s-1VARIABLE\s0\fR=\fI\s-1VALUE\s0\fR" 8 -+.IX Item "VARIABLE=VALUE" -+Provide a setting for \fI\s-1VARIABLE\s0\fR. Occurrences in the script of -+\&'\f(CW$VARIABLE\fR' or '\f(CW\*(C`${VARIABLE}\*(C'\fR' will be replaced by \fI\s-1VALUE\s0\fR. Note that -+this is not an environment variable setting. Variable references to unset -+variables are left unchanged. -+.IP "\-V, \-\-verbose" 8 -+.IX Item "-V, --verbose" -+Print information to standard error about successful tests as well as -+unsuccessful tests. -+.IP "\-VV, \-\-superverbose" 8 -+.IX Item "-VV, --superverbose" -+Like \-\-verbose, but use a slightly different format, and additionally print -+every test's \f(CW%desc\fR section before the test results. -+.IP "\-v, \-\-version" 8 -+.IX Item "-v, --version" -+Print version number information and exit. -+.IP "\-\-help" 8 -+.IX Item "--help" -+Print help information and exit. -+.IP "\-\-preserve\-temporaries" 8 -+.IX Item "--preserve-temporaries" -+Preserve the temporary directory created for the test. -+.IP "\-s, \-\-show \s-1FILE\s0" 8 -+.IX Item "-s, --show FILE" -+Echo the contents of \s-1FILE\s0 on completion. \s-1FILE\s0 should be one of the -+filenames specified by \f(CW%file\fR or \f(CW%expect\fR*, or 'stdout' or 'stderr'. -+.IP "\-e, \-\-expand" 8 -+.IX Item "-e, --expand" -+Don't run the given test; instead, expand its files into the current -+directory. The script is stored in a file called '+script+'. -+.SH "FILE FORMAT" -+.IX Header "FILE FORMAT" -+Testie test files consist of several sections, each introduced by a line -+starting with %. There must be, at least, a \f(CW%script\fR section. -+.PP -+The \f(CW%file\fR and \f(CW%expect\fR* sections define input and/or output files by -+name. Testie runs its script in a private directory in \fI/tmp\fR; any files -+mentioned in \f(CW%file\fR or \f(CW%expect\fR* are placed in that directory. -+.IP "%script" 8 -+.IX Item "%script" -+The shell script (in sh syntax) that controls the test. Testie will run -+each command in sequence. Every command in the script must succeed, with -+exit status 0, or the test will fail. The script's inputs and outputs are -+defined with the \f(CW%file\fR and \f(CW%expect\fR* sections. -+.IP "%require [\-q]" 8 -+.IX Item "%require [-q]" -+A shell script (in sh syntax) defining prerequisites that must be satisfied -+before the test can run. Every command in the script must succeed, with -+exit status 0, for the test to run. \f(CW%require\fR's output is not checked, -+however. The \f(CW\*(C`\-q\*(C'\fR flag tells testie not to print an error message if a -+requirement fails. -+.IP "%desc" 8 -+.IX Item "%desc" -+A short description of the test. In \-\-superverbose mode, its contents are -+printed before the test results. -+.IP "%info" 8 -+.IX Item "%info" -+This section is ignored. It is intended for information about the test. -+.IP "%cut" 8 -+.IX Item "%cut" -+This section is ignored. It is intended to comment out obsolete parts of -+the test. -+.IP "%file [\-d] [+LENGTH] \s-1FILENAME\s0..." 8 -+.IX Item "%file [-d] [+LENGTH] FILENAME..." -+Create an input file for the script. \s-1FILENAME\s0 can be 'stdin', which sets -+the script's standard input. If \s-1LENGTH\s0 is provided, the file data consists -+of the \s-1LENGTH\s0 bytes following this line. Otherwise, it consists of the data -+up to the next section. The \f(CW\*(C`\-d\*(C'\fR flag tells testie to delete the -+first character of each line in the section; this makes it possible to -+include files that have lines that start with %. \s-1FILENAME\s0 cannot contain -+slashes. -+.IP "%expectv [\-a] [\-d] [+LENGTH] \s-1FILENAME\s0..." 8 -+.IX Item "%expectv [-a] [-d] [+LENGTH] FILENAME..." -+An expected output file for the script. \s-1FILENAME\s0 can be 'stdout', for -+standard output. If \s-1LENGTH\s0 is provided, the file data consists of the -+\&\s-1LENGTH\s0 bytes following this line; otherwise, it consists of the data up to -+the next section. -+.Sp -+Testie will run the script, then compare the script's output file with the -+provided data. They must match exactly or the test fails. -+.Sp -+The \f(CW\*(C`\-a\*(C'\fR flag marks this expected output as an alternate. Testie will -+compare the script's output file with each provided alternate; the test -+succeeds if any of the alternates match. The \f(CW\*(C`\-d\*(C'\fR flag behaves as in -+\&\f(CW%file\fR. -+.IP "%expect [\-a] [\-d] [\-i] [+LENGTH] \s-1FILENAME\s0..." 8 -+.IX Item "%expect [-a] [-d] [-i] [+LENGTH] FILENAME..." -+An expected output file for the script. Arguments are as for \f(CW%expectv\fR. -+.Sp -+Testie will run the script, then compare the file generated by script -+with the provided data. The files are compared line\-by\-line. Testie -+ignores trailing whitespace on each line and in the files at large. It also -+ignores lines in the script output that match \f(CW%ignore\fR patterns (see below). -+Blank lines in the \f(CW%expect\fR data match one or more blank lines in the -+output. \f(CW%expect\fR lines can contain Perl regular expressions, enclosed by two -+sets of braces; so the \f(CW%expect\fR line -+.Sp -+.Vb 1 -+\& foo{{(bar)?}} -+.Ve -+.Sp -+matches either 'foo' or 'foobar'. The \f(CW\*(C`\-i\*(C'\fR flag makes any regular -+expressions case\-insensitive. -+.IP "%expectx [\-a] [\-d] [\-i] [+LENGTH] \s-1FILENAME\s0..." 8 -+.IX Item "%expectx [-a] [-d] [-i] [+LENGTH] FILENAME..." -+%expectx is just like \f(CW%expect\fR, except that every line is treated as a -+regular expression (so there is no need for the \*(L"{{ }}\*(R" escapes). -+.IP "%stdin [+LENGTH]" 8 -+.IX Item "%stdin [+LENGTH]" -+Same as '%file stdin [\s-1ARGS\s0]'. -+.IP "%stdout [\-a] [\-d] [\-i] [+LENGTH]" 8 -+.IX Item "%stdout [-a] [-d] [-i] [+LENGTH]" -+Same as '%expect stdout'. -+.IP "%stderr [\-a] [\-d] [\-i] [+LENGTH]" 8 -+.IX Item "%stderr [-a] [-d] [-i] [+LENGTH]" -+Same as '%expect stderr'. -+.IP "%ignorex [\-d] [\-i] [+LENGTH] [\s-1FILENAME\s0]" 8 -+.IX Item "%ignorex [-d] [-i] [+LENGTH] [FILENAME]" -+Each line in the \f(CW%ignorex\fR section is a Perl regular expression. Lines in -+the supplied \s-1FILENAME\s0 that match any of those regular expressions will not -+be considered when comparing files with \f(CW%expect\fR[x] data. The regular -+expression must match the whole line. \s-1FILENAME\s0 may be 'all', in which case -+the regular expressions will apply to all \f(CW%expect\fR[x] files. -+.ie n .IP "%ignore, %ignorev" 8 -+.el .IP "%ignore, \f(CW%ignorev\fR" 8 -+.IX Item "%ignore, %ignorev" -+Like '%ignorex', but '%ignore' parses regular expressions only inside -+double braces (\*(L"{{ }}\*(R"), and '%ignorev' lines must match exactly. -+.IP "%eot" 8 -+.IX Item "%eot" -+Marks the end of the current test. The rest of the file will be parsed for -+additional tests. -+.IP "%eof" 8 -+.IX Item "%eof" -+The rest of the file is ignored. -+.SH "EXAMPLE" -+.IX Header "EXAMPLE" -+This simple testie script checks that 'grep \-c' works for a simple output -+file. -+.PP -+.Vb 7 -+\& %script -+\& grep -c B. -+\& %stdin -+\& Bfoo -+\& B -+\& %stdout -+\& 1 -+.Ve -+.SH "AUTHOR" -+.IX Header "AUTHOR" -+Eddie Kohler, -diff -Nurb click-1.6.0/inst/share/man/man5/click.5 click-1.6.0-27/inst/share/man/man5/click.5 ---- click-1.6.0/inst/share/man/man5/click.5 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/man5/click.5 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,785 @@ -+.\" -*- mode: nroff -*- -+.ds V 1.1 -+.ds E " \-\- -+.if t .ds E \(em -+.de OP -+.BR "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" -+.. -+.de OA -+.IR "\fB\\$1\& \|\fI\\$2" "\\$3" "\\$4" "\\$5" "\\$6" -+.. -+.de QO -+.RB ` "\\$1" "'\\$2" -+.. -+.de Sp -+.if n .sp -+.if t .sp 0.4 -+.. -+.de Es -+.Sp -+.RS 5 -+.nf -+.. -+.de Ee -+.fi -+.RE -+.PP -+.. -+.de M -+.BR "\\$1" "(\\$2)\\$3" -+.. -+.de Rs -+.RS -+.Sp -+.. -+.de Re -+.Sp -+.RE -+.. -+.TH CLICK 5 "16/Mar/2004" "Version \*V" -+.SH NAME -+click \- Click configuration language -+' -+.SH DESCRIPTION -+The Click language describes the configuration of a Click router. It has -+two main directives: -+.IR declarations -+declare new elements, and -+.IR connections -+connect those elements together. Click router configurations are like -+directed graphs of elements; in this interpretation, declarations specify -+the vertices of the graph and connections specify the edges. Other -+language statements define configuration parameters and create new element -+types. -+' -+.SS "Declarations" -+' -+A declaration looks like this: -+.Rs -+.IR "name" " :: " "class" ( "config" ); -+.Re -+(The semicolon, like all semicolons in Click syntax, is optional.) -+This declares an element called -+.IR name -+that has element class -+.IR class -+and configuration arguments -+.IR config . -+If the configuration string is empty, the parentheses can be left off. -+Also, there can be two or more names in a comma-separated list, which has -+the same effect as multiple declarations. -+.Rs -+.IR "name" " :: " "class" ; -+.br -+.IR "name1" ", " "name2" ", ..., " "nameN" " ::" -+.IR "class" ( "config" ); -+.Re -+' -+.SS "Connections" -+' -+A connection looks like this: -+.Rs -+.IR "name1" " [" "port1" "] -> [" "port2" "] " "name2" ; -+.Re -+where the two -+.IR name s -+are names of previously declared elements, and the two -+.IR port s -+are nonnegative integers. This says that -+.IR name1 "'s output port " port1 -+should be connected to -+.IR name2 "'s input port " port2 . -+Two connections can be strung together into a single statement if the -+output element of one is the same as the input element of the other: -+.Rs -+.IR "n1" " [" "p1" "] -> [" "p2" "] " "x" ; -+.br -+.IR "x" " [" "p3" "] -> [" "p4" "] " "n2" ; -+.Re -+is the same as -+.Rs -+.IR "n1" " [" "p1" "] -> [" "p2" "] " "x" -+.RI "[" "p3" "] -> [" "p4" "] " "n2" ; -+.Re -+This can be extended to three or more connections. Furthermore, if an input -+or output port is 0, it can be omitted along with the brackets. These two -+lines are equivalent: -+.Rs -+.IR "n1" " [0] -> [0] " "n2" ; -+.br -+.IR "n1" " -> " "n2" ; -+.Re -+.PP -+You can also declare elements inside connections: -+.Rs -+.RI "... -> [" "p1" "] " "name" " ::" -+.IR "class" ( "config" ") [" "p2" "] -> ...;" -+.Re -+is equivalent to -+.Rs -+.IR "name" " :: " "class" ( "config" ); -+.br -+.RI "... -> [" "p1" "] " "name" " [" "p2" "] -> ...;" -+.Re -+Every such declaration can declare at most one element. -+' -+.SS "Anonymous elements" -+You may declare an element without specifying its name, in which case the -+system will choose an element name for you. For example: -+.Rs -+.IR class "(" config ");" -+.Re -+is equivalent to -+.Rs -+.IR generatedname " :: " class ( config ); -+.Re -+As usual, the parentheses can be left off if -+.I config -+is empty. You may also declare an anonymous element inside a connection: -+.Rs -+.RI "... -> [" p1 "] " class ( config ) -+.RI "[" p2 "] -> ...;" -+.Re -+is equivalent to -+.Rs -+.IR generatedname " :: " class ( config ); -+.br -+.RI "... -> [" p1 "] " generatedname " [" p2 "] -> ...;" -+.Re -+.PP -+The -+.I generatedname -+has the form -+.RI ` class "@" number ', -+where the -+.IR number -+is chosen to make the name unique. These numbers are predictable: when the -+system parses a Click file twice, that file's anonymous elements will get -+the same generated names each time. Nothing prevents a user from declaring -+an element named like an anonymous element. We suggest that users avoid the `@' -+character in their element names. -+.PP -+Not all elements can usefully be anonymous, since an anonymous element can -+be part of at most two connections (once as input, once as output). -+' -+.SH "CONFIGURATION STRINGS" -+' -+Click configuration strings are comma-separated lists of arguments, where -+each argument is a space-separated list of objects. This section describes -+some common object types. See the element documentation for argument types -+expected by a particular element. -+.PP -+Configuration strings may contain comments (`// ... EOL' and `/* ... */'), -+which are replaced with single space characters. Inside single- or -+double-quoted strings, commas, spaces, and comment-starting sequences lose -+their regular meaning and are treated as normal characters. -+.PP -+The most common object types are: -+.TP 3 -+\(bu -+.B Strings. -+Any sequence of characters. Single- or double-quoted strings are allowed -+(and required, if the string contains a space or comma). Inside -+double-quoted strings, backslash substitutions are performed; see below. -+You can concatenate strings by juxtaposing them. For example, `a"b"c' is -+equivalent to `abc'. -+.TP -+\(bu -+.B Booleans. -+`0', `false', and `no' mean false; `1', `true', and `yes' mean true. -+.TP -+\(bu -+.B Integers -+preceded by an optional `+' or `\-' sign. Decimal, octal (first digit `0'), -+and hexadecimal (starting with `0x') are allowed. -+.TP -+\(bu -+.B Real numbers -+in decimal notation. -+.TP -+\(bu -+.B Times and delays -+in decimal real notation, followed by an optional unit: `s'/`sec', `ms', -+`us', `ns', `m'/`min', `h'/`hr'. -+.TP -+\(bu -+.B Bandwidths -+in decimal real notation, followed by an optional unit: `bps' or `Bps' for -+bits or bytes per second, with an optional SI prefix `k', `M', or `G'. The -+default unit is generally `Bps'. -+.TP -+\(bu -+.B IP addresses -+in the conventional `n.n.n.n' form (for example, `18.26.4.15'). -+.TP -+\(bu -+.B IP network prefixes -+in the CIDR form `n.n.n.n/k' (for example, `18.26.4/24'). -+.TP -+\(bu -+.B IPv6 addresses -+in any of the conventional forms (for example, `::', -+`1080::8:800:200C:417A', or `::18.26.4.15'). -+.TP -+\(bu -+.B Ethernet addresses -+in the conventional `x:x:x:x:x:x' form (for example, `0:a0:c9:9c:fd:9c'). -+.TP -+\(bu -+.B Element names. -+.PD -+.PP -+Some elements, like -+.IR Classifier , -+take arguments that don't fit any of these types. See the element -+documentation for details. -+.PP -+If the last argument in a configuration string is empty (containing only -+whitespace and comments), then it is ignored. Thus, `Element(1, )', -+`Element(1, /* comment */)', and `Element(1)' behave exactly alike. -+.PP -+Configuration strings may also contain parameter references, such as -+`$interface'. The parameter values are substituted in. Parameters may be -+defined either by compound element arguments, by explicit `define' -+statements, or on the command line. -+' -+.SS "Backslash Substitutions" -+.PP -+The following backslash substitutions are performed inside double quotes. -+Additionally, as a special case, a bare data substitution sequence `\e< -+\&... >' acts as if it were enclosed in double quotes. (Inside single -+quotes, `\e< ... >' is not special.) -+.TP 4 -+1. -+' -+C-like substitutions. Specifically, `\ea', `\eb', `\et', `\en', `\ev', -+`\ef', `\er', `\e\e', and `\e[1, 2, or 3 octal digits]' have their C -+meanings. `\ex[any number of hex digits]' is replaced with the byte -+defined by the last 2 hex digits. -+.TP 4 -+2. -+Data substitutions. An escape sequence `\e< ... hex digits and spaces ... -+>' is replaced with the data represented by the hex digits. For example, -+the sequence `\e< 48 45 4c 4C 4f >' is replaced with `HELLO'. -+.TP -+3. -+Backlash-newline sequences (`\e[LF]', `\e[CR]', or `\e[CR][LF]') are removed. -+.TP -+4. -+Any other `\e[CHAR]' sequence is replaced with `[CHAR]'. -+' -+.SH "COMPOUND ELEMENTS" -+' -+A -+.I compound element -+is a scoped collection of elements that acts like a single element from -+outside. A compound element can be used anywhere an element class is -+expected (that is, in a declaration or connection). Syntactically, a -+compound element is a set of Click statements enclosed in braces `{ }'. -+Inside the braces, the special names `input' and `output' represent -+connections from or to the outside. Before a router is put on line, -+compound elements are systematically expanded until none remain; thus, they -+have no run-time overhead. -+.PP -+Here are some examples. This code, with a compound element, -+.Rs -+a -> { input -> X -> output } -> b; -+.Re -+expands to -+.Rs -+a -> X -> b; -+.Re -+Here is a more complicated example, with multiple ports: -+.Rs -+compound :: { -+.br -+\% input -> X -> output; -+.br -+\% input [1] -> Y -> [1] output; -+.br -+}; -+.br -+a -> compound -> b; -+.br -+c -> [1] compound [1] -> d; -+.Re -+expands to -+.Rs -+a -> X -> b; -+.br -+c -> Y -> d; -+.Re -+.PP -+The `input' and `output' pseudoelements incur no run-time overhead. (In -+fact, they are connection tunnel endpoints; see below for more.) -+.PP -+The actual expansions will differ from these examples because the elements -+will have different names. A prefix is prepended to the components' names, -+providing locality relative to other names in the configuration. The new -+names have the form -+.RI ` "compoundname" / "componentname" ', -+where -+.I compoundname -+is the name of the compound element being expanded, and -+.I componentname -+is the name of the component element inside that compound. For example, -+.Rs -+compound :: { input -> x :: X -> output }; -+.br -+a -> compound -> b; -+.Re -+is really expanded to -+.Rs -+a -> compound/x :: X -> b; -+.Re -+For this purpose, anonymous compound elements are given constructed names -+like -+.RI `@ number '. -+Nothing prevents a user from declaring an element named like a compound -+element component. We suggest that users generally avoid using the `/' -+character in their element names. -+.PP -+It is an error to use the `input' pseudoelement's input ports or the -+`output' pseudoelement's output ports. It is also an error to leave an -+intermediate port unused\*Efor example, to use `input [0]' and `input [2]' -+but not `input [1]'. -+' -+.SS "The `elementclass' statement" -+' -+The `elementclass' statement lets the user name a frequently-occurring -+compound element, and use the name as if it were a primitive element class. -+Syntactically, it looks like this: -+.Rs -+elementclass -+.I identifier -+.I compoundelement -+; -+.Re -+After this statement, every occurrence of the -+.I identifier -+will be replaced with the -+.IR compoundelement . -+For example, this code, with an `elementclass': -+.Rs -+elementclass MyQueue { -+.br -+\% input -> Queue -> Shaper(1000) -> output; -+.br -+} -+.br -+q :: MyQueue; -+.br -+a -> q -> b; -+.Re -+is equivalent to this code, without it: -+.Rs -+q :: { input -> Queue -> Shaper(1000) -> output }; -+.br -+a -> q -> b; -+.Re -+which roughly expands to: -+.Rs -+a -> Queue -> Shaper(1000) -> b; -+.Re -+.PP -+The user can declare element classes that have the names of previously -+existing element classes: -+.Rs -+elementclass Queue { -+.br -+\% input -> Queue -> Shaper(1000) -> output; -+.br -+} -+.Re -+Element classes are nonrecursive and lexically scoped, so the `Queue' -+inside this definition refers to the original `Queue'. The scope of an -+element class definition extends from immediately after its closing right -+brace to the end of the enclosing scope. -+.PP -+A variant of the elementclass statement makes synonyms for preexisting -+element classes. For example, this statement -+.Rs -+elementclass MyQueue Queue; -+.Re -+makes MyQueue a synonym for Queue. -+' -+.SS "Configuration parameters" -+' -+Compound elements may take configuration parameters, which are expanded -+into the configuration strings of its components. The parameters are named -+at the beginning of the compound element. Each parameter looks like a Perl -+variable\*Ea dollar sign followed by one or more letters, numbers, and -+underscores. For example, this compound element -+.Rs -+{ $a, $b | ... } -+.Re -+takes two configuration parameters, named `$a' and `$b'. Keyword arguments -+are also supported. For example, this compound element -+.Rs -+{ COUNT $count | ... } -+.Re -+takes a COUNT keyword parameter. Mismatched configuration parameters cause -+errors; for example: -+.Rs -+\%{ $a, $b | ... } (1) // Error: too few arguments -+.br -+\%{ $a, $b | ... } (1, 2, 3) // Error: too many arguments -+.br -+\%{ COUNT $count | ... } (1) // Error: missing 'COUNT' parameter -+.Re -+The special keyword `__REST__' matches any additional arguments supplied to -+the compound element. For example: -+.Rs -+\%{ $a, COUNT $count, __REST__ $rest | ... } -+.br -+\% (1, 2, COUNT 3, FOO 4) -+.Re -+This compound element will be expanded with `$a' set to `1', `$count' set -+to `3', and `$rest' set to `2, FOO 4'. -+.PP -+In a compound element definition, all positional parameters must precede -+any keyword parameters, and `__REST__', if present, must appear last of -+all. -+.PP -+As the compound is expanded, its components' configuration strings are -+searched for references to the parameters. Any such references are replaced -+with the supplied arguments. For example, this code: -+.Rs -+\&... -> { $a | input -> -+.br -+\% A(1, $a, 3) -> output } (100) -> ... -+.Re -+expands to this: -+.Rs -+\&... -> A(1, 100, 3) -> ... -+.Re -+You can avoid substitution by putting the dollar sign inside single quotes. -+.PP -+Use braces, like `${a}', to avoid including following letters in a variable -+name. Click also supports the shell-like `${VAR-DEFAULT}' syntax, which -+substitutes the value of `$VAR', or `DEFAULT' if that variable was not set. -+See also PARAMETER DEFINITIONS, below. -+' -+.SS "Overloading" -+' -+A single compound element may contain multiple overloaded definitions -+separated from one another by two vertical bars "\f(CW||\fR". Different -+definitions may have different numbers of input ports, different numbers of -+output ports, or different sets of configuration arguments. For example, -+this extended MyQueue compound element takes an optional capacity argument, -+just like Queue itself: -+.Rs -+elementclass MyQueue { -+.br -+\% input -> Queue -> Shaper(1000) -> output; -+.br -+\%|| -+.br -+\% $cap | input -> Queue($cap) -+.br -+\% -> Shaper(1000) -> output; -+.br -+} -+.Re -+For each use of an overloaded compound element, Click will choose the first -+definition that matches the provided number of input ports, number of -+output ports, and configuration arguments. It is an error if no definition -+matches these properties exactly. -+.PP -+It is also possible to extend an existing element class with new overloaded -+definitions with "\f(CW...\fR". For example, this definition introduces a -+two-argument version of Queue: -+.Rs -+elementclass Queue { -+.br -+\% $cap, $rate | input -> Queue($cap) -+.br -+\% -> Shaper($rate) -> output; -+.br -+\%|| ... -+.br -+} -+.Re -+(The ellipsis in this example must be typed verbatim.) The overloadings -+visible at a given declaration are those that lexically precede that -+declaration. For example, the following example is an error since the -+two-argument version of Test is not visible at the declaration where it is -+required: -+.Rs -+elementclass Test { $a | /* nothing */ } -+.br -+test :: Test(1, 2); -+.br -+elementclass Test { $a, $b | /* nothing */ || ... } -+.Re -+' -+.SH "CONNECTION TUNNELS" -+' -+A -+.I connection tunnel -+is a pair of element names that acts as a tunnel for connections. -+Consider a tunnel -+.RI ` p1 " -> " p2 '. -+Then connections to -+.I p1 -+pass through the tunnel and are transformed, at compile time, into -+connections from -+.IR p2 . -+For example, this code, with a tunnel, -+.Rs -+connectiontunnel p1 -> p2; -+.br -+a -> p1; p2 -> b; -+.Re -+is transformed into this code, without it: -+.Rs -+a -> b; -+.Re -+The connections to p1's -+.IR i th -+input port have been expanded into connections from p2's -+.IR i th -+output port. Thus, a is connected to b in the result because a was -+connected to p1's input port 0, and p2's output port 0 was connected to b. -+Here is a slightly more complicated example involving several connections -+and different port numbers: -+.Rs -+connectiontunnel p1 -> p2; -+.br -+a -> p1; b -> p1; p2 -> c; -+.br -+a [1] -> [1] p1; p2 [1] -> Discard; -+.Re -+is transformed into -+.Rs -+a -> c; b -> c; -+.br -+a [1] -> Discard; -+.Re -+And one final example: -+.Rs -+connectiontunnel p1 -> p2; -+.br -+a -> p1; p2 -> b; p2 -> c; -+.Re -+becomes -+.Rs -+a -> b; a -> c; -+.Re -+.PP -+Connection tunnels can be connected to each other. The system will -+recursively expand the tunnels until none of them remain. (Circular -+connections are silently ignored.) For example: -+.Rs -+connectiontunnel p1 -> p2, q1 -> q2; -+.br -+a -> p1; p2 -> q1; q2 -> b; -+.Re -+becomes -+.Rs -+a -> b; -+.Re -+.PP -+An identifier that has been used for a connection tunnel cannot be used for -+an element, and vice versa. However, an identifier can be used for two -+tunnels, once as the input end and once as the output end. For example: -+.Rs -+connectiontunnel p -> p/input, p/output -> p; -+.br -+a -> p; // using `p' as input -+.br -+p/input -> Counter -> p/output; -+.br -+p -> b; // using `p' as output -+.Re -+becomes -+.Rs -+a -> Counter -> b; -+.Re -+Compound elements use this mechanism. -+' -+.SH "REQUIREMENTS" -+' -+A configuration can say that it depends on optional packages by using the -+`require' statement. Its argument is a comma-separated list of package -+names: -+.Rs -+require(fastclassifier, specialcode); -+.Re -+Installation programs can use the package names to find and upload any -+necessary package code. Furthermore, the required package names are checked -+against a list of currently active packages when a configuration is -+installed. If any required packages are unavailable, an error is reported. -+' -+.SH "PARAMETER DEFINITIONS" -+' -+Parameters are defined using the `define' statement. Its argument is a -+comma-separated list of pairs, each pair consisting of a configuration -+variable and a value: -+.Rs -+define($DEVNAME eth0, $COUNT 1); -+.Re -+This sets the `$DEVNAME' parameter to `eth0' and the `$COUNT' parameter to -+`1'. Definitions are lexically scoped, so definitions inside a compound -+element are not visible outside it. However, all definitions in a given -+scope take place simultaneously, regardless of their ordering. The -+following two configurations have the same effect: -+.Rs -+1) define($a 2); Message($a) -+.br -+2) Message($a); define($a 2) -+.Re -+It is an error to define a parameter more than once in any single -+scope. Click programs such as -+.M click 1 -+and -+.M click-install 1 -+allow parameters to specified on the command line; these override any -+global parameters with the same names. -+' -+.SH "LEXICAL ISSUES" -+' -+Click identifiers are nonempty sequences of letters, numbers, underscores -+`_', at-signs `@', and slashes `/' that do not begin or end with a slash. -+The system uses `@' and `/' for special purposes: `@' in constructed names -+for anonymous elements and prefixes, and `/' in names for components of -+compound elements. Users are discouraged from using these characters in -+their own identifiers. Identifiers are case-sensitive. No component of an -+identifier may consist solely of numbers; for example, `1/x' is an illegal -+identifier. -+.PP -+The keywords `connectiontunnel', `elementclass', `require', and `define' -+may not be used as identifiers. The normal identifiers `input' and `output' -+have special meaning inside compound element definitions. -+.PP -+The following characters and multi-character sequences are single Click -+tokens: -+.RS -+->\~\~::\~\~;\~\~,\~\~(\~\~)\~\~[\~\~]\~\~{\~\~}\~\~|\~\~||\~\~... -+.RE -+.PP -+Whitespace (using the C definition) and comments separate Click tokens. -+Click uses C++-style comments: from `//' to the end of the line, or from -+`/*' to the next `*/'. Either form of comment terminates an identifier, so -+this Click fragment -+.RS -+an/identifier/with/slashes//too/many -+.RE -+has an identifier `an/identifier/with/slashes' and a comment -+`//too/many'. No identifier contains two consecutive slashes. -+.PP -+Parameters, which are used in compound elements, look like Perl variables. A -+parameter consists of a dollar sign `$' followed by one or more letters, -+numbers, and underscores. -+.PP -+A configuration string starts immediately following a left parenthesis `(', -+and continues up to the next unbalanced right parenthesis `)'. However, -+parentheses inside single or double quotes or comments do not affect -+balancing. Here are several examples; in each case, the configuration -+string consists of the text between the `#' marks (including the `#' marks -+themselves). -+.Rs -+C1(#simple string#) -+.br -+C2(#string with (balanced parens)#) -+.br -+C3(#string with ")quoted" paren#) -+.br -+C4(#// end-of-line comment) -+.br -+\% still going!#) -+.br -+C5(#/* slash-star comment) */ and backslash \e#) -+.Re -+.PP -+A Click program may contain C preprocessor-style line directives. These -+lines start with `#' and have the form `# \fIlinenumber\fP -+"\fIfilename\fP"' or `#line \fIlinenumber\fP "\fIfilename\fP"'; they change -+the filenames and line numbers used for error messages. The filename -+portion is optional. Line directives are not recognized inside -+configuration strings. -+' -+.SH "ARCHIVES" -+Many Click programs also accept -+.M ar 1 -+archives as configurations. The archive must contain a member called -+`config', which is treated as a Click-language configuration. The archive -+may also contain package code required by the configuration. The -+.M click-install 1 -+and -+.M click 1 -+programs will decompose the archive and install any package code before -+installing the configuration itself. The -+.M click.o 8 -+kernel module will not accept archives; use -+.M click-install 1 . -+' -+.SH "BNF GRAMMAR" -+' -+.IR stmts " ::= " stmts " " stmt " | " empty -+.br -+.IR stmt " ::= " declaration " | " connection -+.br -+.RI " | " tunnelstmt " | " elementclassstmt " | " requirestmt -+.br -+.RI " | " definestmt " | "";""" -+.br -+.IR declaration " ::= " element-names " ""::"" " -+.IR class " " opt-config -+.br -+.IR element-names " ::= " element-name -+.br -+.RI " | " element-names " "","" " element-name -+.br -+.IR element-name " ::= identifier -+.\" | ""^"" identifier -+.br -+.IR class " ::= identifier | ""{"" " compounds " ""}""" -+.br -+.RI " | ""{"" " compounds " ""||"" ""..."" ""}""" -+.br -+.IR compounds " ::= " compound " | " compounds " ""||"" " compound -+.br -+.IR compound " ::= " stmts " | " opt-formals " ""|"" " stmts -+.br -+.IR opt-formals " ::= " formals " | " empty -+.br -+.IR formals " ::= " formal " | " formals " "","" " formal -+.br -+.IR formal " ::= parameter | identifier parameter" -+.br -+.IR connection " ::= " element " " opt-port " ""->"" " opt-port " " conntail -+.br -+.IR conntail " ::= " element " | " connection -+.br -+.IR element " ::= " element-name -+.br -+.RI " | " element-name " ""::"" " class " " opt-config -+.br -+.RI " | " class " " opt-config -+.br -+.IR opt-config " ::= ""("" configstring "")"" | " empty -+.br -+.IR opt-port " ::= ""["" portnumber ""]"" | " empty -+.br -+.IR tunnelstmt " ::= ""connectiontunnel"" identifier ""->"" identifier" -+.br -+.IR elementclassstmt " ::= ""elementclass"" identifier " class -+.br -+.IR requirestmt " ::= ""require"" ""("" configstring "")""" -+.br -+.IR definestmt " ::= ""define"" ""("" configstring "")""" -+.br -+.IR empty " ::= " -+' -+.SH "SEE ALSO" -+.M click 1 , -+.M click-install 1 , -+.M click.o 8 -+' -+.SH AUTHOR -+.na -+Eddie Kohler, kohler@cs.ucla.edu -+.br -+http://www.pdos.lcs.mit.edu/click/ -+' -diff -Nurb click-1.6.0/inst/share/man/man7/elementdoc.7 click-1.6.0-27/inst/share/man/man7/elementdoc.7 ---- click-1.6.0/inst/share/man/man7/elementdoc.7 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/man7/elementdoc.7 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,526 @@ -+.\" -*- mode: nroff -*- -+.ds V 1.1 -+.ds D 29/Apr/2000 -+.ds E " \-\- -+.if t .ds E \(em -+.de Sp -+.if n .sp -+.if t .sp 0.4 -+.. -+.de Es -+.Sp -+.RS 5 -+.nf -+.. -+.de Ee -+.fi -+.RE -+.PP -+.. -+.de Rs -+.RS -+.Sp -+.. -+.de Re -+.Sp -+.RE -+.. -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.de K -+.BR "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" -+.. -+.de RK -+.RB "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" -+.. -+.TH ELEMENTDOC 7 "\*D" "Version \*V" -+.SH NAME -+elementdoc \- how to write Click element documentation -+' -+.SH DESCRIPTION -+Documentation for a Click element is automatically generated from formatted -+comments in its header files. This manual page describes how to write one -+of these formatted comments. -+.PP -+Click element documentation syntax is based on Perl-style PODs; see -+.M perlpod 1 -+for more information. However, not all POD constructs are usable in element -+documentation at the moment; and Click element documentation is -+line-oriented, not paragraph-oriented. -+' -+.SH "COMMAND QUICK REFERENCE" -+These are the sectioning commands and the sections they correspond to, -+listed in the conventional order. -+.RS 5 -+.PP -+.PD 0 -+.IP "\f(CW=c\fR" 15 -+SYNOPSIS -+.IP "\f(CW=s\fR \fIcategory\fR" 15 -+NAME (one-line summary) -+.IP "\f(CW=io\fR" 15 -+INPUTS AND OUTPUTS -+.IP "\f(CW=processing\fR" 15 -+PROCESSING TYPE -+.IP "\f(CW=d\fR" 15 -+DESCRIPTION -+.IP "\f(CW=n\fR" 15 -+NOTES -+.IP "\f(CW=e\fR" 15 -+EXAMPLES -+.IP "\f(CW=h\fR \fIname\fR \fItype\fR" 15 -+ELEMENT HANDLERS -+.IP "\f(CW=a\fR" 15 -+SEE ALSO -+.IP "\f(CW=head1\fR \fItext\fR" 15 -+other heading -+.PD -+.RE -+.PP -+These are the other commands used in element documentation. -+.RS 5 -+.PP -+.PD 0 -+.IP "\f(CW=head2\fR \fItext\fR" 15 -+subheading -+.IP "\f(CW=over\fR \fIamount\fR" 15 -+begin item list -+.IP "\f(CW=item\fR \fItext\fR" 15 -+add item -+.IP "\f(CW=back\fR" 15 -+end item list -+.IP "\f(CW=for\fR \fIformat\fR" 15 -+selective formatting -+.IP "\f(CW=begin\fR \fIformat\fR" 15 -+selective formatting -+.IP "\f(CW=end\fR \fIformat\fR" 15 -+selective formatting -+.IP "\f(CW=deprecated\fR \fInew-element\fR" 15 -+element is deprecated -+.PD -+.RE -+.PP -+These are the formatting commands, used inside ordinary text. -+.RS 5 -+.PP -+.PD 0 -+.IP "\f(CWB<\fItext\fR\f(CW>\fR" 15 -+boldface -+.IP "\f(CWI<\fItext\fR\f(CW>\fR" 15 -+italics -+.IP "\f(CWU<\fItext\fR\f(CW>\fR" 15 -+underlined (if possible) -+.IP "\f(CWP<\fItext\fR\f(CW>\fR" 15 -+plain text (i.e., no automatic links) -+.IP "\f(CWC<\fItext\fR\f(CW>\fR" 15 -+code (fixed-width) -+.IP "\f(CWF<\fItext\fR\f(CW>\fR" 15 -+filename (italics) -+.IP "\f(CWL<\fItext\fR|\fIlink\fR\f(CW>\fR" 15 -+hyperlink -+.IP "\f(CWN<>\fR" 15 -+line break -+.IP "\f(CWE<\fIname\fR\f(CW>\fR" 15 -+entity -+.IP "\f(CWV<\fItext\fR\f(CW>\fR" 15 -+hide text -+.PD -+.RE -+.PP -+And these are the category keywords, used in the summary section to -+categorize elements. -+.RS 5 -+.PP -+.PD 0 -+.IP "\f(CWbasicsources\fR" 22 -+Basic Sources and Sinks -+.IP "\f(CWclassification\fR" 22 -+Basic Classification and Selection -+.IP "\f(CWbasictransfer\fR" 22 -+Basic Packet Transfer -+.IP "\f(CWcounters\fR" 22 -+Counters -+.IP "\f(CWtimestamps\fR" 22 -+Timestamps -+.IP "\f(CWbasicmod\fR" 22 -+Basic Packet Modification -+.IP "\f(CWstorage\fR" 22 -+Packet Storage -+.IP "\f(CWaqm\fR" 22 -+Active Queue Management -+.IP "\f(CWscheduling\fR" 22 -+Packet Scheduling -+.IP "\f(CWshaping\fR" 22 -+Traffic Shaping -+.IP "\f(CWinformation\fR" 22 -+Information Elements -+.IP "\f(CWnetdevices\fR" 22 -+Network Devices -+.IP "\f(CWcomm\fR" 22 -+Host and Socket Communication -+.IP "\f(CWethernet\fR" 22 -+Ethernet -+.IP "\f(CWarp\fR" 22 -+ARP -+.IP "\f(CWip\fR" 22 -+IPv4 -+.IP "\f(CWiproute\fR" 22 -+IPv4 Routing -+.IP "\f(CWicmp\fR" 22 -+ICMP -+.IP "\f(CWnat\fR" 22 -+Network Address Translation -+.IP "\f(CWtcp\fR" 22 -+TCP -+.IP "\f(CWudp\fR" 22 -+UDP -+.IP "\f(CWapp\fR" 22 -+Applications -+.IP "\f(CWtraces\fR" 22 -+Trace Manipulation -+.IP "\f(CWipmeasure\fR" 22 -+TCP/IP Measurement -+.IP "\f(CWaggregates\fR" 22 -+Aggregates -+.IP "\f(CWip6\fR" 22 -+IPv6 -+.IP "\f(CWipsec\fR" 22 -+IPsec -+.IP "\f(CWcrc\fR" 22 -+CRCs -+.IP "\f(CWpaint\fR" 22 -+Paint Annotations -+.IP "\f(CWannotations\fR" 22 -+Annotations -+.IP "\f(CWdebugging\fR" 22 -+Debugging -+.IP "\f(CWcontrol\fR" 22 -+Control -+.IP "\f(CWsmpclick\fR" 22 -+Multithreaded Click -+.IP "\f(CWtest\fR" 22 -+Regression Tests -+.PD -+.RE -+' -+.SH "COMMENT SYNTAX" -+Each piece of documentation is stored in a single block comment -+`\f(CW/*...*/\fR'. Two kinds of block comment are recognized: -+.PP -+.nf -+ /* -+ =c -+ ElementName(...) -+ ... and so on ... -+ */ -+ -+ /* -+ * =c -+ * ElementName(...) -+ * ... and so on ... -+ */ -+.fi -+.PP -+In the first form, commands and normal text MUST begin in the first column -+of each line. In the second form, commands and normal text MUST begin in -+the fourth column of each line, immediately following the initial star and -+spaces `\f(CW\ *\ \fR'. Indented lines are treated as verbatim text, as in -+POD. -+' -+.SH "COMMANDS" -+Commands are lines that begin with `\f(CW=\fR' and a lower-case letter. -+There are two kinds of commands, those that start new sections and those -+that occur within sections. There is also a set of formatting -+commands\*Efor turning text bold, for example\*Ethat occurs inside normal -+text; they are described in the next section. -+' -+.SS "Section Commands" -+.IP "\f(CW=s\fR [\fIcategory\fR]" 5 -+Begin the summary section. This should contain a very short, -+one-line summary of the element's function. For example, for a -+.M Queue n -+element: -+.nf -+ =s storage -+ stores packets in a FIFO queue -+.fi -+The summary text should generally be a verb phrase. -+.RS 5 -+.PP -+The optional \fIcategory\fR specifies one or more element categories into -+which this element fits, separated by commas. Specifying meaningful -+categories helps a lot; documentation tools use categories to divide -+elements into manageable groups. Use existing categories, defined by the -+list of category keywords above in the Command Quick Reference, or create -+your own. -+.RE -+.TP 5 -+\f(CW=c\fR -+Begin the synopsis section. This section is mandatory. -+.RS 5 -+.PP -+The \f(CW=c\fR section gives the element's name and any of its -+configuration arguments. For example: -+.nf -+ =c -+ IPEncap(PROTOCOL, SADDR, DADDR) -+.fi -+.PP -+Configuration arguments should be specified as all-upper-case words. The -+description section will use those upper-case words to talk about the -+arguments. Use brackets to show that an argument is optional: -+.nf -+ =c -+ UDPIPEncap(SADDR, SPORT, DADDR, DPORT [, CHECKSUM?]) -+.fi -+.PP -+Do not use anything more complicated than brackets. If an element has -+complex syntax, either use upper-case words and talk about the syntax more -+in the description section, or give multiple lines: -+.nf -+ =c -+ ControlSocket(tcp, PORTNUMBER [, READONLY?]) -+ ControlSocket(unix, PORTNUMBER [, READONLY?]) -+.fi -+(`tcp' and `unix' are lowercase because they should be typed verbatim.) -+.RE -+' -+.TP 5 -+\f(CW=io\fR -+Begin the inputs and outputs section. This section mentions how many inputs -+and outputs the element has. It is usually quite short; for example: -+.nf -+ =io -+ None -+.fi -+This section is optional, and most elements don't bother to have one; they -+mention inputs and outputs in the description section. -+' -+.TP 5 -+\f(CW=processing\fR -+Begin the processing type section. This section mentions the processing -+types of the element's input and output ports. It is usually quite short; for -+example: -+.nf -+ =processing -+ Push inputs, pull outputs -+.fi -+This section is optional. Documentation processing tools will generate a -+\f(CW=processing\fR section from the element's \fBprocessing\fP() method, -+if possible. -+' -+.TP 5 -+\f(CW=d\fR -+Begin the description section. -+This section tells how the element should be used. It is usually the -+longest section. When mentioning configuration arguments, use the -+upper-case words given in the \f(CW=c\fR section. -+' -+.TP 5 -+\f(CW=n\fR -+Begin the notes section. -+' -+.TP 5 -+\f(CW=e\fR -+Begin the examples section. -+' -+.TP 5 -+\f(CW=h\fR \fIhandlername\fP \fItype\fP -+Begin a handler description. Use this section to describe any special -+handlers that the element installs. \fIHandlername\fP should be the name of -+the handler, and \fItype\fP its type (either `\f(CWread-only\fR', -+`\f(CWwrite-only\fR', or `\f(CWread/write\fR'). The following text should -+describe that handler. For example: -+.nf -+ =h capacity read/write -+ Returns or sets the queue's capacity. -+.fi -+' -+.TP 5 -+\f(CW=a\fR [\fItext\fP] -+Begin the "see also" section. Use this section to mention other relevant -+elements and programs, when appropriate. The more references, the better. -+For example: -+.nf -+ =a RED, FrontDropQueue -+.fi -+The optional \fItext\fP is just part of the body of the section. -+.RS 5 -+.PP -+The references in this section should be either manual page references, -+like `\f(CWtcpdump(1)\fR', or text references, like `RFC 959: File Transfer -+Protocol'. However, the first paragraph in the section is special; there, -+you can just give element names without `\f(CW(n)\fP' suffixes. -+.PP -+If one of these references occurs in some other section, it will be -+formatted like a link. For example, in -+.nf -+ =d -+ This element is like Queue. -+ =a Queue -+.fi -+the mention of `\f(CWQueue\fR' in the description section will be formatted -+like a link. -+.RE -+' -+.TP 5 -+\f(CW=head1\fR \fIsectionname\fR -+Begin a section other than those listed. \fISectionname\fR is the name of -+the section. -+' -+.SS "Other Commands" -+.TP 5 -+\f(CW=head2\fR \fItext\fR -+Produce a subheading with \fItext\fR as the text. -+.TP 5 -+\f(CW=over\fR \fIamount\fR -+Begin a list of items that is indented by -+\fIamount\fR characters. (Some translators may ignore \fIamount\fR.) -+.TP 5 -+\f(CW=item\fR \fItext\fR -+Add an item to the latest list opened by \f(CW=over\fR. It is illegal to -+use \f(CW=item\fR outside of any \f(CW=over\fR list. The text of the item -+is \fItext\fR. If you are creating a bulleted list, use `\f(CW*\fR' as the -+text; if you are creating a numbered list, use `\f(CW1.\fR', `\f(CW2.\fR', -+and so forth. -+.TP 5 -+\f(CW=back\fR -+Close the latest list opened by \f(CW=over\fR. -+.TP 5 -+\f(CW=for\fR \fIformat\fR -+' -+Output the next paragraph only when generating documentation in -+\fIformat\fR. Valid \fIformat\fRs include `html', `man', and `roff'. The -+paragraph ends at the next command or blank line, and it consists of text -+in the given format, not element documentation. For example, this code -+includes a picture in HTML mode: -+.nf -+ =for html -+

Here is a pretty picture: -+

-+ -+ Back to B here. -+.fi -+.TP 5 -+\f(CW=begin\fR \fIformat\fR ... \f(CW=end\fR \fIformat\fR -+' -+This is like \f(CW=for\fR, but can encompass multiple paragraphs. It -+outputs text in between the \f(CW=begin\fR command and the \f(CW=end\fR -+command only when generating documentation in \fIformat\fR. -+.TP 5 -+\f(CW=deprecated\fR \fInew-element\fR -+This command notes that the element has been deprecated in favor of -+\fInew-element\fR. It does not result in any output. -+' -+.SH TEXT -+Each line that doesn't begin with `\f(CW=\fR' and a lower-case letter is -+treated as text. (Unless it starts with a space or tab; see verbatim text, -+below.) This text is formatted nicely, and perhaps even justified. You can -+use several formatting commands inside normal text; they consist of an -+uppercase letter, followed by `\f(CW<\fR', some text, and `\f(CW>\fR'. The -+commands are: -+.TP 10 -+\f(CWB<\fItext\fR\f(CW>\fR -+Print \fItext\fR in \fBboldface\fR. -+.TP 10 -+\f(CWI<\fItext\fR\f(CW>\fR -+Print \fItext\fR in \fIitalic\fR. -+.TP 10 -+\f(CWR<\fItext\fR\f(CW>\fR -+Print \fItext\fR in \fRroman\fR. Useful inside \f(CWB<...>\fR and so forth, -+or to prevent words from being highlighted. -+.TP 10 -+\f(CWC<\fItext\fR\f(CW>\fR -+Print \fItext\fR like source code, in a constant-width font. -+.TP 10 -+\f(CWF<\fItext\fR\f(CW>\fR -+Print \fItext\fR like a filename. By default, filenames appear in italics. -+.TP 10 -+\f(CWL<\fItext\fR|\fIlink\fR\f(CW>\fR -+Print \fItext\fR as a hyperlink with destination \fIlink\fR. This usually -+just comes out as \fItext\fR. -+.TP 10 -+\f(CWN<>\fR -+Put a line break here. -+.TP 10 -+\f(CWE<\fIname\fR\f(CW>\fR -+' -+Print the HTML-style entity named \fIname\fR. There are six entities: -+\f(CWE\fR is `<', \f(CWE\fR is `>', \f(CWE\fR is `&', -+\f(CWE\fR is `/', \f(CWE\fR is `|', \f(CWE\fR is `*', -+and \f(CWE\fR is `='. This is useful for typing one of these characters -+in a context that would seem like a command or formatting command. -+.TP 10 -+\f(CWV<\fItext\fR\f(CW>\fR -+Do not print \fItext\fR. -+' -+.SH VERBATIM TEXT -+Lines that start with a space or tab character are printed out -+verbatim\*Ethat is, without any changes, and with the line breaks and -+indentation you specified. You can't use formatting commands -+in verbatim text. Verbatim text is useful for showing example code; for -+example: -+.PP -+.nf -+ This code -+ q :: Queue; -+ ... -> RED(5, 50, 0.02) -> q -> ... -+ adds RED dropping to q. -+.fi -+' -+.SH EXAMPLES -+.nf -+/* =c -+ * Align(MODULUS, OFFSET) -+ * =s modification -+ * aligns packet data -+ * =d -+ * Aligns packet data. Each input packet is aligned so that -+ * its first byte is OFFSET bytes off from a MODULUS-byte -+ * boundary. This may involve a packet copy. -+ * -+ * MODULUS I be 2, 4, or 8. -+ * =n -+ * The click-align(1) tool will insert this element -+ * automatically wherever it is required. -+ * =e -+ * ... -> Align(4, 0) -> ... -+ * =a AlignmentInfo, click-align(1) */ -+.fi -+.PP -+.nf -+/* =c -+ * Counter([TYPE]) -+ * =s measurement -+ * measures packet count and rate -+ * =d -+ * Passes packets unchanged from its input to its output, -+ * maintaining statistics information about packet count and -+ * rate if TYPE is "packets", or byte count and byte rate if -+ * TYPE is "bytes". The default TYPE is "packets". -+ * =h count read-only -+ * Returns the number of packets/bytes that have passed through. -+ * =h rate read-only -+ * Returns the recent arrival rate (measured by exponential -+ * weighted moving average) in packets/bytes per second. -+ * =h reset write-only -+ * Resets the count and rate to zero. -+ */ -+.fi -+' -+.SH "SEE ALSO" -+.M perlpod 1 , -+.M click 1 , -+.M click 5 -+.SH AUTHOR -+.na -+Eddie Kohler, kohler@cs.ucla.edu -+.br -+Robert Morris, rtm@lcs.mit.edu -+.br -+http://www.pdos.lcs.mit.edu/click/ -+' -diff -Nurb click-1.6.0/inst/share/man/man8/click.o.8 click-1.6.0-27/inst/share/man/man8/click.o.8 ---- click-1.6.0/inst/share/man/man8/click.o.8 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/man8/click.o.8 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,345 @@ -+.\" -*- mode: nroff -*- -+.ds V 1.5 -+.ds D 15/Dec/2006 -+.ds E " \-\- -+.if t .ds E \(em -+.de Sp -+.if n .sp -+.if t .sp 0.4 -+.. -+.de Es -+.Sp -+.RS 5 -+.nf -+.. -+.de Ee -+.fi -+.RE -+.PP -+.. -+.de Rs -+.RS -+.Sp -+.. -+.de Re -+.Sp -+.RE -+.. -+.de M -+.BR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RB "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH CLICK.O 8 "\*D" "Version \*V" -+.SH NAME -+click.o \- Click kernel module driver for Linux -+' -+.SH DESCRIPTION -+' -+The Click modular router can be compiled as a Linux kernel module, called -+.BR click.o . -+It can steal packets from network devices before Linux gets a chance to -+handle them, send packets directly to devices, and send packets to Linux -+for normal processing. -+.PP -+The right way to load the Click kernel module is with -+.M click-install 1 ". " -+This installs the module if necessary, mounts the Click file system onto -+the /click directory, and installs a configuration, including any required -+packages. The right way to unload the Click kernel module is with -+.M click-uninstall 1 ". " -+For example: -+.sp -+.nf -+ # click-install config.click -+ # click-uninstall -+.fi -+' -+.SH "HANDLERS" -+The module's API is a filesystem similar to the -+.M proc 5 -+filesystem. Click creates a number of files under /click (or wherever you -+have mounted the filesystem), some read-only and some read/write (writable -+by the superuser). You control the module by writing to these files, which -+are called -+.IR handlers . -+.PP -+.B click-install -+installs a router configuration by writing it to /click/config or -+/click/hotconfig. The configuration can use most of Click's element classes -+(see -+.M elements n ). -+Several element classes control how the module receives and transmits -+packets: -+.M FromDevice n -+and -+.M PollDevice n -+steal packets from devices before Linux processes them, -+.M ToDevice n -+sends packets directly to devices, and -+.M ToHost n -+sends packets to Linux for normal processing. Removing the module or -+installing a null configuration will restore your machine's default -+networking behavior. -+.PP -+The handlers under /click include: -+.TP 5 -+.B /click/config -+Read/write. Contains a Click-language description (see -+.M click 5 ) -+of the most recent router configuration, not including any run-time -+reconfiguration. -+.B click-install -+writes a Click-language router description to this file to -+install a new router configuration. -+' -+.TP -+.B /click/hotconfig -+Write-only. -+.B 'click-install -h' -+writes a Click-language router description to this file to -+hot-swap install a new router configuration. The new router is installed -+only if it initializes correctly; otherwise, error messages will be -+reported to /click/errors, but the old router will keep working -+without interruption. If the new router initializes successfully, state -+from the old router, such as any packets stored in -+.M Queue n -+elements, will be moved into the new router before it is installed. This -+happens on a per-element basis, and it only works if the new element and -+the old element have the same name. In contrast, -+/click/config always throws away the old router. -+' -+.TP -+.B /click/errors -+Read-only. Errors reported by the Click router since the last -+reconfiguration (that is, the last write to /click/config or -+/click/hotconfig). Errors are also printed to the system log. Only the most -+recent 2-4KB of error messages are saved in this file. -+' -+.TP -+.B /click/messages -+Read-only. All messages printed by the Click router since the last -+reconfiguration (that is, the last write to /click/config or -+/click/hotconfig). This includes messages generated by Print, among -+others. Messages are also printed to the system log. Only the most recent -+2-4KB of messages are saved in this file. -+' -+.TP -+.B /click/classes -+Read-only. The primitive element classes supported by the router, listed -+one per line. -+' -+.TP -+.B /click/list -+Read-only. The names of the elements in the current router configuration, -+listed one per line. The first line is an integer: the number of elements. -+' -+.TP -+.B /click/flatconfig -+Read-only. A Click-language description of the current router -+configuration, including the effects of any run-time reconfiguration. All -+element declarations come first, then all connections. Compound elements -+are expanded into their primitive components. -+' -+.TP -+.B /click/packages -+Read-only. The packages that are currently linked to the Click module, -+listed one per line. -+' -+.TP -+.B /click/requirements -+Read-only. The packages required by the current configuration, listed one -+per line. -+' -+.TP -+.B /click/cycles, /click/meminfo -+Read-only. Cycle count and memory usage statistics. -+' -+.TP -+.B /click/threads -+Read-only. The PIDs of any currently running Click kernel threads, listed -+one per line. -+' -+.TP -+.B /click/priority -+Read/write. The CPU priority for Click kernel threads. Lower values have -+higher priority. -+' -+.TP -+.B /click/version -+Read-only. The kernel module's version number. -+' -+.PP -+When compiled with --enable-adaptive, Click provides three additional -+handlers: -+' -+.TP -+.B /click/min_cpu_share -+Read/write. The minimum fraction of CPU time Click will use, even if it has -+no work to do. Expressed as a real number between 0.001 and 0.999. Default -+is 0.005. Raising this number will help Click in polling mode respond more -+quickly to network events. -+' -+.TP -+.B /click/max_cpu_share -+Read/write. The maximum fraction of CPU time Click will use, no matter how -+much work it has to do. Expressed as a real number between 0.001 and 0.999. -+Default is 0.8. Lowering this number will help user-level programs make -+progress, even under high network load. -+' -+.TP -+.B /click/cpu_share -+Read-only. The fraction of CPU time Click is currently using, expressed as -+a real number between 0 and 1. -+' -+.PP -+When compiled with --enable-kassert, Click provides one additional -+handler: -+' -+.TP -+.B /click/assert_stop -+Read/write. A Boolean value. If true, then Click will attempt to stop the -+running router, if any, if an assertion fails. Default is false. -+' -+.SS "Element directories" -+' -+Every element in the current router configuration has a directory under -+/click. You can access the directory by number or element name. The -+.IR i th -+element in /click/list has directory -+.RI `/click/ i ', -+and if the element is named -+.IR n , -+that directory can be accessed as -+.RI `/click/ n '. -+This works even if the name contains slashes -+.RB ( click.o -+creates directories for each name component). However, if an element name -+conflicts with a handler name, the handler is preferred. Thus, if you call -+an element "config", you will be able to access that element's handlers -+only via its number directory. -+.PP -+Handlers in these element directories include: -+' -+.TP 5 -+.BI /click/xxx/class -+Read-only. The element's class. -+.TP -+.BI /click/xxx/name -+Read-only. The element's name. -+.TP -+.BI /click/xxx/config -+Read/write if the element supports run-time reconfiguration; otherwise -+read-only. The element's current configuration. Writing to this file (if it -+is writable) causes the element to reconfigure itself on the fly. If the -+reconfiguration fails, the element's old configuration is used instead. -+.TP -+.BI /click/xxx/ports -+Read-only. Describes the element's input and output ports: how many there -+are, their processing type, and (for pull inputs and push outputs) what -+they are connected to. -+.TP -+.BI /click/xxx/handlers -+Read-only. Lists the element's handlers, one per line. Each line has the -+handler name and, after a tab, a permissions word. The permissions word is -+currently "r" (read-only), "w" (write-only), or "rw" (read/write). -+' -+.PP -+Elements that have associated tasks often provide these two additional -+handlers: -+' -+.TP 5 -+.BI /click/xxx/scheduled -+Read-only. A Boolean value: "true" if the element is currently on the task -+list, "false" if it is not. -+.TP -+.BI /click/xxx/tickets -+Read/write. Returns or sets the element's tickets, an integer that -+influences task scheduling priority. The more tickets a task has, the more -+often it will be scheduled relative to other tasks. -+' -+.PP -+Particular elements may add additional handlers to their directories. For -+example, RED elements (see -+.M RED n ) -+add read/write -+.BR min_thresh ", " max_thresh ", and " max_p -+files representing RED parameters, and Counter elements (see -+.M Counter n ) -+provide read-only -+.BR count " and " rate -+files to report packet counts and the recent rate. -+.PP -+The subdirectories and generic files are always created, but -+element-specific files are created only if the router configuration was -+initialized successfully. -+' -+.SH "MANUAL LOADING" -+You almost certainly should load Click using -+.M click-install 1 ". " -+Nevertheless, the manual loading steps are as follows. -+.TP 3 -+1. -+Load the -+.B proclikefs -+module with -+.M insmod 8 : -+"/sbin/insmod proclikefs.ko". This module takes charge of the Click -+filesystem, allowing you to safely unload the Click module even if -+user-level programs have Click control files open. -+.TP -+2. -+Load the -+.B click -+module with -+.BR insmod : -+"/sbin/insmod click.ko". -+.TP -+3. -+Mount the Click filesystem on a directory using -+.M mount 8 ". " -+The usual choice is /click: "mount -t click none /click". The Click kernel -+module installs a symbolic link from /proc/click to /click. -+.TP -+4. -+Install a configuration by writing it to /click/config: -+"cat CONFIGFILE > /click/config", for example. -+.LP -+To uninstall Click without -+.M click-uninstall 1 , -+kill the current router by installing an empty configuration ("echo > -+/click/config"), unload any element packages, and finally -+.M rmmod 8 -+the "click" module. -+' -+.SH "BUGS" -+If you get an unaligned access error, try running your configuration -+through -+.M click-align 1 -+before installing it. -+' -+.SH "SEE ALSO" -+.M click 1 , -+.M click-align 1 , -+.M click-install 1 , -+.M click-uninstall 1 , -+.M insmod 1 , -+.M rmmod 1 , -+.M click 5 , -+.M elements n , -+.M FromDevice n , -+.M PollDevice n , -+.M ToDevice n , -+.M FromHost n , -+.M ToHost n , -+.M Queue n -+' -+.SH AUTHOR -+.na -+Eddie Kohler, kohler@cs.ucla.edu -+.br -+Robert Morris, rtm@lcs.mit.edu -+.br -+http://www.pdos.lcs.mit.edu/click/ -+' -diff -Nurb click-1.6.0/inst/share/man/mann/ARPFaker.n click-1.6.0-27/inst/share/man/mann/ARPFaker.n ---- click-1.6.0/inst/share/man/mann/ARPFaker.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ARPFaker.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,50 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ethernet/arpfaker.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ARPFAKER" n "11/Feb/2009" "Click" -+.SH "NAME" -+ARPFaker \- Click element; -+periodically generates an ARP reply -+.SH "SYNOPSIS" -+\fBARPFaker\fR(DSTIP, DSTETH, SRCIP, SRCETH) -+ -+\fBPorts\fR: no inputs, 1 output -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: ethernet (core) -+.br -+.SH "DESCRIPTION" -+Every 10 seconds, -+sends an ARP "reply" packet to DSTIP/DSTETH claiming that SRCIP has ethernet -+address SRCETH. Generates the ethernet header as well as the -+ARP header. -+.PP -+ -+.SH "EXAMPLES" -+Sends ARP packets to 18.26.4.1 (with ether addr 0:e0:2b:b:1a:0) -+claiming that 18.26.4.99's ethernet address is 00:a0:c9:9c:fd:9c. -+.PP -+.nf -+\& ARPFaker(18.26.4.1, 0:e0:2b:b:1a:0, 18.26.4.99, 00:a0:c9:9c:fd:9c) -+\& -> ToDevice(eth0); -+.fi -+.PP -+ -+ -+ -+.SH "NOTES" -+You probably want to use -+.M ARPResponder "n" -+rather than \fBARPFaker\fR. -+.PP -+ -+.SH "SEE ALSO" -+.M ARPQuerier n , -+.M ARPResponder "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ARPPrint.n click-1.6.0-27/inst/share/man/mann/ARPPrint.n ---- click-1.6.0/inst/share/man/mann/ARPPrint.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ARPPrint.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,45 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ethernet/arpprint.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ARPPRINT" n "11/Feb/2009" "Click" -+.SH "NAME" -+ARPPrint \- Click element; -+pretty-prints ARP packets a la tcpdump -+.SH "SYNOPSIS" -+\fBARPPrint\fR([TAG, \fIKEYWORDS\fR]) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: ethernet (core) -+.br -+.SH "DESCRIPTION" -+Expects ARP packets as input. -+.PP -+Prints out ARP packets in a human-readable tcpdump-like format, preceded by -+the TAG text. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "TIMESTAMP" 2 -+Boolean. Determines whether to print each packet's timestamp in seconds since -+1970. Default is true. -+.IP "" 2 -+.IP "OUTFILE" 2 -+String. Only available at user level. Print information to the file specified -+by OUTFILE instead of standard error. -+.IP "" 2 -+.PP -+ -+.SH "SEE ALSO" -+.M Print n , -+.M CheckARPHeader "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ARPQuerier.n click-1.6.0-27/inst/share/man/mann/ARPQuerier.n ---- click-1.6.0/inst/share/man/mann/ARPQuerier.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ARPQuerier.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,119 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ethernet/arpquerier.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ARPQUERIER" n "11/Feb/2009" "Click" -+.SH "NAME" -+ARPQuerier \- Click element; -+encapsulates IP packets in Ethernet headers found via ARP -+.SH "SYNOPSIS" -+\fBARPQuerier\fR(IP, ETH, \fIkeywords\fR) -+.br -+\fBARPQuerier\fR(NAME, \fIkeywords\fR) -+ -+\fBPorts\fR: 2 inputs, 1-2 outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: ethernet (core) -+.br -+.SH "DESCRIPTION" -+Handles most of the ARP protocol. Argument IP should be -+this host's IP address, and ETH should be this host's -+Ethernet address. (In -+the one-argument form, NAME should be shorthand for -+both an IP and an Ethernet address; see -+.M AddressInfo n .) -+.PP -+Packets arriving on input 0 should be IP packets, and must have their -+destination address annotations set. -+If an Ethernet address is already known -+for the destination, the IP packet is wrapped in an Ethernet -+header and sent to output 0. Otherwise the IP packet is saved and -+an ARP query is sent instead. If an ARP response arrives -+on input 1 for an IP address that we need, the mapping is -+recorded and any saved IP packets are sent. -+.PP -+The ARP reply packets on input 1 should include the Ethernet header. -+.PP -+\fBARPQuerier\fR may have one or two outputs. If it has two, then ARP queries -+are sent to the second output. -+.PP -+\fBARPQuerier\fR will not send queries for packets addressed to 0.0.0.0, -+255.255.255.255, or, if specified, any BROADCAST address. Packets addressed -+to 0.0.0.0 are dropped; packets for broadcast addresses are forwarded with -+destination Ethernet address FF:FF:FF:FF:FF:FF. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "CAPACITY" 8 -+Unsigned integer. The maximum number of saved IP packets the element will -+hold at a time. Default is 2048. Note that, unlike the number of packets, -+the total number of ARP entries the element will hold is currently unlimited. -+.IP "" 8 -+.IP "BROADCAST" 8 -+IP address. Local broadcast IP address. Packets sent to this address will be -+forwarded to Ethernet address FF:FF:FF:FF:FF:FF. Defaults to the local -+broadcast address that can be extracted from the IP address's corresponding -+prefix, if any. -+.IP "" 8 -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& c :: Classifier(12/0806 20/0002, 12/0800, ...); -+\& a :: ARPQuerier(18.26.4.24, 00:00:C0:AE:67:EF); -+\& c[0] -> a[1]; -+\& c[1] -> ... -> a[0]; -+\& a[0] -> ... -> ToDevice(eth0); -+.fi -+.PP -+ -+ -+ -+.SH "NOTES" -+If a host has multiple interfaces, it will need multiple -+instances of \fBARPQuerier\fR. -+.PP -+\fBARPQuerier\fR uses packets' destination IP address annotations, and can destroy -+their next packet annotations. -+.PP -+\fBARPQuerier\fR will send at most 10 queries a second for any IP address. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBipaddr\fR (read/write)" 5 -+Returns or sets the \fBARPQuerier\fR's source IP address. -+.IP "" 5 -+.IP "\fBtable\fR (read-only)" 5 -+Returns a textual representation of the ARP table. -+.IP "" 5 -+.IP "\fBstats\fR (read-only)" 5 -+Returns textual statistics (queries and drops). -+.IP "" 5 -+.IP "\fBqueries\fR (read-only)" 5 -+Returns the number of queries sent. -+.IP "" 5 -+.IP "\fBresponses\fR (read-only)" 5 -+Returns the number of responses received. -+.IP "" 5 -+.IP "\fBdrops\fR (read-only)" 5 -+Returns the number of packets dropped. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M ARPResponder n , -+.M ARPFaker n , -+.M AddressInfo "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ARPResponder.n click-1.6.0-27/inst/share/man/mann/ARPResponder.n ---- click-1.6.0/inst/share/man/mann/ARPResponder.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ARPResponder.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,66 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ethernet/arpresponder.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ARPRESPONDER" n "11/Feb/2009" "Click" -+.SH "NAME" -+ARPResponder \- Click element; -+generates responses to ARP queries -+.SH "SYNOPSIS" -+\fBARPResponder\fR(IP/MASK1 [IP/MASK...] ETH1, IP/MASK2 ETH2, ...) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: ethernet (core) -+.br -+.SH "DESCRIPTION" -+Input should be ARP request packets, including the Ethernet header. -+Forwards an ARP reply if we know the answer -- that is, if one of the -+IPPREFIX arguments matches the requested IP address, then it outputs an ARP -+reply giving the corresponding ETH address. Could be used for proxy ARP as -+well as producing replies for a host's own address. -+.PP -+The IP/MASK arguments are IP network addresses (IP address/netmask pairs). -+The netmask can be specified in CIDR form (`\f(CW18.26.7.0/24\fR') or dotted -+decimal form (`\f(CW18.26.7.0/255.255.255.0\fR'). -+.PP -+\fBARPResponder\fR sets the device annotations on generated ARP responses to the -+device annotations from the corresponding queries. -+.PP -+ -+.SH "NOTES" -+.M AddressInfo "n" -+elements can simplify the arguments to \fBARPResponder\fR. In -+particular, if \f(CWNAME\fR is shorthand for both an IP network address (or IP -+address) \f(CWIP\fR and an Ethernet address \f(CWETH\fR, then \f(CWARPResponder(NAME)\fR is -+equivalent to \f(CWARPResponder(IP ETH)\fR. If \f(CWNAME\fR is short for both an IP -+address and an IP network address, then \fBARPResponder\fR will prefer the IP -+address. (You can say \f(CWNAME:ipnet\fR to use the IP network address.) -+.PP -+ -+.SH "EXAMPLES" -+Produce ARP replies for the local machine (18.26.4.24) -+as well as proxy ARP for all machines on net 18.26.7 -+directing their packets to the local machine: -+.PP -+.nf -+\& c :: Classifier(12/0806 20/0001, ...); -+\& ar :: ARPResponder(18.26.4.24 18.26.7.0/24 00:00:C0:AE:67:EF); -+\& c[0] -> ar; -+\& ar -> ToDevice(eth0); -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M ARPQuerier n , -+.M ARPFaker n , -+.M AddressInfo "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/AdaptiveRED.n click-1.6.0-27/inst/share/man/mann/AdaptiveRED.n ---- click-1.6.0/inst/share/man/mann/AdaptiveRED.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/AdaptiveRED.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,40 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/aqm/adaptivered.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ADAPTIVERED" n "11/Feb/2009" "Click" -+.SH "NAME" -+AdaptiveRED \- Click element; -+drops packets according to Adaptive RED -+.SH "SYNOPSIS" -+\fBAdaptiveRED\fR(TARGET, MAX_P [, \fIKEYWORDS\fR]) -+ -+\fBPorts\fR: 1 input, 1-2 outputs -+.br -+\fBProcessing\fR: agnostic, but output 1 is push -+.br -+\fBPackage\fR: aqm (core) -+.br -+.SH "DESCRIPTION" -+Implements the Adaptive Random Early Detection packet dropping algorithm. This -+algorithm implements Random Early Detection, as by the -+.M RED "n" -+element, plus -+automatic parameter setting. -+.PP -+The TARGET argument is the target queue length. -+.M RED "n" 's -+MIN_THRESH parameter -+is set to TARGET/2, and MAX_THRESH to 3*TARGET/2. The MAX_P parameter, and -+QUEUES and STABILITY keywords, are as in the -+.M RED "n" -+element. -+.PP -+ -+.SH "SEE ALSO" -+.M RED "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/AddressInfo.n click-1.6.0-27/inst/share/man/mann/AddressInfo.n ---- click-1.6.0/inst/share/man/mann/AddressInfo.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/AddressInfo.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,85 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../include/click/standard/addressinfo.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ADDRESSINFO" n "11/Feb/2009" "Click" -+.SH "NAME" -+AddressInfo \- Click element; -+specifies address information -+.SH "SYNOPSIS" -+\fBAddressInfo\fR(NAME ADDRESS [ADDRESS...], ...) -+ -+\fBPorts\fR: None -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Lets you use mnemonic names for IPv4 and IPv6 addresses, IPv4 and IPv6 -+address prefixes, and Ethernet addresses. Each argument has the form `NAME -+ADDRESS [ADDRESS...]', which associates the given ADDRESSes with NAME. For -+example, if a configuration contains this \fBAddressInfo\fR element, -+.PP -+.nf -+\& AddressInfo(mauer 10.0.0.1, mazu 10.0.0.10); -+.fi -+.PP -+then other configuration strings can use \f(CWmauer\fR and \f(CWmazu\fR as mnemonics -+for the IP addresses 10.0.0.1 and 10.0.0.10, respectively. -+.PP -+The mnemonic names introduced by \fBAddressInfo\fR elements are local with -+respect to compound elements. That is, names created inside a compound -+element apply only within that compound element and its subelements. For -+example: -+.PP -+.nf -+\& AddressInfo(mauer 10.0.0.1); -+\& compound :: { -+\& AddressInfo(mazu 10.0.0.10); -+\& ... -> IPEncap(6, mauer, mazu) -> ... // OK -+\& }; -+\& ... -> IPEncap(6, mauer, mazu) -> ... // error: `mazu' undefined -+.fi -+.PP -+Any name can be simultaneously associated with an IP address, an IP network -+address, and an Ethernet address. The kind of address that is returned is -+generally determined from context. For example: -+.PP -+.nf -+\& AddressInfo(mauer 10.0.0.1/8 00:50:BA:85:84:A9); -+\& ... -> IPEncap(6, mauer, ...) // as IP address -+\& -> EtherEncap(0x0800, mauer, ...) -> ... // as Ethernet address -+\& ... -> ARPResponder(mauer) -> ... // as IP prefix AND Ethernet address! -+.fi -+.PP -+An optional suffix makes the context unambiguous. \f(CWNAME\fR is an ambiguous -+reference to some address, but \f(CWNAME:ip\fR is always an IPv4 address, -+\f(CWNAME:ipnet\fR is always an IPv4 network address (IPv4 address prefix), -+\f(CWNAME:ip6\fR is always an IPv6 address, \f(CWNAME:ip6net\fR is always an IPv6 -+network address, and \f(CWNAME:eth\fR is always an Ethernet address. -+.PP -+ -+ -+.SH "DEFAULT ADDRESSES" -+If you do not define an address for a given name, \fBAddressInfo\fR will use the -+default, if any. Defaults are as follows: -+.PP -+ -+ -+.IP "*" 2 -+If DEVNAME is the name of an Ethernet device, then \f(CWDEVNAME:eth\fR defaults to -+DEVNAME's Ethernet address. (At userlevel, this works only on BSD and Linux.) -+.IP "" 2 -+.IP "*" 2 -+\f(CWDEVNAME:ip\fR defaults to the first primary IPv4 address associated with the -+device DEVNAME. -+.IP "" 2 -+.PP -+These defaults are not available on all platforms. -+.PP -+.SH "SEE ALSO" -+.M PortInfo "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Align.n click-1.6.0-27/inst/share/man/mann/Align.n ---- click-1.6.0/inst/share/man/mann/Align.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Align.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,48 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/align.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ALIGN" n "11/Feb/2009" "Click" -+.SH "NAME" -+Align \- Click element; -+aligns packet data -+.SH "SYNOPSIS" -+\fBAlign\fR(MODULUS, OFFSET) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Aligns packet data. Each input packet is aligned so that its first byte is -+OFFSET bytes off from a MODULUS-byte boundary. This may involve a packet -+copy. -+.PP -+MODULUS must be 2, 4, or 8. -+ -+.SH "NOTES" -+The -+.M click-align 1 -+tool will insert this element automatically wherever it -+is required. -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& ... -> Align(4, 0) -> ... -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M AlignmentInfo n , -+click-align(1) -+ -diff -Nurb click-1.6.0/inst/share/man/mann/AlignmentInfo.n click-1.6.0-27/inst/share/man/mann/AlignmentInfo.n ---- click-1.6.0/inst/share/man/mann/AlignmentInfo.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/AlignmentInfo.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,36 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../include/click/standard/alignmentinfo.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ALIGNMENTINFO" n "11/Feb/2009" "Click" -+.SH "NAME" -+AlignmentInfo \- Click element; -+specifies alignment information -+.SH "SYNOPSIS" -+\fBAlignmentInfo\fR(ELEMENT [MODULUS OFFSET ...], ...) -+ -+\fBPorts\fR: None -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Provides information about the packet alignment specified elements can -+expect. Each configuration argument has the form -+`ELEMENT [MODULUS0 OFFSET0 MODULUS1 OFFSET1 ...]', -+where there are zero or more MODULUS-OFFSET pairs. -+All packets arriving at ELEMENT's -+\fIn\fRth input will start `OFFSET\fIn\fR' bytes -+off from a `MODULUS\fIn\fR'-byte boundary. -+ -+.SH "NOTES" -+This element is inserted automatically by -+.M click-align 1 . -+ -+.SH "SEE ALSO" -+.M Align n , -+click-align(1) -+ -diff -Nurb click-1.6.0/inst/share/man/mann/AverageCounter.n click-1.6.0-27/inst/share/man/mann/AverageCounter.n ---- click-1.6.0/inst/share/man/mann/AverageCounter.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/AverageCounter.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,54 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/averagecounter.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "AVERAGECOUNTER" n "11/Feb/2009" "Click" -+.SH "NAME" -+AverageCounter \- Click element; -+measures historical packet count and rate -+.SH "SYNOPSIS" -+\fBAverageCounter\fR([IGNORE]) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Passes packets unchanged from its input to its -+output, maintaining statistics information about -+packet count and packet rate using a strict average. -+.PP -+The rate covers only the time between the first and -+most recent packets. -+.PP -+IGNORE, by default, is 0. If it is greater than 0, -+the first IGNORE number of seconds are ignored in -+the count. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBcount\fR (read-only)" 5 -+Returns the number of packets that have passed through since the last reset. -+.IP "" 5 -+.IP "\fBbyte_count\fR (read-only)" 5 -+Returns the number of packets that have passed through since the last reset. -+.IP "" 5 -+.IP "\fBrate\fR (read-only)" 5 -+Returns packet arrival rate. -+.IP "" 5 -+.IP "\fBbyte_rate\fR (read-only)" 5 -+Returns packet arrival rate in bytes per second. (Beware overflow!) -+.IP "" 5 -+.IP "\fBreset\fR (write-only)" 5 -+Resets the count and rate to zero. -+.PP -+ -diff -Nurb click-1.6.0/inst/share/man/mann/BandwidthMeter.n click-1.6.0-27/inst/share/man/mann/BandwidthMeter.n ---- click-1.6.0/inst/share/man/mann/BandwidthMeter.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/BandwidthMeter.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,59 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/bandwidthmeter.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "BANDWIDTHMETER" n "11/Feb/2009" "Click" -+.SH "NAME" -+BandwidthMeter \- Click element; -+classifies packet stream by arrival rate -+.SH "SYNOPSIS" -+\fBBandwidthMeter\fR(RATE1, RATE2, ..., RATE\fIn\fR) -+ -+\fBPorts\fR: 1 input, 2 or more outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Classifies packet stream based on the rate of packet arrival. The rate -+is measured in bytes per second using an exponential weighted moving -+average. (The related -+.M Meter "n" -+element measures rates in packets per -+second.) -+.PP -+The configuration string consists of one or more RATE arguments. Each -+RATE is a bandwidth, such as "384 kbps". Earlier -+rates in the list must be less than later rates. A -+.M Meter "n" -+with \fIn\fR rate -+arguments will have \fIn\fR+1 outputs. It sends packets out the output -+corresponding to the current rate. If the rate is less than RATE1 -+packets are sent to output 0; if it is >= RATE1 but < RATE2, packets are -+sent to output 1; and so on. If it is >= RATE\fIn\fR, packets are sent to -+output \fIn\fR. -+.PP -+ -+.SH "EXAMPLES" -+This configuration fragment drops the input stream when it is generating -+more than 20,000 bytes per second. -+.PP -+.nf -+\& ... -> m :: BandwidthMeter(20kBps) -> ...; -+\& m[1] -> Discard; -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M Meter n , -+.M BandwidthShaper n , -+.M Shaper n , -+.M RatedSplitter "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/BandwidthRatedSplitter.n click-1.6.0-27/inst/share/man/mann/BandwidthRatedSplitter.n ---- click-1.6.0/inst/share/man/mann/BandwidthRatedSplitter.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/BandwidthRatedSplitter.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,46 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/bwratedsplitter.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "BANDWIDTHRATEDSPLITTER" n "11/Feb/2009" "Click" -+.SH "NAME" -+BandwidthRatedSplitter \- Click element; -+splits flow of packets at specified bandwidth rate -+.SH "SYNOPSIS" -+\fBBandwidthRatedSplitter\fR(RATE) -+ -+\fBPorts\fR: 1 input, 2 outputs -+.br -+\fBProcessing\fR: Push -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+\fBBandwidthRatedSplitter\fR has two output ports. All incoming packets up to a -+maximum of RATE are emitted on output port 0. Any remaining packets are -+emitted on output port 1. RATE is a bandwidth, such as "384 kbps". -+Unlike -+.M BandwidthMeter "n" , -+the base RATE is emitted on output port -+0 even when the input rate is greater than RATE. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBrate\fR (read/write)" 5 -+rate of splitting -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M RatedSplitter n , -+.M BandwidthMeter n , -+.M BandwidthShaper n , -+.M BandwidthRatedUnqueue "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/BandwidthRatedUnqueue.n click-1.6.0-27/inst/share/man/mann/BandwidthRatedUnqueue.n ---- click-1.6.0/inst/share/man/mann/BandwidthRatedUnqueue.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/BandwidthRatedUnqueue.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,32 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/bwratedunqueue.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "BANDWIDTHRATEDUNQUEUE" n "11/Feb/2009" "Click" -+.SH "NAME" -+BandwidthRatedUnqueue \- Click element; -+pull-to-push converter -+.SH "SYNOPSIS" -+\fBBandwidthRatedUnqueue\fR(RATE) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: Pull inputs, push outputs -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Pulls packets at the given bandwidth RATE, and pushes them out its single -+output. RATE is a bandwidth, such as "384 kbps". -+.PP -+ -+.SH "SEE ALSO" -+.M RatedUnqueue n , -+.M Unqueue n , -+.M BandwidthShaper n , -+.M BandwidthRatedSplitter "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/BandwidthShaper.n click-1.6.0-27/inst/share/man/mann/BandwidthShaper.n ---- click-1.6.0/inst/share/man/mann/BandwidthShaper.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/BandwidthShaper.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,43 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/bandwidthshaper.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "BANDWIDTHSHAPER" n "11/Feb/2009" "Click" -+.SH "NAME" -+BandwidthShaper \- Click element; -+shapes traffic to maximum rate (bytes/s) -+.SH "SYNOPSIS" -+\fBBandwidthShaper\fR(RATE) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: Pull -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+\fBBandwidthShaper\fR is a pull element that allows a maximum bandwidth of -+RATE to pass through. That is, output traffic is shaped to RATE. -+If a \fBBandwidthShaper\fR receives a large number of -+evenly-spaced pull requests, then it will emit packets at the specified -+RATE with low burstiness. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBrate\fR (read/write)" 5 -+Returns or sets the RATE parameter. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M Shaper n , -+.M BandwidthRatedSplitter n , -+.M BandwidthRatedUnqueue "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Burster.n click-1.6.0-27/inst/share/man/mann/Burster.n ---- click-1.6.0/inst/share/man/mann/Burster.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Burster.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,35 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/burster.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "BURSTER" n "11/Feb/2009" "Click" -+.SH "NAME" -+Burster \- Click element; -+pull-to-push converter -+.SH "SYNOPSIS" -+\fBBurster\fR(INTERVAL, BURST) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: pull inputs, push outputs -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Pulls BURST packets each INTERVAL (seconds) from its input. -+Pushes them out its single output. The interval can be -+a floating point number. Default BURST is 8. -+.PP -+There are usually Queues both upstream and downstream -+of \fBBurster\fR elements. -+.PP -+ -+.SH "NOTES" -+The UNIX and Linux timers have granularity of about 10 -+milliseconds, so this \fBBurster\fR can only produce high packet -+rates by being bursty. -+ -diff -Nurb click-1.6.0/inst/share/man/mann/CPUQueue.n click-1.6.0-27/inst/share/man/mann/CPUQueue.n ---- click-1.6.0/inst/share/man/mann/CPUQueue.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/CPUQueue.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,35 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/linuxmodule/cpuqueue.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "CPUQUEUE" n "11/Feb/2009" "Click" -+.SH "NAME" -+CPUQueue \- Click element; -+stores packets in FIFO queues. -+.SH "SYNOPSIS" -+CPUQueue -+.br -+\fBCPUQueue\fR(CAPACITY) -+ -+\fBPorts\fR: 1 input, 1 or more outputs -+.br -+\fBProcessing\fR: push inputs, pull outputs -+.br -+\fBDrivers\fR: linuxmodule -+.br -+\fBPackage\fR: linuxmodule (core) -+.br -+.SH "DESCRIPTION" -+Stores incoming packets in a first-in-first-out queue. Each CPU has its own -+queue. The incoming packet is always enqueued onto the queue of the CPU -+calling the push method. Drops incoming packets if the queue already holds -+CAPACITY packets. The default for CAPACITY is 128. -+.PP -+ -+.SH "SEE ALSO" -+.M Queue "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/CPUSwitch.n click-1.6.0-27/inst/share/man/mann/CPUSwitch.n ---- click-1.6.0/inst/share/man/mann/CPUSwitch.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/CPUSwitch.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,32 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/linuxmodule/cpuswitch.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "CPUSWITCH" n "11/Feb/2009" "Click" -+.SH "NAME" -+CPUSwitch \- Click element; -+classifies packets by cpu -+.SH "SYNOPSIS" -+\fBCPUSwitch\fR() -+ -+\fBPorts\fR: 1 input, 1 or more outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBDrivers\fR: linuxmodule -+.br -+\fBPackage\fR: linuxmodule (core) -+.br -+.SH "DESCRIPTION" -+Can have any number of outputs. -+Chooses the output on which to emit each packet based on the thread's cpu. -+ -+.SH "SEE ALSO" -+.M RoundRobinSwitch n , -+.M StrideSwitch n , -+.M HashSwitch "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ChangeUID.n click-1.6.0-27/inst/share/man/mann/ChangeUID.n ---- click-1.6.0/inst/share/man/mann/ChangeUID.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ChangeUID.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,42 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/userlevel/changeuid.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "CHANGEUID" n "11/Feb/2009" "Click" -+.SH "NAME" -+ChangeUID \- Click element; -+relinquish root privilege -+.SH "SYNOPSIS" -+\fBChangeUID\fR() -+ -+\fBPorts\fR: none -+.br -+\fBDrivers\fR: userlevel -+.br -+\fBPackage\fR: userlevel (core) -+.br -+.SH "DESCRIPTION" -+Sets the current process's effective user and group IDs to its real user and -+group IDs, respectively. This relinquishes any set-uid-root privilege. -+.PP -+ -+.SH "NOTES" -+\fBChangeUID\fR's configure phase is set so that it runs immediately after the -+"privileged" elements FromDevice.u and ToDevice.u, but before most other -+elements. Thus, this configuration: -+.PP -+.nf -+\& f1 :: FromDevice(eth0) -> ... -+\& f2 :: FromDump(/tmp/x) -> ... -+\& ChangeUID() -+.fi -+.PP -+should fail to initialize if the user cannot read file \fI/tmp/x\fR. However, -+your mileage may vary. Set-uid-root programs are a bad idea, and Click is no -+exception. -+ -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ChatterSocket.n click-1.6.0-27/inst/share/man/mann/ChatterSocket.n ---- click-1.6.0/inst/share/man/mann/ChatterSocket.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ChatterSocket.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,101 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/userlevel/chattersocket.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "CHATTERSOCKET" n "11/Feb/2009" "Click" -+.SH "NAME" -+ChatterSocket \- Click element; -+reports chatter messages to connected sockets -+.SH "SYNOPSIS" -+\fBChatterSocket\fR("TCP", PORTNUMBER [, \fIKEYWORDS\fR]) -+.br -+\fBChatterSocket\fR("UNIX", FILENAME [, \fIKEYWORDS\fR]) -+ -+\fBPorts\fR: none -+.br -+\fBDrivers\fR: userlevel -+.br -+\fBPackage\fR: userlevel (core) -+.br -+.SH "DESCRIPTION" -+Opens a chatter socket that allows other user-level programs to receive copies -+of router chatter traffic. Depending on its configuration string, -+\fBChatterSocket\fR will listen on TCP port PORTNUMBER, or on a UNIX-domain socket -+named FILENAME. -+.PP -+The "server" (that is, the \fBChatterSocket\fR element) simply echoes any messages -+generated by the router configuration to any existing "clients". The server -+does not read any data from its clients. -+.PP -+When a connection is opened, \fBChatterSocket\fR responds by stating its protocol -+version number with a line like "Click::ChatterSocket/1.0\\r\\n". The current -+version number is 1.0. -+.PP -+\fBChatterSocket\fR broadcasts copies of messages generated by the default -+ErrorHandler or the \f(CWclick_chatter\fR function. Most elements report messages -+or run-time errors using one of these mechanisms. -+.PP -+If a client falls more than 500,000 bytes behind, \fBChatterSocket\fR automatically -+closes its connection. -+.PP -+\fBChatterSocket\fR supports hot-swapping, meaning you can change configurations -+without interrupting existing clients. The hot-swap will succeed only if the -+old \fBChatterSocket\fR and the new \fBChatterSocket\fR have the same element name, and -+the same socket type, port/filename, and chatter channel parameters. -+Additionally, the new \fBChatterSocket\fR must have RETRIES set to 1 or more, since -+the old \fBChatterSocket\fR has already bound the relevant socket. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "CHANNEL" 8 -+Text word. The socket outputs messages sent to this chatter channel. Default -+is the default channel, which corresponds to \f(CWclick_chatter()\fR. -+.IP "" 8 -+Channels help you organize extensive debugging output. For example, you could -+send extremely verbose messages to a `\f(CWverbose\fR' channel, then only connect -+to that channel when you want verbosity. -+.IP "" 8 -+To send messages to a particular channel, you should fetch the ErrorHandler -+object corresponding to that channel, using the Router member function -+\f(CWRouter::chatter_channel(const String &channel_name)\fR. -+.IP "" 8 -+.IP "QUIET_CHANNEL" 8 -+Boolean. Messages sent to a non-default channel are not normally printed on -+standard error. If QUIET_CHANNEL is false, however, the channel's messages do -+go to standard error, along with chatter messages. Default is true. -+.IP "" 8 -+.IP "GREETING" 8 -+Boolean. Determines whether the \f(CWClick::ChatterSocket/1.0\fR greeting is sent. -+Default is true. -+.IP "" 8 -+.IP "RETRIES" 8 -+Integer. If greater than 0, \fBChatterSocket\fR won't immediately fail when it can't -+open its socket. Instead, it will attempt to open the socket once a second -+until it succeeds, or until RETRIES unsuccessful attempts (after which it will -+stop the router). Default is 0. -+.IP "" 8 -+.IP "RETRY_WARNINGS" 8 -+Boolean. If true, \fBChatterSocket\fR will print warning messages every time it -+fails to open a socket. If false, it will print messages only on the final -+failure. Default is true. -+.IP "" 8 -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& ChatterSocket(unix, /tmp/clicksocket); -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M ControlSocket "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/CheckARPHeader.n click-1.6.0-27/inst/share/man/mann/CheckARPHeader.n ---- click-1.6.0/inst/share/man/mann/CheckARPHeader.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/CheckARPHeader.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,71 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ethernet/checkarpheader.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "CHECKARPHEADER" n "11/Feb/2009" "Click" -+.SH "NAME" -+CheckARPHeader \- Click element; -+checks ARP header -+.SH "SYNOPSIS" -+\fBCheckARPHeader\fR([OFFSET, \fIkeywords\fR OFFSET, VERBOSE, DETAILS]) -+ -+\fBPorts\fR: 1 input, 1-2 outputs -+.br -+\fBProcessing\fR: agnostic, but output 1 is push -+.br -+\fBPackage\fR: ethernet (core) -+.br -+.SH "DESCRIPTION" -+Input packets should have ARP headers starting OFFSET bytes in. Default OFFSET -+is zero. Checks that the packet's length is reasonable. -+.PP -+\fBCheckARPHeader\fR emits valid packets on output 0. Invalid packets are pushed out -+on output 1, unless output 1 was unused; if so, drops invalid packets. -+.PP -+\fBCheckARPHeader\fR prints a message to the console the first time it encounters an -+incorrect ARP packet (but see VERBOSE below). -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "OFFSET" 5 -+Unsigned integer. Byte position at which the ARP header begins. Default is 0. -+.IP "" 5 -+.IP "VERBOSE" 5 -+Boolean. If it is true, then a message will be printed for every erroneous -+packet, rather than just the first. False by default. -+.IP "" 5 -+.IP "DETAILS" 5 -+Boolean. If it is true, then \fBCheckARPHeader\fR will maintain detailed counts of -+how many packets were dropped for each possible reason, accessible through the -+\f(CWdrop_details\fR handler. False by default. -+.IP "" 5 -+.PP -+ -+.SH "NOTES" -+ -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBdrops\fR (read-only)" 5 -+Returns the number of incorrect packets \fBCheckARPHeader\fR has seen. -+.IP "" 5 -+.IP "\fBdrop_details\fR (read-only)" 5 -+Returns a text file showing how many erroneous packets \fBCheckARPHeader\fR has seen, -+subdivided by error. Only available if the DETAILS keyword argument was true. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M ARPPrint n , -+.M ARPQuerier n , -+.M ARPResponder n , -+.M ARPFaker "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/CheckCRC32.n click-1.6.0-27/inst/share/man/mann/CheckCRC32.n ---- click-1.6.0/inst/share/man/mann/CheckCRC32.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/CheckCRC32.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,31 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/checkcrc32.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "CHECKCRC32" n "11/Feb/2009" "Click" -+.SH "NAME" -+CheckCRC32 \- Click element; -+checks packet CRC32s -+.SH "SYNOPSIS" -+\fBCheckCRC32\fR() -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Check that the CRC32 appended by -+.M SetCRC32 "n" -+is OK. -+If so, delete the CRC from the packet. -+Otherwise, drop the packet. -+ -+.SH "SEE ALSO" -+.M SetCRC32 "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/CheckICMPHeader.n click-1.6.0-27/inst/share/man/mann/CheckICMPHeader.n ---- click-1.6.0/inst/share/man/mann/CheckICMPHeader.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/CheckICMPHeader.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,63 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/icmp/checkicmpheader.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "CHECKICMPHEADER" n "11/Feb/2009" "Click" -+.SH "NAME" -+CheckICMPHeader \- Click element; -+checks ICMP header on ICMP packets -+.SH "SYNOPSIS" -+\fBCheckICMPHeader\fR([\fIKEYWORDS\fR]) -+ -+\fBPorts\fR: 1 input, 1-2 outputs -+.br -+\fBProcessing\fR: agnostic, but output 1 is push -+.br -+\fBPackage\fR: icmp (core) -+.br -+.SH "DESCRIPTION" -+Expects ICMP packets as input. Checks that the packet's length is sensible -+and that its checksum field is valid. Pushes invalid packets out on output -+1, unless output 1 was unused; if so, drops invalid packets. -+.PP -+Prints a message to the console the first time it encounters an incorrect IP -+packet (but see VERBOSE below). -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "VERBOSE" 5 -+Boolean. If it is true, then a message will be printed for every erroneous -+packet, rather than just the first. False by default. -+.IP "" 5 -+.IP "DETAILS" 5 -+Boolean. If it is true, then \fBCheckICMPHeader\fR will maintain detailed counts of -+how many packets were dropped for each possible reason, accessible through the -+\f(CWdrop_details\fR handler. False by default. -+.IP "" 5 -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBdrops\fR (read-only)" 5 -+Returns the number of incorrect packets \fBCheckICMPHeader\fR has seen. -+.IP "" 5 -+.IP "\fBdrop_details\fR (read-only)" 5 -+Returns a text file showing how many erroneous packets \fBCheckICMPHeader\fR has seen, -+subdivided by error. Only available if the DETAILS keyword argument was true. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M CheckIPHeader n , -+.M CheckTCPHeader n , -+.M CheckUDPHeader n , -+.M MarkIPHeader "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/CheckIPHeader.n click-1.6.0-27/inst/share/man/mann/CheckIPHeader.n ---- click-1.6.0/inst/share/man/mann/CheckIPHeader.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/CheckIPHeader.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,119 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/checkipheader.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "CHECKIPHEADER" n "11/Feb/2009" "Click" -+.SH "NAME" -+CheckIPHeader \- Click element; -+checks IP header -+.SH "SYNOPSIS" -+\fBCheckIPHeader\fR([OFFSET, \fIkeywords\fR OFFSET, INTERFACES, BADSRC, -+.br -+.nf -+\& GOODDST, CHECKSUM, VERBOSE, DETAILS]) -+.fi -+.PP -+ -+ -+ -+\fBPorts\fR: 1 input, 1-2 outputs -+.br -+\fBProcessing\fR: agnostic, but output 1 is push -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Input packets should have IP headers starting OFFSET bytes in. Default OFFSET -+is zero. Checks that the packet's length is reasonable, and that the IP -+version, header length, length, and checksum fields are valid. Checks that the -+IP source address is a legal unicast address, or that the packet is destined -+for one of this machine's addresses (see below). Shortens packets to the IP -+length, if the IP length is shorter than the nominal packet length (due to -+Ethernet padding, for example). Also sets the destination IP address -+annotation to the actual destination IP address. -+.PP -+\fBCheckIPHeader\fR emits valid packets on output 0. Invalid packets are pushed out -+on output 1, unless output 1 was unused; if so, drops invalid packets. -+.PP -+\fBCheckIPHeader\fR checks packets' source addresses for validity if one or more of -+the INTERFACES, BADSRC, and GOODDST keyword arguments are supplied (RFC1812 -+5.3.7). -+.PP -+\fBCheckIPHeader\fR prints a message to the console the first time it encounters an -+incorrect IP packet (but see VERBOSE below). -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "CHECKSUM" 5 -+Boolean. If true, then check each packet's checksum for validity; if false, do -+not check the checksum. Default is true. -+.IP "" 5 -+.IP "OFFSET" 5 -+Unsigned integer. Byte position at which the IP header begins. Default is 0. -+.IP "" 5 -+.IP "BADSRC" 5 -+Space-separated list of IP addresses. \fBCheckIPHeader\fR will drop packets whose -+source address is on this list (but see GOODDST below). Default is empty. -+.IP "" 5 -+.IP "GOODDST" 5 -+Space-separated list of IP addresses. \fBCheckIPHeader\fR exempts packets whose -+destination address is on this list from BADSRC processing. Default is empty. -+.IP "" 5 -+.IP "INTERFACES" 5 -+Space-separated list of IP addresses with network prefixes, meant to represent -+this router's interface addresses. This argument specifies both BADSRC and -+GOODDST. Specifically, the argument "INTERFACES 18.26.4.9/24 18.32.9.44/28" -+acts like a BADSRC of "18.26.4.255 18.32.9.47 0.0.0.0 255.255.255.255" -- the -+set of broadcast addresses for this router -- and a GOODDST of "18.26.4.9 -+18.32.9.44". Default is not given. -+.IP "" 5 -+.IP "VERBOSE" 5 -+Boolean. If it is true, then a message will be printed for every erroneous -+packet, rather than just the first. False by default. -+.IP "" 5 -+.IP "DETAILS" 5 -+Boolean. If it is true, then \fBCheckIPHeader\fR will maintain detailed counts of -+how many packets were dropped for each possible reason, accessible through the -+\f(CWdrop_details\fR handler. False by default. -+.IP "" 5 -+.PP -+ -+.SH "NOTES" -+\fBCheckIPHeader\fR supports an old configuration syntax: -+.PP -+\fBCheckIPHeader\fR([BADSRC2, OFFSET, \fIkeywords\fR]) -+.PP -+The BADSRC2 argument behaves like the BADSRC keyword, except that if you use -+this syntax, 0.0.0.0 and 255.255.255.255 considered bad addresses in addition -+to those explicitly in the list. This syntax is deprecated and should not be -+used in new configurations. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBdrops\fR (read-only)" 5 -+Returns the number of incorrect packets \fBCheckIPHeader\fR has seen. -+.IP "" 5 -+.IP "\fBdrop_details\fR (read-only)" 5 -+Returns a text file showing how many erroneous packets \fBCheckIPHeader\fR has seen, -+subdivided by error. Only available if the DETAILS keyword argument was true. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M CheckIPHeader2 n , -+.M MarkIPHeader n , -+.M SetIPChecksum n , -+.M StripIPHeader n , -+.M CheckTCPHeader n , -+.M CheckUDPHeader n , -+.M CheckICMPHeader "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/CheckIPHeader2.n click-1.6.0-27/inst/share/man/mann/CheckIPHeader2.n ---- click-1.6.0/inst/share/man/mann/CheckIPHeader2.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/CheckIPHeader2.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,33 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/checkipheader2.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "CHECKIPHEADER2" n "11/Feb/2009" "Click" -+.SH "NAME" -+CheckIPHeader2 \- Click element; -+checks IP header, no checksum -+.SH "SYNOPSIS" -+\fBCheckIPHeader2\fR([OFFSET, \fIkeywords\fR]) -+ -+\fBPorts\fR: 1 input, 1-2 outputs -+.br -+\fBProcessing\fR: agnostic, but output 1 is push -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+This element behaves exactly like -+.M CheckIPHeader "n" , -+except that it does not by -+default check packets' IP checksums. -+.PP -+ -+.SH "SEE ALSO" -+.M CheckIPHeader n , -+.M StripIPHeader n , -+.M MarkIPHeader "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/CheckLength.n click-1.6.0-27/inst/share/man/mann/CheckLength.n ---- click-1.6.0/inst/share/man/mann/CheckLength.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/CheckLength.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,26 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/checklength.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "CHECKLENGTH" n "11/Feb/2009" "Click" -+.SH "NAME" -+CheckLength \- Click element; -+drops large packets -+.SH "SYNOPSIS" -+\fBCheckLength\fR(LENGTH) -+ -+\fBPorts\fR: 1 input, 1-2 outputs -+.br -+\fBProcessing\fR: agnostic, but output 1 is push -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+\fBCheckLength\fR checks every packet's length against LENGTH. If the packet is -+no larger than LENGTH, it is sent to output 0; otherwise, it is sent to -+output 1 (or dropped if there is no output 1). -+ -diff -Nurb click-1.6.0/inst/share/man/mann/CheckPaint.n click-1.6.0-27/inst/share/man/mann/CheckPaint.n ---- click-1.6.0/inst/share/man/mann/CheckPaint.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/CheckPaint.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,31 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/checkpaint.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "CHECKPAINT" n "11/Feb/2009" "Click" -+.SH "NAME" -+CheckPaint \- Click element; -+checks packets' paint annotation -+.SH "SYNOPSIS" -+\fBCheckPaint\fR(COLOR) -+ -+\fBPorts\fR: 1 input, 1-2 outputs -+.br -+\fBProcessing\fR: agnostic, but output 1 is push -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Checks that incoming packets have paint annotation equal to COLOR. If their -+paints are not equal to COLOR, then they are dropped or emitted on output 1, -+depending on how many outputs were used. -+.PP -+ -+.SH "SEE ALSO" -+.M Paint n , -+.M PaintTee "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/CheckTCPHeader.n click-1.6.0-27/inst/share/man/mann/CheckTCPHeader.n ---- click-1.6.0/inst/share/man/mann/CheckTCPHeader.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/CheckTCPHeader.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,64 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/tcpudp/checktcpheader.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "CHECKTCPHEADER" n "11/Feb/2009" "Click" -+.SH "NAME" -+CheckTCPHeader \- Click element; -+checks TCP header on TCP/IP packets -+.SH "SYNOPSIS" -+\fBCheckTCPHeader\fR([\fIKEYWORDS\fR]) -+ -+\fBPorts\fR: 1 input, 1-2 outputs -+.br -+\fBProcessing\fR: agnostic, but output 1 is push -+.br -+\fBPackage\fR: tcpudp (core) -+.br -+.SH "DESCRIPTION" -+Expects TCP/IP packets as input. Checks that the TCP header length and -+checksum fields are valid. Pushes invalid packets out on output 1, unless -+output 1 was unused; if so, drops invalid packets. -+.PP -+Prints a message to the console the first time it encounters an incorrect -+packet (but see VERBOSE below). -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "VERBOSE" 5 -+Boolean. If it is true, then a message will be printed for every erroneous -+packet, rather than just the first. False by default. -+.IP "" 5 -+.IP "DETAILS" 5 -+Boolean. If it is true, then \fBCheckTCPHeader\fR will maintain detailed counts of -+how many packets were dropped for each possible reason, accessible through the -+\f(CWdrop_details\fR handler. False by default. -+.IP "" 5 -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBdrops\fR (read-only)" 5 -+Returns the number of incorrect packets \fBCheckTCPHeader\fR has seen. -+.IP "" 5 -+.IP "\fBdrop_details\fR (read-only)" 5 -+Returns a text file showing how many erroneous packets \fBCheckTCPHeader\fR has -+seen, subdivided by error. Only available if the DETAILS keyword argument was -+true. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M CheckIPHeader n , -+.M CheckUDPHeader n , -+.M CheckICMPHeader n , -+.M MarkIPHeader "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/CheckUDPHeader.n click-1.6.0-27/inst/share/man/mann/CheckUDPHeader.n ---- click-1.6.0/inst/share/man/mann/CheckUDPHeader.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/CheckUDPHeader.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,64 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/tcpudp/checkudpheader.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "CHECKUDPHEADER" n "11/Feb/2009" "Click" -+.SH "NAME" -+CheckUDPHeader \- Click element; -+checks UDP header on UDP/IP packets -+.SH "SYNOPSIS" -+\fBCheckUDPHeader\fR([\fIKEYWORDS\fR]) -+ -+\fBPorts\fR: 1 input, 1-2 outputs -+.br -+\fBProcessing\fR: agnostic, but output 1 is push -+.br -+\fBPackage\fR: tcpudp (core) -+.br -+.SH "DESCRIPTION" -+Expects UDP/IP packets as input. Checks that the UDP header length and -+checksum fields are valid. Pushes invalid packets out on output 1, unless -+output 1 was unused; if so, drops invalid packets. -+.PP -+Prints a message to the console the first time it encounters an incorrect -+packet (but see VERBOSE below). -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "VERBOSE" 5 -+Boolean. If it is true, then a message will be printed for every erroneous -+packet, rather than just the first. False by default. -+.IP "" 5 -+.IP "DETAILS" 5 -+Boolean. If it is true, then \fBCheckUDPHeader\fR will maintain detailed counts of -+how many packets were dropped for each possible reason, accessible through the -+\f(CWdrop_details\fR handler. False by default. -+.IP "" 5 -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBdrops\fR (read-only)" 5 -+Returns the number of incorrect packets \fBCheckUDPHeader\fR has seen. -+.IP "" 5 -+.IP "\fBdrop_details\fR (read-only)" 5 -+Returns a text file showing how many erroneous packets \fBCheckUDPHeader\fR has -+seen, subdivided by error. Only available if the DETAILS keyword argument was -+true. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M CheckIPHeader n , -+.M CheckTCPHeader n , -+.M CheckICMPHeader n , -+.M MarkIPHeader "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Classifier.n click-1.6.0-27/inst/share/man/mann/Classifier.n ---- click-1.6.0/inst/share/man/mann/Classifier.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Classifier.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,105 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/classifier.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "CLASSIFIER" n "11/Feb/2009" "Click" -+.SH "NAME" -+Classifier \- Click element; -+classifies packets by contents -+.SH "SYNOPSIS" -+\fBClassifier\fR(pattern1, ..., patternN) -+ -+\fBPorts\fR: 1 input, any number of outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Classifies packets. The \fBClassifier\fR has N outputs, each associated with the -+corresponding pattern from the configuration string. -+A pattern is a set of clauses, where each clause is either "offset/value" -+or "offset/value%mask". A pattern matches if the packet has the indicated -+value at each offset. -+.PP -+The clauses in each pattern are separated -+by spaces. A clause consists of the offset, "/", the value, and (optionally) -+"%" and a mask. The offset is in decimal. The value and mask are in hex. -+The length of the value is implied by the number of hex digits, which must -+be even. "?" is also allowed as a "hex digit"; it means "don't care about -+the value of this nibble". -+.PP -+If present, the mask must have the same number of hex digits as the value. -+The matcher will only check bits that are 1 in the mask. -+.PP -+A clause may be preceded by "!", in which case the clause must NOT match -+the packet. -+.PP -+As a special case, a pattern consisting of "-" matches every packet. -+.PP -+The patterns are scanned in order, and the packet is sent to the output -+corresponding to the first matching pattern. Thus more specific patterns -+should come before less specific ones. You will get a warning if no packet -+could ever match a pattern. Usually, this is because an earlier pattern is -+more general, or because your pattern is contradictory (`12/0806 12/0800'). -+.PP -+ -+.SH "NOTES" -+The -+.M IPClassifier "n" -+and -+.M IPFilter "n" -+elements have a friendlier syntax if you are -+classifying IP packets. -+.PP -+ -+.SH "EXAMPLES" -+For example, -+.PP -+.nf -+\& Classifier(12/0806 20/0001, -+\& 12/0806 20/0002, -+\& 12/0800, -+\& -); -+.fi -+.PP -+creates an element with four outputs intended to process -+Ethernet packets. -+ARP requests are sent to output 0, ARP replies are sent to -+output 1, IP packets to output 2, and all others to output 3. -+.PP -+ -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBprogram\fR (read-only)" 5 -+Returns a human-readable definition of the program the \fBClassifier\fR element -+is using to classify packets. At each step in the program, four bytes -+of packet data are ANDed with a mask and compared against four bytes of -+classifier pattern. -+.IP "" 5 -+The \fBClassifier\fR patterns above compile into the following program: -+.IP "" 5 -+.nf -+\& 0 12/08060000%ffff0000 yes->step 1 no->step 3 -+\& 1 20/00010000%ffff0000 yes->[0] no->step 2 -+\& 2 20/00020000%ffff0000 yes->[1] no->[3] -+\& 3 12/08000000%ffff0000 yes->[2] no->[3] -+\& safe length 22 -+\& alignment offset 0 -+.fi -+.IP "" 5 -+ -+ -+.PP -+ -+.SH "SEE ALSO" -+.M IPClassifier n , -+.M IPFilter "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/CompareBlock.n click-1.6.0-27/inst/share/man/mann/CompareBlock.n ---- click-1.6.0/inst/share/man/mann/CompareBlock.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/CompareBlock.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,62 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/compblock.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "COMPAREBLOCK" n "11/Feb/2009" "Click" -+.SH "NAME" -+CompareBlock \- Click element; -+drops packets out of rate range -+.SH "SYNOPSIS" -+\fBCompareBlock\fR(FWD_WEIGHT, REV_WEIGHT, THRESH) -+ -+\fBPorts\fR: 1 input, 2 outputs -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+FWD_WEIGHT, REV_WEIGHT, and THRESH are integers -+.PP -+Splits packets based on the fwd_rate_anno and rev_rate_anno rate annotations -+set by -+.M IPRateMonitor "n" . -+If either annotation is greater than THRESH, -+and FWD_WEIGHT*fwd_rate_anno > REV_WEIGHT*rev_rate_anno, -+the packet is pushed on output 1, otherwise on output 0. -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& b :: CompareBlock(5, 2, 100); -+.fi -+.PP -+if (5*fwd_rate > 2*rev_rate) AND (fwd_rate > 100 or rev_rate > 100), send -+packet out on output 1, otherwise on output 0. -+.PP -+ -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBfwd_weight\fR (read/write)" 5 -+value of FWD_WEIGHT -+.IP "" 5 -+.IP "\fBrev_weight\fR (read/write)" 5 -+value of REV_WEIGHT -+.IP "" 5 -+.IP "\fBthresh\fR (read/write)" 5 -+value of THRESH -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M Block n , -+.M IPRateMonitor "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ControlSocket.n click-1.6.0-27/inst/share/man/mann/ControlSocket.n ---- click-1.6.0/inst/share/man/mann/ControlSocket.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ControlSocket.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,181 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/userlevel/controlsocket.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "CONTROLSOCKET" n "11/Feb/2009" "Click" -+.SH "NAME" -+ControlSocket \- Click element; -+opens control sockets for other programs -+.SH "SYNOPSIS" -+\fBControlSocket\fR("TCP", PORTNUMBER [, \fIKEYWORDS\fR]) -+.br -+\fBControlSocket\fR("UNIX", FILENAME [, \fIKEYWORDS\fR]) -+ -+\fBPorts\fR: none -+.br -+\fBDrivers\fR: userlevel -+.br -+\fBPackage\fR: userlevel (core) -+.br -+.SH "DESCRIPTION" -+Opens a control socket that allows other user-level programs to call read or -+write handlers on the router. Depending on its configuration string, -+\fBControlSocket\fR will listen on TCP port PORTNUMBER, or on a UNIX-domain socket -+named FILENAME. With the PROXY keyword argument, you can make \fBControlSocket\fR speak to -+a kernel driver; see below. -+.PP -+The "server" (that is, the \fBControlSocket\fR element) speaks a relatively -+simple line-based protocol. Commands sent to the server are single lines of -+text; they consist of words separated by spaces. The server responds to -+every command with at least one message line followed optionally by some -+data. Message lines start with a three-digit response code, as in FTP. When -+multiple message lines are sent in response to a single command, all but -+the last begin with the response code and a hyphen (as in "200-Hello!"); -+the last line begins with the response code and a space (as in "200 -+Hello!"). -+.PP -+The server will accept lines terminated by CR, LF, or CRLF. Its response -+lines are always terminated by CRLF. -+.PP -+When a connection is opened, the server responds by stating its protocol -+version number with a line like "Click::ControlSocket/1.1". The current -+version number is 1.1. Changes in minor version number will only add commands -+and functionality to this specification, not change existing functionality. -+.PP -+\fBControlSocket\fR supports hot-swapping, meaning you can change configurations -+without interrupting existing clients. The hot-swap will succeed only if the -+old \fBControlSocket\fR and the new \fBControlSocket\fR have the same element name, and -+the same socket type and port/filename parameters. Additionally, the new -+\fBControlSocket\fR must have RETRIES set to 1 or more, since the old \fBControlSocket\fR -+has already bound the relevant socket. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "READONLY" 8 -+Boolean. Disallows write handlers if true (it is false by -+default). -+.IP "" 8 -+.IP "PROXY" 8 -+String. Specifies an element proxy. When a user requests the value of handler -+E.H, \fBControlSocket\fR will actually return the value of `PROXY.E.H'. This is -+useful with elements like -+.M KernelHandlerProxy "n" . -+Default is empty (no proxy). -+.IP "" 8 -+.IP "VERBOSE" 8 -+Boolean. When true, \fBControlSocket\fR will print messages whenever it accepts a -+new connection or drops an old one. Default is false. -+.IP "" 8 -+.IP "RETRIES" 8 -+Integer. If greater than 0, \fBControlSocket\fR won't immediately fail when it can't -+open its socket. Instead, it will attempt to open the socket once a second -+until it succeeds, or until RETRIES unsuccessful attempts (after which it will -+stop the router). Default is 0. -+.IP "" 8 -+.IP "RETRY_WARNINGS" 8 -+Boolean. If true, \fBControlSocket\fR will print warning messages every time it -+fails to open a socket. If false, it will print messages only on the final -+failure. Default is true. -+.IP "" 8 -+.PP -+ -+.SH "SERVER COMMANDS" -+The server currently supports the following six commands. Many of the commands -+take a \fIhandler\fR argument. These arguments name handlers, and take one of -+three forms: \f(CW\fIelementname\fR.\fIhandlername\fR\fR names a particular element's -+handler; \f(CW\fIelementnumber\fR.\fIhandlername\fR\fR also names an element handler, but -+the element is identified by index, starting from 1; and \f(CW\fIhandlername\fR\fR -+names a global handler. (There are seven global read handlers, named -+\f(CWversion\fR, \f(CWlist\fR, \f(CWclasses\fR, \f(CWconfig\fR, \f(CWflatconfig\fR, \f(CWpackages\fR, and -+\f(CWrequirements\fR. See click.o(8) for more information.) -+.PP -+ -+ -+.IP "READ \fIhandler\fR [\fIparams...\fR]" 5 -+Call a read \fIhandler\fR, passing the \fIparams\fR, if any, -+as arguments, and return the results. -+On success, responds with a "success" message (response -+code 2xy) followed by a line like "DATA \fIn\fR". Here, \fIn\fR is a -+decimal integer indicating the length of the read handler data. The \fIn\fR -+bytes immediately following (the CRLF that terminates) the DATA line are -+the handler's results. -+.IP "" 5 -+.IP "WRITE \fIhandler\fR \fIparams...\fR" 5 -+Call a write \fIhandler\fR, passing the \fIparams\fR, if any, as arguments. -+.IP "" 5 -+.IP "WRITEDATA \fIhandler\fR \fIn\fR" 5 -+Call a write \fIhandler\fR. The arguments to pass are the \fIn\fR bytes immediately -+following (the CRLF that terminates) the WRITEDATA line. -+.IP "" 5 -+.IP "CHECKREAD \fIhandler\fR" 5 -+Checks whether a \fIhandler\fR exists and is readable. The return status is 200 -+for readable handlers, and an appropriate error status for non-readable -+handlers or nonexistent handlers. -+.IP "" 5 -+.IP "CHECKWRITE \fIhandler\fR" 5 -+Checks whether a \fIhandler\fR exists and is writable. -+.IP "" 5 -+.IP "LLRPC \fIllrpc\fR [\fIn\fR]" 5 -+Call an LLRPC \fIllrpc\fR and return the results. \fILlrpc\fR should have the form -+\f(CW\fIelement\fR#\fIhexnumber\fR\fR. The \f(CW\fIhexnumber\fR\fR is the LLRPC number, from -+\f(CW\fR, in hexadecimal network format. Translate \f(CWCLICK_LLRPC\fR -+constants to network format by calling -+\f(CWCLICK_LLRPC_HTON(CLICK_LLRPC_...)\fR. If \fIn\fR is given, then the \fIn\fR bytes -+immediately following (the CRLF that terminates) the LLRPC line are passed in -+as an argument. The results are returned after a "DATA \fInn\fR" line, as in -+READ. -+.IP "" 5 -+\fBControlSocket\fR will not call an LLRPC unless it can determine (from the command -+number) how much data the LLRPC expects and returns. (Only "flat" LLRPCs may -+be called; they are declared using the _CLICK_IOC_[RWS]F macros.) -+.IP "" 5 -+.IP "QUIT" 5 -+Close the connection. -+.IP "" 5 -+.PP -+The server's response codes follow this pattern. -+.PP -+ -+.IP "2xy" 5 -+The command succeeded. -+.IP "" 5 -+.IP "5xy" 5 -+The command failed. -+.IP "" 5 -+.PP -+Here are some of the particular error messages: -+.PP -+.nf -+\& 200 OK. -+\& 220 OK, but the handler reported some warnings. -+\& 500 Syntax error. -+\& 501 Unimplemented command. -+\& 510 No such element. -+\& 511 No such handler. -+\& 520 Handler error. -+\& 530 Permission denied. -+\& 540 No router installed. -+.fi -+.PP -+\fBControlSocket\fR is only available in user-level processes. -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& ControlSocket(unix, /tmp/clicksocket); -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M ChatterSocket n , -+.M KernelHandlerProxy "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Counter.n click-1.6.0-27/inst/share/man/mann/Counter.n ---- click-1.6.0/inst/share/man/mann/Counter.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Counter.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,81 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/counter.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "COUNTER" n "11/Feb/2009" "Click" -+.SH "NAME" -+Counter \- Click element; -+measures packet count and rate -+.SH "SYNOPSIS" -+\fBCounter\fR([\fIkeywords COUNT_CALL, BYTE_COUNT_CALL\fR]) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Passes packets unchanged from its input to its output, maintaining statistics -+information about packet count and packet rate. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "COUNT_CALL" 8 -+Argument is `\fIN\fR \fIHANDLER\fR [\fIVALUE\fR]'. When the packet count reaches \fIN\fR, -+call the write handler \fIHANDLER\fR with value \fIVALUE\fR. -+.IP "" 8 -+.IP "BYTE_COUNT_CALL" 8 -+Argument is `\fIN\fR \fIHANDLER\fR [\fIVALUE\fR]'. When the byte count reaches or -+exceeds \fIN\fR, call the write handler \fIHANDLER\fR with value \fIVALUE\fR. -+.IP "" 8 -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBcount\fR (read-only)" 5 -+Returns the number of packets that have passed through since the last reset. -+.IP "" 5 -+.IP "\fBbyte_count\fR (read-only)" 5 -+Returns the number of bytes that have passed through since the last reset. -+.IP "" 5 -+.IP "\fBrate\fR (read-only)" 5 -+Returns the recent arrival rate, measured by exponential -+weighted moving average, in packets per second. -+.IP "" 5 -+.IP "\fBreset_counts\fR (write-only)" 5 -+Resets the counts and rates to zero. -+.IP "" 5 -+.IP "\fBreset\fR (write-only)" 5 -+Same as 'reset_counts'. -+.IP "" 5 -+.IP "\fBcount_call\fR (write-only)" 5 -+Writes a new COUNT_CALL argument. The handler can be omitted. -+.IP "" 5 -+.IP "\fBbyte_count_call\fR (write-only)" 5 -+Writes a new BYTE_COUNT_CALL argument. The handler can be omitted. -+.IP "" 5 -+.IP "\fBCLICK_LLRPC_GET_RATE\fR (llrpc)" 5 -+Argument is a pointer to an integer that must be 0. Returns the recent -+arrival rate (measured by exponential weighted moving average) in -+packets per second. -+.IP "" 5 -+.IP "\fBCLICK_LLRPC_GET_COUNT\fR (llrpc)" 5 -+Argument is a pointer to an integer that must be 0 (packet count) or 1 (byte -+count). Returns the current packet or byte count. -+.IP "" 5 -+.IP "\fBCLICK_LLRPC_GET_COUNTS\fR (llrpc)" 5 -+Argument is a pointer to a click_llrpc_counts_st structure (see -+). The \f(CWkeys\fR components must be 0 (packet count) or 1 (byte -+count). Stores the corresponding counts in the corresponding \f(CWvalues\fR -+components. -+.PP -+ -diff -Nurb click-1.6.0/inst/share/man/mann/CycleCountAccum.n click-1.6.0-27/inst/share/man/mann/CycleCountAccum.n ---- click-1.6.0/inst/share/man/mann/CycleCountAccum.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/CycleCountAccum.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,60 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/linuxmodule/cyclecountaccum.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "CYCLECOUNTACCUM" n "11/Feb/2009" "Click" -+.SH "NAME" -+CycleCountAccum \- Click element; -+collects differences in cycle counters -+.SH "SYNOPSIS" -+\fBCycleCountAccum\fR() -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBDrivers\fR: linuxmodule -+.br -+\fBPackage\fR: linuxmodule (core) -+.br -+.SH "DESCRIPTION" -+Incoming packets should have their cycle counter annotation set. Measures the -+current value of the cycle counter, and keeps track of the total accumulated -+difference. Packets whose cycle counter annotations are zero are not added to -+the count or difference. -+.PP -+ -+.SH "NOTES" -+A packet has room for either exactly one cycle count or exactly one -+performance metric. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBcount\fR (read-only)" 5 -+Returns the number of packets that have passed. -+.IP "" 5 -+.IP "\fBcycles\fR (read-only)" 5 -+Returns the accumulated cycles for all passing packets. -+.IP "" 5 -+.IP "\fBzero_count\fR (read-only)" 5 -+Returns the number of packets with zero-valued cycle counter annotations that -+have passed. These aren't included in the \f(CWcount\fR. -+.IP "" 5 -+.IP "\fBreset_counts\fR (write-only)" 5 -+Resets \f(CWcount\fR, \f(CWcycles\fR, and \f(CWzero_count\fR counters to zero when written. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M SetCycleCount n , -+.M RoundTripCycleCount n , -+.M SetPerfCount n , -+.M PerfCountAccum "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/DRRSched.n click-1.6.0-27/inst/share/man/mann/DRRSched.n ---- click-1.6.0/inst/share/man/mann/DRRSched.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/DRRSched.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,40 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/drr.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "DRRSCHED" n "11/Feb/2009" "Click" -+.SH "NAME" -+DRRSched \- Click element; -+pulls from inputs with deficit round robin scheduling -+.SH "SYNOPSIS" -+DRRSched -+ -+\fBPorts\fR: one output, zero or more inputs -+.br -+\fBProcessing\fR: pull -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Schedules packets with deficit round robin scheduling, from -+Shreedhar and Varghese's SIGCOMM 1995 paper "Efficient Fair -+Queuing using Deficit Round Robin." -+.PP -+The inputs usually come from Queues or other pull schedulers. -+\fBDRRSched\fR uses notification to avoid pulling from empty inputs. -+.PP -+ -+.SH "NOTES" -+\fBDRRSched\fR is a notifier signal, active iff any of the upstream notifiers -+are active. -+.PP -+ -+.SH "SEE ALSO" -+.M PrioSched n , -+.M StrideSched n , -+.M RoundRobinSched "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/DecIPTTL.n click-1.6.0-27/inst/share/man/mann/DecIPTTL.n ---- click-1.6.0/inst/share/man/mann/DecIPTTL.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/DecIPTTL.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,47 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/decipttl.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "DECIPTTL" n "11/Feb/2009" "Click" -+.SH "NAME" -+DecIPTTL \- Click element; -+decrements IP time-to-live, drops dead packets -+.SH "SYNOPSIS" -+DecIPTTL -+ -+\fBPorts\fR: 1 input, 1-2 outputs -+.br -+\fBProcessing\fR: agnostic, but output 1 is push -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Expects IP packet as input. -+If the ttl is <= 1 (i.e. has expired), -+\fBDecIPTTL\fR sends the packet to output 1 (or discards it if there is no -+output 1). -+Otherwise it decrements the ttl, re-calculates the checksum, -+and sends the packet to output 0. -+.PP -+Ordinarily output 1 is connected to an ICMP error packet generator. -+.PP -+ -+.SH "EXAMPLES" -+This is a typical IP input processing sequence: -+.PP -+.nf -+\& ... -> CheckIPHeader -> dt::DecIPTTL -> ... -+\& dt[1] -> ICMPError(18.26.4.24, 11, 0) -> ... -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M ICMPError n , -+.M CheckIPHeader "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/DelayShaper.n click-1.6.0-27/inst/share/man/mann/DelayShaper.n ---- click-1.6.0/inst/share/man/mann/DelayShaper.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/DelayShaper.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,54 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/delayshaper.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "DELAYSHAPER" n "11/Feb/2009" "Click" -+.SH "NAME" -+DelayShaper \- Click element; -+shapes traffic to meet delay requirements -+.SH "SYNOPSIS" -+\fBDelayShaper\fR(DELAY) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: pull -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Pulls packets from the single input port. Delays them for at least DELAY -+seconds, with microsecond precision. A packet with timestamp T will be emitted -+no earlier than time (T + DELAY). On output, the packet's timestamp is set to -+the current time. -+.PP -+Differs from -+.M DelayUnqueue "n" -+in that both its input and output are pull. Packets -+being delayed are enqueued until the necessary time has passed. At most one -+packet is enqueued at a time. -+.M DelayUnqueue "n" -+returns null for every pull request -+until the enqueued packet is ready. -+.PP -+.M SetTimestamp "n" -+element can be used to stamp the packet. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBdelay\fR (read/write)" 5 -+Returns or sets the DELAY parameter. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M BandwidthShaper n , -+.M DelayUnqueue n , -+.M SetTimestamp "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/DelayUnqueue.n click-1.6.0-27/inst/share/man/mann/DelayUnqueue.n ---- click-1.6.0/inst/share/man/mann/DelayUnqueue.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/DelayUnqueue.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,40 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/delayunqueue.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "DELAYUNQUEUE" n "11/Feb/2009" "Click" -+.SH "NAME" -+DelayUnqueue \- Click element; -+delay inducing pull-to-push converter -+.SH "SYNOPSIS" -+\fBDelayUnqueue\fR(DELAY) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: pull inputs, push outputs -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Pulls packets from the single input port. Delays them for at least DELAY -+seconds, with microsecond precision. A packet with timestamp T will be emitted -+no earlier than time (T + DELAY). On output, the packet's timestamp is set to -+the current time. -+.PP -+\fBDelayUnqueue\fR listens for upstream notification, such as that available from -+.M Queue "n" . -+.PP -+ -+.SH "SEE ALSO" -+.M Queue n , -+.M Unqueue n , -+.M RatedUnqueue n , -+.M BandwidthRatedUnqueue n , -+.M LinkUnqueue n , -+.M DelayShaper n , -+.M SetTimestamp "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/DirectIPLookup.n click-1.6.0-27/inst/share/man/mann/DirectIPLookup.n ---- click-1.6.0/inst/share/man/mann/DirectIPLookup.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/DirectIPLookup.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,98 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/directiplookup.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "DIRECTIPLOOKUP" n "11/Feb/2009" "Click" -+.SH "NAME" -+DirectIPLookup \- Click element; -+IP routing lookup using direct-indexed tables -+.SH "SYNOPSIS" -+\fBDirectIPLookup\fR(ADDR1/MASK1 [GW1] OUT1, ADDR2/MASK2 [GW2] OUT2, ...) -+ -+\fBPorts\fR: 1 input, any number of outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBDrivers\fR: userlevel, bsdmodule -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Expects a destination IP address annotation with each packet. Looks up that -+address in its routing table, using longest-prefix-match, sets the destination -+annotation to the corresponding GW (if specified), and emits the packet on the -+indicated OUTput port. -+.PP -+Each argument is a route, specifying a destination and mask, an optional -+gateway IP address, and an output port. No destination-mask pair should occur -+more than once. -+.PP -+\fBDirectIPLookup\fR is optimized for lookup speed at the expense of extensive RAM -+usage. Each longest-prefix lookup is accomplished in one to maximum two DRAM -+accesses, regardless on the number of routing table entries. Individual -+entries can be dynamically added to or removed from the routing table with -+relatively low CPU overhead, allowing for high update rates. -+.PP -+\fBDirectIPLookup\fR implements the \fIDIR-24-8-BASIC\fR lookup scheme described by -+Gupta, Lin, and McKeown in the paper cited below. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBtable\fR (read-only)" 5 -+Outputs a human-readable version of the current routing table. -+.IP "" 5 -+.IP "\fBlookup\fR (read-only)" 5 -+Reports the OUTput port and GW corresponding to an address. -+.IP "" 5 -+.IP "\fBadd\fR (write-only)" 5 -+Adds a route to the table. Format should be `\f(CWADDR/MASK [GW] OUT\fR'. -+Fails if a route for \f(CWADDR/MASK\fR already exists. -+.IP "" 5 -+.IP "\fBset\fR (write-only)" 5 -+Sets a route, whether or not a route for the same prefix already exists. -+.IP "" 5 -+.IP "\fBremove\fR (write-only)" 5 -+Removes a route from the table. Format should be `\f(CWADDR/MASK\fR'. -+.IP "" 5 -+.IP "\fBctrl\fR (write-only)" 5 -+Adds or removes a group of routes. Write `\f(CWadd\fR/\f(CWset ADDR/MASK [GW] OUT\fR' to -+add a route, and `\f(CWremove ADDR/MASK\fR' to remove a route. You can supply -+multiple commands, one per line; all commands are executed as one atomic -+operation. -+.IP "" 5 -+.IP "\fBflush\fR (write-only)" 5 -+Clears the entire routing table in a single atomic operation. -+.IP "" 5 -+.PP -+ -+.SH "NOTES" -+See -+.M IPRouteTable "n" -+for a performance comparison of the various IP routing -+elements. -+.PP -+\fBDirectIPLookup\fR's memory allocation does not work in the Linux kernel, because -+Linux uses a special function vmalloc() to allocate huge objects. A useful -+project would be to make \fBDirectIPLookup\fR suitable for the Linux kernel module, -+by changing its memory allocation to use vmalloc(). -+.PP -+ -+.SH "SEE ALSO" -+.M IPRouteTable n , -+.M RangeIPLookup n , -+.M RadixIPLookup n , -+.M StaticIPLookup n , -+.M LinearIPLookup n , -+.M SortedIPLookup n , -+.M LinuxIPLookup n -+.PP -+Pankaj Gupta, Steven Lin, and Nick McKeown. "Routing Lookups in Hardware at -+Memory Access Speeds". In Proc. IEEE Infocom 1998, Vol. 3, pp. 1240-1247. -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Discard.n click-1.6.0-27/inst/share/man/mann/Discard.n ---- click-1.6.0/inst/share/man/mann/Discard.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Discard.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,43 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/discard.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "DISCARD" n "11/Feb/2009" "Click" -+.SH "NAME" -+Discard \- Click element; -+drops all packets -+.SH "SYNOPSIS" -+\fBDiscard\fR -+ -+\fBPorts\fR: 1 input, no outputs -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Discards all packets received on its single input. If used in a pull context, -+it initiates pulls whenever packets are available, and listens for activity -+notification, such as that available from -+.M Queue "n" . -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBcount\fR (read-only)" 5 -+Returns the number of packets discarded. -+.IP "" 5 -+.IP "\fBreset_counts\fR (write-only)" 5 -+Resets "count" to 0. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M Queue "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/DiscardNoFree.n click-1.6.0-27/inst/share/man/mann/DiscardNoFree.n ---- click-1.6.0/inst/share/man/mann/DiscardNoFree.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/DiscardNoFree.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,25 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/discardnofree.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "DISCARDNOFREE" n "11/Feb/2009" "Click" -+.SH "NAME" -+DiscardNoFree \- Click element; -+drops all packets, but does not free any of them. -+.SH "SYNOPSIS" -+DiscardNoFree -+ -+\fBPorts\fR: 1 input, no outputs -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Discards all packets received on its single input, but does not free any of -+them. Only useful for benchmarking. -+ -diff -Nurb click-1.6.0/inst/share/man/mann/DriverManager.n click-1.6.0-27/inst/share/man/mann/DriverManager.n ---- click-1.6.0/inst/share/man/mann/DriverManager.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/DriverManager.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,55 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/drivermanager.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "DRIVERMANAGER" n "11/Feb/2009" "Click" -+.SH "NAME" -+DriverManager \- Click element; -+a -+.M Script "n" -+that manages driver stop events -+.SH "SYNOPSIS" -+\fBDriverManager\fR(INSTRUCTIONS...) -+ -+\fBPorts\fR: none -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+\fBDriverManager\fR is simply a -+.M Script "n" -+element whose default TYPE is "\f(CWDRIVER\fR". -+.PP -+Click \fIdriver stop events\fR suggest that the driver should stop processing. -+Any element can register a driver stop event; for instance, trace processing -+elements can stop the driver when they finish a trace file. You generally -+request this functionality by supplying a 'STOP true' keyword argument. -+.PP -+Driver stop events normally stop the driver: the user-level driver calls -+\f(CWexit(0)\fR, or the kernel driver kills the relevant kernel threads. The -+\fBDriverManager\fR element changes this behavior. When a driver stop event occurs, -+the router steps through the \fBDriverManager\fR's script by calling its \f(CWstep\fR -+handler. The driver exits only when the script ends or a \f(CWstop\fR instruction -+is executed. -+.PP -+For example, the following \fBDriverManager\fR element ensures that an element, -+\f(CWk\fR, has time to clean itself up before the driver is stopped. It waits for -+the first driver stop event, then calls \f(CWk\fR's \f(CWcleanup\fR handler, waits for a -+tenth of a second, and stops the driver. -+.PP -+.nf -+\& DriverManager(pause, write k.cleanup, wait 0.1s, stop); -+.fi -+.PP -+Use this idiom when one of your elements must emit a last packet or two before -+the router configuration is destroyed. -+.PP -+ -+ -+.SH "SEE ALSO" -+.M Script "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/DropBroadcasts.n click-1.6.0-27/inst/share/man/mann/DropBroadcasts.n ---- click-1.6.0/inst/share/man/mann/DropBroadcasts.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/DropBroadcasts.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,32 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/dropbroadcasts.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "DROPBROADCASTS" n "11/Feb/2009" "Click" -+.SH "NAME" -+DropBroadcasts \- Click element; -+drops link-level broadcast and multicast packets -+.SH "SYNOPSIS" -+DropBroadcasts -+ -+\fBPorts\fR: 1 input, 1-2 outputs -+.br -+\fBProcessing\fR: agnostic, but output 1 is push -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Drop packets that arrived as link-level broadcast or multicast. -+Used to implement the requirement that IP routers not forward -+link-level broadcasts. -+Looks at the packet_type_anno annotation, which -+.M FromDevice "n" -+sets. -+ -+.SH "SEE ALSO" -+.M FromDevice "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/DynamicUDPIPEncap.n click-1.6.0-27/inst/share/man/mann/DynamicUDPIPEncap.n ---- click-1.6.0/inst/share/man/mann/DynamicUDPIPEncap.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/DynamicUDPIPEncap.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,56 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/tcpudp/dynudpipencap.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "DYNAMICUDPIPENCAP" n "11/Feb/2009" "Click" -+.SH "NAME" -+DynamicUDPIPEncap \- Click element; -+encapsulates packets in dynamic UDP/IP headers -+.SH "SYNOPSIS" -+\fBDynamicUDPIPEncap\fR(SRC, SPORT, DST, DPORT [, CHECKSUM, INTERVAL]) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: tcpudp (core) -+.br -+.SH "DESCRIPTION" -+Encapsulates each incoming packet in a UDP/IP packet -+with source address SRC, source port SPORT, -+destination address DADDR, and destination port -+DPORT. The UDP checksum is calculated if CHECKSUM? is -+true; it is true by default. SPORT and DPORT are -+incremented by 1 every INTERVAL number of packets. By -+default, INTERVAL is 0, which means do not increment. -+This is the same element as -+.M UDPIPEncap "n" , -+except for -+the INTERVAL functionality. -+.PP -+The \fBDynamicUDPIPEncap\fR element adds both a UDP header -+and an IP header. -+.PP -+The -+.M Strip "n" -+element can be used by the receiver to get -+rid of the encapsulation header. -+ -+.SH "EXAMPLES" -+ -+.nf -+\& DynamicUDPIPEncap(1.0.0.1, 1234, 2.0.0.2, 1234, 1, 10) -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M Strip n , -+.M IPEncap n , -+.M UDPIPEncap "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/EnsureEther.n click-1.6.0-27/inst/share/man/mann/EnsureEther.n ---- click-1.6.0/inst/share/man/mann/EnsureEther.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/EnsureEther.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,49 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ethernet/ensureether.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ENSUREETHER" n "11/Feb/2009" "Click" -+.SH "NAME" -+EnsureEther \- Click element; -+ensures that IP packets are Ethernet encapsulated -+.SH "SYNOPSIS" -+\fBEnsureEther\fR([ETHERTYPE, SRC, DST]) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: ethernet (core) -+.br -+.SH "DESCRIPTION" -+Ensures that IP packets are encapsulated in an Ethernet header. Non-IP -+packets, and IP packets that look Ethernet-encapsulated, are emitted on the -+first output unchanged. Other IP packets are encapsulated in an Ethernet -+header before being emitted. If the IP packet looks like it had an Ethernet -+header that was stripped off, then that header is used. Otherwise, the header -+specified by the arguments is prepended to the packet. -+.PP -+ -+.SH "EXAMPLES" -+Encapsulate packets in an Ethernet header with type -+ETHERTYPE_IP (0x0800), source address 1:1:1:1:1:1, and -+destination address 2:2:2:2:2:2: -+.PP -+.nf -+\& EtherEncap(0x0800, 1:1:1:1:1:1, 2:2:2:2:2:2) -+.fi -+.PP -+ -+ -+ -+.SH "NOTES" -+For IP packets you probably want to use ARPQuerier instead. -+.PP -+ -+.SH "SEE ALSO" -+.M EtherEncap "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Error.n click-1.6.0-27/inst/share/man/mann/Error.n ---- click-1.6.0/inst/share/man/mann/Error.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Error.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,30 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../include/click/standard/errorelement.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ERROR" n "11/Feb/2009" "Click" -+.SH "NAME" -+Error \- Click element; -+always fails -+.SH "SYNOPSIS" -+\fBError\fR(...) -+ -+\fBPorts\fR: any number of inputs, any number of outputs -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+The \fBError\fR element always fails to initialize. It has any number of inputs -+and outputs, and accepts any configuration string without complaint. It is -+useful to prevent a router from initializing while avoiding -+spurious error messages about bad configuration strings or connections. -+ -+.SH "SEE ALSO" -+.M Message "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/EtherEncap.n click-1.6.0-27/inst/share/man/mann/EtherEncap.n ---- click-1.6.0/inst/share/man/mann/EtherEncap.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/EtherEncap.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,60 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ethernet/etherencap.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ETHERENCAP" n "11/Feb/2009" "Click" -+.SH "NAME" -+EtherEncap \- Click element; -+encapsulates packets in Ethernet header -+.SH "SYNOPSIS" -+\fBEtherEncap\fR(ETHERTYPE, SRC, DST) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: ethernet (core) -+.br -+.SH "DESCRIPTION" -+Encapsulates each packet in the Ethernet header specified by its arguments. -+ETHERTYPE should be in host order. -+.PP -+ -+.SH "EXAMPLES" -+Encapsulate packets in an Ethernet header with type -+ETHERTYPE_IP (0x0800), source address 1:1:1:1:1:1, and -+destination address 2:2:2:2:2:2: -+.PP -+.nf -+\& EtherEncap(0x0800, 1:1:1:1:1:1, 2:2:2:2:2:2) -+.fi -+.PP -+ -+ -+ -+.SH "NOTES" -+For IP packets you probably want to use -+.M ARPQuerier "n" -+instead. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBsrc\fR (read/write)" 5 -+Returns or sets the SRC parameter. -+.IP "" 5 -+.IP "\fBdst\fR (read/write)" 5 -+Returns or sets the DST parameter. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M ARPQuerier n , -+.M EnsureEther "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/EtherMirror.n click-1.6.0-27/inst/share/man/mann/EtherMirror.n ---- click-1.6.0/inst/share/man/mann/EtherMirror.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/EtherMirror.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,25 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ethernet/ethermirror.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ETHERMIRROR" n "11/Feb/2009" "Click" -+.SH "NAME" -+EtherMirror \- Click element; -+swaps Ethernet source and destination -+.SH "SYNOPSIS" -+\fBEtherMirror\fR() -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: ethernet (core) -+.br -+.SH "DESCRIPTION" -+Incoming packets are Ethernet. Their source and destination Ethernet -+addresses are swapped before they are output. -+ -diff -Nurb click-1.6.0/inst/share/man/mann/FTPPortMapper.n click-1.6.0-27/inst/share/man/mann/FTPPortMapper.n ---- click-1.6.0/inst/share/man/mann/FTPPortMapper.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/FTPPortMapper.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,111 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/app/ftpportmapper.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "FTPPORTMAPPER" n "11/Feb/2009" "Click" -+.SH "NAME" -+FTPPortMapper \- Click element; -+manipulates -+.M IPRewriter "n" -+for FTP -+.SH "SYNOPSIS" -+\fBFTPPortMapper\fR(CONTROL_REWRITER, DATA_REWRITER, PATTERN FOUTPUT ROUTPUT) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: app (core) -+.br -+.SH "DESCRIPTION" -+Expects FTP control packets. Watches packets for PORT commands and installs -+corresponding mappings into the specified -+.M IPRewriter "n" . -+This makes FTP -+possible through a NAT-like -+.M IPRewriter "n" -+setup. -+.PP -+CONTROL_REWRITER and DATA_REWRITER are the names of -+.M IPRewriter "n" -like -+elements. CONTROL_REWRITER must be a -+.M TCPRewriter "n" -+element, through which the -+FTP control packets are passed. Packets from \fBFTPPortMapper\fR must pass -+downstream through CONTROL_REWRITER. DATA_REWRITER can be any -+.M IPRewriter "n" -like -+element; packets from the FTP data port must pass through -+DATA_REWRITER. CONTROL_REWRITER and DATA_REWRITER might be the same -+element. -+.PP -+PATTERN is a pattern specification -- either a pattern name (see -+.M IPRewriterPatterns "n" ) -+or a `SADDR SPORT DADDR DPORT' quadruple. See -+.M IPRewriter "n" -+for more information. The address and port specified in the -+PORT command correspond to `SADDR' and `SPORT' in the pattern. If a new -+SADDR and SPORT are chosen, then the PORT command is rewritten to reflect -+the new SADDR and SPORT. -+.PP -+In summary: Assume that an FTP packet with source address and port -+1.0.0.2:6587 and destination address and port 2.0.0.2:21 contains a command -+`PORT 1,0,0,2,3,9' (that is, 1.0.0.2:777). Furthermore assume that the -+PATTERN is `1.0.0.1 9000-14000 - -'. Then \fBFTPPortMapper\fR performs the -+following actions: -+.PP -+ -+ -+.IP "*" 3 -+Creates a new mapping using the PATTERN. Say it returns 9000 as the new -+source port. -+.IP "" 3 -+.IP "*" 3 -+Installs the following mappings into the rewriter: -+.IP "" 3 -+.RS 3 -+ -+.IP "1." 3 -+(1.0.0.2, 777, 2.0.0.2, 20) => (1.0.0.1, 9000, 2.0.0.2, 20) with output -+port FOUTPUT. -+.IP "" 3 -+.IP "2." 3 -+(2.0.0.2, 20, 1.0.0.1, 9000) => (2.0.0.2, 20, 1.0.0.2, 777) with output -+port ROUTPUT. -+.IP "" 3 -+.RE -+.IP "" 3 -+ -+.IP "*" 3 -+Rewrites the PORT command to `PORT 1,0,0,1,35,40' (that is, -+1.0.0.1:9000). -+.IP "" 3 -+.IP "*" 3 -+Updates the packet's IP and TCP checksums. -+.IP "" 3 -+.IP "*" 3 -+Updates the downstream CONTROL_REWRITER to reflect the change in -+sequence numbers introduced by the new PORT command. (The modified packet -+containing the new PORT command will likely have a different length than -+the original packet, so some sequence number patching is required.) -+.IP "" 3 -+.IP "*" 3 -+Does \fInot\fR change the control packet header's addresses or port numbers. -+.IP "" 3 -+.PP -+For a PORT command to be recognized, it must be completely contained within -+one packet, and it must be the first command in the packet. This is usually -+the case. Also, the destination FTP data port is always assumed to be one -+less than the destination FTP control port, which is read as the packet's -+destination port number. This is also usually the case. -+.PP -+.SH "SEE ALSO" -+.M IPRewriter n , -+.M TCPRewriter n , -+.M IPRewriterPatterns n -+.PP -+RFC 959, File Transfer Protocol (FTP) -+ -diff -Nurb click-1.6.0/inst/share/man/mann/FastTCPFlows.n click-1.6.0-27/inst/share/man/mann/FastTCPFlows.n ---- click-1.6.0/inst/share/man/mann/FastTCPFlows.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/FastTCPFlows.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,86 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/linuxmodule/fasttcpflows.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "FASTTCPFLOWS" n "11/Feb/2009" "Click" -+.SH "NAME" -+FastTCPFlows \- Click element; -+creates packets flows with static TCP/IP/Ethernet headers -+.SH "SYNOPSIS" -+\fBFastTCPFlows\fR(RATE, LIMIT, LEN, -+.br -+.nf -+\& SETHADDR, SIPADDR,N<> -+\& DETHADDR, DIPADDR,N<> -+\& FLOWS, FLOWSIZE [, ACTIVE]) -+.fi -+.PP -+ -+ -+\fBPorts\fR: no inputs, 1 output -+.br -+\fBProcessing\fR: pull -+.br -+\fBDrivers\fR: linuxmodule -+.br -+\fBPackage\fR: linuxmodule (core) -+.br -+.SH "DESCRIPTION" -+\fBFastTCPFlows\fR is a benchmark tool. At initialization time, \fBFastTCPFlows\fR -+creates FLOWS number of fake TCP/IP packets of length LEN (min 60), with -+source ethernet address SETHADDR, source IP address SIPADDR, destination -+ethernet address DETHADDR, and destination IP address DIPADDR. Source and -+destination ports are randomly generated. The TCP checksum is calculated. -+Each time the \fBFastTCPFlows\fR element is called, it selects a flow, increments -+the reference count on the skbuff created and returns the skbuff object w/o -+copying or cloning. Therefore, the packet returned by \fBFastTCPFlows\fR should -+not be modified. -+.PP -+\fBFastTCPFlows\fR sents packets at RATE packets per second. It will send LIMIT -+number of packets in total. Each flow is limited to FLOWSIZE number of -+packets. After FLOWSIZE number of packets are sent, the sort and dst port -+will be modified. FLOWSIZE must be greater than or equal to 3. For each -+flow, a SYN packet, a DATA packet, and a FIN packet are sent. These packets -+have the invalid sequence numbers, in order to avoid recomputing checksum. -+.PP -+After \fBFastTCPFlows\fR has sent LIMIT packets, it will calculate the average -+send rate (packets per second) between the first and last packets sent and -+make that available in the rate handler. -+.PP -+By default \fBFastTCPFlows\fR is ACTIVE. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBcount\fR (read-only)" 5 -+Returns the total number of packets that have been generated. -+.IP "" 5 -+.IP "\fBrate\fR (read/write)" 5 -+Returns or sets the RATE parameter. -+.IP "" 5 -+.IP "\fBreset\fR (write)" 5 -+Reset and restart. -+.IP "" 5 -+.IP "\fBactive\fR (write)" 5 -+Change ACTIVE -+.IP "" 5 -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& FastTCPFlows(100000, 500000, 60, -+\& 0:0:0:0:0:0, 1.0.0.1, 1234, -+\& 1:1:1:1:1:1, 2.0.0.2, 1234, -+\& 100, 10) -+\& -> ToDevice; -+.fi -+.PP -+ -+ -diff -Nurb click-1.6.0/inst/share/man/mann/FastUDPFlows.n click-1.6.0-27/inst/share/man/mann/FastUDPFlows.n ---- click-1.6.0/inst/share/man/mann/FastUDPFlows.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/FastUDPFlows.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,84 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/linuxmodule/fastudpflows.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "FASTUDPFLOWS" n "11/Feb/2009" "Click" -+.SH "NAME" -+FastUDPFlows \- Click element; -+creates packets flows with static UDP/IP/Ethernet headers -+.SH "SYNOPSIS" -+\fBFastUDPFlows\fR(RATE, LIMIT, LEN, -+.br -+.nf -+\& SETHADDR, SIPADDR,N<> -+\& DETHADDR, DIPADDR,N<> -+\& FLOWS, FLOWSIZE [, CHECKSUM?, ACTIVE]) -+.fi -+.PP -+ -+ -+\fBPorts\fR: no inputs, 1 output -+.br -+\fBProcessing\fR: pull -+.br -+\fBDrivers\fR: linuxmodule -+.br -+\fBPackage\fR: linuxmodule (core) -+.br -+.SH "DESCRIPTION" -+\fBFastUDPFlows\fR is a benchmark tool. At initialization time, \fBFastUDPFlows\fR -+creates FLOWS number of UDP/IP packets of length LEN (min 60), with source -+ethernet address SETHADDR, source IP address SIPADDR, destination ethernet -+address DETHADDR, and destination IP address DIPADDR. Source and -+destination ports are randomly generated. The UDP checksum is calculated if -+CHECKSUM? is true; it is true by default. Each time the \fBFastUDPFlows\fR -+element is called, it selects a flow, increments the reference count on the -+skbuff created and returns the skbuff object w/o copying or cloning. -+Therefore, the packet returned by \fBFastUDPFlows\fR should not be modified. -+.PP -+\fBFastUDPFlows\fR sents packets at RATE packets per second. It will send LIMIT -+number of packets in total. Each flow is limited to FLOWSIZE number of -+packets. After FLOWSIZE number of packets are sent, the sort and dst port -+will be modified. -+.PP -+After \fBFastUDPFlows\fR has sent LIMIT packets, it will calculate the average -+send rate (packets per second) between the first and last packets sent and -+make that available in the rate handler. -+.PP -+By default \fBFastUDPFlows\fR is ACTIVE. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBcount\fR (read-only)" 5 -+Returns the total number of packets that have been generated. -+.IP "" 5 -+.IP "\fBrate\fR (read/write)" 5 -+Returns or sets the RATE parameter. -+.IP "" 5 -+.IP "\fBreset\fR (write)" 5 -+Reset and restart. -+.IP "" 5 -+.IP "\fBactive\fR (write)" 5 -+Change ACTIVE -+.IP "" 5 -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& FastUDPFlows(100000, 500000, 60, -+\& 0:0:0:0:0:0, 1.0.0.1, 1234, -+\& 1:1:1:1:1:1, 2.0.0.2, 1234, -+\& 100, 10) -+\& -> ToDevice; -+.fi -+.PP -+ -+ -diff -Nurb click-1.6.0/inst/share/man/mann/FastUDPSource.n click-1.6.0-27/inst/share/man/mann/FastUDPSource.n ---- click-1.6.0/inst/share/man/mann/FastUDPSource.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/FastUDPSource.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,81 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/linuxmodule/fastudpsrc.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "FASTUDPSOURCE" n "11/Feb/2009" "Click" -+.SH "NAME" -+FastUDPSource \- Click element; -+creates packets with static UDP/IP/Ethernet headers -+.SH "SYNOPSIS" -+\fBFastUDPSource\fR(RATE, LIMIT, LEN, SETHADDR, SIPADDR, SPORT, DETHADDR, DIPADDR, DPORT [, CHECKSUM?, INTERVAL, ACTIVE]) -+ -+\fBPorts\fR: no inputs, 1 output -+.br -+\fBProcessing\fR: pull -+.br -+\fBDrivers\fR: linuxmodule -+.br -+\fBPackage\fR: linuxmodule (core) -+.br -+.SH "DESCRIPTION" -+\fBFastUDPSource\fR is a benchmark tool. At initialization -+time, \fBFastUDPSource\fR creates a UDP/IP packet of length -+LEN (min 60), with source ethernet address SETHADDR, -+source IP address SIPADDR, source port SPORT, -+destination ethernet address DETHADDR, destination IP -+address DIPADDR, and destination port DPORT. The UDP -+checksum is calculated if CHECKSUM? is true; it is -+true by default. Each time the \fBFastUDPSource\fR element -+is called, it increments the reference count on the -+skbuff created and returns the skbuff object w/o -+copying or cloning. Therefore, the packet returned by -+\fBFastUDPSource\fR should not be modified. -+.PP -+\fBFastUDPSource\fR sents packets at RATE packets per -+second. It will send LIMIT number of packets in -+total. -+.PP -+After \fBFastUDPSource\fR has sent LIMIT packets, it will -+calculate the average send rate (packets per second) -+between the first and last packets sent and make that -+available in the rate handler. -+.PP -+By default \fBFastUDPSource\fR is ACTIVE. -+.PP -+PACKET is zero by default. If it is not 0, after -+PACKET number of packets, both sport and dport will -+be incremented by 1. Checksum will be recomputed. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBcount\fR (read-only)" 5 -+Returns the total number of packets that have been generated. -+.IP "" 5 -+.IP "\fBrate\fR (read/write)" 5 -+Returns or sets the RATE parameter. -+.IP "" 5 -+.IP "\fBreset\fR (write)" 5 -+Reset and restart. -+.IP "" 5 -+.IP "\fBactive\fR (write)" 5 -+Change ACTIVE -+.IP "" 5 -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& FastUDPSource(100000, 500000, 60, 0:0:0:0:0:0, 1.0.0.1, 1234, -+\& 1:1:1:1:1:1, 2.0.0.2, 1234) -+\& -> ToDevice; -+.fi -+.PP -+ -+ -diff -Nurb click-1.6.0/inst/share/man/mann/FixIPSrc.n click-1.6.0-27/inst/share/man/mann/FixIPSrc.n ---- click-1.6.0/inst/share/man/mann/FixIPSrc.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/FixIPSrc.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,41 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/fixipsrc.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "FIXIPSRC" n "11/Feb/2009" "Click" -+.SH "NAME" -+FixIPSrc \- Click element; -+sets IP source field if requested by annotation -+.SH "SYNOPSIS" -+\fBFixIPSrc\fR(IPADDR) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Expects an IP packet as input. If its Fix IP Source annotation is set, then -+changes its IP source address field to IPADDR and recomputes the checksum. -+Used by elements such as -+.M ICMPError "n" -+that are required by standards to use -+the IP address on the outgoing interface as the source. Such elements must -+set ip_src to something reasonable in case the outgoing interface has no IP -+address. -+.PP -+Also clears the Fix IP Source annotation. -+.PP -+ -+.SH "NOTES" -+The Fix IP Source annotation is stored as user annotation 3. -+.PP -+ -+.SH "SEE ALSO" -+.M ICMPError "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/FromDevice.n click-1.6.0-27/inst/share/man/mann/FromDevice.n ---- click-1.6.0/inst/share/man/mann/FromDevice.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/FromDevice.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,89 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/linuxmodule/fromdevice.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "FROMDEVICE" n "11/Feb/2009" "Click" -+.SH "NAME" -+FromDevice \- Click element; -+reads packets from network device (Linux kernel) -+.SH "SYNOPSIS" -+\fBFromDevice\fR(DEVNAME [, \fIkeywords\fR PROMISC, BURST, TIMESTAMP...]) -+ -+\fBPorts\fR: no inputs, 1 output -+.br -+\fBProcessing\fR: push -+.br -+\fBDrivers\fR: linuxmodule -+.br -+\fBPackage\fR: linuxmodule (core) -+.br -+.SH "DESCRIPTION" -+This manual page describes the Linux kernel module version of the \fBFromDevice\fR -+element. For the user-level element, read the -+.M FromDevice.u "n" -+manual page. -+.PP -+Intercepts all packets received by the Linux network interface named DEVNAME -+and pushes them out output 0. The packets include the link-level header. -+DEVNAME may also be an Ethernet address, in which case \fBFromDevice\fR searches for -+a device with that address. -+.PP -+\fBFromDevice\fR receives packets at interrupt time. As this happens, \fBFromDevice\fR -+simply stores the packets in an internal queue. Later, in the Click kernel -+thread -- that is, not at interrupt time -- \fBFromDevice\fR emits packets from that -+queue as it is scheduled by the driver. It emits at most BURST packets per -+scheduling; BURST is 8 by default. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "PROMISC" 8 -+Boolean. If true, the device is put into promiscuous mode while \fBFromDevice\fR is -+active. Default is false. -+.IP "" 8 -+.IP "BURST" 8 -+Unsigned integer. Sets the BURST parameter. -+.IP "" 8 -+.IP "TIMESTAMP" 8 -+Boolean. If true, then ensure that received packets have correctly-set -+timestamp annotations. Default is true. -+.IP "" 8 -+.IP "QUIET" 8 -+Boolean. If true, then suppress device up/down messages. Default is false. -+.IP "" 8 -+.IP "ALLOW_NONEXISTENT" 8 -+Allow nonexistent devices. If true, and no device named DEVNAME exists when -+the router is initialized, then \fBFromDevice\fR will report a warning (rather than -+an error). Later, while the router is running, if a device named DEVNAME -+appears, \fBFromDevice\fR will seamlessly begin outputing its packets. Default is -+false. -+.IP "" 8 -+.PP -+ -+.SH "NOTES" -+Linux won't see any packets from the device. If you want Linux to process -+packets, you should hand them to -+.M ToHost "n" . -+.PP -+\fBFromDevice\fR accesses packets the same way Linux does: through interrupts. -+This is bad for performance. If you care about performance and have a -+polling-capable device, use -+.M PollDevice "n" -+instead. -+.PP -+Linux device drivers, and thus \fBFromDevice\fR, should set packets' timestamp, -+packet-type, and device annotations. -+.PP -+ -+.SH "SEE ALSO" -+.M PollDevice n , -+.M ToDevice n , -+.M FromHost n , -+.M ToHost n , -+.M FromDevice.u "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/FromDevice.u.n click-1.6.0-27/inst/share/man/mann/FromDevice.u.n ---- click-1.6.0/inst/share/man/mann/FromDevice.u.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/FromDevice.u.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,133 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/userlevel/fromdevice.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "FROMDEVICE.U" n "11/Feb/2009" "Click" -+.SH "NAME" -+FromDevice.u \- Click element; -+reads packets from network device (user-level) -+.SH "SYNOPSIS" -+\fBFromDevice\fR(DEVNAME [, \fIkeywords\fR SNIFFER, PROMISC, SNAPLEN, FORCE_IP, CAPTURE, BPF_FILTER, OUTBOUND]) -+ -+\fBPorts\fR: no inputs, 1 output -+.br -+\fBProcessing\fR: push -+.br -+\fBDrivers\fR: userlevel -+.br -+\fBPackage\fR: userlevel (core) -+.br -+.SH "DESCRIPTION" -+This manual page describes the user-level version of the \fBFromDevice\fR -+element. For the Linux kernel module element, read the -+.M FromDevice n -+manual -+page. -+.PP -+Reads packets from the kernel that were received on the network controller -+named DEVNAME. -+.PP -+User-level \fBFromDevice\fR behaves like a packet sniffer by default. Packets -+emitted by \fBFromDevice\fR are also received and processed by the kernel. Thus, it -+doesn't usually make sense to run a router with user-level Click, since each -+packet will get processed twice (once by Click, once by the kernel). Install -+firewalling rules in your kernel if you want to prevent this, for instance -+using the -+.M KernelFilter "n" -+element or \fBFromDevice\fR's SNIFFER false argument. -+.PP -+Under Linux, a \fBFromDevice\fR element will not receive packets sent by a -+ToDevice element for the same device. Under other operating systems, your -+mileage may vary. -+.PP -+Sets the packet type annotation appropriately. Also sets the timestamp -+annotation to the time the kernel reports that the packet was received. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "SNIFFER" 8 -+Boolean. Specifies whether \fBFromDevice\fR should run in sniffer mode. In -+non-sniffer mode, \fBFromDevice\fR installs -+.M KernelFilter "n" -+filtering rules to block -+the kernel from handling any packets arriving on device DEVNAME. Default is -+true (sniffer mode). -+.IP "" 8 -+.IP "PROMISC" 8 -+Boolean. \fBFromDevice\fR puts the device in promiscuous mode if PROMISC is true. -+The default is false. -+.IP "" 8 -+.IP "SNAPLEN" 8 -+Unsigned. On some systems, packets larger than SNAPLEN will be truncated. -+Defaults to 2046. -+.IP "" 8 -+.IP "FORCE_IP" 8 -+Boolean. If true, then output only IP packets. (Any link-level header remains, -+but the IP header annotation has been set appropriately.) Default is false. -+.IP "" 8 -+.IP "CAPTURE" 8 -+Word. Defines the capture method \fBFromDevice\fR will use to read packets from the -+kernel. Linux targets generally support PCAP and LINUX; other targets support -+only PCAP. Defaults to LINUX on Linux targets (unless you give a BPF_FILTER), -+and PCAP elsewhere. -+.IP "" 8 -+.IP "BPF_FILTER" 8 -+String. A BPF filter expression used to select the interesting packets. -+Default is the empty string, which means all packets. If CAPTURE is not PCAP, -+then any filter expression is ignored with a warning. -+.IP "" 8 -+.IP "OUTBOUND" 8 -+Boolean. If true, then emit packets that the kernel sends to the given -+interface, as well as packets that the kernel receives from it. Default is -+false. -+.IP "" 8 -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& FromDevice(eth0) -> ... -+.fi -+.PP -+ -+ -+ -+.SH "NOTES" -+\fBFromDevice\fR sets packets' extra length annotations as appropriate. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBcount\fR (read-only)" 5 -+Returns the number of packets read by the device. -+.IP "" 5 -+.IP "\fBreset_counts\fR (write-only)" 5 -+Resets "count" to zero. -+.IP "" 5 -+.IP "\fBkernel_drops\fR (read-only)" 5 -+Returns the number of packets dropped by the kernel, probably due to memory -+constraints, before \fBFromDevice\fR could get them. This may be an integer; the -+notation \f(CW"<\fId\fR"\fR, meaning at most \f(CW\fId\fR\fR drops; or \f(CW"??"\fR, meaning the -+number of drops is not known. -+.IP "" 5 -+.IP "\fBencap\fR (read-only)" 5 -+Returns a string indicating the encapsulation type on this link. Can be -+`\f(CWIP\fR', `\f(CWETHER\fR', or `\f(CWFDDI\fR', for example. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M ToDevice.u n , -+.M FromDump n , -+.M ToDump n , -+.M KernelFilter n , -+\fBFromDevice\fR(n) -+ -diff -Nurb click-1.6.0/inst/share/man/mann/FromDump.n click-1.6.0-27/inst/share/man/mann/FromDump.n ---- click-1.6.0/inst/share/man/mann/FromDump.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/FromDump.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,176 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/userlevel/fromdump.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "FROMDUMP" n "11/Feb/2009" "Click" -+.SH "NAME" -+FromDump \- Click element; -+reads packets from a tcpdump file -+.SH "SYNOPSIS" -+\fBFromDump\fR(FILENAME [, \fIkeywords\fR TIMING, STOP, SAMPLE, FORCE_IP, START, START_AFTER, END, END_AFTER, INTERVAL, END_CALL, FILEPOS]) -+ -+\fBPorts\fR: no inputs, 1-2 outputs -+.br -+\fBProcessing\fR: agnostic, but output 1 is push -+.br -+\fBDrivers\fR: userlevel, ns -+.br -+\fBPackage\fR: userlevel (core) -+.br -+.SH "DESCRIPTION" -+Reads packets from a file produced by `tcpdump -w FILENAME' or -+.M ToDump "n" . -+Pushes -+them out the output, and optionally stops the driver when there are no more -+packets. If TIMING is true, then \fBFromDump\fR tries to maintain the timing of the -+original packet stream. TIMING is false by default. -+.PP -+\fBFromDump\fR also transparently reads gzip- and bzip2-compressed tcpdump files, if -+you have zcat(1) and bzcat(1) installed. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "SAMPLE" 8 -+Unsigned real number between 0 and 1. \fBFromDump\fR will output each packet with -+probability SAMPLE. Default is 1. \fBFromDump\fR uses fixed-point arithmetic, so the -+actual sampling probability may differ substantially from the requested -+sampling probability. Use the \f(CWsampling_prob\fR handler to find out the actual -+probability. -+.IP "" 8 -+.IP "FORCE_IP" 8 -+Boolean. If true, then \fBFromDump\fR will emit only IP packets with their IP header -+annotations correctly set. (If \fBFromDump\fR has two outputs, non-IP packets are -+pushed out on output 1; otherwise, they are dropped.) Default is false. -+.IP "" 8 -+.IP "STOP" 8 -+Boolean. If true, then \fBFromDump\fR will ask the router to stop when it is done -+reading its tcpdump file (or the END time is reached). Default is false. -+.IP "" 8 -+.IP "START" 8 -+Absolute time in seconds since the epoch. \fBFromDump\fR will output packets with -+timestamps after that time. -+.IP "" 8 -+.IP "START_AFTER" 8 -+Argument is relative time in seconds (or supply a suffix like `min', `h'). -+\fBFromDump\fR will skip the first \fIT\fR seconds in the log. -+.IP "" 8 -+.IP "END" 8 -+Absolute time in seconds since the epoch. \fBFromDump\fR will stop when encountering -+a packet with timestamp at or after that time. -+.IP "" 8 -+.IP "END_AFTER" 8 -+Argument is relative time in seconds (or supply a suffix like `min', `h'). -+\fBFromDump\fR will stop at the first packet whose timestamp is at least \fIT\fR -+seconds after the first timestamp in the log. -+.IP "" 8 -+.IP "INTERVAL" 8 -+Argument is relative time in seconds (or supply a suffix like `min', `h'). -+\fBFromDump\fR will stop at the first packet whose timestamp is at least \fIT\fR -+seconds after the first packet output. -+.IP "" 8 -+.IP "END_CALL" 8 -+Specify a handler to call once the end time is reached, or the dump runs out -+of packets. This defaults to '\fIFromDump\fR.active false'. END_CALL and STOP -+are mutually exclusive. -+.IP "" 8 -+.IP "TIMING" 8 -+Boolean. Same as the TIMING argument. -+.IP "" 8 -+.IP "ACTIVE" 8 -+Boolean. If false, then \fBFromDump\fR will not emit packets (until the `\f(CWactive\fR' -+handler is written). Default is true. -+.IP "" 8 -+.IP "MMAP" 8 -+Boolean. If true, then \fBFromDump\fR will use -+.M mmap 2 -+to access the tcpdump file. -+This can result in slightly better performance on some machines. \fBFromDump\fR's -+regular file discipline is pretty optimized, so the difference is often small -+in practice. Default is true on most operating systems, but false on Linux. -+.IP "" 8 -+.IP "FILEPOS" 8 -+File offset. If supplied, then \fBFromDump\fR will start emitting packets from -+this (uncompressed) file position. This is dangerous; there's no cheap way -+to check whether you got the offset wrong, and if you did get it wrong, -+\fBFromDump\fR will emit garbage. -+.IP "" 8 -+.PP -+You can supply at most one of START and START_AFTER, and at most one of END, -+END_AFTER, and INTERVAL. -+.PP -+Only available in user-level processes. -+.PP -+.SH "NOTES" -+By default, `tcpdump -w FILENAME' dumps only the first 68 bytes of -+each packet. You probably want to run `tcpdump -w FILENAME -s 2000' or some -+such. -+.PP -+\fBFromDump\fR sets packets' extra length annotations to any additional length -+recorded in the dump. -+.PP -+\fBFromDump\fR is a notifier signal, active when the element is active and the dump -+contains more packets. -+.PP -+If \fBFromDump\fR uses mmap, then a corrupt file might cause Click to crash with a -+segmentation violation. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBcount\fR (read-only)" 5 -+Returns the number of packets output so far. -+.IP "" 5 -+.IP "\fBreset_counts\fR (write-only)" 5 -+Resets "count" to 0. -+.IP "" 5 -+.IP "\fBsampling_prob\fR (read-only)" 5 -+Returns the sampling probability (see the SAMPLE keyword argument). -+.IP "" 5 -+.IP "\fBactive\fR (read/write)" 5 -+Value is a Boolean. -+.IP "" 5 -+.IP "\fBencap\fR (read-only)" 5 -+Returns the file's encapsulation type. -+.IP "" 5 -+.IP "\fBfilename\fR (read-only)" 5 -+Returns the filename supplied to \fBFromDump\fR. -+.IP "" 5 -+.IP "\fBfilesize\fR (read-only)" 5 -+Returns the length of the \fBFromDump\fR file, in bytes, or "-" if that length -+cannot be determined (because the file was compressed, for example). -+.IP "" 5 -+.IP "\fBfilepos\fR (read/write)" 5 -+Returns or sets \fBFromDump\fR's position in the (uncompressed) file, in bytes. -+.IP "" 5 -+.IP "\fBpacket_filepos\fR (read-only)" 5 -+Returns the (uncompressed) file position of the last packet emitted, in bytes. -+This handler is useful for elements like -+.M AggregateIPFlows "n" -+that can record -+statistics about portions of a trace; with packet_filepos, they can note -+exactly where the relevant portion begins. -+.IP "" 5 -+.IP "\fBextend_interval\fR (write-only)" 5 -+Text is a time interval. If END_TIME or one of its cousins was specified, then -+writing to this handler extends END_TIME by that many seconds. Also, ACTIVE is -+set to true. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M ToDump n , -+.M FromDevice.u n , -+.M ToDevice.u n , -+.M tcpdump 1 , -+.M mmap 2 , -+.M AggregateIPFlows n , -+.M FromTcpdump "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/FromHost.n click-1.6.0-27/inst/share/man/mann/FromHost.n ---- click-1.6.0/inst/share/man/mann/FromHost.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/FromHost.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,83 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/linuxmodule/fromhost.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "FROMHOST" n "11/Feb/2009" "Click" -+.SH "NAME" -+FromHost \- Click element; -+reads packets from Linux -+.SH "SYNOPSIS" -+\fBFromHost\fR(DEVNAME, ADDR/MASK [, \fIKEYWORDS\fR]) -+ -+\fBPorts\fR: no inputs, 1 output -+.br -+\fBProcessing\fR: push -+.br -+\fBDrivers\fR: linuxmodule -+.br -+\fBPackage\fR: linuxmodule (core) -+.br -+.SH "DESCRIPTION" -+Captures packets orginating from the Linux kernel and pushes them on output -+0. Output packets have Ethernet headers; only the protocol field is -+interesting. -+.PP -+Installs a fake interface called DEVNAME, and changes the routing table so -+that every packet destined for ADDR/MASK is sent through that interface. -+The packet then leaves on output 0. The device's native address is ADDR. -+.PP -+After the fake device is created, the effect of bringing up the interface -+and changing the routing table is analogous to: -+.PP -+.nf -+\& % /sbin/ifconfig DEVNAME up -+\& % /sbin/route add -net ADDR netmask MASK DEVNAME -+.fi -+.PP -+This element is only available in the Linux kernel module. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+ -+.IP "ETHER" 8 -+Ethernet address. Specifies the fake device's Ethernet address. Default is -+00:01:02:03:04:05. -+.IP "" 8 -+.PP -+ -+.SH "NOTES" -+Linux will send ARP queries to the fake device. You must respond to these -+queries in order to receive any IP packets, but you can obviously respond -+with any Ethernet address you'd like. Here is one common idiom: -+.PP -+.nf -+\& FromHost(fake0, 192.0.0.1/8) -+\& -> fromhost_cl :: Classifier(12/0806, 12/0800); -+\& fromhost_cl[0] -> ARPResponder(0.0.0.0/0 1:1:1:1:1:1) -> ToHost; -+\& fromhost_cl[1] -> ... // IP packets -+.fi -+.PP -+ -+ -+ -+.SH "EXAMPLES" -+ -+.nf -+\& FromHost(fake0, 192.0.0.1/8) -> ...; -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M ToHost n , -+.M FromDevice n , -+.M PollDevice n , -+.M ToDevice "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/FromHost.u.n click-1.6.0-27/inst/share/man/mann/FromHost.u.n ---- click-1.6.0/inst/share/man/mann/FromHost.u.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/FromHost.u.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,95 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/userlevel/fromhost.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "FROMHOST.U" n "11/Feb/2009" "Click" -+.SH "NAME" -+FromHost.u \- Click element; -+interface to /dev/net/tun or ethertap (user-level) -+.SH "SYNOPSIS" -+\fBFromHost\fR(DEVNAME [, DST, GATEWAY, HEADROOM] [, \fIKEYWORDS\fR]) -+ -+\fBPorts\fR: no inputs, 1 output -+.br -+\fBProcessing\fR: push -+.br -+\fBDrivers\fR: userlevel -+.br -+\fBPackage\fR: userlevel (core) -+.br -+.SH "DESCRIPTION" -+Reads packets from and writes packets through the universal TUN/TAP -+module in Linux (the /dev/net/tun device). This allows a -+user-level Click to hand packets to the virtual ethernet -+device. \fBFromHost\fR will also transfer packets from the virtual -+ethernet device. -+.PP -+To use this element your kernel config must support CONFIG_TUN and -+CONFIG_ETHERTAP. Either modules (tun.o) or compiled in should work. -+.PP -+\fBFromHost\fR allocates a /dev/net/tun device (this might fail) and runs -+.M ifconfig 8 -+to set the interface's local (i.e., kernel) address and netmask -+to DST, which must be an IP prefix such as 18.26.4.9/24. If DST is not -+specified, then \fBFromHost\fR -+assumes the tunnel has already been configured to the correct address. If -+a nonzero GATEWAY IP address (which must be on the same network as the tun) -+is specified, then \fBFromHost\fR tries to set up a default route through that -+host. HEADROOM is the number of bytes left empty before the packet data -+(to leave room for additional encapsulation headers). Default HEADROOM is -+0. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "ETHER" 8 -+Ethernet address. Specifies the fake device's Ethernet address. Default is -+not specified, in which case the fake device's address is whatever the -+kernel chooses. -+.IP "" 8 -+.PP -+ -+.SH "NOTES" -+Linux will send ARP queries to the fake device. You must respond to these -+queries in order to receive any IP packets, but you can obviously respond -+with any Ethernet address you'd like. Here is one common idiom: -+.PP -+.nf -+\& tap0 :: FromHost(fake, 192.0.0.1/8) -+\& -> fromhost_cl :: Classifier(12/0806, 12/0800); -+\& fromhost_cl[0] -> ARPResponder(0.0.0.0/0 1:1:1:1:1:1) -> tap0; -+\& fromhost_cl[1] -> ... // IP packets -+.fi -+.PP -+ -+ -+ -+.SH "EXAMPLES" -+ -+.nf -+\& FromHost(fake, 192.0.0.1/8) -> ...; -+.fi -+.PP -+An error like "open /dev/net/tun: No such file or directory" usually means -+that you have not enabled tunnel support in your kernel. -+.PP -+ -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBdev_name\fR (read-only)" 5 -+Returns the name of the device that this element is using. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M ToHost.u n , -+.M ifconfig 8 -+ -diff -Nurb click-1.6.0/inst/share/man/mann/FromRawSocket.n click-1.6.0-27/inst/share/man/mann/FromRawSocket.n ---- click-1.6.0/inst/share/man/mann/FromRawSocket.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/FromRawSocket.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,60 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/userlevel/fromrawsocket.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "FROMRAWSOCKET" n "11/Feb/2009" "Click" -+.SH "NAME" -+FromRawSocket \- Click element; -+reads raw IP packets from safe raw socket (user-level) -+.SH "SYNOPSIS" -+\fBFromRawSocket\fR("TCP", [, \fIKEYWORDS\fR]) -+.br -+\fBFromRawSocket\fR("UDP", [, \fIKEYWORDS\fR]) -+.br -+\fBFromRawSocket\fR("GRE", [, \fIKEYWORDS\fR]) -+.br -+\fBFromRawSocket\fR("ICMP", [, \fIKEYWORDS\fR]) -+ -+\fBPorts\fR: at most 1 input, at most 1 output -+.br -+\fBProcessing\fR: push -+.br -+\fBDrivers\fR: userlevel -+.br -+\fBPackage\fR: userlevel (core) -+.br -+.SH "DESCRIPTION" -+Reads data from a raw IPv4 socket. The raw IPv4 socket may optionally -+be bound to a source port number in the case of TCP/UDP, a GRE key or -+PPTP call ID in the case of GRE, or an identifier in the case of -+ICMP. Binding a port to a raw IPv4 socket to reserve it and suppress -+TCP RST and ICMP Unreachable errors, is specific to PlanetLab Linux. -+.PP -+This element exists only for backward compatibility. See the more -+general -+.M RawSocket "n" -+implementation for details, and for supported -+keyword arguments. A \fBFromRawSocket\fR is equivalent to a -+.M RawSocket "n" -+with -+no inputs. -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& FromRawSocket(UDP, 53) -> ... -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M ToRawSocket n , -+.M RawSocket n , -+.M Socket "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/FromSocket.n click-1.6.0-27/inst/share/man/mann/FromSocket.n ---- click-1.6.0/inst/share/man/mann/FromSocket.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/FromSocket.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,58 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/userlevel/fromsocket.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "FROMSOCKET" n "11/Feb/2009" "Click" -+.SH "NAME" -+FromSocket \- Click element; -+reads data from socket (user-level) -+.SH "SYNOPSIS" -+\fBFromSocket\fR("TCP", IP, PORTNUMBER [, \fIKEYWORDS\fR]) -+.br -+\fBFromSocket\fR("UDP", IP, PORTNUMBER [, \fIKEYWORDS\fR]) -+.br -+\fBFromSocket\fR("UNIX", FILENAME [, \fIKEYWORDS\fR]) -+.br -+\fBFromSocket\fR("UNIX_DGRAM", FILENAME [, \fIKEYWORDS\fR]) -+ -+\fBPorts\fR: at most 1 input, at most 1 output -+.br -+\fBProcessing\fR: push -+.br -+\fBDrivers\fR: userlevel -+.br -+\fBPackage\fR: userlevel (core) -+.br -+.SH "DESCRIPTION" -+Reads data from the specified socket. Packets received from the remote -+host or process are emitted on the output. -+.PP -+This element exists only for backward compatibility. See the more -+general -+.M Socket "n" -+implementation for details, and for supported keyword -+arguments. A \fBFromSocket\fR is equivalent to a -+.M Socket "n" -+with the CLIENT -+keyword set to FALSE or a -+.M Socket "n" -+with no inputs. -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& FromSocket(TCP, 0.0.0.0, 80) -> ... -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M ToSocket n , -+.M Socket "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/FrontDropQueue.n click-1.6.0-27/inst/share/man/mann/FrontDropQueue.n ---- click-1.6.0/inst/share/man/mann/FrontDropQueue.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/FrontDropQueue.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,62 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/frontdropqueue.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "FRONTDROPQUEUE" n "11/Feb/2009" "Click" -+.SH "NAME" -+FrontDropQueue \- Click element; -+stores packets in drop-from-front FIFO queue -+.SH "SYNOPSIS" -+FrontDropQueue -+.br -+\fBFrontDropQueue\fR(CAPACITY) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: push inputs, pull outputs -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Stores incoming packets in a first-in-first-out queue. Drops the head packet -+before inserting the incoming packet if the queue already holds CAPACITY -+packets. The default for CAPACITY is 1000. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBlength\fR (read-only)" 5 -+Returns the current number of packets in the queue. -+.IP "" 5 -+.IP "\fBhighwater_length\fR (read-only)" 5 -+Returns the maximum number of packets that have ever been in the queue at once. -+.IP "" 5 -+.IP "\fBcapacity\fR (read/write)" 5 -+Returns or sets the queue's capacity. -+.IP "" 5 -+.IP "\fBdrops\fR (read-only)" 5 -+Returns the number of packets dropped by the -+.M Queue "n" -+so far. -+.IP "" 5 -+.IP "\fBreset_counts\fR (write-only)" 5 -+When written, resets the \f(CWdrops\fR and \f(CWhighwater_length\fR counters. -+.IP "" 5 -+.IP "\fBreset\fR (write-only)" 5 -+When written, drops all packets in the -+.M Queue "n" . -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M Queue n , -+.M SimpleQueue n , -+.M MixedQueue n , -+.M RED "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/GetIPAddress.n click-1.6.0-27/inst/share/man/mann/GetIPAddress.n ---- click-1.6.0/inst/share/man/mann/GetIPAddress.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/GetIPAddress.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,41 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/getipaddress.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "GETIPADDRESS" n "11/Feb/2009" "Click" -+.SH "NAME" -+GetIPAddress \- Click element; -+sets destination IP address annotation from packet data -+.SH "SYNOPSIS" -+\fBGetIPAddress\fR(OFFSET) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Copies 4 bytes from the packet, starting at OFFSET, to the destination IP -+address annotation. OFFSET is usually 16, to fetch the destination address -+from an IP packet. -+.PP -+ -+.SH "NOTES" -+The destination address annotation is used by elements -+that need to know where the packet is going. -+Such elements include -+.M ARPQuerier "n" -+and LookupIPRoute. -+.PP -+ -+.SH "SEE ALSO" -+.M ARPQuerier n , -+.M StaticIPLookup n , -+.M SetIPAddress n , -+.M StoreIPAddress "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/HashSwitch.n click-1.6.0-27/inst/share/man/mann/HashSwitch.n ---- click-1.6.0/inst/share/man/mann/HashSwitch.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/HashSwitch.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,44 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/hashswitch.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "HASHSWITCH" n "11/Feb/2009" "Click" -+.SH "NAME" -+HashSwitch \- Click element; -+classifies packets by hash of contents -+.SH "SYNOPSIS" -+\fBHashSwitch\fR(OFFSET, LENGTH) -+ -+\fBPorts\fR: 1 input, 1 or more outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Can have any number of outputs. -+Chooses the output on which to emit each packet based on -+a hash of the LENGTH bytes starting at OFFSET. -+Could be used for stochastic fair queuing. -+ -+.SH "EXAMPLES" -+This element expects IP packets and chooses the output -+based on a hash of the IP destination address: -+.PP -+.nf -+\& HashSwitch(16, 4) -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M Switch n , -+.M RoundRobinSwitch n , -+.M StrideSwitch n , -+.M RandomSwitch "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/HostEtherFilter.n click-1.6.0-27/inst/share/man/mann/HostEtherFilter.n ---- click-1.6.0/inst/share/man/mann/HostEtherFilter.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/HostEtherFilter.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,49 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ethernet/hostetherfilter.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "HOSTETHERFILTER" n "11/Feb/2009" "Click" -+.SH "NAME" -+HostEtherFilter \- Click element; -+drops Ethernet packets sent to other machines -+.SH "SYNOPSIS" -+\fBHostEtherFilter\fR(ETHER [, DROP_OWN, DROP_OTHER, \fIKEYWORDS\fR]) -+ -+\fBPorts\fR: 1 input, 1-2 outputs -+.br -+\fBProcessing\fR: agnostic, but output 1 is push -+.br -+\fBPackage\fR: ethernet (core) -+.br -+.SH "DESCRIPTION" -+Expects Ethernet packets as input. Acts basically like Ethernet input hardware -+for a device with address ETHER. -+.PP -+In particular, \fBHostEtherFilter\fR sets each packet's packet type annotation to -+HOST, BROADCAST, MULTICAST, or OTHERHOST based on its Ethernet destination -+address. Emits most packets on the first output. If DROP_OWN is true, drops -+packets whose source address is ETHER; defaults to false. If DROP_OTHER is -+true, drops packets sent to hosts other than ETHER (that is, packets with -+unicast destination addresses not equal to ETHER); defaults to true. If the -+element has two outputs, filtered packets are emitted on the second output -+rather than dropped. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "DROP_OWN" 8 -+Same as the DROP_OWN parameter. -+.IP "" 8 -+.IP "DROP_OTHER" 8 -+Same as the DROP_OTHER parameter. -+.IP "" 8 -+.IP "OFFSET" 8 -+The ethernet header starts OFFSET bytes into the packet. Default OFFSET is 0. -+.IP "" 8 -+.PP -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ICMPError.n click-1.6.0-27/inst/share/man/mann/ICMPError.n ---- click-1.6.0/inst/share/man/mann/ICMPError.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ICMPError.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,102 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/icmp/icmperror.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ICMPERROR" n "11/Feb/2009" "Click" -+.SH "NAME" -+ICMPError \- Click element; -+generates ICMP error packets -+.SH "SYNOPSIS" -+\fBICMPError\fR(SRC, TYPE [, CODE, \fIkeywords\fR BADADDRS, MTU]) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: icmp (core) -+.br -+.SH "DESCRIPTION" -+Generate an ICMP error packet, with specified TYPE and CODE, -+in response to an incoming IP packet. The output is an IP/ICMP packet. -+The ICMP packet's IP source address is set to SRC. -+The error packet will include (as payload) -+the original packet's IP header and an initial segment of its -+IP payload. \fBICMPError\fR sets the packet destination IP and -+fix_ip_src annotations. -+.PP -+TYPE and CODE may be integers between 0 and 255 or mnemonic names; CODE -+defaults to 0. Valid named TYPEs are `unreachable' [3], `sourcequench' [4], -+`redirect' [5], `timeexceeded' [11], and `parameterproblem' [12]. Valid -+named CODEs are `net' [0], `host' [1], `protocol' [2], `port' [3], and -+`needfrag' [4] for `unreachable'; `net' [0] and `host' [1] for `redirect'; -+`transit' [0] and `reassembly' [1] for `timeexceeded'; and `erroratptr' -+[0], `missingopt' [1], and `length' [2] for `parameterproblem'. -+.PP -+The intent is that elements that give rise to errors, like -+.M DecIPTTL "n" , -+should have two outputs, one of which is connected to an \fBICMPError\fR. -+Perhaps the \fBICMPError\fR should be followed by a rate limiting -+element. -+.PP -+\fBICMPError\fR never generates a packet in response to an ICMP error packet, a -+fragment, or a link broadcast. The BADADDRS keyword argument supplies an -+optional list of bad IP addresses; if it is present, then \fBICMPError\fR doesn't -+generate packets in response to packets with one of those addresses as -+either source or destination. -+.PP -+The output of \fBICMPError\fR should be connected to the routing lookup -+machinery, much as if the ICMP errors came from a hardware interface. -+.PP -+If TYPE is 12 (`parameterproblem') and CODE is 0 (`erroratptr'), \fBICMPError\fR -+takes the error pointer from the packet's ICMP parameter problem -+annotation. The -+.M IPGWOptions "n" -+element sets the annotation. -+.PP -+If TYPE is 5 (`redirect'), produces an ICMP redirect message. The gateway -+address is taken from the destination annotation. Usually a Paint-PaintTee -+element pair hands the packet to a redirect \fBICMPError\fR. RFC1812 says only -+code 1 (`host') should be used. -+.PP -+If TYPE is 3 ('unreachable') and CODE is 4 ('needfrag'), produces -+an ICMP unreachable message containing the MTU of the next-hop -+interface, specified by the PMTU keyword. This error should be -+returned to the sender of an IP packet with the DF bit set, that is -+longer than the next-hop MTU, to support Path MTU Discovery. -+.PP -+If the input packet has a source route option, the output packet will also -+have a source route option, containing the routers from the input source -+route, reversed. -+.PP -+Will not generate a packet larger than MTU, which defaults to 576. -+.PP -+ -+.SH "EXAMPLES" -+This configuration fragment produces ICMP Time Exceeded error -+messages in response to TTL expirations, but limits the -+rate at which such messages can be sent to 10 per second: -+.PP -+.nf -+\& dt : DecIPTTL; -+\& dt[1] -> ICMPError(18.26.4.24, timeexceeded) -> m :: RatedSplitter(10) -> ... -+\& m[1] -> Discard; -+.fi -+.PP -+ -+ -+ -+.SH "NOTES" -+\fBICMPError\fR can't decide if the packet's source or destination address is an -+IP directed broadcast address; it is supposed to ignore packets with such -+addresses. -+.PP -+ -+.SH "SEE ALSO" -+.M DecIPTTL n , -+.M FixIPSrc n , -+.M IPGWOptions "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ICMPPingEncap.n click-1.6.0-27/inst/share/man/mann/ICMPPingEncap.n ---- click-1.6.0/inst/share/man/mann/ICMPPingEncap.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ICMPPingEncap.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,54 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/icmp/icmppingencap.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ICMPPINGENCAP" n "11/Feb/2009" "Click" -+.SH "NAME" -+ICMPPingEncap \- Click element; -+encapsulates packets in ICMP ping headers -+.SH "SYNOPSIS" -+\fBICMPPingEncap\fR(SRC, DST [, \fIkeyword\fR IDENTIFIER]) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: icmp (core) -+.br -+.SH "DESCRIPTION" -+Encapsulates input packets in an ICMP ping header with source IP address SRC -+and destination IP address DST. Advances the "sequence" field by one for -+each packet. (The sequence field is stored in network byte order in the -+packet.) -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "IDENTIFIER" 8 -+Integer. Determines the ICMP identifier field in emitted pings. Default is -+0. -+.IP "" 8 -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBsrc\fR (read/write)" 5 -+Returns or sets the SRC argument. -+.IP "" 5 -+.IP "\fBdst\fR (read/write)" 5 -+Returns or sets the DST argument. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M ICMPPingSource n , -+.M ICMPPingResponder n , -+.M ICMPPingRewriter "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ICMPPingResponder.n click-1.6.0-27/inst/share/man/mann/ICMPPingResponder.n ---- click-1.6.0/inst/share/man/mann/ICMPPingResponder.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ICMPPingResponder.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,39 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/icmp/icmppingresponder.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ICMPPINGRESPONDER" n "11/Feb/2009" "Click" -+.SH "NAME" -+ICMPPingResponder \- Click element; -+responds to ICMP echo requests -+.SH "SYNOPSIS" -+\fBICMPPingResponder\fR() -+ -+\fBPorts\fR: 1 input, 1-2 outputs -+.br -+\fBProcessing\fR: agnostic, but output 1 is push -+.br -+\fBPackage\fR: icmp (core) -+.br -+.SH "DESCRIPTION" -+Respond to ICMP echo requests. Incoming packets must have their IP header -+annotations set. The corresponding reply is generated for any ICMP echo -+request and emitted on output 0. The reply's destination IP address annotation -+is set appropriately, its paint annotation is cleared, and its timestamp is -+set to the current time. Other annotations are copied from the input packet. -+IP packets other than ICMP echo requests are emitted on the second output, if -+there are two outputs; otherwise, they are dropped. -+.PP -+ -+.SH "BUGS" -+\fBICMPPingResponder\fR does not pay attention to source route options; it should. -+.PP -+ -+.SH "SEE ALSO" -+.M ICMPSendPings n , -+.M ICMPError "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ICMPPingRewriter.n click-1.6.0-27/inst/share/man/mann/ICMPPingRewriter.n ---- click-1.6.0/inst/share/man/mann/ICMPPingRewriter.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ICMPPingRewriter.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,66 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/icmp/icmppingrewriter.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ICMPPINGREWRITER" n "11/Feb/2009" "Click" -+.SH "NAME" -+ICMPPingRewriter \- Click element; -+rewrites ICMP echo requests and replies -+.SH "SYNOPSIS" -+\fBICMPPingRewriter\fR(SRC, DST, \fIkeywords\fR DST_ANNO) -+ -+\fBPorts\fR: 1-2 inputs, 1-2 outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: icmp (core) -+.br -+.SH "DESCRIPTION" -+Rewrites ICMP echo requests and replies by changing their source and/or -+destination addresses. This lets pings pass through a NAT gateway. -+.PP -+Expects ICMP echo requests and echo replies. Each ICMP echo request is -+rewritten to have source IP address SRC and destination IP address DST. -+However, if either address is a single dash `\f(CW-\fR', the corresponding field in -+the IP header won't be changed. The ICMP `identifier' field is also rewritten -+to a unique number. Replies to the rewritten request are themselves rewritten; -+the rewritten replies look like they were responding to the original request. -+\fBICMPPingRewriter\fR optionally changes destination IP address annotations; see -+the DST_ANNO keyword argument below. -+.PP -+\fBICMPPingRewriter\fR actually keeps a table of mappings. Each mapping changes -+a given (source address, destination address, identifier) triple into another -+triple. Say that \fBICMPPingRewriter\fR receives a request packet with triple -+(\fIsrc\fR, \fIdst\fR, \fIident\fR), and chooses for it a new triple, (\fIsrc2\fR, -+\fIdst2\fR, \fIident2\fR). The rewriter will then store two mappings in the table. -+The first mapping changes requests (\fIsrc\fR, \fIdst\fR, \fIident\fR) into requests -+(\fIsrc2\fR, \fIdst2\fR, \fIident2\fR). The second mapping changes \fIreplies\fR (\fIdst2\fR, \fIsrc2\fR, \fIident2\fR) into replies (\fIdst\fR, \fIsrc\fR, \fIident\fR). Mappings are removed if they go unused for 5 minutes. -+.PP -+\fBICMPPingRewriter\fR may have one or two outputs. If it has two outputs, -+then requests are emitted on output 0, replies on output 1. Otherwise, -+all packets are emitted on output 0. -+.PP -+It may also have one or two inputs. They differ in how unexpected packets -+are handled. On the first input, echo requests with no corresponding -+mapping cause new mappings to be created, while echo replies with no -+corresponding mapping are passed along unchanged. On the second input, -+echo requests or replies with no corresponding mapping are simply dropped. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "DST_ANNO" 8 -+Boolean. If true, then set the destination IP address annotation on passing -+packets to the rewritten destination address. Default is true. -+.IP "" 8 -+.PP -+ -+.SH "SEE ALSO" -+.M IPRewriter n , -+.M ICMPPingResponder "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ICMPPingSource.n click-1.6.0-27/inst/share/man/mann/ICMPPingSource.n ---- click-1.6.0/inst/share/man/mann/ICMPPingSource.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ICMPPingSource.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,106 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/icmp/icmpsendpings.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ICMPPINGSOURCE" n "11/Feb/2009" "Click" -+.SH "NAME" -+ICMPPingSource \- Click element; -+periodically sends ICMP echo requests -+.SH "SYNOPSIS" -+\fBICMPPingSource\fR(SADDR, DADDR [, \fIkeywords\fR INTERVAL, IDENTIFIER, LIMIT, DATA, ACTIVE]) -+ -+\fBPorts\fR: at most 1 input, 1 output -+.br -+\fBPackage\fR: icmp (core) -+.br -+.SH "DESCRIPTION" -+Periodically emits ping packets with source IP address SRC and destination -+address DST. Advances the "sequence" field by one each time. (The sequence -+field is stored in network byte order in the packet.) When its output is -+pull, generates a ping packet on every pull. -+.PP -+\fBICMPPingSource\fR's optional input accepts replies to the pings it sends. If you -+send replies to this input, \fBICMPPingSource\fR will print reply reports and keep -+loss and RTT statistics like the ping(1) program. You can access those -+stistics with the "\f(CWsummary\fR" handler. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "INTERVAL" 8 -+Amount of time between pings, in seconds. Default is 1. -+.IP "" 8 -+.IP "IDENTIFIER" 8 -+Integer. Determines the ICMP identifier field in emitted pings. Default is -+0. -+.IP "" 8 -+.IP "LIMIT" 8 -+Integer. The number of pings to send; but if LIMIT is negative, sends pings -+forever. Default is -1. -+.IP "" 8 -+.IP "DATA" 8 -+String. Extra data in emitted pings. Default is the empty string (nothing). -+.IP "" 8 -+.IP "ACTIVE" 8 -+Boolean. Whether \fBICMPPingSource\fR is active. Default is true. -+.IP "" 8 -+.IP "VERBOSE" 8 -+Boolean. Whether \fBICMPPingSource\fR should print reports when echo replies -+arrive. Default is true. -+.IP "" 8 -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBactive\fR (read/write)" 5 -+Returns or sets the ACTIVE argument. -+.IP "" 5 -+.IP "\fBcount\fR (read-only)" 5 -+Reports the number of packets sent so far. -+.IP "" 5 -+.IP "\fBlimit\fR (write-only)" 5 -+Sets the LIMIT argument. -+.IP "" 5 -+.IP "\fBinterval\fR (write-only)" 5 -+Sets the INTERVAL argument. -+.IP "" 5 -+.IP "\fBreset_counts\fR (write-only)" 5 -+Resets all counters to zero. -+.IP "" 5 -+.IP "\fBsrc\fR (read/write)" 5 -+Returns or sets the SRC argument. -+.IP "" 5 -+.IP "\fBdst\fR (read/write)" 5 -+Returns or sets the DST argument. -+.IP "" 5 -+.IP "\fBsummary\fR (read-only)" 5 -+Returns ping(1)-style summary information: number of packets sent and -+received, loss rate, and RTT statistics. Only available if \fBICMPPingSource\fR had -+an input. -+.IP "" 5 -+.IP "\fBrtt_min\fR (read-only)" 5 -+Returns the minimum RTT observed, or 0 if no RTTs have been observed. Only -+available if \fBICMPPingSource\fR had an input. -+.IP "" 5 -+.IP "\fBrtt_max\fR (read-only)" 5 -+Returns the maximum RTT observed, or 0 if no RTTs have been observed. Only -+available if \fBICMPPingSource\fR had an input. -+.IP "" 5 -+.IP "\fBrtt_avg\fR (read-only)" 5 -+Returns the average RTT observed, or 0 if no RTTs have been observed. Only -+available if \fBICMPPingSource\fR had an input. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M ICMPPingEncap n , -+.M ICMPPingResponder n , -+.M ICMPPingRewriter "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ICMPRewriter.n click-1.6.0-27/inst/share/man/mann/ICMPRewriter.n ---- click-1.6.0/inst/share/man/mann/ICMPRewriter.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ICMPRewriter.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,73 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/icmp/icmprewriter.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ICMPREWRITER" n "11/Feb/2009" "Click" -+.SH "NAME" -+ICMPRewriter \- Click element; -+rewrites ICMP packets based on IP rewriter mappings -+.SH "SYNOPSIS" -+\fBICMPRewriter\fR(MAPS, \fIkeywords\fR DST_ANNO) -+ -+\fBPorts\fR: 1 input, 1-2 outputs -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: icmp (core) -+.br -+.SH "DESCRIPTION" -+Rewrites ICMP error packets by changing their source and/or destination -+addresses and some of their payloads. It checks MAPS, a space-separated list -+of -+.M IPRewriter "n" -like -+elements, to see how to rewrite. This lets source quenches, -+redirects, TTL-expired messages, and so forth pass through a NAT gateway. -+.PP -+ICMP error packets are sent in response to normal IP packets, and include a -+small portion of the relevant IP packet data. If the IP packet had been sent -+through -+.M IPRewriter "n" , -+.M ICMPPingRewriter "n" , -+or a similar element, then the ICMP -+packet will be in response to the rewritten address. \fBICMPRewriter\fR takes such -+ICMP error packets and checks a list of IPRewriters for a relevant mapping. If -+a mapping is found, \fBICMPRewriter\fR will rewrite the ICMP packet so it appears -+like a response to the original packet and emit the result on output 0. -+.PP -+\fBICMPRewriter\fR may have one or two outputs. If it has one, then any -+non-rewritten ICMP error packets, and any ICMP packets that are not errors, -+are dropped. If it has two, then these kinds of packets are emitted on output -+1. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "DST_ANNO" 8 -+Boolean. If true, then set the destination IP address annotation on passing -+packets to the rewritten destination address. Default is true. -+.IP "" 8 -+.PP -+ -+.SH "NOTES" -+\fBICMPRewriter\fR supports the following ICMP types: destination unreachable, time -+exceeded, parameter problem, source quench, and redirect. -+.PP -+MAPS elements may have element class -+.M IPAddrRewriter "n" , -+.M IPRewriter "n" , -+.M TCPRewriter "n" , -+.M ICMPPingRewriter "n" , -+or other related classes. -+.PP -+ -+.SH "SEE ALSO" -+.M IPAddrRewriter n , -+.M IPRewriter n , -+.M ICMPPingRewriter n , -+.M TCPRewriter "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/IPAddrPairRewriter.n click-1.6.0-27/inst/share/man/mann/IPAddrPairRewriter.n ---- click-1.6.0/inst/share/man/mann/IPAddrPairRewriter.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/IPAddrPairRewriter.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,121 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/ipaddrpairrewriter.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "IPADDRPAIRREWRITER" n "11/Feb/2009" "Click" -+.SH "NAME" -+IPAddrPairRewriter \- Click element; -+rewrites IP packets' addresses by address pair -+.SH "SYNOPSIS" -+\fBIPAddrPairRewriter\fR(INPUTSPEC1, ..., INPUTSPECn) -+ -+\fBPorts\fR: 1 or more inputs, 1-256 outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Rewrites the source and/or destination addresses on IP packets, along with -+their checksums. \fBIPAddrPairRewriter\fR implements per-address-pair network -+address translation, a midpoint between Basic NAT (see -+.M IPAddrRewriter "n" ) -+and -+NAPT (see -+.M IPRewriter "n" -+and -+.M TCPRewriter "n" ). -+.PP -+\fBIPAddrPairRewriter\fR maintains a \fImapping table\fR that records how addresses are -+rewritten. On receiving a packet, \fBIPAddrPairRewriter\fR first looks up that -+packet in the mapping table by source/destination address pair. If the table -+contains a mapping, then the packet is rewritten according to the mapping and -+emitted on the specified output port. If there was no mapping, the packet is -+handled by the INPUTSPEC corresponding to the input port on which the packet -+arrived. (There are as many input ports as INPUTSPECs.) Most INPUTSPECs -+install new mappings, so that future packets from the same address are handled -+by the mapping table rather than some INPUTSPEC. The six forms of INPUTSPEC -+handle input packets as follows: -+.PP -+ -+ -+.IP "\&'drop', 'pass OUTPUT', 'keep FOUTPUT ROUTPUT', 'ELEMENTNAME'" 5 -+These INPUTSPECs behave like those in -+.M IPRewriter "n" . -+.IP "" 5 -+.IP "\&'pattern SADDR[-SADDR2] DADDR FOUTPUT ROUTPUT'" 5 -+Creates a mapping according to the given pattern, 'SADDR DADDR'. Either -+pattern field may be a dash '-', in which case the corresponding field is left -+unchanged. For instance, the pattern '1.0.0.1 -' will rewrite input packets' -+source address, but leave its destination address unchanged. SADDR may be a -+range 'L-H' or prefix 'ADDR/PFX'; -+.M IPRewriter "n" -+will choose an unallocated -+address in that range, or drop the packet if no address is available. -+Normally addresses are chosen randomly within the range. To allocate -+addresses sequentially (which can make testing easier), append a pound sign to -+the range, as in '1.0.0.1-1.255.255.254#'. -+.IP "" 5 -+Say a packet with address pair (SA, DA) is received, and the corresponding new -+addresses are (SA', DA'). Then two mappings are installed: -+.IP "" 5 -+.nf -+\& (SA, DA) => (SA', DA') [FOUTPUT] -+\& (DA', SA') => (DA, SA) [ROUTPUT] -+.fi -+.IP "" 5 -+Thus, the input packet is rewritten and sent to FOUTPUT, and packets from the -+reply flow are rewritten to look like part of the original flow and sent to -+ROUTPUT. -+.IP "" 5 -+ -+.IP "\&'pattern PATNAME FOUTPUT ROUTPUT'" 5 -+Behaves like the version in -+.M IPRewriter "n" , -+except that PATNAME must name an -+.M IPAddrRewriter "n" -like -+pattern. -+.IP "" 5 -+.PP -+Input packets must have their IP header annotations set. -+.M IPAddrRewriter "n" -+changes IP packet data and destination IP address annotations. -+.PP -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBmappings\fR (read-only)" 5 -+Returns a human-readable description of the -+.M IPAddrRewriter "n" 's -+current set of -+mappings. -+.IP "" 5 -+.IP "\fBnmappings\fR (read-only)" 5 -+Returns the number of currently installed mappings. -+.IP "" 5 -+.IP "\fBpatterns\fR (read-only)" 5 -+Returns a human-readable description of the patterns associated with this -+.M IPAddrRewriter "n" . -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M IPRewriter n , -+.M IPAddrRewriter n , -+.M TCPRewriter n , -+.M IPRewriterPatterns n , -+.M RoundRobinIPMapper n , -+.M FTPPortMapper n , -+.M ICMPRewriter n , -+.M ICMPPingRewriter n , -+.M StoreIPAddress n -+( -+.M for n -+.M simple n -+uses) -+ -diff -Nurb click-1.6.0/inst/share/man/mann/IPAddrRewriter.n click-1.6.0-27/inst/share/man/mann/IPAddrRewriter.n ---- click-1.6.0/inst/share/man/mann/IPAddrRewriter.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/IPAddrRewriter.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,113 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/ipaddrrewriter.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "IPADDRREWRITER" n "11/Feb/2009" "Click" -+.SH "NAME" -+IPAddrRewriter \- Click element; -+rewrites IP packets' addresses -+.SH "SYNOPSIS" -+\fBIPAddrRewriter\fR(INPUTSPEC1, ..., INPUTSPECn) -+ -+\fBPorts\fR: 1 or more inputs, 1-256 outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Rewrites the source and/or destination addresses on IP packets, along with -+their checksums. \fBIPAddrRewriter\fR implements the functionality of a network -+address translator (Basic NAT), where internal hosts are assigned -+temporary IP addresses as they access the Internet. Basic NAT works for any -+IP protocol, but the number of internal hosts that can access the Internet -+simultaneously is limited by the number of external IP addresses available. -+See also -+.M IPRewriter "n" -+and -+.M TCPRewriter "n" , -+which implement network address/port -+translation (NAPT). -+.PP -+\fBIPAddrRewriter\fR maintains a \fImapping table\fR that records how addresses are -+rewritten. On receiving a packet, \fBIPAddrRewriter\fR first looks up that packet -+in the mapping table by source or destination address. If the table contains -+a mapping for either address, then the packet is rewritten according to the -+mapping and emitted on the specified output port. If there was no mapping, -+the packet is handled by the INPUTSPEC corresponding to the input port on -+which the packet arrived. (There are as many input ports as INPUTSPECs.) -+Most INPUTSPECs install new mappings, so that future packets from the same -+address are handled by the mapping table rather than some INPUTSPEC. The six -+forms of INPUTSPEC handle input packets as follows: -+.PP -+ -+ -+.IP "\&'drop', 'pass OUTPUT', 'keep FOUTPUT ROUTPUT', 'ELEMENTNAME'" 5 -+These INPUTSPECs behave like those in -+.M IPRewriter "n" . -+.IP "" 5 -+.IP "\&'pattern SADDR[-SADDR2] - FOUTPUT ROUTPUT'" 5 -+Creates a mapping according to the given pattern. The destination -+address must be a dash '-', since \fBIPAddrRewriter\fR only changes outgoing -+packets' source addresses. (If you want to rewrite destination addresses, -+use -+.M IPAddrPairRewriter "n" -+instead.) -+SADDR may be a range 'L-H' or prefix 'ADDR/PFX'; -+.M IPRewriter "n" -+will choose an unallocated address in that range, or drop the -+packet if no address is available. Normally addresses are chosen randomly -+within the range. To allocate addresses sequentially (which can make testing -+easier), append a pound sign to the range, as in '1.0.0.1-1.255.255.254#'. -+SADDR may also be a dash, in which case the source address is left unchanged. -+.IP "" 5 -+Packets sent from the old source address are rewritten and sent to FOUTPUT, -+and packets sent to the new source address are rewritten back and sent to -+ROUTPUT. -+.IP "" 5 -+.IP "\&'pattern PATNAME FOUTPUT ROUTPUT'" 5 -+Behaves like the version in -+.M IPRewriter "n" , -+except that PATNAME must name an -+\fBIPAddrRewriter\fR-like pattern. -+.IP "" 5 -+.PP -+Input packets must have their IP header annotations set. \fBIPAddrRewriter\fR -+changes IP packet data and destination IP address annotations. -+.PP -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBmappings\fR (read-only)" 5 -+Returns a human-readable description of the \fBIPAddrRewriter\fR's current set of -+mappings. -+.IP "" 5 -+.IP "\fBnmappings\fR (read-only)" 5 -+Returns the number of currently installed mappings. -+.IP "" 5 -+.IP "\fBpatterns\fR (read-only)" 5 -+Returns a human-readable description of the patterns associated with this -+\fBIPAddrRewriter\fR. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M IPRewriter n , -+.M IPAddrPairRewriter n , -+.M TCPRewriter n , -+.M IPRewriterPatterns n , -+.M RoundRobinIPMapper n , -+.M FTPPortMapper n , -+.M ICMPRewriter n , -+.M ICMPPingRewriter n , -+.M StoreIPAddress n -+( -+.M for n -+.M simple n -+uses) -+ -diff -Nurb click-1.6.0/inst/share/man/mann/IPClassifier.n click-1.6.0-27/inst/share/man/mann/IPClassifier.n ---- click-1.6.0/inst/share/man/mann/IPClassifier.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/IPClassifier.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,239 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/ipclassifier.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "IPCLASSIFIER" n "11/Feb/2009" "Click" -+.SH "NAME" -+IPClassifier \- Click element; -+classifies IP packets by contents -+.SH "SYNOPSIS" -+\fBIPClassifier\fR(PATTERN_1, ..., PATTERN_N) -+ -+\fBPorts\fR: 1 input, any number of outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Classifies IP packets according to -+.M tcpdump 1 -like -+patterns. The -+\fBIPClassifier\fR has N outputs, each associated with the corresponding pattern -+from the configuration string. The input packets must have their IP header -+annotation set; -+.M CheckIPHeader "n" -+and -+.M MarkIPHeader "n" -+do this. -+.PP -+Patterns are built from \fIpattern primitives\fR. The primitives -+\fBIPClassifier\fR understands are: -+.PP -+ -+ -+.IP "\fBip proto PROTO\fR" 8 -+PROTO is an IP protocol name (see below) or a valid IP protocol number. -+Matches packets of the given protocol. -+.IP "" 8 -+.IP "\fB[SRCORDST] host IPADDR\fR" 8 -+IPADDR is an IP address and SRCORDST is 'src', 'dst', 'src or dst', or 'src -+and dst'. (If SRCORDST is missing, 'src or dst' is assumed.) Matches -+packets sent to and/or from the given address. -+.IP "" 8 -+.IP "\fB[SRCORDST] net NETADDR\fR" 8 -+NETADDR is an IP network address (either CIDR-style 'IPADDR/BITS' or -+\&'IPADDR mask MASK') and SRCORDST is as above. Matches packets sent to -+and/or from the given network. -+.IP "" 8 -+.IP "\fB[SRCORDST] [tcp | udp] port PORT\fR" 8 -+PORT is a TCP or UDP port name (see below) or number and SRCORDST is as -+above. Matches packets sent to and/or from the given TCP or UDP port. If -+you leave out 'tcp' or 'udp', then either TCP or UDP is accepted. -+.IP "" 8 -+.IP "\fBip vers VERSION\fR" 8 -+VERSION is a value between 0 and 15. Matches IP packets with the given -+version. -+.IP "" 8 -+.IP "\fBip hl HL\fR" 8 -+HL is a value between 0 and 15. Matches IP packets with the given header -+length. -+.IP "" 8 -+.IP "\fBip id ID\fR" 8 -+ID is a value between 0 and 65535. Matches IP packets with the given IP ID. -+.IP "" 8 -+.IP "\fBip tos TOS\fR" 8 -+TOS is a value between 0 and 255. Matches IP packets with the given TOS -+value. -+.IP "" 8 -+.IP "\fBip dscp DSCP\fR" 8 -+DSCP is a value between 0 and 63. Matches IP packets with the given DSCP -+value (the upper 6 bits of TOS). -+.IP "" 8 -+.IP "\fBip ect\fR" 8 -+Matches IP packets with ECN Capable Transport turned on. -+.IP "" 8 -+.IP "\fBip ce\fR" 8 -+Matches IP packets with ECN Congestion Experienced set. -+.IP "" 8 -+.IP "\fBip ttl TTL\fR" 8 -+TTL is a value between 0 and 255. Matches IP packets with the given TTL value. -+.IP "" 8 -+.IP "\fBip frag\fR" 8 -+Matches fragmented IP packets (that is, packets with the more-fragments bit -+set and/or a nonzero fragment offset). -+.IP "" 8 -+.IP "\fBip unfrag\fR" 8 -+Equivalent to 'not ip frag'. -+.IP "" 8 -+.IP "\fBtcp opt TCPOPT\fR" 8 -+TCPOPT is a TCP option name (see below). Matches TCP packets with the given -+option. -+.IP "" 8 -+.IP "\fBtcp win TCPWIN\fR" 8 -+TCPWIN is a TCP receive window length. Matches TCP packets with the given -+window length. Note that window scaling is not applied. -+.IP "" 8 -+.IP "\fBicmp type TYPE\fR" 8 -+TYPE is a value between 0 and 255 or an ICMP type name (see below). Matches -+ICMP packets with the given ICMP type. -+.IP "" 8 -+.IP "\fBip[POS:LEN] VALUE\fR" 8 -+Matches packets whose IP header field starting at byte position POS, and going -+on for LEN bytes, equals VALUE. You can say \fBip[POS]\fR instead of -+\fBip[POS:1]\fR. -+.IP "" 8 -+.IP "\fBtransp[POS:LEN] VALUE\fR" 8 -+Like \fBip[POS:LEN]\fR, but for transport header fields. You can also give -+particular transport protocols, such as \fBtcp[POS:LEN]\fR. -+.IP "" 8 -+.IP "\fBtrue\fR" 8 -+Matches every packet. -+.IP "" 8 -+.IP "\fBfalse\fR" 8 -+Matches no packets. -+.IP "" 8 -+.PP -+These primitives can be combined with the connectives 'and', 'or', and 'not' -+(synonyms '&&', '||', and '!'), with the ternary operator '?:' (the colon -+must be surrounded by spaces!), and with parentheses. For example, '(dst port -+www or dst port ssh) and tcp opt syn'. -+.PP -+All primitives except \fBtcp opt\fR accept an optional OPERATION, '==' or '!=', -+which can occur before the actual option. If no OPERATION is specified, '==' -+is assumed. 'src host == 10.0.0.10' matches packets whose source host is -+10.0.0.10; 'src host != 10.0.0.10' matches packets whose source host \fIis not\fR -+10.0.0.10. Directives with integer values also support the '<', '>', '<=', -+and '>=' operations. -+.PP -+For \fBport\fR and \fBicmp type\fR directives, 'DIRECTIVE != VALUE' is not the -+same as 'not (DIRECTIVE == VALUE)'. For example, 'src tcp port != 5' -+matches TCP packets whose source port is not 5, while '!(src tcp port == -+5)' matches non-TCP packets as well. (The 'src tcp port != 5' option is -+effectively equivalent to 'tcp and not src tcp port 5'.) Similarly, 'icmp -+type != 4' will not match non-ICMP packets. The same goes for the '<', '>', -+\&'<=', and '>=' relations. -+.PP -+Most primitives also accept bitmasks: 'DIRECTIVE & MASK [[OP] VALUE]'. For -+instance, 'src tcp port & 10 == 8'. -+.PP -+The \fBport\fR, \fBicmp type\fR, and \fBtcp opt\fR directives will only match first -+fragments. -+.PP -+You can omit a lot of this syntax. For example, instead of 'ip proto tcp', -+you can just say 'tcp'; and similarly for 'port www' (just say 'www'), 'tcp -+opt syn' (just say 'syn'), 'net 10.0.0.0/24' (just say '10.0.0.0/24'), and -+\&'ip unfrag' (just say 'unfrag'). You can often eliminate repetitive -+qualifiers, too: 'src port 80 or 81' is the same as 'src port 80 or src -+port 81'. -+.PP -+A pattern consisting entirely of "-", "any", or "all" matches every packet. -+.PP -+The patterns are scanned in order, and the packet is sent to the output -+corresponding to the first matching pattern. Thus more specific patterns -+should come before less specific ones. You will get a warning if no packet -+will ever match a pattern. Usually, this is because an earlier pattern is -+more general, or because your pattern is contradictory ('src port www and -+src port ftp'). -+.PP -+.SH "NOTES" -+Valid IP port names: 'echo', 'discard', 'daytime', 'chargen', 'ftp-data', -+\&'ftp', 'ssh', 'telnet', 'smtp', 'domain', 'dns', 'bootps', 'bootpc', -+\&'tftp', 'finger', 'www', 'pop3', 'sunrpc', 'auth', 'nntp', 'ntp', -+\&'netbios-ns', 'netbios-dgm', 'netbios-ssn', 'snmp', 'snmp-trap', 'irc', -+\&'imap3', 'https', 'rip', 'route', 'imaps', 'pop3s' -+.PP -+Valid IP protocol names: 'icmp', 'igmp', 'ipip', 'tcp', 'udp' -+.PP -+Valid TCP options: 'syn', 'fin', 'ack', 'rst', 'psh', 'urg' -+.PP -+Valid ICMP type names: 'echo-reply', 'unreachable', 'sourcequench', -+\&'redirect', 'echo', 'routeradvert', 'routersolicit', 'timeexceeded', -+\&'parameterproblem', 'timestamp', 'timestamp-reply', 'inforeq', -+\&'inforeq-reply', 'maskreq', 'maskreq-reply' -+.PP -+This element correctly handles IP packets with options. -+.PP -+\fB[tcp | udp] port\fR, \fBicmp type\fR, \fBtcp opt\fR, and \fBtcp win\fR directives can -+only be true on the first fragment of a fragmented packet. -+.PP -+Every \fBIPClassifier\fR element has an equivalent corresponding -+.M IPFilter "n" -+element -+and vice versa. Use the element whose syntax is more convenient for your -+needs. -+.PP -+ -+.SH "EXAMPLES" -+For example, -+.PP -+.nf -+\& IPClassifier(10.0.0.0/24 and syn, -+\& 10.0.0.0/24 and fin ack, -+\& 10.0.0.0/24 and tcp, -+\& -); -+.fi -+.PP -+creates an element with four outputs. The first three outputs are for TCP -+packets from net 10.0.0.x. SYN packets are sent to output 0, FIN packets -+with the ACK bit set to output 1, and all other TCP packets to output 2. -+The last output is for all other IP packets, and non-TCP packets from net -+10.0.0.x. -+.PP -+.nf -+\& IPClassifier(dst tcp port 8000 or 8080, -+\& dst tcp port > 1023, -+\& tcp); -+.fi -+.PP -+creates an element with three outputs. The first output is for TCP packets -+destined for port 8000 or 8080; the second output is for TCP packets -+destined for any other user port (that is, port > 1023); and the third -+output is for all other TCP packets. Non-TCP packets are dropped. -+.PP -+ -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBprogram\fR (read-only)" 5 -+Returns a human-readable definition of the program the \fBIPClassifier\fR element -+is using to classify packets. At each step in the program, four bytes -+of packet data are ANDed with a mask and compared against four bytes of -+classifier pattern. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M Classifier n , -+.M IPFilter n , -+.M CheckIPHeader n , -+.M MarkIPHeader n , -+.M CheckIPHeader2 n , -+tcpdump(1) -+ -diff -Nurb click-1.6.0/inst/share/man/mann/IPEncap.n click-1.6.0-27/inst/share/man/mann/IPEncap.n ---- click-1.6.0/inst/share/man/mann/IPEncap.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/IPEncap.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,91 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/ipencap.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "IPENCAP" n "11/Feb/2009" "Click" -+.SH "NAME" -+IPEncap \- Click element; -+encapsulates packets in static IP header -+.SH "SYNOPSIS" -+\fBIPEncap\fR(PROTO, SRC, DST, \fIKEYWORDS\fR) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Encapsulates each incoming packet in an IP packet with protocol -+PROTO, source address SRC, and destination address DST. -+This is most useful for IP-in-IP encapsulation. -+Its destination address annotation is also set to DST. -+.PP -+As a special case, if DST is "DST_ANNO", then the destination address -+is set to the incoming packet's destination address annotation. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "TTL" 8 -+Byte. The IP header's time-to-live field. Default is 250. -+.IP "" 8 -+.IP "DSCP" 8 -+Number between 0 and 63. The IP header's DSCP value. Default is 0. -+.IP "" 8 -+.IP "ECT" 8 -+Boolean or "2". If true, sets the IP header's ECN bits to ECN Capable -+Transport. If "true", "1" or "yes", sets the ECN bits to 1; but if "2", sets -+them to 2. Default is false. -+.IP "" 8 -+.IP "CE" 8 -+Boolean. If true, sets the IP header's ECN bits to 3 (Congestion Experienced). -+Default is false. -+.IP "" 8 -+.IP "TOS" 8 -+Byte. The IP header's TOS value. Default is 0. If you specify TOS, you may not -+specify DSCP, ECT, or CE. -+.IP "" 8 -+.IP "DF" 8 -+Boolean. If true, sets the IP header's Don't Fragment bit to 1. Default is -+false. -+.IP "" 8 -+.PP -+The -+.M StripIPHeader "n" -+element can be used by the receiver to get rid -+of the encapsulation header. -+.PP -+.SH "EXAMPLES" -+Wraps packets in an IP header specifying IP protocol 4 -+(IP-in-IP), with source 18.26.4.24 and destination 140.247.60.147: -+.PP -+.nf -+\& IPEncap(4, 18.26.4.24, 140.247.60.147) -+.fi -+.PP -+You could also say "\f(CWIPEncap(ipip, ...)\fR". -+.PP -+ -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBsrc\fR (read/write)" 5 -+Returns or sets the SRC parameter. -+.IP "" 5 -+.IP "\fBdst\fR (read/write)" 5 -+Returns or sets the DST parameter. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M UDPIPEncap n , -+.M StripIPHeader "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/IPFilter.n click-1.6.0-27/inst/share/man/mann/IPFilter.n ---- click-1.6.0/inst/share/man/mann/IPFilter.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/IPFilter.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,145 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/ipfilter.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "IPFILTER" n "11/Feb/2009" "Click" -+.SH "NAME" -+IPFilter \- Click element; -+filters IP packets by contents -+.SH "SYNOPSIS" -+\fBIPFilter\fR(ACTION_1 PATTERN_1, ..., ACTION_N PATTERN_N) -+ -+\fBPorts\fR: 1 input, any number of outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Filters IP packets. \fBIPFilter\fR can have an arbitrary number of filters, which -+are ACTION-PATTERN pairs. The ACTIONs describe what to do with packets, -+while the PATTERNs are -+.M tcpdump 1 -like -+patterns; see -+.M IPClassifier n -+for a -+description of their syntax. Packets are tested against the filters in -+order, and are processed according to the ACTION in the first filter that -+matched. -+.PP -+Each ACTION is either a port number, which specifies that the packet should be -+sent out on that port; '\f(CWallow\fR', which is equivalent to '\f(CW0\fR'; or '\f(CWdrop\fR' -+, which means drop the packet. You can also say '\f(CWdeny\fR' instead of -+\&'\f(CWdrop\fR', but see the compatibility note below. -+.PP -+The \fBIPFilter\fR element has an arbitrary number of outputs. Input packets must -+have their IP header annotation set; -+.M CheckIPHeader "n" -+and -+.M MarkIPHeader "n" -+do -+this. -+.PP -+ -+.SH "NOTES" -+Every \fBIPFilter\fR element has an equivalent corresponding -+.M IPClassifier "n" -+element -+and vice versa. Use the element whose syntax is more convenient for your -+needs. -+.PP -+\fBCompatibility note\fR: '\f(CWdeny\fR' formerly meant '\f(CW1\fR' if the element had at -+least two outputs and '\f(CWdrop\fR' if it did not. We decided this was -+error-prone; now it just means '\f(CWdrop\fR'. For now, however, '\f(CWdeny\fR' will -+print a warning if used on an element with more than one output. -+.PP -+ -+.SH "EXAMPLES" -+This large \fBIPFilter\fR implements the incoming packet filtering rules for the -+"Interior router" described on pp691-692 of \fIBuilding Internet Firewalls, -+Second Edition\fR (Elizabeth D. Zwicky, Simon Cooper, and D. Brent Chapman, -+O'Reilly and Associates, 2000). The captialized words (\f(CWINTERNALNET\fR, -+\f(CWBASTION\fR, etc.) are addresses that have been registered with -+.M AddressInfo n . -+The rule FTP-7 has a port range that cannot be implemented -+with \fBIPFilter\fR. -+.PP -+.nf -+\& IPFilter(// Spoof-1: -+\& deny src INTERNALNET, -+\& // HTTP-2: -+\& allow src BASTION && dst INTERNALNET -+\& && tcp && src port www && dst port > 1023 && ack, -+\& // Telnet-2: -+\& allow dst INTERNALNET -+\& && tcp && src port 23 && dst port > 1023 && ack, -+\& // SSH-2: -+\& allow dst INTERNALNET && tcp && src port 22 && ack, -+\& // SSH-3: -+\& allow dst INTERNALNET && tcp && dst port 22, -+\& // FTP-2: -+\& allow dst INTERNALNET -+\& && tcp && src port 21 && dst port > 1023 && ack, -+\& // FTP-4: -+\& allow dst INTERNALNET -+\& && tcp && src port > 1023 && dst port > 1023 && ack, -+\& // FTP-6: -+\& allow src BASTION && dst INTERNALNET -+\& && tcp && src port 21 && dst port > 1023 && ack, -+\& // FTP-7 omitted -+\& // FTP-8: -+\& allow src BASTION && dst INTERNALNET -+\& && tcp && src port > 1023 && dst port > 1023, -+\& // SMTP-2: -+\& allow src BASTION && dst INTERNAL_SMTP -+\& && tcp && src port 25 && dst port > 1023 && ack, -+\& // SMTP-3: -+\& allow src BASTION && dst INTERNAL_SMTP -+\& && tcp && src port > 1023 && dst port 25, -+\& // NNTP-2: -+\& allow src NNTP_FEED && dst INTERNAL_NNTP -+\& && tcp && src port 119 && dst port > 1023 && ack, -+\& // NNTP-3: -+\& allow src NNTP_FEED && dst INTERNAL_NNTP -+\& && tcp && src port > 1023 && dst port 119, -+\& // DNS-2: -+\& allow src BASTION && dst INTERNAL_DNS -+\& && udp && src port 53 && dst port 53, -+\& // DNS-4: -+\& allow src BASTION && dst INTERNAL_DNS -+\& && tcp && src port 53 && dst port > 1023 && ack, -+\& // DNS-5: -+\& allow src BASTION && dst INTERNAL_DNS -+\& && tcp && src port > 1023 && dst port 53, -+\& // Default-2: -+\& deny all); -+.fi -+.PP -+ -+ -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBprogram\fR (read-only)" 5 -+Returns a human-readable definition of the program the \fBIPFilter\fR element -+is using to classify packets. At each step in the program, four bytes -+of packet data are ANDed with a mask and compared against four bytes of -+classifier pattern. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M IPClassifier n , -+.M Classifier n , -+.M CheckIPHeader n , -+.M MarkIPHeader n , -+.M CheckIPHeader2 n , -+.M AddressInfo n , -+tcpdump(1) -+ -diff -Nurb click-1.6.0/inst/share/man/mann/IPFragmenter.n click-1.6.0-27/inst/share/man/mann/IPFragmenter.n ---- click-1.6.0/inst/share/man/mann/IPFragmenter.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/IPFragmenter.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,69 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/ipfragmenter.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "IPFRAGMENTER" n "11/Feb/2009" "Click" -+.SH "NAME" -+IPFragmenter \- Click element; -+fragments large IP packets -+.SH "SYNOPSIS" -+\fBIPFragmenter\fR(MTU, [\fIkeywords\fR HONOR_DF, VERBOSE]) -+ -+\fBPorts\fR: 1 input, 1-2 outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Expects IP packets as input. If the IP packet size is <= MTU, just emits -+the packet on output 0. If the size is greater than MTU and the -+don't-fragment bit (DF) isn't set, \fBIPFragmenter\fR splits the packet into -+fragments emitted on output 0. If DF is set and the packet size is greater -+than MTU, sends the packet to output 1 (but see HONOR_DF below). Ordinarily -+output 1 is connected to an -+.M ICMPError "n" -+element with type 3 (UNREACH) and -+code 4 (NEEDFRAG). -+.PP -+Only the mac_broadcast annotation is copied into the fragments. -+.PP -+Sends the fragments in order, starting with the first. -+.PP -+It is best to Strip() the MAC header from a packet before sending it to -+\fBIPFragmenter\fR, since any MAC header is not copied to second and subsequent -+fragments. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "HONOR_DF" 8 -+Boolean. If HONOR_DF is false, \fBIPFragmenter\fR will ignore the don't-fragment -+(DF) bit and fragment every packet larger than MTU. Default is true. -+.IP "" 8 -+.IP "VERBOSE" 8 -+Boolean. If true, \fBIPFragmenter\fR will print a message every time it sees a -+packet with DF; otherwise, it will print a message only the first 5 times. -+Default is false. -+.IP "" 8 -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& ... -> fr::IPFragmenter(1024) -> Queue(20) -> ... -+\& fr[1] -> ICMPError(18.26.4.24, 3, 4) -> ... -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M ICMPError n , -+.M CheckLength "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/IPGWOptions.n click-1.6.0-27/inst/share/man/mann/IPGWOptions.n ---- click-1.6.0/inst/share/man/mann/IPGWOptions.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/IPGWOptions.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,50 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/ipgwoptions.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "IPGWOPTIONS" n "11/Feb/2009" "Click" -+.SH "NAME" -+IPGWOptions \- Click element; -+processes router IP options -+.SH "SYNOPSIS" -+\fBIPGWOptions\fR(MYADDR [, OTHERADDRS]) -+ -+\fBPorts\fR: 1 input, 1-2 outputs -+.br -+\fBProcessing\fR: agnostic, but output 1 is push -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Process the IP options that should be processed by every router, -+not just when ip_dst refers to the current router. At the moment -+that amounts to Record Route and Timestamp (in particular, -+not the source route options). MYADDR is the router's -+IP address on the interface downstream from the element. -+.PP -+Probably needs to be placed on the output path, since MYADDR -+must be the outgoing interface's IP address (rfc1812 4.2.2.2). -+.PP -+Recomputes the IP header checksum if it modifies the packet. -+.PP -+The optional OTHERADDRS argument should be a space-separated list of IP -+addresses containing the router's other interface addresses. It is used to -+implement the Timestamp option. -+.PP -+The second output may be connected to an -+.M ICMPError "n" -+to produce -+a parameter problem (type=12,code=0) message. \fBIPGWOptions\fR sets -+the param_off packet annotation so that -+.M ICMPError "n" -+can set -+the Parameter Problem pointer to point to the erroneous byte. -+.PP -+ -+.SH "SEE ALSO" -+.M ICMPError "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/IPInputCombo.n click-1.6.0-27/inst/share/man/mann/IPInputCombo.n ---- click-1.6.0/inst/share/man/mann/IPInputCombo.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/IPInputCombo.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,48 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/ipinputcombo.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "IPINPUTCOMBO" n "11/Feb/2009" "Click" -+.SH "NAME" -+IPInputCombo \- Click element; -+input combo for IP routing -+.SH "SYNOPSIS" -+\fBIPInputCombo\fR(COLOR [, BADSRC, \fIkeywords\fR INTERFACES, BADSRC, GOODDST]) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+A single element encapsulating common tasks on an IP router's input path. -+Effectively equivalent to -+.PP -+.nf -+\& elementclass IPInputCombo { $COLOR, $BADADDRS | -+\& input[0] -> Paint($COLOR) -+\& -> Strip(14) -+\& -> CheckIPHeader($BADADDRS) -+\& -> GetIPAddress(16) -+\& -> [0]output; -+\& } -+.fi -+.PP -+The INTERFACES, BADSRC, and GOODDST keyword arguments correspond to -+.M CheckIPHeader "n" 's -+versions. -+.PP -+ -+ -+.SH "SEE ALSO" -+.M Paint n , -+.M CheckIPHeader n , -+.M Strip n , -+.M GetIPAddress n , -+.M IPOutputCombo "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/IPMirror.n click-1.6.0-27/inst/share/man/mann/IPMirror.n ---- click-1.6.0/inst/share/man/mann/IPMirror.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/IPMirror.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,31 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/ipmirror.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "IPMIRROR" n "11/Feb/2009" "Click" -+.SH "NAME" -+IPMirror \- Click element; -+swaps IP source and destination -+.SH "SYNOPSIS" -+\fBIPMirror\fR -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Incoming packets must have their IP header annotations set. Swaps packets' -+source and destination IP addresses. Packets containing TCP or UDP -+headers---that is, first fragments of packets with protocol 6 or 17---also -+have their source and destination ports swapped. TCP packets also have their -+seq and ack numbers swapped. -+.PP -+The IP and TCP or UDP checksums are not changed. They don't need to be; these -+swap operations do not affect checksums. -+ -diff -Nurb click-1.6.0/inst/share/man/mann/IPNameInfo.n click-1.6.0-27/inst/share/man/mann/IPNameInfo.n ---- click-1.6.0/inst/share/man/mann/IPNameInfo.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/IPNameInfo.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,23 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/ipnameinfo.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "IPNAMEINFO" n "11/Feb/2009" "Click" -+.SH "NAME" -+IPNameInfo \- Click element; -+stores name information about IP packets -+.SH "SYNOPSIS" -+\fBIPNameInfo\fR() -+ -+\fBPorts\fR: none -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Contains IP-related name mappings, such as the names for common IP protocols. -+This element should not be used in configurations. -+ -diff -Nurb click-1.6.0/inst/share/man/mann/IPOutputCombo.n click-1.6.0-27/inst/share/man/mann/IPOutputCombo.n ---- click-1.6.0/inst/share/man/mann/IPOutputCombo.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/IPOutputCombo.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,69 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/ipoutputcombo.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "IPOUTPUTCOMBO" n "11/Feb/2009" "Click" -+.SH "NAME" -+IPOutputCombo \- Click element; -+output combo for IP routing -+.SH "SYNOPSIS" -+\fBIPOutputCombo\fR(COLOR, IPADDR, MTU) -+ -+\fBPorts\fR: 1 input, 5 outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+A single element encapsulating common tasks on an IP router's output path. -+Effectively equivalent to -+.PP -+.nf -+\& elementclass IPOutputCombo { $COLOR, $IPADDR, $MTU | -+\& input[0] -> DropBroadcasts -+\& -> p::PaintTee($COLOR) -+\& -> g::IPGWOptions($IPADDR) -+\& -> FixIPSrc($IPADDR) -+\& -> d::DecIPTTL -+\& -> l::CheckLength($MTU) -+\& -> [0]output; -+\& p[1] -> [1]output; -+\& g[1] -> [2]output; -+\& d[1] -> [3]output; -+\& l[1] -> [4]output; -+\& } -+.fi -+.PP -+Output 0 is the path for normal packets; outputs 1 through 3 are error -+outputs for -+.M PaintTee "n" , -+.M IPGWOptions "n" , -+and -+.M DecIPTTL "n" , -+respectively; and -+output 4 is for packets longer than MTU. -+.PP -+ -+ -+.SH "NOTES" -+\fBIPOutputCombo\fR does no fragmentation. You'll still need an -+.M IPFragmenter "n" -+for -+that. -+.PP -+ -+.SH "SEE ALSO" -+.M DropBroadcasts n , -+.M PaintTee n , -+.M CheckLength n , -+.M IPGWOptions n , -+.M FixIPSrc n , -+.M DecIPTTL n , -+.M IPFragmenter n , -+.M IPInputCombo "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/IPPrint.n click-1.6.0-27/inst/share/man/mann/IPPrint.n ---- click-1.6.0/inst/share/man/mann/IPPrint.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/IPPrint.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,91 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/ipprint.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "IPPRINT" n "11/Feb/2009" "Click" -+.SH "NAME" -+IPPrint \- Click element; -+pretty-prints IP packets -+.SH "SYNOPSIS" -+\fBIPPrint\fR([LABEL, \fIKEYWORDS\fR]) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Expects IP packets as input. Should be placed downstream of a -+.M CheckIPHeader "n" -+or equivalent element. -+.PP -+Prints out IP packets in a human-readable tcpdump-like format, preceded by -+the LABEL text. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "CONTENTS" 8 -+Determines whether the packet data is printed. It may be `NONE' (do not print -+packet data), `HEX' (print packet data in hexadecimal), or `ASCII' (print -+packet data in plaintext). Default is `NONE'. -+.IP "" 8 -+.IP "PAYLOAD" 8 -+Like CONTENTS, but prints only the packet payload, rather than the entire -+packet. Specify at most one of CONTENTS and PAYLOAD. -+.IP "" 8 -+.IP "NBYTES" 8 -+If CONTENTS is `hex' or `ascii', then NBYTES determines the number of bytes to -+dump. Default is 1500. -+.IP "" 8 -+.IP "ID" 8 -+Boolean. Determines whether to print each packet's IP ID field. Default is -+false. -+.IP "" 8 -+.IP "TTL" 8 -+Boolean. Determines whether to print each packet's IP TOS field. Default is -+false. -+.IP "" 8 -+.IP "TOS" 8 -+Boolean. Determines whether to print each packet's IP TOS field. Default is -+false. -+.IP "" 8 -+.IP "LENGTH" 8 -+Boolean. Determines whether to print each packet's IP length field. Default is -+false. -+.IP "" 8 -+.IP "TIMESTAMP" 8 -+Boolean. Determines whether to print each packet's timestamp in seconds since -+1970. Default is true. -+.IP "" 8 -+.IP "AGGREGATE" 8 -+Boolean. Determines whether to print each packet's aggregate annotation. -+Default is false. -+.IP "" 8 -+.IP "PAINT" 8 -+Boolean. Determines whether to print each packet's paint annotation. Default is false. -+.IP "" 8 -+.IP "SWAP" 8 -+Boolean. Determines whether to swap bytes before printing the values -+of ICMP sequence and ID numbers. Default is false. The RFC does not -+require these two-byte values to be sent in any particular byte order. -+For example, OpenBSD/i386 writes ping (ICMP echo) sequence numbers in -+network byte order, while Linux/i386 writes them in host byte order -+(often little-endian). -+.IP "" 8 -+.IP "OUTFILE" 8 -+String. Only available at user level. Print information to the file specified -+by OUTFILE instead of standard error. -+.IP "" 8 -+.PP -+ -+.SH "SEE ALSO" -+.M Print n , -+.M CheckIPHeader "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/IPRateMonitor.n click-1.6.0-27/inst/share/man/mann/IPRateMonitor.n ---- click-1.6.0/inst/share/man/mann/IPRateMonitor.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/IPRateMonitor.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,88 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/ipratemon.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "IPRATEMONITOR" n "11/Feb/2009" "Click" -+.SH "NAME" -+IPRateMonitor \- Click element; -+measures coming and going IP traffic rates -+.SH "SYNOPSIS" -+\fBIPRateMonitor\fR(TYPE, RATIO, THRESH [, MEMORY, ANNO]) -+ -+\fBPorts\fR: 1-2 inputs, 1-2 outputs -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBDrivers\fR: userlevel -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Monitors network traffic rates. Can monitor either packet or byte rate (per -+second) to and from an address. When forward or reverse rate for a -+particular address exceeds THRESH, rates will then be kept for host or -+subnet addresses within that address. May update each packet's -+dst_rate_anno and src_rate_anno with the rates for dst or src IP address. -+.PP -+Packets coming in one input 0 are inspected on src address. Packets coming -+in on input 1 are insepected on dst address. This enables \fBIPRateMonitor\fR to -+annotate packets with both the forward rate and reverse rate. -+.PP -+TYPE: PACKETS or BYTES. Count number of packets or bytes. -+.PP -+RATIO: chance that EWMA gets updated before packet is annotated with EWMA -+value. -+.PP -+THRESH: \fBIPRateMonitor\fR further splits a subnet if rate is over THRESH number -+packets or bytes per second. Always specify value as if RATIO were 1. -+.PP -+MEMORY: How much memory can \fBIPRateMonitor\fR use in kilobytes? Minimum of 100 -+is enforced. 0 is unlimited memory. -+.PP -+ANNO: if on (by default, it is), annotate packets with rates. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBlook\fR ((read))" 5 -+Returns the rate of counted to and from a cluster of IP addresses. The first -+printed line is the number of 'jiffies' that have past since the last reset. -+There are 100 jiffies in one second. -+.IP "" 5 -+.IP "\fBthresh\fR ((read))" 5 -+Returns THRESH. -+.IP "" 5 -+.IP "\fBreset\fR ((write))" 5 -+When written, resets all rates. -+.IP "" 5 -+.IP "\fBanno_level\fR ((write))" 5 -+Expects "IPAddress level when". When written, makes \fBIPRateMonitor\fR stop -+expanding at "level" (0-3) for the IPAddress, until "when" (seconds). For -+example, if "18.26.4.0 2 100" is specified, \fBIPRateMonitor\fR will stop -+expanding when 18.26.4 is reached for the next 100 seconds. After 100 -+seconds, any level below 18.26.4 may be reached again. -+.IP "" 5 -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& IPRateMonitor(PACKETS, 0.5, 256, 600); -+.fi -+.PP -+Monitors packet rates. The memory usage is limited to 600K. When rate for a -+network address (e.g. 18.26.*.*) exceeds 256 packets per second, start -+monitor subnet or host addresses (e.g. 18.26.4.*). -+.PP -+ -+ -+.SH "SEE ALSO" -+.M IPFlexMonitor n , -+.M CompareBlock "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/IPReassembler.n click-1.6.0-27/inst/share/man/mann/IPReassembler.n ---- click-1.6.0/inst/share/man/mann/IPReassembler.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/IPReassembler.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,55 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/ipreassembler.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "IPREASSEMBLER" n "11/Feb/2009" "Click" -+.SH "NAME" -+IPReassembler \- Click element; -+Reassembles fragmented IP packets -+.SH "SYNOPSIS" -+\fBIPReassembler\fR([\fIKEYWORDS\fR]) -+ -+\fBPorts\fR: 1 input, 1-2 outputs -+.br -+\fBProcessing\fR: agnostic, but output 1 is push -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Expects IP packets as input to port 0. If input packets are fragments, -+\fBIPReassembler\fR holds them until it has enough fragments to recreate a complete -+packet. When a complete packet is constructed, it is emitted onto output 0. If -+a set of fragments making a single packet is incomplete and dormant for 30 -+seconds, the fragments are generally dropped. If \fBIPReassembler\fR has two -+outputs, however, a single packet containing all the received fragments at -+their proper offsets is pushed onto output 1. -+.PP -+\fBIPReassembler\fR's memory usage is bounded. When memory consumption rises above -+HIMEM bytes, \fBIPReassembler\fR throws away old fragments until memory consumption -+drops below 3/4*HIMEM bytes. Default HIMEM is 256K. -+.PP -+Output packets have no MAC headers, and input MAC headers are ignored. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "HIMEM" 8 -+The upper bound for memory consumption, in bytes. Default is 256K. -+.IP "" 8 -+.PP -+ -+.SH "NOTES" -+You may want to attach an \f(CWICMPError(ADDR, timeexceeded, reassembly)\fR to the -+second output. -+.PP -+\fBIPReassembler\fR destroys its input packets' "next packet" annotations. -+.PP -+ -+.SH "SEE ALSO" -+.M IPFragmenter "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/IPRewriter.n click-1.6.0-27/inst/share/man/mann/IPRewriter.n ---- click-1.6.0/inst/share/man/mann/IPRewriter.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/IPRewriter.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,183 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/tcpudp/iprewriter.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "IPREWRITER" n "11/Feb/2009" "Click" -+.SH "NAME" -+IPRewriter \- Click element; -+rewrites TCP/UDP packets' addresses and ports -+.SH "SYNOPSIS" -+\fBIPRewriter\fR(INPUTSPEC1, ..., INPUTSPECn [, \fIkeywords\fR]) -+ -+\fBPorts\fR: 1 or more inputs, 1-256 outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: tcpudp (core) -+.br -+.SH "DESCRIPTION" -+Rewrites the source address, source port, destination address, and/or -+destination port on TCP and UDP packets, along with their checksums. -+\fBIPRewriter\fR implements the functionality of a network address/port translator -+(NAPT). See also -+.M IPAddrRewriter "n" -+and -+.M IPAddrPairRewriter "n" , -+which -+implement Basic NAT, and -+.M TCPRewriter "n" , -+which implements NAPT plus sequence -+number changes for TCP packets. -+.PP -+\fBIPRewriter\fR maintains a \fImapping table\fR that records how packets are -+rewritten. The mapping table is indexed by \fIflow identifier\fR, the quintuple -+of source address, source port, destination address, destination port, and IP -+protocol (TCP or UDP). Each mapping contains a new flow identifier and an -+output port. Input packets with the indexed flow identifier are rewritten to -+use the new flow identifier, then emitted on the output port. A mapping is -+written as follows: -+.PP -+.nf -+\& (SA, SP, DA, DP, PROTO) => (SA', SP', DA', DP') [OUTPUT] -+.fi -+.PP -+When \fBIPRewriter\fR receives a packet, it first looks up that packet in the -+mapping table by flow identifier. If the table contains a mapping for the -+input packet, then the packet is rewritten according to the mapping and -+emitted on the specified output port. If there was no mapping, the packet is -+handled by the INPUTSPEC corresponding to the input port on which the packet -+arrived. (There are as many input ports as INPUTSPECs.) Most INPUTSPECs -+install new mappings, so that future packets from the same TCP or UDP flow are -+handled by the mapping table rather than some INPUTSPEC. The six forms of -+INPUTSPEC handle input packets as follows: -+.PP -+ -+ -+ -+.IP "\&'drop' or 'discard'" 5 -+Discards input packets. -+.IP "" 5 -+.IP "\&'pass OUTPUT'" 5 -+Sends input packets to output port OUTPUT. No mappings are installed. -+.IP "" 5 -+.IP "\&'keep FOUTPUT ROUTPUT'" 5 -+Installs mappings that preserve the input packet's flow ID. Specifically, -+given an input packet with flow ID (SA, SP, DA, DP, PROTO), two mappings are -+installed: -+.IP "" 5 -+.nf -+\& (SA, SP, DA, DP, PROTO) => (SA, SP, DA, DP) [FOUTPUT] -+\& (DA, DP, SA, SP, PROTO) => (DA, DP, SA, SP) [ROUTPUT] -+.fi -+.IP "" 5 -+Thus, the input packet is emitted on output port FOUTPUT unchanged, and -+packets from the reply flow are emitted on output port ROUTPUT unchanged. -+.IP "" 5 -+ -+.IP "\&'pattern SADDR SPORT DADDR DPORT FOUTPUT ROUTPUT'" 5 -+Creates a mapping according to the given pattern, 'SADDR SPORT DADDR DPORT'. -+Any pattern field may be a dash '-', in which case the packet's corresponding -+field is left unchanged. For instance, the pattern '1.0.0.1 20 - -' will -+rewrite input packets' source address and port, but leave its destination -+address and port unchanged. SPORT may be a port range 'L-H'; \fBIPRewriter\fR will -+choose a source port in that range so that the resulting mappings don't -+conflict with any existing mappings. If no source port is available, the -+packet is dropped. Normally source ports are chosen randomly within the -+range. To allocate source ports sequentially (which can make testing easier), -+append a pound sign to the range, as in '1024-65535#'. -+.IP "" 5 -+Say a packet with flow ID (SA, SP, DA, DP, PROTO) is received, and the -+corresponding new flow ID is (SA', SP', DA', DP'). Then two mappings are -+installed: -+.IP "" 5 -+.nf -+\& (SA, SP, DA, DP, PROTO) => (SA', SP', DA', DP') [FOUTPUT] -+\& (DA', DP', SA', SP', PROTO) => (DA, DP, SA, SP) [ROUTPUT] -+.fi -+.IP "" 5 -+Thus, the input packet is rewritten and sent to FOUTPUT, and packets from the -+reply flow are rewritten to look like part of the original flow and sent to -+ROUTPUT. -+.IP "" 5 -+ -+.IP "\&'pattern PATNAME FOUTPUT ROUTPUT'" 5 -+Like 'pattern' above, but refers to named patterns defined by an -+.M IPRewriterPatterns "n" -+element. -+.IP "" 5 -+.IP "\&'ELEMENTNAME'" 5 -+Creates mappings according to instructions from the element ELEMENTNAME. This -+element must implement the IPMapper interface. One example mapper is -+.M RoundRobinIPMapper "n" . -+.IP "" 5 -+.PP -+\fBIPRewriter\fR has no mappings when first initialized. -+.PP -+Input packets must have their IP header annotations set. Non-TCP and UDP -+packets, and second and subsequent fragments, are dropped unless they arrive -+on a 'pass' input port. \fBIPRewriter\fR changes IP packet data and, optionally, -+destination IP address annotations; see the DST_ANNO keyword argument below. -+.PP -+Keyword arguments determine how often stale mappings should be removed. -+.PP -+ -+.IP "TCP_TIMEOUT \fItime\fR" 5 -+Time out TCP connections every \fItime\fR seconds. Default is 24 hours. -+.IP "" 5 -+.IP "TCP_DONE_TIMEOUT \fItime\fR" 5 -+Time out completed TCP connections every \fItime\fR seconds. Default is 30 -+seconds. FIN and RST flags mark TCP connections as complete. -+.IP "" 5 -+.IP "UDP_TIMEOUT \fItime\fR" 5 -+Time out UDP connections every \fItime\fR seconds. Default is 1 minute. -+.IP "" 5 -+.IP "REAP_TCP \fItime\fR" 5 -+Reap timed-out TCP connections every \fItime\fR seconds. If no packets -+corresponding to a given mapping have been seen for TCP_TIMEOUT, remove the -+mapping as stale. Default is 1 hour. -+.IP "" 5 -+.IP "REAP_TCP_DONE \fItime\fR" 5 -+Reap timed-out completed TCP connections every \fItime\fR seconds. Default is 10 -+seconds. -+.IP "" 5 -+.IP "REAP_UDP \fItime\fR" 5 -+Reap timed-out UDP connections every \fItime\fR seconds. Default is 10 seconds. -+.IP "" 5 -+.IP "DST_ANNO" 5 -+Boolean. If true, then set the destination IP address annotation on passing -+packets to the rewritten destination address. Default is true. -+.IP "" 5 -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBtcp_mappings\fR (read-only)" 5 -+Returns a human-readable description of the \fBIPRewriter\fR's current set of -+TCP mappings. -+.IP "" 5 -+.IP "\fBudp_mappings\fR (read-only)" 5 -+Returns a human-readable description of the \fBIPRewriter\fR's current set of -+UDP mappings. -+.IP "" 5 -+.IP "\fBtcp_done_mappings\fR (read-only)" 5 -+Returns a human-readable description of the \fBIPRewriter\fR's current set of -+mappings for completed TCP sessions. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M TCPRewriter n , -+.M IPAddrRewriter n , -+.M IPAddrPairRewriter n , -+.M IPRewriterPatterns n , -+.M RoundRobinIPMapper n , -+.M FTPPortMapper n , -+.M ICMPRewriter n , -+.M ICMPPingRewriter "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/IPRewriterPatterns.n click-1.6.0-27/inst/share/man/mann/IPRewriterPatterns.n ---- click-1.6.0/inst/share/man/mann/IPRewriterPatterns.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/IPRewriterPatterns.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,33 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/iprwpatterns.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "IPREWRITERPATTERNS" n "11/Feb/2009" "Click" -+.SH "NAME" -+IPRewriterPatterns \- Click element; -+specifies shared -+.M IPRewriter n -+patterns -+.SH "SYNOPSIS" -+\fBIPRewriterPatterns\fR(NAME PATTERN, ...) -+ -+\fBPorts\fR: none -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+This element stores information about shared patterns that -+.M IPRewriter "n" -+and -+related elements can use. Each configuration argument is a name and a -+pattern, 'NAME SADDR SPORT DADDR DPORT'. The NAMEs for every argument in -+every \fBIPRewriterPatterns\fR element in the configuration must be distinct. -+.PP -+ -+.SH "SEE ALSO" -+.M IPRewriter "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/IPRouteTable.n click-1.6.0-27/inst/share/man/mann/IPRouteTable.n ---- click-1.6.0/inst/share/man/mann/IPRouteTable.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/IPRouteTable.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,177 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/iproutetable.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "IPROUTETABLE" n "11/Feb/2009" "Click" -+.SH "NAME" -+IPRouteTable \- Click element; -+IP routing table superclass -+.SH "SYNOPSIS" -+\fBIPRouteTable\fR -+ -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+\fBIPRouteTable\fR defines an interface useful for implementing IPv4 route lookup -+elements. It parses configuration strings -- see -+.M LinearIPLookup "n" -+for an example -+-- and calls virtual functions to add the resulting routes. A default \f(CWpush\fR -+function uses those virtual functions to look up routes and output packets -+accordingly. There are also some functions useful for implementing handlers. -+.PP -+ -+.SH "PERFORMANCE" -+Click provides several elements that implement all or part of the \fBIPRouteTable\fR -+interface. Marko Zec has compared their performance, in terms of lookup speed -+and memory size, for full BGP feeds; here are the results. -+.PP -+Methodology: 2.8GHz Pentium P4 CPU, 521K L2 cache, FreeBSD 4.10, userspace -+Click. -+.M RangeIPLookup "n" -+has two lookup tables, the larger of which is used only -+at update time. The "warm cache" numbers perform the same lookup several -+times in a loop to populate the cache; only the last lookup's performance is -+reported. -+.PP -+.nf -+\& ICSI BGP dump, 150700 routes, 2 next-hops -+\& -+\& Element | cycles | lookups | setup | lookup -+\& | /lookup | /sec | time | tbl. size -+\& -----------------+---------+---------+-------+---------------- -+\& RadixIPLookup | 1025 | 2.73M | 0.59s | 5.8 MB -+\& DirectIPLookup | 432 | 6.48M | 0.74s | 33 MB -+\& RangeIPLookup | 279 | 10.0 M | 0.83s | 0.21MB (+33MB) -+\& " (warm cache) | 44 | 63.6 M | " | " " -+\& -+\& routeviews.org dump, 167000 routes, 52 nexthops -+\& -+\& Element | cycles | lookups | setup | lookup -+\& | /lookup | /sec | time | tbl. size -+\& -----------------+---------+---------+-------+---------------- -+\& RadixIPLookup | 1095 | 2.55M | 0.67s | 6.6 MB -+\& DirectIPLookup | 434 | 6.45M | 0.77s | 33 MB -+\& RangeIPLookup | 508 | 5.51M | 0.88s | 0.51MB (+33MB) -+\& " (warm cache) | 61 | 45.9 M | " | " " -+.fi -+.PP -+The -+.M RadixIPLookup "n" , -+.M DirectIPLookup "n" , -+and -+.M RangeIPLookup "n" -+elements are well suited -+for implementing large tables. We also provide the -+.M LinearIPLookup "n" , -+.M StaticIPLookup "n" , -+and -+.M SortedIPLookup "n" -+elements; they are simple, but their O(N) -+lookup speed is orders of magnitude slower. -+.M RadixIPLookup "n" -+or -+.M DirectIPLookup "n" -+should be preferred for almost all purposes. -+.nf -+\& -+\& 1500-entry fraction of the ICSI BGP dump -+\& -+\& Method | cycles | lookups | setup | lookup -+\& | /lookup | /sec | time | tbl. size -+\& ---------------+---------+---------+-------+---------- -+\& LinearIPLookup | 12000 | 233K | 10s | 29 KB -+\& StaticIPLookup | 12000 | 233K | 10s | 29 KB -+\& SortedIPLookup | 12500 | 224K | 38s | 29 KB -+.fi -+.PP -+A Click script containing the 167000-route dump is available at -+http://www.read.cs.ucla.edu/click/routetabletest-167k.click.gz -+.PP -+ -+ -+.SH "INTERFACE" -+These four \fBIPRouteTable\fR virtual functions should generally be overridden by -+particular routing table elements. -+.PP -+ -+ -+.IP "\f(CWint \fBadd_route\fR(const IPRoute& r, bool set, IPRoute* old_route, ErrorHandler *errh)\fR" 4 -+Add a route sending packets with destination addresses matching -+\f(CWr.addr/r.mask\fR to gateway \f(CWr.gw\fR, via output port \f(CWr.port\fR. If a route -+for this exact prefix already exists, then the behavior depends on \f(CWset\fR. If -+\f(CWset\fR is true, then any existing route is silently overwritten (after -+possibly being stored in \f(CW*old_route\fR); if \f(CWset\fR is false, the function -+should return \f(CW-EEXIST\fR. Report errors to \f(CWerrh\fR. Should return 0 on -+success and negative on failure. The default implementation reports an error -+"cannot add routes to this routing table". -+.IP "" 4 -+.IP "\f(CWint \fBremove_route\fR(const IPRoute& r, IPRoute* old_route, ErrorHandler *errh)\fR" 4 -+Removes the route sending packets with destination addresses matching -+\f(CWr.addr/r.mask\fR to gateway \f(CWr.gw\fR, via the element's output port \f(CWr.port\fR. -+All four fields must match, unless \f(CWr.port\fR is less than 0, in which case -+only \f(CWr.addr/r.mask\fR must match. If no route for that prefix exists, the -+function should return \f(CW-ENOENT\fR; otherwise, the old route should be stored -+in \f(CW*old_route\fR (assuming it's not null). Any errors are reported to -+\f(CWerrh\fR. Should return 0 on success and negative on failure. The default -+implementation reports an error "cannot delete routes from this routing -+table". -+.IP "" 4 -+.IP "\f(CWint \fBlookup_route\fR(IPAddress dst, IPAddress &gw_return) const\fR" 4 -+Looks up the route associated with address \f(CWdst\fR. Should set \f(CWgw_return\fR to -+the resulting gateway and return the relevant output port (or negative if -+there is no route). The default implementation returns -1. -+.IP "" 4 -+.IP "\f(CWString \fBdump_routes\fR()\fR" 4 -+Returns a textual description of the current routing table. The default -+implementation returns an empty string. -+.IP "" 4 -+.PP -+The following functions, overridden by \fBIPRouteTable\fR, are available for use by -+subclasses. -+.PP -+ -+.IP "\f(CWint \fBconfigure\fR(Vector &conf, ErrorHandler *)\fR" 4 -+The default implementation of \fBconfigure\fR parses \f(CWconf\fR as a list of routes, -+where each route is the space-separated list `\f(CWaddress/mask [gateway] -+output\fR'. The routes are successively added to the element with \fBadd_route\fR. -+.IP "" 4 -+.IP "\f(CWvoid \fBpush\fR(int port, Packet *p)\fR" 4 -+The default implementation of \fBpush\fR uses \fBlookup_route\fR to perform IP -+routing lookup. Normally, subclasses implement their own \fBpush\fR methods, -+avoiding virtual function call overhead. -+.IP "" 4 -+.IP "\f(CWstatic int \fBadd_route_handler\fR(const String &, Element *, void *, ErrorHandler *)\fR" 4 -+This write handler callback parses its input as an add-route request -+and calls \fBadd_route\fR with the results. Normally hooked up to the `\f(CWadd\fR' -+handler. -+.IP "" 4 -+.IP "\f(CWstatic int \fBremove_route_handler\fR(const String &, Element *, void *, ErrorHandler *)\fR" 4 -+This write handler callback parses its input as a remove-route request and -+calls \fBremove_route\fR with the results. Normally hooked up to the `\f(CWremove\fR' -+handler. -+.IP "" 4 -+.IP "\f(CWstatic int \fBctrl_handler\fR(const String &, Element *, void *, ErrorHandler *)\fR" 4 -+This write handler callback function parses its input as a route control -+request and calls \fBadd_route\fR or \fBremove_route\fR as directed. Normally hooked -+up to the `\f(CWctrl\fR' handler. -+.IP "" 4 -+.IP "\f(CWstatic String \fBtable_handler\fR(Element *, void *)\fR" 4 -+This read handler callback function returns the element's routing table via -+the \fBdump_routes\fR function. Normally hooked up to the `\f(CWtable\fR' handler. -+.IP "" 4 -+.PP -+ -+.SH "SEE ALSO" -+.M RadixIPLookup n , -+.M DirectIPLookup n , -+.M RangeIPLookup n , -+.M StaticIPLookup n , -+.M LinearIPLookup n , -+.M SortedIPLookup n , -+.M LinuxIPLookup "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Idle.n click-1.6.0-27/inst/share/man/mann/Idle.n ---- click-1.6.0/inst/share/man/mann/Idle.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Idle.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,27 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/idle.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "IDLE" n "11/Feb/2009" "Click" -+.SH "NAME" -+Idle \- Click element; -+discards packets -+.SH "SYNOPSIS" -+Idle -+ -+\fBPorts\fR: any number of inputs, any number of outputs -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Has zero or more agnostic outputs and zero or more agnostic inputs. It -+never pushes a packet to any output or pulls a packet from any input. Any -+packet it does receive is discarded. Used to avoid "input not connected" -+error messages. -+ -diff -Nurb click-1.6.0/inst/share/man/mann/InfiniteSource.n click-1.6.0-27/inst/share/man/mann/InfiniteSource.n ---- click-1.6.0/inst/share/man/mann/InfiniteSource.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/InfiniteSource.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,106 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/infinitesource.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "INFINITESOURCE" n "11/Feb/2009" "Click" -+.SH "NAME" -+InfiniteSource \- Click element; -+generates packets whenever scheduled -+.SH "SYNOPSIS" -+\fBInfiniteSource\fR([DATA, LIMIT, BURST, ACTIVE, \fIKEYWORDS\fR]) -+ -+\fBPorts\fR: no inputs, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Creates packets consisting of DATA. Pushes BURST such packets out its single -+output every time it is scheduled (which will be often). Stops sending after -+LIMIT packets are generated; but if LIMIT is negative, sends packets forever. -+Will send packets only if ACTIVE is true. (ACTIVE is true by default.) Default -+DATA is at least 64 bytes long. Default LIMIT is -1 (send packets forever). -+Default BURST is 1. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "DATA" 8 -+String. Same as the DATA argument. -+.IP "" 8 -+.IP "DATASIZE" 8 -+Integer. If set, ensures the outgoing packet contains at least this many bytes. -+.IP "" 8 -+.IP "LIMIT" 8 -+Integer. Same as the LIMIT argument. -+.IP "" 8 -+.IP "BURST" 8 -+Integer. Same as the BURST argument. -+.IP "" 8 -+.IP "ACTIVE" 8 -+Boolean. Same as the ACTIVE argument. -+.IP "" 8 -+.IP "STOP" 8 -+Boolean. If true, then stop the driver once LIMIT packets are sent. Default is -+false. -+.IP "" 8 -+.PP -+To generate a particular traffic pattern, use this element and -+.M RatedSource "n" -+in conjunction with -+.M PokeHandlers "n" . -+.PP -+.SH "EXAMPLES" -+ -+.nf -+\& InfiniteSource(\e<0800>) -> Queue -> ... -+.fi -+.PP -+ -+ -+ -+.SH "NOTES" -+Useful for profiling and experiments. Packets' timestamp annotations are set -+to the current time. -+.PP -+\fBInfiniteSource\fR listens for downstream full notification. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBcount\fR (read-only)" 5 -+Returns the total number of packets that have been generated. -+.IP "" 5 -+.IP "\fBreset\fR (write-only)" 5 -+Resets the number of generated packets to 0. The \fBInfiniteSource\fR will then -+generate another LIMIT packets (if it is active). -+.IP "" 5 -+.IP "\fBdata\fR (read/write)" 5 -+Returns or sets the DATA parameter. -+.IP "" 5 -+.IP "\fBdatasize\fR (read/write)" 5 -+Returns or sets the DATASIZE parameter. -+.IP "" 5 -+.IP "\fBlimit\fR (read/write)" 5 -+Returns or sets the LIMIT parameter. -+.IP "" 5 -+.IP "\fBburstsize\fR (read/write)" 5 -+Returns or sets the BURSTSIZE parameter. -+.IP "" 5 -+.IP "\fBactive\fR (read/write)" 5 -+Makes the element active or inactive. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M RatedSource n , -+.M PokeHandlers "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/KernelFilter.n click-1.6.0-27/inst/share/man/mann/KernelFilter.n ---- click-1.6.0/inst/share/man/mann/KernelFilter.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/KernelFilter.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,53 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/userlevel/kernelfilter.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "KERNELFILTER" n "11/Feb/2009" "Click" -+.SH "NAME" -+KernelFilter \- Click element; -+block kernel from handling packets -+.SH "SYNOPSIS" -+\fBKernelFilter\fR(FILTERSPEC, ...) -+ -+\fBPorts\fR: none -+.br -+\fBDrivers\fR: userlevel -+.br -+\fBPackage\fR: userlevel (core) -+.br -+.SH "DESCRIPTION" -+The \fBKernelFilter\fR element installs filter rules in the kernel to stop the -+kernel from handling certain types of packets. Use this in combination with -+.M FromDevice.u "n" -+to handle packets in user-level Click configurations. -+.PP -+\fBKernelFilter\fR uses iptables(1) to install filters; if your system does not -+support iptables(1), \fBKernelFilter\fR will fail. -+.PP -+\fBKernelFilter\fR uninstalls its firewall rules when Click shuts down. If Click -+shuts down uncleanly, for instance because of a segmentation fault or 'kill -+-9', then the rules will remain in place, and you'll have to remove them -+yourself. -+.PP -+Currently only one form of FILTERSPEC is understood. -+.PP -+ -+ -+.IP "\&'\f(CWdrop dev DEVNAME\fR'" 8 -+The kernel is blocked from handling any packets arriving on device DEVNAME. -+However, these packets will still be visible to tcpdump(1), and to Click -+elements like -+.M FromDevice.u "n" . -+.IP "" 8 -+.PP -+ -+.SH "SEE ALSO" -+.M FromDevice.u n , -+.M ToDevice.u n , -+.M KernelTap n , -+ifconfig(8) -+ -diff -Nurb click-1.6.0/inst/share/man/mann/KernelHandlerProxy.n click-1.6.0-27/inst/share/man/mann/KernelHandlerProxy.n ---- click-1.6.0/inst/share/man/mann/KernelHandlerProxy.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/KernelHandlerProxy.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,48 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/userlevel/khandlerproxy.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "KERNELHANDLERPROXY" n "11/Feb/2009" "Click" -+.SH "NAME" -+KernelHandlerProxy \- Click element; -+proxies kernel module handlers at user level -+.SH "SYNOPSIS" -+\fBKernelHandlerProxy\fR([\fIKEYWORDS\fR]) -+ -+\fBDrivers\fR: userlevel -+.br -+\fBPackage\fR: userlevel (core) -+.br -+.SH "DESCRIPTION" -+Provides one proxy handler for each handler in a Linux kernel module Click -+configuration. The proxy handler for an element \f(CWe\fR's handler \f(CWh\fR is named -+`\f(CWe.h\fR'. Reading \fBKernelHandlerProxy\fR's \f(CWe.h\fR handler will return the result -+of reading kernel element \f(CWe\fR's \f(CWh\fR handler. Similarly, writing a string to -+\fBKernelHandlerProxy\fR's \f(CWe.h\fR handler will cause the proxy to write that string -+to kernel element \f(CWe\fR's \f(CWh\fR handler. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "VERBOSE" 8 -+Boolean. If true, print chatter messages when read handlers fail. (Errors with -+write handlers are reported to the supplied ErrorHandler, but read handlers -+don't take an ErrorHandler argument.) Default is false. -+.IP "" 8 -+.PP -+ -+.SH "NOTES" -+\fBKernelHandlerProxy\fR does not decide ahead of time whether a given handler is -+active. Thus, for example, \fBKernelHandlerProxy\fR can report that a handler exists -+even when no corresponding element exists in the kernel configuration. Any -+error will be reported when the handler is actually called. -+.PP -+ -+.SH "SEE ALSO" -+.M SocketHandlerProxy "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/KernelTap.n click-1.6.0-27/inst/share/man/mann/KernelTap.n ---- click-1.6.0/inst/share/man/mann/KernelTap.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/KernelTap.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,88 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/userlevel/kerneltap.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "KERNELTAP" n "11/Feb/2009" "Click" -+.SH "NAME" -+KernelTap \- Click element; -+interface to /dev/tap or ethertap (user-level) -+.SH "SYNOPSIS" -+\fBKernelTap\fR(ADDR/MASK [, GATEWAY, \fIkeywords\fR ETHER, MTU, HEADROOM, IGNORE_QUEUE_OVERFLOWS]) -+ -+\fBPorts\fR: at most 1 input, 1-2 outputs -+.br -+\fBDrivers\fR: userlevel -+.br -+\fBPackage\fR: userlevel (core) -+.br -+.SH "DESCRIPTION" -+Reads Ethernet packets from and writes Ethernet packets to a /dev/tun* or -+/dev/tap* device. This allows a user-level Click to hand packets to the -+virtual Ethernet device. \fBKernelTap\fR will also transfer packets from the -+virtual Ethernet device. -+.PP -+\fBKernelTap\fR allocates a /dev/tun* or tap* device (this might fail) and runs -+.M ifconfig 8 -+to set the interface's local (i.e., kernel) address to ADDR and -+the netmask to MASK. If a nonzero GATEWAY IP address (which must be on the -+same network as the tun) is specified, then \fBKernelTap\fR tries to set up a -+default route through that host. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "ETHER" 8 -+Ethernet address. Specifies the fake device's Ethernet address. Default is -+00:01:02:03:04:05. On Linux, you must supply an ETHER argument, and use that -+address as the destination Ethernet address for all packets sent to the tap -+element; otherwise, Linux will ignore your packets. On FreeBSD, there is no -+way to set the Ethernet address, and any ETHER argument is silently ignored, -+but it is safe to use any destination Ethernet address for packets sent to the -+tap. -+.IP "" 8 -+.IP "MTU" 8 -+Integer. The interface's maximum transmission unit. Default is 1500; some -+operating systems do not alllow it to be set. -+.IP "" 8 -+.IP "HEADROOM" 8 -+Integer. The number of bytes left empty before the packet data (to leave room -+for additional encapsulation headers). Default is 0. -+.IP "" 8 -+.IP "IGNORE_QUEUE_OVERFLOWS" 8 -+Boolean. If true, don't print more than one error message when there are -+queue overflow errors (ENOBUFS) when sending or receiving packets via the tun -+device. Default is false. -+.IP "" 8 -+.PP -+\fBKernelTap\fR accepts the same arguments as -+.M KernelTun "n" . -+.PP -+.SH "NOTES" -+Linux will send ARP queries to the fake device. You must respond to these -+queries in order to receive any IP packets, but you can obviously respond -+with any Ethernet address you'd like. Here is one common idiom: -+.nf -+\& -+\& tap0 :: KernelTap(192.0.0.1/8) -+\& -> fromhost_cl :: Classifier(12/0806, 12/0800); -+\& fromhost_cl[0] -> ARPResponder(0.0.0.0/0 1:1:1:1:1:1) -> tap0; -+\& fromhost_cl[1] -> ... // IP packets -+\& -+.fi -+.PP -+An error like "could not allocate a /dev/tap* device : No such file or -+directory" usually means that you have not enabled /dev/tap* in your -+kernel. -+.PP -+ -+ -+.SH "SEE ALSO" -+.M ToHost n , -+.M KernelTun n , -+ifconfig(8) -+ -diff -Nurb click-1.6.0/inst/share/man/mann/KernelTun.n click-1.6.0-27/inst/share/man/mann/KernelTun.n ---- click-1.6.0/inst/share/man/mann/KernelTun.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/KernelTun.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,106 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/userlevel/kerneltun.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "KERNELTUN" n "11/Feb/2009" "Click" -+.SH "NAME" -+KernelTun \- Click element; -+interface to /dev/tun or ethertap (user-level) -+.SH "SYNOPSIS" -+\fBKernelTun\fR(ADDR/MASK [, GATEWAY, \fIkeywords\fR HEADROOM, ETHER, MTU, IGNORE_QUEUE_OVERFLOWS]) -+ -+\fBPorts\fR: at most 1 input, 1-2 outputs -+.br -+\fBDrivers\fR: userlevel -+.br -+\fBPackage\fR: userlevel (core) -+.br -+.SH "DESCRIPTION" -+Reads IP packets from and writes IP packets to a /dev/net/tun, /dev/tun*, -+or /dev/tap* device. This allows a user-level Click to hand packets to the -+ordinary kernel IP processing code. \fBKernelTun\fR will also install a routing -+table entry so that the kernel can pass packets to the \fBKernelTun\fR device. -+.PP -+\fBKernelTun\fR produces and expects IP packets. If, for some reason, the kernel -+passes up a non-IP packet (or an invalid IP packet), \fBKernelTun\fR will emit -+that packet on its second output, or drop it if there is no second output. -+.PP -+\fBKernelTun\fR allocates a /dev/net/tun, /dev/tun*, or /dev/tap* device (this -+might fail) and runs -+.M ifconfig 8 -+to set the interface's local (i.e., -+kernel) address to ADDR and the netmask to MASK. If a nonzero GATEWAY IP -+address (which must be on the same network as the tun) is specified, then -+\fBKernelTun\fR tries to set up a default route through that host. -+.PP -+When cleaning up, \fBKernelTun\fR attempts to bring down the device via -+.M ifconfig 8 . -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "HEADROOM" 8 -+Integer. The number of bytes left empty before the packet data to leave -+room for additional encapsulation headers. Default is 28. -+.IP "" 8 -+.IP "MTU" 8 -+Integer. The interface's MTU. \fBKernelTun\fR will refuse to send packets larger -+than the MTU. Default is 1500; not all operating systems allow MTU to be set. -+.IP "" 8 -+.IP "ETHER" 8 -+Ethernet address. Specifies the tunnel device's Ethernet address. Default is -+00:01:02:03:04:05. On FreeBSD, any ETHER argument is silently ignored. -+.IP "" 8 -+.IP "IGNORE_QUEUE_OVERFLOWS" 8 -+Boolean. If true, don't print more than one error message when -+there are queue overflows error when sending/receiving packets -+to/from the tun device (e.g. there was an ENOBUFS error). Default -+is false. -+.IP "" 8 -+.IP "DEVNAME" 8 -+String. If specified, try to alloc a tun device with name DEVNAME. -+Otherwise, we'll just take the first virtual device we find. This option -+only works with the Linux Universal TUN/TAP driver. -+.IP "" 8 -+.PP -+ -+.SH "NOTES" -+Make sure that your kernel has tun support enabled before running -+\fBKernelTun\fR. Initialization errors like "no such device" or "no such file or -+directory" may indicate that your kernel isn't set up, or that some -+required kernel module hasn't been loaded (on Linux, the relevant module is -+"tun"). -+.PP -+Packets sent to ADDR will be processed by the host kernel stack; packets sent -+to any other address in ADDR/MASK will be sent to \fBKernelTun\fR. Say you run this -+configuration: -+.PP -+.nf -+\& tun :: KernelTun(1.0.0.1/8); -+\& tun -> IPClassifier(icmp type echo) -> ICMPPingResponder -+\& -> IPPrint -> tun; -+.fi -+.PP -+If you then "\f(CWping 1.0.0.1\fR", \fIyour own kernel\fR will respond. Click will -+never see the packets, so it won't print anything. But if you "\f(CWping -+1.0.0.2\fR", the pings are sent to Click. You should see printouts from Click, -+and \f(CWping\fR should print Click's responses. -+.PP -+This element differs from -+.M KernelTap "n" -+in that it produces and expects IP -+packets, not IP-in-Ethernet packets. -+.PP -+ -+ -+.SH "SEE ALSO" -+.M FromDevice.u n , -+.M ToDevice.u n , -+.M KernelTap n , -+ifconfig(8) -+ -diff -Nurb click-1.6.0/inst/share/man/mann/LinearIPLookup.n click-1.6.0-27/inst/share/man/mann/LinearIPLookup.n ---- click-1.6.0/inst/share/man/mann/LinearIPLookup.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/LinearIPLookup.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,100 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/lineariplookup.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "LINEARIPLOOKUP" n "11/Feb/2009" "Click" -+.SH "NAME" -+LinearIPLookup \- Click element; -+simple IP routing table -+.SH "SYNOPSIS" -+\fBLinearIPLookup\fR(ADDR1/MASK1 [GW1] OUT1, ADDR2/MASK2 [GW2] OUT2, ...) -+ -+\fBPorts\fR: 1 input, any number of outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+\fBNote:\fR Lookups and table updates with \fBLinearIPLookup\fR are extremely slow; the -+.M RadixIPLookup "n" -+and -+.M DirectIPLookup "n" -+elements should be preferred in almost all -+cases. See -+.M IPRouteTable "n" -+for a performance comparison. We provide -+\fBLinearIPLookup\fR nevertheless for its simplicity. -+.PP -+Expects a destination IP address annotation with each packet. Looks up that -+address in its routing table, using longest-prefix-match, sets the destination -+annotation to the corresponding GW (if specified), and emits the packet on the -+indicated OUTput port. -+.PP -+Each argument is a route, specifying a destination and mask, an optional -+gateway IP address, and an output port. -+.PP -+\fBLinearIPLookup\fR uses a linear search algorithm that may look at every route on -+each packet. It is therefore most suitable for small routing tables. -+.PP -+ -+.SH "EXAMPLES" -+This example delivers broadcasts and packets addressed to the local -+host (18.26.4.24) to itself, packets to net 18.26.4 to the -+local interface, and all others via gateway 18.26.4.1: -+.PP -+.nf -+\& ... -> GetIPAddress(16) -> rt; -+\& rt :: LinearIPLookup(18.26.4.24/32 0, -+\& 18.26.4.255/32 0, -+\& 18.26.4.0/32 0, -+\& 18.26.4/24 1, -+\& 0/0 18.26.4.1 1); -+\& rt[0] -> ToHost; -+\& rt[1] -> ... -> ToDevice(eth0); -+.fi -+.PP -+ -+ -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBtable\fR (read-only)" 5 -+Outputs a human-readable version of the current routing table. -+.IP "" 5 -+.IP "\fBlookup\fR (read-only)" 5 -+Reports the OUTput port and GW corresponding to an address. -+.IP "" 5 -+.IP "\fBadd\fR (write-only)" 5 -+Adds a route to the table. Format should be `\f(CWADDR/MASK [GW] OUT\fR'. -+Fails if a route for \f(CWADDR/MASK\fR already exists. -+.IP "" 5 -+.IP "\fBset\fR (write-only)" 5 -+Sets a route, whether or not a route for the same prefix already exists. -+.IP "" 5 -+.IP "\fBremove\fR (write-only)" 5 -+Removes a route from the table. Format should be `\f(CWADDR/MASK\fR'. -+.IP "" 5 -+.IP "\fBctrl\fR (write-only)" 5 -+Adds or removes a group of routes. Write `\f(CWadd\fR/\f(CWset ADDR/MASK [GW] OUT\fR' to -+add a route, and `\f(CWremove ADDR/MASK\fR' to remove a route. You can supply -+multiple commands, one per line; all commands are executed as one atomic -+operation. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M RadixIPLookup n , -+.M DirectIPLookup n , -+.M RangeIPLookup n , -+.M StaticIPLookup n , -+.M SortedIPLookup n , -+.M LinuxIPLookup n , -+.M IPRouteTable "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/LinkUnqueue.n click-1.6.0-27/inst/share/man/mann/LinkUnqueue.n ---- click-1.6.0/inst/share/man/mann/LinkUnqueue.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/LinkUnqueue.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,70 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/linkunqueue.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "LINKUNQUEUE" n "11/Feb/2009" "Click" -+.SH "NAME" -+LinkUnqueue \- Click element; -+link emulator -+.SH "SYNOPSIS" -+\fBLinkUnqueue\fR(LATENCY, BANDWIDTH) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: pull inputs, push outputs -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Pulls packets from the single input port, then delays them so as to emulate a -+serial link with latency LATENCY (microsecond precision) and bandwidth -+BANDWIDTH (such as "384kbps"). Thus, every packet is delayed at least -+by LATENCY, and additionally delayed by its packet size and BANDWIDTH, and -+by any packets ahead of it in the virtual link. Packets are pushed out the -+single output port when their time comes. -+.PP -+\fBLinkUnqueue\fR listens for upstream notification, such as that available from -+.M Queue "n" . -+.PP -+\fBLinkUnqueue\fR stores packets that are in transit over the virtual link. It -+doesn't store any other packets, however; it doesn't pull from its input -+unless there is room on the link. To emulate a link fed by a packet queue, use -+a " -+.M Queue "n" -+-> \fBLinkUnqueue\fR" combination. -+.PP -+\fBLinkUnqueue\fR uses its input packets' "extra length" annotations, destroys their -+"next packet" annotations, and updates their timestamp annotations. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBlatency\fR (read-only)" 5 -+The LATENCY argument. -+.IP "" 5 -+.IP "\fBbandwidth\fR (read-only)" 5 -+The BANDWIDTH argument. -+.IP "" 5 -+.IP "\fBsize\fR (read-only)" 5 -+The number of packets currently in, or partially in, the emulated link. -+.IP "" 5 -+.IP "\fBreset\fR (write-only)" 5 -+When written, drops all packets in, or partially in, the emulated link. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M DelayUnqueue n , -+.M Queue n , -+.M Unqueue n , -+.M RatedUnqueue n , -+.M BandwidthRatedUnqueue n , -+.M DelayShaper n , -+.M SetTimestamp "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/LinuxIPLookup.n click-1.6.0-27/inst/share/man/mann/LinuxIPLookup.n ---- click-1.6.0/inst/share/man/mann/LinuxIPLookup.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/LinuxIPLookup.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,62 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/lookupiproutelinux.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "LINUXIPLOOKUP" n "11/Feb/2009" "Click" -+.SH "NAME" -+LinuxIPLookup \- Click element; -+interface to Linux's routing table -+.SH "SYNOPSIS" -+\fBLinuxIPLookup\fR(if0, if1, ..., ifN) -+ -+\fBPorts\fR: 1 input, 1 or more outputs -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBDrivers\fR: userlevel -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Looks up each packet's destination annotation address in the -+Linux routing table. Replaces the annotation with the -+routing table entry's gateway field (if non-zero). -+Emits the packet on an output that depends on the Linux -+interface device mentioned in the routing table entry: -+if the device name is the Ith configuration argument, -+the element sends the packet on output I (zero origin). -+.PP -+If the packet can't be routed, the element emits it on -+the output with number equal to the number of configuration arguments. -+A packet can't be routed if there is no matching routing -+table entry, or if the device mentioned in the Linux -+routing table isn't mentioned in the configuration. -+.PP -+If run outside the kernel, the element reads the routing table -+just once (at startup) from /proc/net/route. -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& r : LinuxIPLookup(eth0, eth1) -+\& r[0] -> ... -> ToDevice(eth0) -+\& r[1] -> ... -> ToDevice(eth1) -+\& r[2] -> ICMPError(18.26.4.24, 3, 0) -> ... -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M RadixIPLookup n , -+.M DirectIPLookup n , -+.M RangeIPLookup n , -+.M StaticIPLookup n , -+.M LinearIPLookup n , -+.M SortedIPLookup "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/LookupIPRouteMP.n click-1.6.0-27/inst/share/man/mann/LookupIPRouteMP.n ---- click-1.6.0/inst/share/man/mann/LookupIPRouteMP.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/LookupIPRouteMP.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,34 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/lookupiproutemp.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "LOOKUPIPROUTEMP" n "11/Feb/2009" "Click" -+.SH "NAME" -+LookupIPRouteMP \- Click element; -+simple static IP routing table -+.SH "SYNOPSIS" -+\fBLookupIPRouteMP\fR(DST1/MASK1 [GW1] OUT1, DST2/MASK2 [GW2] OUT2, ...) -+ -+\fBPorts\fR: 1 input, any number of outputs -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBDrivers\fR: linuxmodule -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Interfaces are exactly the same as -+.M LookupIPRoute "n" . -+The only difference is -+when operating in SMP mode, each processor has a processor local cache, -+hence the element is MT SAFE. -+.PP -+ -+.SH "SEE ALSO" -+.M LookupIPRoute "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/MSQueue.n click-1.6.0-27/inst/share/man/mann/MSQueue.n ---- click-1.6.0/inst/share/man/mann/MSQueue.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/MSQueue.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,48 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/msqueue.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "MSQUEUE" n "11/Feb/2009" "Click" -+.SH "NAME" -+MSQueue \- Click element; -+stores packets in a FIFO queue -+.SH "SYNOPSIS" -+MSQueue -+.br -+\fBMSQueue\fR(CAPACITY) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: push inputs, pull outputs -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Stores incoming packets in a multiple producer single consumer -+first-in-first-out queue. Enqueue operations are synchronized, dequeue -+operations are not. Drops incoming packets if the queue already holds -+CAPACITY packets. The default for CAPACITY is 1000. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBlength\fR (read-only)" 5 -+Returns the current number of packets in the queue. -+.IP "" 5 -+.IP "\fBdropd\fR (read-only)" 5 -+Returns the number of packets dropped by the queue so far. -+.IP "" 5 -+.IP "\fBcapacity\fR (read/write)" 5 -+Returns or sets the queue's capacity. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M Queue "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/MarkIPCE.n click-1.6.0-27/inst/share/man/mann/MarkIPCE.n ---- click-1.6.0/inst/share/man/mann/MarkIPCE.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/MarkIPCE.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,27 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/markipce.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "MARKIPCE" n "11/Feb/2009" "Click" -+.SH "NAME" -+MarkIPCE \- Click element; -+sets IP packets' ECN field to Congestion Experienced -+.SH "SYNOPSIS" -+\fBMarkIPCE\fR() -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Expects IP packets as input. Sets each incoming packet's ECN field to -+Congestion Experienced (value 3), incrementally recalculates the IP checksum, -+and passes the packet to output 0. Non-IP packets, and IP packets whose ECN -+field is zero (not ECN-capable), are dropped. -+ -diff -Nurb click-1.6.0/inst/share/man/mann/MarkIPHeader.n click-1.6.0-27/inst/share/man/mann/MarkIPHeader.n ---- click-1.6.0/inst/share/man/mann/MarkIPHeader.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/MarkIPHeader.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,38 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/markipheader.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "MARKIPHEADER" n "11/Feb/2009" "Click" -+.SH "NAME" -+MarkIPHeader \- Click element; -+sets IP header annotation -+.SH "SYNOPSIS" -+\fBMarkIPHeader\fR([OFFSET]) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Marks packets as IP packets by setting the IP Header annotation. The IP -+header starts OFFSET bytes into the packet. Default OFFSET is 0. -+.PP -+Does not check length fields for sanity, shorten packets to the IP length, -+or set the destination IP address annotation. Use -+.M CheckIPHeader "n" -+or -+.M CheckIPHeader2 "n" -+for that. -+.PP -+ -+.SH "SEE ALSO" -+.M CheckIPHeader n , -+.M CheckIPHeader2 n , -+.M StripIPHeader "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Message.n click-1.6.0-27/inst/share/man/mann/Message.n ---- click-1.6.0/inst/share/man/mann/Message.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Message.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,42 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/messageelement.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "MESSAGE" n "11/Feb/2009" "Click" -+.SH "NAME" -+Message \- Click element; -+prints a message on configuration -+.SH "SYNOPSIS" -+\fBMessage\fR(MESSAGE [, TYPE]) -+ -+\fBPorts\fR: none -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+The \fBMessage\fR element prints a message, warning, or error when configured. It -+can be used to provide configuration-level documentation. The MESSAGE -+argument is the message (a string); TYPE should be MESSAGE, WARNING, or -+ERROR. The default is MESSAGE. -+.PP -+If TYPE is ERROR the router will fail to initialize. -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& Message("This configuration is deprecated; use test-tun.click instead.", WARNING) -+\& tun :: KernelTap(1.0.0.1/8); -+\& ... -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M Error "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Meter.n click-1.6.0-27/inst/share/man/mann/Meter.n ---- click-1.6.0/inst/share/man/mann/Meter.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Meter.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,65 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/meter.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "METER" n "11/Feb/2009" "Click" -+.SH "NAME" -+Meter \- Click element; -+classifies packet stream by rate (pkt/s) -+.SH "SYNOPSIS" -+\fBMeter\fR(RATE1, RATE2, ..., RATE\fIn\fR) -+ -+\fBPorts\fR: 1 input, 2 or more outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Classifies packets based on the rate of packet arrival. The rate is -+measured in packets per second using an exponential weighted moving -+average. (The related -+.M BandwidthMeter "n" -+element measures rates in bytes per -+second.) -+.PP -+The configuration string consists of one or more rate arguments. Earlier -+rates in the list must be less than later rates. A \fBMeter\fR with \fIn\fR rate -+arguments will have \fIn\fR+1 outputs. It sends packets out the output -+corresponding to the current rate. If the rate is less than RATE1 packets -+are sent to output 0; if it is >= RATE1 but < RATE2, packets are sent to -+output 1; and so on. If it is >= RATE\fIn\fR, packets are sent to output \fIn\fR. -+.PP -+ -+.SH "NOTES" -+The entire packet stream is sent to the output corresponding to the current -+rate. If you would like the packet stream to be split, with at most RATE1 -+packets per second being sent out the first output and the remainder being -+sent to the second output, check out -+.M RatedSplitter "n" . -+.PP -+ -+.SH "EXAMPLES" -+This configuration fragment drops the input stream when it is generating -+more than 10,000 packets per second. -+.PP -+.nf -+\& ... -> m :: Meter(10000) -> ...; -+\& m[1] -> Discard; -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M BandwidthMeter n , -+.M RatedSplitter n , -+.M Shaper n , -+.M BandwidthShaper n , -+.M RatedUnqueue n , -+.M BandwidthRatedUnqueue "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/MixedQueue.n click-1.6.0-27/inst/share/man/mann/MixedQueue.n ---- click-1.6.0/inst/share/man/mann/MixedQueue.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/MixedQueue.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,90 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/mixedqueue.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "MIXEDQUEUE" n "11/Feb/2009" "Click" -+.SH "NAME" -+MixedQueue \- Click element; -+stores packets in a FIFO/LIFO queue -+.SH "SYNOPSIS" -+MixedQueue -+.br -+\fBMixedQueue\fR(CAPACITY) -+ -+\fBPorts\fR: 2 inputs, 1 output -+.br -+\fBProcessing\fR: push inputs, pull outputs -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Stores incoming packets in a mixed first-in-first-out/last-in-first-out queue. -+In particular, \fBMixedQueue\fR's first input is FIFO, but its second input is LIFO. -+The queue is full when it holds CAPACITY packets. When full, \fBMixedQueue\fR drops -+incoming FIFO packets, but drops the oldest packet to make room for incoming -+LIFO packets. The default for CAPACITY is 1000. -+.PP -+\fBMixedQueue\fR notifies interested parties when it becomes empty and when a -+formerly-empty queue receives a packet. The empty notification takes place -+some time after the queue goes empty, to prevent thrashing for queues that -+hover around 1 or 2 packets long. -+.PP -+ -+.SH "EXAMPLES" -+This diagram shows the state of a \fBMixedQueue\fR after 5 pushes, of packets A -+through E. The queue's head is on the left. -+.PP -+.nf -+\& initial state empty -+\& push(0, A) [A] -+\& push(0, B) [A B] -+\& push(1, C) [C A B] -+\& push(0, D) [C A B D] -+\& push(1, E) [E C A B D] -+.fi -+.PP -+ -+ -+ -+.SH "SYNCHRONIZATION" -+Note for multithreaded Click: Unlike -+.M Queue "n" , -+whose input and output ports need -+not be synchronized, \fBMixedQueue\fR requires synchronization between its LIFO -+input and its output. You will need to prevent a thread from pushing to the -+LIFO input at the same time that a different thread pulls from the output. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBlength\fR (read-only)" 5 -+Returns the current number of packets in the queue. -+.IP "" 5 -+.IP "\fBhighwater_length\fR (read-only)" 5 -+Returns the maximum number of packets that have ever been in the queue at once. -+.IP "" 5 -+.IP "\fBcapacity\fR (read/write)" 5 -+Returns or sets the queue's capacity. -+.IP "" 5 -+.IP "\fBdrops\fR (read-only)" 5 -+Returns the number of packets dropped by the queue so far. -+.IP "" 5 -+.IP "\fBreset_counts\fR (write-only)" 5 -+When written, resets the \f(CWdrops\fR and \f(CWhighwater_length\fR counters. -+.IP "" 5 -+.IP "\fBreset\fR (write-only)" 5 -+When written, drops all packets in the queue. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M Queue n , -+.M SimpleQueue n , -+.M FrontDropQueue "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/NotifierQueue.n click-1.6.0-27/inst/share/man/mann/NotifierQueue.n ---- click-1.6.0/inst/share/man/mann/NotifierQueue.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/NotifierQueue.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,83 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/notifierqueue.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "NOTIFIERQUEUE" n "11/Feb/2009" "Click" -+.SH "NAME" -+NotifierQueue \- Click element; -+stores packets in a FIFO queue -+.SH "SYNOPSIS" -+NotifierQueue -+.br -+\fBNotifierQueue\fR(CAPACITY) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: push inputs, pull outputs -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Stores incoming packets in a first-in-first-out queue. -+Drops incoming packets if the queue already holds CAPACITY packets. -+The default for CAPACITY is 1000. -+.PP -+\fBNotifierQueue\fR notifies interested parties when it becomes empty and when a -+formerly-empty queue receives a packet. The empty notification takes place -+some time after the queue goes empty, to prevent thrashing for queues that -+hover around 1 or 2 packets long. In all other respects, \fBNotifierQueue\fR behaves -+like -+.M SimpleQueue "n" . -+.PP -+\fBMultithreaded Click note:\fR \fBNotifierQueue\fR is designed to be used in an -+environment with at most one concurrent pusher and at most one concurrent -+puller. Thus, at most one thread pushes to the \fBNotifierQueue\fR at a time and at -+most one thread pulls from the \fBNotifierQueue\fR at a time. Different threads can -+push to and pull from the \fBNotifierQueue\fR concurrently, however. See -+.M MSQueue "n" -+for -+a queue that can support multiple concurrent pushers. -+.PP -+ -+.SH "NOTES" -+The -+.M Queue "n" -+element acts like \fBNotifierQueue\fR, but additionally notifies -+interested parties when it changes state from nonfull to full or vice versa. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBlength\fR (read-only)" 5 -+Returns the current number of packets in the queue. -+.IP "" 5 -+.IP "\fBhighwater_length\fR (read-only)" 5 -+Returns the maximum number of packets that have ever been in the queue at once. -+.IP "" 5 -+.IP "\fBcapacity\fR (read/write)" 5 -+Returns or sets the queue's capacity. -+.IP "" 5 -+.IP "\fBdrops\fR (read-only)" 5 -+Returns the number of packets dropped by the queue so far. -+.IP "" 5 -+.IP "\fBreset_counts\fR (write-only)" 5 -+When written, resets the \f(CWdrops\fR and \f(CWhighwater_length\fR counters. -+.IP "" 5 -+.IP "\fBreset\fR (write-only)" 5 -+When written, drops all packets in the queue. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M Queue n , -+.M SimpleQueue n , -+.M MixedQueue n , -+.M FrontDropQueue n , -+.M MSQueue "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Null.n click-1.6.0-27/inst/share/man/mann/Null.n ---- click-1.6.0/inst/share/man/mann/Null.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Null.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,29 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/nullelement.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "NULL" n "11/Feb/2009" "Click" -+.SH "NAME" -+Null \- Click element; -+passes packets unchanged -+.SH "SYNOPSIS" -+\fBNull\fR -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Just passes packets along without doing anything else. -+.PP -+ -+.SH "SEE ALSO" -+.M PushNull n , -+.M PullNull "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Null1.n click-1.6.0-27/inst/share/man/mann/Null1.n ---- click-1.6.0/inst/share/man/mann/Null1.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Null1.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,35 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/nulls.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "NULL1" n "11/Feb/2009" "Click" -+.SH "NAME" -+Null1 \- Click element; -+copy of -+.M Null "n" -+.SH "SYNOPSIS" -+\fBNull1\fR() ... Null8() -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+The elements \fBNull1\fR through Null8 are reimplementations of -+.M Null "n" . -+However, each -+has independent code, so the i-cache cost of using all eight elements (\fBNull1\fR -+through Null8) is eight times the cost of eight -+.M Null "n" -+elements. -+.PP -+ -+.SH "SEE ALSO" -+.M Null "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Paint.n click-1.6.0-27/inst/share/man/mann/Paint.n ---- click-1.6.0/inst/share/man/mann/Paint.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Paint.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,42 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/paint.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "PAINT" n "11/Feb/2009" "Click" -+.SH "NAME" -+Paint \- Click element; -+sets packet paint annotations -+.SH "SYNOPSIS" -+\fBPaint\fR(COLOR) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Sets each packet's paint annotation to COLOR, an integer 0..255. Note that a -+packet may only be painted with one color. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBcolor\fR (read/write)" 5 -+get/set the color to paint -+.IP "" 5 -+.PP -+ -+.SH "NOTES" -+The paint annotation is stored in user annotation 0. -+.PP -+ -+.SH "SEE ALSO" -+.M PaintTee "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/PaintSwitch.n click-1.6.0-27/inst/share/man/mann/PaintSwitch.n ---- click-1.6.0/inst/share/man/mann/PaintSwitch.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/PaintSwitch.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,43 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/paintswitch.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "PAINTSWITCH" n "11/Feb/2009" "Click" -+.SH "NAME" -+PaintSwitch \- Click element; -+sends packet stream to output chosen per-packet -+.SH "SYNOPSIS" -+\fBPaintSwitch\fR -+ -+\fBPorts\fR: 1 input, any number of outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+\fBPaintSwitch\fR sends every incoming packet to one of its output ports -- -+specifically, output port number K, where K is the value of the -+incoming packet's -+.M Paint "n" -+annotation. If the paint annotation is set to -+255, the packet is duplicated and sent to all outputs. Since there -+are only 256 different paint annotations, including the special value -+of 255, \fBPaintSwitch\fR can have up to 255 outputs. If there is no output -+port K, the packet is dropped. -+.PP -+ -+.SH "SEE ALSO" -+.M StaticSwitch n , -+.M PullSwitch n , -+.M RoundRobinSwitch n , -+.M StrideSwitch n , -+.M HashSwitch n , -+.M RandomSwitch n , -+.M Paint n , -+.M PaintTee "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/PaintTee.n click-1.6.0-27/inst/share/man/mann/PaintTee.n ---- click-1.6.0/inst/share/man/mann/PaintTee.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/PaintTee.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,47 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/painttee.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "PAINTTEE" n "11/Feb/2009" "Click" -+.SH "NAME" -+PaintTee \- Click element; -+duplicates packets with given paint annotation -+.SH "SYNOPSIS" -+\fBPaintTee\fR(COLOR) -+ -+\fBPorts\fR: 1 input, 2 outputs -+.br -+\fBProcessing\fR: agnostic, but output 1 is push -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+\fBPaintTee\fR sends every packet through output 0. If the packet's -+color annotation is equal to COLOR (an integer), it also -+sends a copy through output 1. -+.PP -+ -+.SH "EXAMPLES" -+Intended to produce redirects in conjunction with -+.M Paint "n" -+and -+.M ICMPError "n" -+as follows: -+.PP -+.nf -+\& FromDevice(eth7) -> Paint(7) -> ... -+\& routingtable[7] -> pt :: PaintTee(7) -> ... -> ToDevice(eth7) -+\& pt[1] -> ICMPError(18.26.4.24, 5, 1) -> [0]routingtable; -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M Paint n , -+.M ICMPError "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/PerfCountAccum.n click-1.6.0-27/inst/share/man/mann/PerfCountAccum.n ---- click-1.6.0/inst/share/man/mann/PerfCountAccum.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/PerfCountAccum.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,59 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/linuxmodule/perfcountaccum.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "PERFCOUNTACCUM" n "11/Feb/2009" "Click" -+.SH "NAME" -+PerfCountAccum \- Click element; -+collects differences in Pentium Pro performance metrics -+.SH "SYNOPSIS" -+\fBPerfCountAccum\fR(TYPE) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBDrivers\fR: linuxmodule -+.br -+\fBPackage\fR: linuxmodule (core) -+.br -+.SH "DESCRIPTION" -+Expects incoming packets to have their performance metric annotation set -+according to the Pentium Pro performance metric TYPE. Calculates the -+current value of the performance metric TYPE, and keeps track of the total -+accumulated difference. -+.PP -+ -+.SH "NOTES" -+A packet has room for either exactly one cycle count or exactly one -+performance metric. -+.PP -+See -+.M SetPerfCount "n" -+for valid performance metric names. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBcount\fR (read-only)" 5 -+Returns the number of packets that have passed. -+.IP "" 5 -+.IP "\fBaccum\fR (read-only)" 5 -+Returns the accumulated changes in the metric TYPE for all passing packets. -+.IP "" 5 -+.IP "\fBreset_counts\fR (write-only)" 5 -+Resets \f(CWcount\fR and \f(CWaccum\fR counters to zero when written. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M SetPerfCount n , -+.M SetCycleCount n , -+.M CycleCountAccum "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/PerfCountInfo.n click-1.6.0-27/inst/share/man/mann/PerfCountInfo.n ---- click-1.6.0/inst/share/man/mann/PerfCountInfo.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/PerfCountInfo.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,47 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/linuxmodule/perfcountinfo.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "PERFCOUNTINFO" n "11/Feb/2009" "Click" -+.SH "NAME" -+PerfCountInfo \- Click element; -+turn on Pentium Pro performance metrics -+.SH "SYNOPSIS" -+\fBPerfCountInfo\fR([TYPE0, TYPE1]) -+ -+\fBDrivers\fR: linuxmodule -+.br -+\fBPackage\fR: linuxmodule (core) -+.br -+.SH "DESCRIPTION" -+The Pentium Pro CPU can maintain up to two performance counters. -+\fBPerfCountInfo\fR turns on those counters. TYPE0 is the type of performance -+counter 0, TYPE1 is the type of performance counter 1. Either type may be -+empty, in which case that counter will not be used. -+.PP -+The -+.M SetPerfCount "n" -+and -+.M PerfCountAccum "n" -+elements automatically turn on the -+relevant counters, so \fBPerfCountInfo\fR is not normally needed. It is useful if -+you are instrumenting individual elements. -+.PP -+ -+.SH "NOTES" -+Valid performance metric names are \f(CWBUS_TRAN_INVAL\fR, \f(CWBUS_TRAN_MEM\fR, -+\f(CWDCU_MISS_OUTSTANDING\fR, \f(CWIFU_FETCH\fR, \f(CWIFU_FETCH_MISS\fR, \f(CWIFU_MEM_STALL\fR, -+\f(CWINST_RETIRED\fR, \f(CWL2_IFETCH\fR, \f(CWL2_LD\fR, \f(CWL2_LINES_IN\fR, \f(CWL2_LINES_OUT\fR, -+\f(CWL2_LINES_OUTM\fR, and \f(CWL2_RQSTS\fR. -+.PP -+ -+.SH "SEE ALSO" -+.M SetPerfCount n , -+.M PerfCountAccum n , -+.M SetCycleCount n , -+.M CycleCountAccum "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/PokeHandlers.n click-1.6.0-27/inst/share/man/mann/PokeHandlers.n ---- click-1.6.0/inst/share/man/mann/PokeHandlers.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/PokeHandlers.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,82 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/pokehandlers.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "POKEHANDLERS" n "11/Feb/2009" "Click" -+.SH "NAME" -+PokeHandlers \- Click element; -+calls write handlers at specified times -+.SH "SYNOPSIS" -+\fBPokeHandlers\fR(DIRECTIVE, ...) -+ -+\fBPorts\fR: none -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+\fBThis element is deprecated. Use the Script element instead.\fR -+.PP -+Runs read and write handlers at specified times. Each configuration argument -+is a directive, taken from this list: -+.PP -+ -+ -+.IP "`read HANDLER'" 8 -+Call a read handler and report its result. At user level, the result is -+printed on standard error; in a Linux kernel, it is printed to -+/var/log/messages. HANDLER should be either a global read handler name, or -+`ELEMENT.HNAME', where ELEMENT is an element name and HNAME the name of one of -+its read handlers. -+.IP "" 8 -+.IP "`write HANDLER [VALUE]'" 8 -+Call a write handler with a given value. At user level, errors reported by -+write handlers are printed to standard error. In the Linux kernel module, they -+are printed to /var/log/messages (accessible through -+.M dmesg 1 ) -+and to -+/proc/click/errors. -+.IP "" 8 -+.IP "`stop'" 8 -+Stop the driver. -+.IP "" 8 -+.IP "`wait DELAY'" 8 -+Wait for DELAY seconds before continuing to the next directive. -+.IP "" 8 -+.IP "`pause'" 8 -+Wait until the `unpause' write handler is called, then continue to the next directive. -+.IP "" 8 -+.IP "`loop'" 8 -+Start over from the first directive. -+.IP "" 8 -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& PokeHandlers(write red.max_p 0.8, -+\& wait 1.5, // delay for 1.5 seconds -+\& write red.max_p 0.5); -+.fi -+.PP -+ -+ -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBunpause\fR (write-only)" 5 -+If paused, continue to next directive. Otherwise, there is no effect. -+.IP "" 5 -+.IP "\fBpaused\fR (read-only)" 5 -+Returns `true' if paused, else `false'. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+dmesg(1) -+ -diff -Nurb click-1.6.0/inst/share/man/mann/PollDevice.n click-1.6.0-27/inst/share/man/mann/PollDevice.n ---- click-1.6.0/inst/share/man/mann/PollDevice.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/PollDevice.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,103 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/linuxmodule/polldevice.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "POLLDEVICE" n "11/Feb/2009" "Click" -+.SH "NAME" -+PollDevice \- Click element; -+polls packets from network device (kernel) -+.SH "SYNOPSIS" -+\fBPollDevice\fR(DEVNAME [, \fIkeywords\fR PROMISC, BURST, TIMESTAMP...]) -+ -+\fBPorts\fR: no inputs, 1 output -+.br -+\fBProcessing\fR: push -+.br -+\fBDrivers\fR: linuxmodule -+.br -+\fBPackage\fR: linuxmodule (core) -+.br -+.SH "DESCRIPTION" -+Poll packets received by the Linux network interface named DEVNAME. Packets -+will be pushed to output 0. The packets include the link-level header. DEVNAME -+may also be an Ethernet address, in which case \fBPollDevice\fR searches for a -+device with that address. -+.PP -+Each time \fBPollDevice\fR is scheduled, it emits at most BURST packets. By default, -+BURST is 8. -+.PP -+This element is only available in the Linux kernel module. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "PROMISC" 8 -+Boolean. If true, the device is put into promiscuous mode while -+.M FromDevice "n" -+is -+active. Default is false. -+.IP "" 8 -+.IP "BURST" 8 -+Unsigned integer. Sets the BURST parameter. -+.IP "" 8 -+.IP "TIMESTAMP" 8 -+Boolean. If true, then ensure that received packets have correctly-set -+timestamp annotations. Default is true. -+.IP "" 8 -+.IP "QUIET" 8 -+Boolean. If true, then suppress device up/down messages. Default is false. -+.IP "" 8 -+.IP "HEADROOM" 8 -+Unsigned. Amount of extra headroom to request on each packet. Default is 64. -+.IP "" 8 -+.IP "ALLOW_NONEXISTENT" 8 -+Allow nonexistent devices. If true, and no device named DEVNAME exists when -+the router is initialized, then \fBPollDevice\fR will report a warning (rather than -+an error). Later, while the router is running, if a device named DEVNAME -+appears, \fBPollDevice\fR will seamlessly begin emitting its packets. Default is -+false. -+.IP "" 8 -+.PP -+ -+.SH "NOTES" -+Linux won't see any packets from the device. If you want Linux to process -+packets, you should hand them to -+.M ToHost "n" . -+Also, if you would like to send -+packets while using \fBPollDevice\fR, you should also define a -+.M ToDevice "n" -+on the same -+device. -+.PP -+This element can only be used with devices that support the Click polling -+extension. We have written polling patches for the Tulip Ethernet driver. -+.PP -+Linux device drivers, and thus -+.M FromDevice "n" , -+should set packets' timestamp, -+packet-type, and device annotations. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBcount\fR (read-only)" 5 -+Returns the number of packets \fBPollDevice\fR has received from the input card. -+.IP "" 5 -+.IP "\fBreset_counts\fR (write-only)" 5 -+Resets \f(CWcount\fR counter to zero when written. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M FromDevice n , -+.M ToDevice n , -+.M FromHost n , -+.M ToHost "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/PortInfo.n click-1.6.0-27/inst/share/man/mann/PortInfo.n ---- click-1.6.0/inst/share/man/mann/PortInfo.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/PortInfo.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,65 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../include/click/standard/portinfo.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "PORTINFO" n "11/Feb/2009" "Click" -+.SH "NAME" -+PortInfo \- Click element; -+stores named TCP/UDP port information -+.SH "SYNOPSIS" -+\fBPortInfo\fR(NAME PORT[/PROTOCOL], ...) -+ -+\fBPorts\fR: None -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Lets you use mnemonic names for TCP and UDP ports. Each argument has the form -+`NAME PORT[/PROTOCOL]', which associates the given PORT/PROTOCOL pair with the -+NAME. If PROTOCOL is left off, the NAME applies to both TCP and UDP. For -+example, in a configuration containing -+.PP -+.nf -+\& PortInfo(ssh 22, http 80), -+.fi -+.PP -+configuration strings can use \f(CWssh\fR and \f(CWhttp\fR as mnemonics for the port -+numbers 22 and 80, respectively. -+.PP -+\fBPortInfo\fR names are local with respect to compound elements. That is, names -+created inside a compound element apply only within that compound element and -+its subelements. For example: -+.PP -+.nf -+\& PortInfo(src 10); -+\& compound :: { -+\& PortInfo(dst 100); -+\& ... -> UDPIPEncap(1.0.0.1, src, 2.0.0.1, dst) -> ... // OK -+\& }; -+\& ... -> UDPIPEncap(1.0.0.1, src, 2.0.0.1, dst) -> ... -+\& // error: `dst' undefined -+.fi -+.PP -+ -+ -+ -+.SH "NOTES" -+If you do not define a port for a given name, \fBPortInfo\fR will use the default, -+if any. At user level, \fBPortInfo\fR uses the -+.M getservbyname 3 -+function to look -+up ports by name. In the kernel, there are no default ports. -+.PP -+\fBPortInfo\fR will parse arguments containing more than one name, as `\f(CWNAME -+PORT/PROTOCOL NAME...\fR', and comments starting with `\f(CW#\fR' are ignored. Thus, -+lines from \fI/etc/services\fR can be used verbatim as \fBPortInfo\fR configuration -+arguments. -+.PP -+ -+.SH "SEE ALSO" -+.M AddressInfo "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Print.n click-1.6.0-27/inst/share/man/mann/Print.n ---- click-1.6.0/inst/share/man/mann/Print.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Print.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,53 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/print.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "PRINT" n "11/Feb/2009" "Click" -+.SH "NAME" -+Print \- Click element; -+prints packet contents -+.SH "SYNOPSIS" -+\fBPrint\fR([LABEL, LENGTH, \fIkeywords\fR]) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Prints up to LENGTH bytes of data from each packet, in hex, preceded by the -+LABEL text. Default LENGTH is 24. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "LENGTH" 8 -+Number of bytes to print. Default is 24. -+.IP "" 8 -+.IP "CONTENTS" 8 -+Determines whether the packet data is printed. It may be `NONE' (do not print -+packet data), `HEX' (print packet data in hexadecimal), or `ASCII' (print -+packet data in plaintext). Default is `HEX'. -+.IP "" 8 -+.IP "TIMESTAMP" 8 -+Boolean. Determines whether to print each packet's timestamp in seconds since -+1970. Default is false. -+.IP "" 8 -+.IP "PRINTANNO" 8 -+Boolean. Determines whether to print each packet's user annotation bytes. Default is false. -+.IP "" 8 -+.IP "CPU" 8 -+Boolean; available only in the Linux kernel module. Determines whether to -+print the current CPU ID for every packet. Default is false. -+.IP "" 8 -+.PP -+ -+.SH "SEE ALSO" -+.M IPPrint "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/PrioSched.n click-1.6.0-27/inst/share/man/mann/PrioSched.n ---- click-1.6.0/inst/share/man/mann/PrioSched.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/PrioSched.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,38 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/priosched.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "PRIOSCHED" n "11/Feb/2009" "Click" -+.SH "NAME" -+PrioSched \- Click element; -+pulls from priority-scheduled inputs -+.SH "SYNOPSIS" -+PrioSched -+ -+\fBPorts\fR: any number of inputs, 1 output -+.br -+\fBProcessing\fR: pull -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Each time a pull comes in the output, \fBPrioSched\fR pulls from -+each of the inputs starting from input 0. -+The packet from the first successful pull is returned. -+This amounts to a strict priority scheduler. -+.PP -+The inputs usually come from Queues or other pull schedulers. -+\fBPrioSched\fR uses notification to avoid pulling from empty inputs. -+.PP -+ -+.SH "SEE ALSO" -+.M Queue n , -+.M RoundRobinSched n , -+.M StrideSched n , -+.M DRRSched n , -+.M SimplePrioSched "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ProgressBar.n click-1.6.0-27/inst/share/man/mann/ProgressBar.n ---- click-1.6.0/inst/share/man/mann/ProgressBar.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ProgressBar.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,137 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/userlevel/progressbar.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "PROGRESSBAR" n "11/Feb/2009" "Click" -+.SH "NAME" -+ProgressBar \- Click element; -+prints a progress bar to standard error -+.SH "SYNOPSIS" -+\fBProgressBar\fR(POSHANDLER [, SIZEHANDLER, \fIKEYWORDS\fR]) -+ -+\fBPorts\fR: none -+.br -+\fBDrivers\fR: userlevel -+.br -+\fBPackage\fR: userlevel (core) -+.br -+.SH "DESCRIPTION" -+Reads progress information from handlers, and displays an ASCII-art progress -+bar on standard error, indicating how much progress has been made and how much -+remains to go. -+.PP -+POSHANDLER and SIZEHANDLER are read handlers. Each of them should return a -+nonnegative real number. POSHANDLER is checked each time the progress bar -+displays; SIZEHANDLER is checked just once, the first time the progress bar -+comes up. Intuitively, POSHANDLER represents the "position"; the process is -+complete when its value equals the "size" returned by SIZEHANDLER. You may -+give multiple position and/or size handlers, as a space-separated list; their -+values are added together. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "FIXED_SIZE" 8 -+Nonnegative real number. Used as the size when SIZEHANDLER is not supplied. -+Default is no fixed size. -+.IP "" 8 -+.IP "BANNER" 8 -+String. Print this string before the progress bar. For example, this might be -+a section of some filename. Default is empty. -+.IP "" 8 -+.IP "UPDATE" 8 -+Time in seconds (millisecond precision). The progress bar updates itself with -+this frequency. Default is 1/4 second. -+.IP "" 8 -+.IP "ACTIVE" 8 -+Boolean. The progress bar will not initially display itself if this is false. -+Default is true. -+.IP "" 8 -+.IP "DELAY" 8 -+Time in seconds (millisecond precision). Don't print a progress bar until at -+least DELAY seconds have passed. Use this to avoid trivial progress bars (that -+is, progress bars that immediately go to 100%). Default is no delay. -+.IP "" 8 -+.IP "CHECK_STDOUT" 8 -+Boolean. If true, and the standard output is connected to a terminal, then do -+not print a progress bar. Default is false. -+.IP "" 8 -+.PP -+Only available in user-level processes. -+.PP -+.SH "EXAMPLES" -+This \fBProgressBar\fR shows how far into the file -+.M FromDump "n" -+has gotten: -+.PP -+.nf -+\& fd :: FromDump(~/largedump.gz) -> ... -+\& ProgressBar(fd.filepos, fd.filesize); -+.fi -+.PP -+Here are some example progress bars. The first form occurs when the file size -+is known; the second, when it is not known. -+.PP -+.nf -+\& 74% |************** | 23315KB 00:01 ETA -+\& -+\& | *** | 5184KB --:-- ETA -+.fi -+.PP -+ -+ -+ -+.SH "NOTES" -+Code based on the progress bar in the OpenSSH project's \fBscp\fR program, whose -+authors are listed as Timo Rinne, Tatu Ylonen, Theo de Raadt, and Aaron -+Campbell. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBmark_stopped\fR (write-only)" 5 -+When written, the progress bar changes to indicate that the transfer has -+stopped, possibly prematurely. -+.IP "" 5 -+.IP "\fBmark_done\fR (write-only)" 5 -+When written, the progress bar changes to indicate that the transfer has -+successfully completed. -+.IP "" 5 -+.IP "\fBpos\fR (read-only)" 5 -+Returns the progress bar's current position. -+.IP "" 5 -+.IP "\fBsize\fR (read/write)" 5 -+Returns or sets the progress bar's size value, which is used to compute how -+close the process is to completion. -+.IP "" 5 -+.IP "\fBactive\fR (read/write)" 5 -+Returns or sets the ACTIVE setting, a Boolean value. An inactive progress bar -+will not redraw itself. -+.IP "" 5 -+.IP "\fBbanner\fR (read/write)" 5 -+Returns or sets the BANNER string. -+.IP "" 5 -+.IP "\fBposhandler\fR (read/write)" 5 -+Returns or sets the read handlers used to read the position, as a -+space-separated list. -+.IP "" 5 -+.IP "\fBsizehandler\fR (read/write)" 5 -+Returns or sets the read handlers used to read the size, as a space-separated -+list. -+.IP "" 5 -+.IP "\fBreset\fR (write-only)" 5 -+When written, resets the progress bar to its initial state: the size is read -+again, for example. Also sets ACTIVE to true. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M FromDump "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/PullNull.n click-1.6.0-27/inst/share/man/mann/PullNull.n ---- click-1.6.0/inst/share/man/mann/PullNull.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/PullNull.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,30 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/nullelement.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "PULLNULL" n "11/Feb/2009" "Click" -+.SH "NAME" -+PullNull \- Click element; -+passes packets unchanged -+.SH "SYNOPSIS" -+\fBPullNull\fR -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: pull -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Responds to each pull request by pulling a packet from its input and returning -+that packet unchanged. -+.PP -+ -+.SH "SEE ALSO" -+.M Null n , -+.M PushNull "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/PullSwitch.n click-1.6.0-27/inst/share/man/mann/PullSwitch.n ---- click-1.6.0/inst/share/man/mann/PullSwitch.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/PullSwitch.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,53 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/pullswitch.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "PULLSWITCH" n "11/Feb/2009" "Click" -+.SH "NAME" -+PullSwitch \- Click element; -+forwards pull requests to settable input -+.SH "SYNOPSIS" -+\fBPullSwitch\fR([INPUT]) -+ -+\fBPorts\fR: any number of inputs, 1 output -+.br -+\fBProcessing\fR: pull -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+On every pull, \fBPullSwitch\fR returns the packet pulled from one of its input -+ports -- specifically, INPUT. The default INPUT is zero; negative INPUTs -+mean always return a null packet. You can change INPUT with a write handler. -+\fBPullSwitch\fR has an unlimited number of inputs. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBswitch\fR (read/write)" 5 -+Return or set the K parameter. -+.IP "" 5 -+.IP "\fBCLICK_LLRPC_GET_SWITCH\fR (llrpc)" 5 -+Argument is a pointer to an integer, in which the -+.M Switch "n" 's -+K parameter is -+stored. -+.IP "" 5 -+.IP "\fBCLICK_LLRPC_SET_SWITCH\fR (llrpc)" 5 -+Argument is a pointer to an integer. Sets the K parameter to that integer. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M StaticPullSwitch n , -+.M PrioSched n , -+.M RoundRobinSched n , -+.M StrideSched n , -+.M Switch "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/PullTee.n click-1.6.0-27/inst/share/man/mann/PullTee.n ---- click-1.6.0/inst/share/man/mann/PullTee.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/PullTee.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,34 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/tee.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "TEE, PULLTEE" n "11/Feb/2009" "Click" -+.SH "NAME" -+Tee, PullTee \- Click elements; -+duplicates packets -+.SH "SYNOPSIS" -+\fBTee\fR([N]) -+.br -+\fBPullTee\fR([N]) -+ -+\fBPorts\fR: 1 input, 1 or more outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+\fBTee\fR sends a copy of each incoming packet out each output. -+.PP -+\fBPullTee\fR's input and its first output are pull; its other outputs are push. -+Each time the pull output pulls a packet, it -+sends a copy out the push outputs. -+.PP -+\fBTee\fR and \fBPullTee\fR have however many outputs are used in the configuration, -+but you can say how many outputs you expect with the optional argument -+N. -+ -diff -Nurb click-1.6.0/inst/share/man/mann/PushNull.n click-1.6.0-27/inst/share/man/mann/PushNull.n ---- click-1.6.0/inst/share/man/mann/PushNull.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/PushNull.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,29 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/nullelement.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "PUSHNULL" n "11/Feb/2009" "Click" -+.SH "NAME" -+PushNull \- Click element; -+passes packets unchanged -+.SH "SYNOPSIS" -+\fBPushNull\fR -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Responds to each pushed packet by pushing it unchanged out its first output. -+.PP -+ -+.SH "SEE ALSO" -+.M Null n , -+.M PullNull "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Queue.n click-1.6.0-27/inst/share/man/mann/Queue.n ---- click-1.6.0/inst/share/man/mann/Queue.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Queue.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,81 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/fullnotequeue.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "QUEUE" n "11/Feb/2009" "Click" -+.SH "NAME" -+Queue \- Click element; -+stores packets in a FIFO queue -+.SH "SYNOPSIS" -+Queue -+.br -+\fBQueue\fR(CAPACITY) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: push inputs, pull outputs -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Stores incoming packets in a first-in-first-out queue. -+Drops incoming packets if the queue already holds CAPACITY packets. -+The default for CAPACITY is 1000. -+.PP -+\fBQueue\fR notifies interested parties when it becomes empty and when a -+formerly-empty queue receives a packet. The empty notification takes place -+some time after the queue goes empty, to prevent thrashing for queues that -+hover around 1 or 2 packets long. This behavior is the same as that of -+.M NotifierQueue "n" . -+\fBQueue\fR additionally notifies interested parties that it is -+non-full, and when a formerly-full queue gains some free space. In all -+respects but notification, \fBQueue\fR behaves exactly like -+.M SimpleQueue "n" . -+.PP -+You may also use the old element name "FullNoteQueue". -+.PP -+\fBMultithreaded Click note:\fR \fBQueue\fR is designed to be used in an -+environment with at most one concurrent pusher and at most one concurrent -+puller. Thus, at most one thread pushes to the \fBQueue\fR at a time and at -+most one thread pulls from the \fBQueue\fR at a time. Different threads can -+push to and pull from the \fBQueue\fR concurrently, however. See -+.M MSQueue "n" -+for -+a queue that can support multiple concurrent pushers. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBlength\fR (read-only)" 5 -+Returns the current number of packets in the queue. -+.IP "" 5 -+.IP "\fBhighwater_length\fR (read-only)" 5 -+Returns the maximum number of packets that have ever been in the queue at once. -+.IP "" 5 -+.IP "\fBcapacity\fR (read/write)" 5 -+Returns or sets the queue's capacity. -+.IP "" 5 -+.IP "\fBdrops\fR (read-only)" 5 -+Returns the number of packets dropped by the queue so far. -+.IP "" 5 -+.IP "\fBreset_counts\fR (write-only)" 5 -+When written, resets the \f(CWdrops\fR and \f(CWhighwater_length\fR counters. -+.IP "" 5 -+.IP "\fBreset\fR (write-only)" 5 -+When written, drops all packets in the queue. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M SimpleQueue n , -+.M NotifierQueue n , -+.M MixedQueue n , -+.M FrontDropQueue n , -+.M MSQueue "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/QuitWatcher.n click-1.6.0-27/inst/share/man/mann/QuitWatcher.n ---- click-1.6.0/inst/share/man/mann/QuitWatcher.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/QuitWatcher.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,23 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/quitwatcher.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "QUITWATCHER" n "11/Feb/2009" "Click" -+.SH "NAME" -+QuitWatcher \- Click element; -+stops router processing -+.SH "SYNOPSIS" -+\fBQuitWatcher\fR(ELEMENT, ...) -+ -+\fBPorts\fR: none -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Stops router processing when at least one of the ELEMENTs is no longer -+scheduled. -+ -diff -Nurb click-1.6.0/inst/share/man/mann/RED.n click-1.6.0-27/inst/share/man/mann/RED.n ---- click-1.6.0/inst/share/man/mann/RED.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/RED.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,113 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/aqm/red.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "RED" n "11/Feb/2009" "Click" -+.SH "NAME" -+RED \- Click element; -+drops packets according to RED -+.SH "SYNOPSIS" -+\fBRED\fR(MIN_THRESH, MAX_THRESH, MAX_P [, \fIKEYWORDS\fR]) -+ -+\fBPorts\fR: 1 input, 1-2 outputs -+.br -+\fBProcessing\fR: agnostic, but output 1 is push -+.br -+\fBPackage\fR: aqm (core) -+.br -+.SH "DESCRIPTION" -+Implements the Random Early Detection packet dropping -+algorithm. -+.PP -+A \fBRED\fR element is associated with one or more Storage elements (usually -+Queues). It maintains a running average of the sum of the queue lengths, and -+marks packets with a probability proportional to that sum. By default, the -+Queues are found with flow-based router context. If the \fBRED\fR is a push element, -+it uses the nearest downstream Queues; if it is a pull element, it uses the -+nearest upstream Queues. -+.PP -+Marked packets are dropped, or emitted on output 1 if \fBRED\fR has two output -+ports. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "QUEUES" 8 -+This argument is a space-separated list of Storage element names. \fBRED\fR will use -+those elements' queue lengths, rather than any elements found via flow-based -+router context. -+.IP "" 8 -+.IP "STABILITY" 8 -+Unsigned. This number determines how stable the average queue size is -- that -+is, how quickly it changes due to fluctuations in the instantaneous queue -+size. Higher numbers mean more stability. The corresponding conventional \fBRED\fR -+parameter is w_q; STABILITY equals -log_2(w_q). -+.IP "" 8 -+STABILITY should equal -+.IP "" 8 -+.nf -+\& -log_2 (1 - e^(-1/K)), -+.fi -+.IP "" 8 -+where K is the link bandwidth in packets per second. Default STABILITY is 4. -+This is very low (unstable) for most purposes; it corresponds to a link -+bandwidth of roughly 15 packets per second, or a w_q of 0.25. The NS default -+setting for w_q is 0.002, corresponding to a STABILITY of roughly 9. -+.IP "" 8 -+ -+.PP -+The \fBRED\fR element implements the Gentle RED variant first proposed by Sally -+Floyd in October 1997. -+.PP -+.SH "EXAMPLES" -+ -+.nf -+\& ... -> RED(5, 50, 0.02) -> Queue(200) -> ... -+.fi -+.PP -+ -+ -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBmin_thresh\fR (read/write)" 5 -+Returns or sets the MIN_THRESH configuration parameter. -+.IP "" 5 -+.IP "\fBmax_thresh\fR (read/write)" 5 -+Returns or sets the MAX_THRESH configuration parameter. -+.IP "" 5 -+.IP "\fBmax_p\fR (read/write)" 5 -+Returns or sets the MAX_P configuration parameter. -+.IP "" 5 -+.IP "\fBdrops\fR (read-only)" 5 -+Returns the number of packets dropped so far. -+.IP "" 5 -+.IP "\fBqueues\fR (read-only)" 5 -+Returns the Queues associated with this \fBRED\fR element, listed one per line. -+.IP "" 5 -+.IP "\fBavg_queue_size\fR (read-only)" 5 -+Returns the current average queue size. -+.IP "" 5 -+.IP "\fBstats\fR (read-only)" 5 -+Returns some human-readable statistics. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M AdaptiveRED n , -+.M Queue n -+.PP -+Sally Floyd and Van Jacobson. \fIRandom Early Detection Gateways for -+Congestion Avoidance\fR. ACM Transactions on Networking, \fB1\fR(4), August -+1993, pp 397-413. -+.PP -+Sally Floyd. "Optimum functions for computing the drop -+probability", October 1997. \fBhttp://www.icir.org/floyd/REDfunc.txt\fR. -+ -diff -Nurb click-1.6.0/inst/share/man/mann/RFC2507Comp.n click-1.6.0-27/inst/share/man/mann/RFC2507Comp.n ---- click-1.6.0/inst/share/man/mann/RFC2507Comp.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/RFC2507Comp.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,34 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/rfc2507c.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "RFC2507COMP" n "11/Feb/2009" "Click" -+.SH "NAME" -+RFC2507Comp \- Click element; -+RFC2507 IPv4/TCP header compressor. -+.SH "SYNOPSIS" -+\fBRFC2507Comp\fR -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Input packets need to be IPv4 (no ether header &c). -+It's OK if they're not TCP. -+.PP -+How to specify various kinds of output? There is not really -+a useful general standard. Perhaps emit each different format -+of output on a different output() and let further modules -+sort it out. Then we wouldn't be AGNOSTIC... -+.PP -+ -+.SH "SEE ALSO" -+.M RFC2507Decomp "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/RFC2507Decomp.n click-1.6.0-27/inst/share/man/mann/RFC2507Decomp.n ---- click-1.6.0/inst/share/man/mann/RFC2507Decomp.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/RFC2507Decomp.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,29 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/rfc2507d.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "RFC2507DECOMP" n "11/Feb/2009" "Click" -+.SH "NAME" -+RFC2507Decomp \- Click element; -+RFC2507 IPv4/TCP header decompressor. -+.SH "SYNOPSIS" -+\fBRFC2507Decomp\fR -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Input packets should be as produced by RFC2507c. -+Spits out IP packets. -+.PP -+ -+.SH "SEE ALSO" -+.M RFC2507Comp "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/RIPSend.n click-1.6.0-27/inst/share/man/mann/RIPSend.n ---- click-1.6.0/inst/share/man/mann/RIPSend.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/RIPSend.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,42 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/ripsend.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "RIPSEND" n "11/Feb/2009" "Click" -+.SH "NAME" -+RIPSend \- Click element; -+periodically generates specified RIP II packet -+.SH "SYNOPSIS" -+\fBRIPSend\fR(SRC, DST, PREFIX, METRIC) -+ -+\fBPorts\fR: no inputs, 1 output -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Sends periodic RIP II packets with specified contents, -+including UDP and IP headers. -+ -+.SH "EXAMPLES" -+Send out advertisements to net 18.26.4, indicating that -+route 18.26.4.24 knows how to get to net 10 with hop -+count 10: -+.PP -+.nf -+\& RIPSend(18.26.4.24, 18.26.4.255, 10.0.0.0/8, 10) -> -+\& EtherEncap(0x0008, 00:00:c0:ae:67:ef, ff:ff:ff:ff:ff:ff) -> -+\& ToDevice(eth0); -+.fi -+.PP -+ -+ -+ -+.SH "NOTES" -+Note that this is just a tiny piece of a full RIP implementation. -+ -diff -Nurb click-1.6.0/inst/share/man/mann/RadixIPLookup.n click-1.6.0-27/inst/share/man/mann/RadixIPLookup.n ---- click-1.6.0/inst/share/man/mann/RadixIPLookup.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/RadixIPLookup.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,85 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/radixiplookup.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "RADIXIPLOOKUP" n "11/Feb/2009" "Click" -+.SH "NAME" -+RadixIPLookup \- Click element; -+IP lookup using a radix trie -+.SH "SYNOPSIS" -+\fBRadixIPLookup\fR(ADDR1/MASK1 [GW1] OUT1, ADDR2/MASK2 [GW2] OUT2, ...) -+ -+\fBPorts\fR: 1 input, any number of outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Performs IP lookup using a radix trie. The first level of the trie has 256 -+buckets; each succeeding level has 16. The maximum number of levels that will -+be traversed is thus 7. -+.PP -+Expects a destination IP address annotation with each packet. Looks up that -+address in its routing table, using longest-prefix-match, sets the destination -+annotation to the corresponding GW (if specified), and emits the packet on the -+indicated OUTput port. -+.PP -+Each argument is a route, specifying a destination and mask, an optional -+gateway IP address, and an output port. -+.PP -+Uses the -+.M IPRouteTable "n" -+interface; see -+.M IPRouteTable "n" -+for description. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBtable\fR (read-only)" 5 -+Outputs a human-readable version of the current routing table. -+.IP "" 5 -+.IP "\fBlookup\fR (read-only)" 5 -+Reports the OUTput port and GW corresponding to an address. -+.IP "" 5 -+.IP "\fBadd\fR (write-only)" 5 -+Adds a route to the table. Format should be `\f(CWADDR/MASK [GW] OUT\fR'. Should -+fail if a route for \f(CWADDR/MASK\fR already exists, but currently does not. -+.IP "" 5 -+.IP "\fBset\fR (write-only)" 5 -+Sets a route, whether or not a route for the same prefix already exists. -+.IP "" 5 -+.IP "\fBremove\fR (write-only)" 5 -+Removes a route from the table. Format should be `\f(CWADDR/MASK\fR'. -+.IP "" 5 -+.IP "\fBctrl\fR (write-only)" 5 -+Adds or removes a group of routes. Write `\f(CWadd\fR/\f(CWset ADDR/MASK [GW] OUT\fR' to -+add a route, and `\f(CWremove ADDR/MASK\fR' to remove a route. You can supply -+multiple commands, one per line; all commands are executed as one atomic -+operation. -+.IP "" 5 -+.PP -+ -+.SH "NOTES" -+See -+.M IPRouteTable "n" -+for a performance comparison of the various IP routing -+elements. -+.PP -+ -+.SH "SEE ALSO" -+.M IPRouteTable n , -+.M DirectIPLookup n , -+.M RangeIPLookup n , -+.M StaticIPLookup n , -+.M LinearIPLookup n , -+.M SortedIPLookup n , -+.M LinuxIPLookup "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/RandomBitErrors.n click-1.6.0-27/inst/share/man/mann/RandomBitErrors.n ---- click-1.6.0/inst/share/man/mann/RandomBitErrors.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/RandomBitErrors.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,49 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/randomerror.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "RANDOMBITERRORS" n "11/Feb/2009" "Click" -+.SH "NAME" -+RandomBitErrors \- Click element; -+changes packet data with some probability -+.SH "SYNOPSIS" -+\fBRandomBitErrors\fR(P [, KIND, ACTIVE]) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Change each bit in each packet with probability P. The KIND parameter -+determines the kind of change. `flip' (the default) flips bits, `set' sets -+bits to one, and `clear' sets bits to zero. -+.PP -+\fBRandomBitErrors\fR can be active or inactive. It only changes bits when -+active. It starts out active by default, but if you pass `false' for the -+ACTIVE parameter, it will start out inactive. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBp_bit_error\fR (read/write)" 5 -+Returns or sets the P probability parameter. -+.IP "" 5 -+.IP "\fBerror_kind\fR (read/write)" 5 -+Returns or sets the KIND parameter. -+.IP "" 5 -+.IP "\fBactive\fR (read/write)" 5 -+Makes the element active or inactive. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M RandomSample "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/RandomSample.n click-1.6.0-27/inst/share/man/mann/RandomSample.n ---- click-1.6.0/inst/share/man/mann/RandomSample.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/RandomSample.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,68 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/randomsample.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "RANDOMSAMPLE" n "11/Feb/2009" "Click" -+.SH "NAME" -+RandomSample \- Click element; -+samples packets with some probability -+.SH "SYNOPSIS" -+\fBRandomSample\fR([P, \fIKEYWORDS\fR]) -+ -+\fBPorts\fR: 1 input, 1-2 outputs -+.br -+\fBProcessing\fR: agnostic, but output 1 is push -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Samples packets with probability P. One out of 1/P packets are sent to the -+first output. The remaining packets are dropped, unless the element has two -+outputs, in which case they are emitted on output 1. -+.PP -+If you don't specify P, you must supply one of the SAMPLE and DROP keyword -+arguments. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "SAMPLE \fIP\fR" 8 -+Sets the sampling probability to \fIP\fR. -+.IP "" 8 -+.IP "DROP \fIQ\fR" 8 -+The element will drop packets with probability \fIQ\fR. Same as suppling (1 - -+\fIQ\fR) as the sampling probability. -+.IP "" 8 -+.IP "ACTIVE" 8 -+Boolean. \fBRandomSample\fR is active or inactive; when inactive, it sends all -+packets to output 0. Default is true (active). -+.IP "" 8 -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBsampling_prob\fR (read/write)" 5 -+Returns or sets the sampling probability. -+.IP "" 5 -+.IP "\fBdrop_prob\fR (read/write)" 5 -+Returns or sets the drop probability, which is 1 minus the sampling -+probability. -+.IP "" 5 -+.IP "\fBactive\fR (read/write)" 5 -+Makes the element active or inactive. -+.IP "" 5 -+.IP "\fBdrops\fR (read-only)" 5 -+Returns the number of packets dropped. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M RandomBitErrors "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/RandomSource.n click-1.6.0-27/inst/share/man/mann/RandomSource.n ---- click-1.6.0/inst/share/man/mann/RandomSource.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/RandomSource.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,29 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/randomsource.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "RANDOMSOURCE" n "11/Feb/2009" "Click" -+.SH "NAME" -+RandomSource \- Click element; -+generates random packets whenever scheduled -+.SH "SYNOPSIS" -+\fBRandomSource\fR(LENGTH) -+ -+\fBPorts\fR: no inputs, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Creates packets, of the indicated length, filled with random bytes. -+Packets' timestamp annotations are set to the current time. -+.PP -+ -+.SH "SEE ALSO" -+.M InfiniteSource "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/RandomSwitch.n click-1.6.0-27/inst/share/man/mann/RandomSwitch.n ---- click-1.6.0/inst/share/man/mann/RandomSwitch.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/RandomSwitch.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,31 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/randomswitch.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "RANDOMSWITCH" n "11/Feb/2009" "Click" -+.SH "NAME" -+RandomSwitch \- Click element; -+sends packets to random outputs -+.SH "SYNOPSIS" -+RandomSwitch -+ -+\fBPorts\fR: one input, one or more outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Pushes each arriving packet to one of the N outputs, choosing outputs randomly. -+.PP -+ -+.SH "SEE ALSO" -+.M Switch n , -+.M StrideSwitch n , -+.M RoundRobinSwitch n , -+.M HashSwitch "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/RangeIPLookup.n click-1.6.0-27/inst/share/man/mann/RangeIPLookup.n ---- click-1.6.0/inst/share/man/mann/RangeIPLookup.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/RangeIPLookup.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,96 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/rangeiplookup.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "RANGEIPLOOKUP" n "11/Feb/2009" "Click" -+.SH "NAME" -+RangeIPLookup \- Click element; -+IP routing lookup through binary search in a very compact table -+.SH "SYNOPSIS" -+\fBRangeIPLookup\fR(ADDR1/MASK1 [GW1] OUT1, ADDR2/MASK2 [GW2] OUT2, ...) -+ -+\fBPorts\fR: 1 input, any number of outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBDrivers\fR: userlevel, bsdmodule -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Expects a destination IP address annotation with each packet. Looks up that -+address in its routing table, using longest-prefix-match, sets the destination -+annotation to the corresponding GW (if specified), and emits the packet on the -+indicated OUTput port. -+.PP -+Each argument is a route, specifying a destination and mask, an optional -+gateway IP address, and an output port. No destination-mask pair should occur -+more than once. -+.PP -+\fBRangeIPLookup\fR aims at achieving high lookup speeds through exploiting the CPU -+cache locality. The routing table is expanded into a very small lookup -+structure, typically occupying less then 4 bytes per IP prefix. As an example, -+a lookup structure corresponding to a routing table with 167000 entries (a -+realistic snapshot taken from a core Internet router) occupies only around -+512 KBytes of RAM. Depending on how sucessfully the CPU cache -+affinity can be maintained, worst-case lookup rates exceeding 20 million -+lookups per second can be achieved using modern commodity CPUs. -+.PP -+\fBRangeIPLookup\fR maintains a large -+.M DirectIPLookup "n" -+table as well as its own -+tables. Although this subsidiary table is only accessed during route updates, -+it significantly adds to \fBRangeIPLookup\fR's total memory footprint. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBtable\fR (read-only)" 5 -+Outputs a human-readable version of the current routing table. -+.IP "" 5 -+.IP "\fBlookup\fR (read-only)" 5 -+Reports the OUTput port and GW corresponding to an address. -+.IP "" 5 -+.IP "\fBadd\fR (write-only)" 5 -+Adds a route to the table. Format should be `\f(CWADDR/MASK [GW] OUT\fR'. -+Fails if a route for \f(CWADDR/MASK\fR already exists. -+.IP "" 5 -+.IP "\fBset\fR (write-only)" 5 -+Sets a route, whether or not a route for the same prefix already exists. -+.IP "" 5 -+.IP "\fBremove\fR (write-only)" 5 -+Removes a route from the table. Format should be `\f(CWADDR/MASK\fR'. -+.IP "" 5 -+.IP "\fBctrl\fR (write-only)" 5 -+Adds or removes a group of routes. Write `\f(CWadd\fR/\f(CWset ADDR/MASK [GW] OUT\fR' to -+add a route, and `\f(CWremove ADDR/MASK\fR' to remove a route. You can supply -+multiple commands, one per line; all commands are executed as one atomic -+operation. -+.IP "" 5 -+.IP "\fBflush\fR (write-only)" 5 -+Clears the entire routing table in a single atomic operation. -+.IP "" 5 -+.PP -+ -+.SH "NOTES" -+See -+.M IPRouteTable "n" -+for a performance comparison of the various IP routing -+elements. -+.PP -+ -+.SH "SEE ALSO" -+.M IPRouteTable n , -+.M RadixIPLookup n , -+.M DirectIPLookup n , -+.M LinearIPLookup n , -+.M SortedIPLookup n , -+.M StaticIPLookup n , -+.M LinuxIPLookup "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/RatedSource.n click-1.6.0-27/inst/share/man/mann/RatedSource.n ---- click-1.6.0/inst/share/man/mann/RatedSource.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/RatedSource.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,99 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/ratedsource.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "RATEDSOURCE" n "11/Feb/2009" "Click" -+.SH "NAME" -+RatedSource \- Click element; -+generates packets at specified rate -+.SH "SYNOPSIS" -+\fBRatedSource\fR([DATA, RATE, LIMIT, ACTIVE, \fIKEYWORDS\fR]) -+ -+\fBPorts\fR: no inputs, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Creates packets consisting of DATA, emitting at most LIMIT such packets out -+its single output at a rate of RATE packets per second. When used as a push -+element, \fBRatedSource\fR will send a maximum of one packet per scheduling, so very -+high RATEs may not be achievable. If LIMIT is negative, sends packets forever. -+Will send packets only if ACTIVE is true. Default DATA is at least 64 bytes -+long. Default RATE is 10. Default LIMIT is -1 (send packets forever). Default -+ACTIVE is true. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "DATA" 8 -+String. Same as the DATA argument. -+.IP "" 8 -+.IP "DATASIZE" 8 -+Integer. If set, ensures the outgoing packet contains at least this many bytes. -+.IP "" 8 -+.IP "RATE" 8 -+Integer. Same as the RATE argument. -+.IP "" 8 -+.IP "LIMIT" 8 -+Integer. Same as the LIMIT argument. -+.IP "" 8 -+.IP "ACTIVE" 8 -+Boolean. Same as the ACTIVE? argument. -+.IP "" 8 -+.IP "STOP" 8 -+Boolean. If true, then stop the driver once LIMIT packets are sent. Default is -+false. -+.IP "" 8 -+.PP -+To generate a particular repeatable traffic pattern, use this element's -+\fBrate\fR and \fBactive\fR handlers in conjunction with -+.M PokeHandlers "n" . -+.PP -+.SH "EXAMPLES" -+ -+.nf -+\& RatedSource(\e<0800>, 10, 1000) -> Queue -> ... -+.fi -+.PP -+ -+ -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBcount\fR (read-only)" 5 -+Returns the total number of packets that have been generated. -+.IP "" 5 -+.IP "\fBreset\fR (write-only)" 5 -+Resets the number of generated packets to 0. The \fBRatedSource\fR will then -+generate another LIMIT packets (if it is active). -+.IP "" 5 -+.IP "\fBdata\fR (read/write)" 5 -+Returns or sets the DATA parameter. -+.IP "" 5 -+.IP "\fBdatasize\fR (read/write)" 5 -+Returns or sets the DATASIZE parameter. -+.IP "" 5 -+.IP "\fBrate\fR (read/write)" 5 -+Returns or sets the RATE parameter. -+.IP "" 5 -+.IP "\fBlimit\fR (read/write)" 5 -+Returns or sets the LIMIT parameter. Negative numbers mean no limit. -+.IP "" 5 -+.IP "\fBactive\fR (read/write)" 5 -+Makes the element active or inactive. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M InfiniteSource n , -+.M PokeHandlers "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/RatedSplitter.n click-1.6.0-27/inst/share/man/mann/RatedSplitter.n ---- click-1.6.0/inst/share/man/mann/RatedSplitter.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/RatedSplitter.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,71 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/ratedsplitter.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "RATEDSPLITTER" n "11/Feb/2009" "Click" -+.SH "NAME" -+RatedSplitter \- Click element; -+splits flow of packets at specified rate -+.SH "SYNOPSIS" -+\fBRatedSplitter\fR(RATE) -+ -+\fBPorts\fR: 1 input, 2 outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+\fBRatedSplitter\fR has two output ports. All incoming packets up to a maximum of -+RATE packets per second are emitted on output port 0. Any remaining packets -+are emitted on output port 1. Unlike -+.M Meter "n" , -+RATE packets per second are -+emitted on output port 0 even when the input rate is greater than RATE. -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& rs :: RatedSplitter(2000); -+.fi -+.PP -+Split packets on port 0 at 2000 packets per second. -+.PP -+.nf -+\& elementclass RatedSampler { -+\& input -> rs :: RatedSplitter(2000); -+\& rs [0] -> t :: Tee; -+\& t [0] -> [0] output; -+\& t [1] -> [1] output; -+\& rs [1] -> [0] output; -+\& }; -+.fi -+.PP -+In the above example, RatedSampler is a compound element that samples input -+packets at 2000 packets per second. All traffic is emitted on output 0; a -+maximum of 2000 packets per second are emitted on output 1 as well. -+.PP -+ -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBrate\fR (read/write)" 5 -+rate of splitting -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M BandwidthRatedSplitter n , -+.M ProbSplitter n , -+.M Meter n , -+.M Shaper n , -+.M RatedUnqueue n , -+.M Tee "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/RatedUnqueue.n click-1.6.0-27/inst/share/man/mann/RatedUnqueue.n ---- click-1.6.0/inst/share/man/mann/RatedUnqueue.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/RatedUnqueue.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,40 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/ratedunqueue.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "RATEDUNQUEUE" n "11/Feb/2009" "Click" -+.SH "NAME" -+RatedUnqueue \- Click element; -+pull-to-push converter -+.SH "SYNOPSIS" -+\fBRatedUnqueue\fR(RATE) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: pull inputs, push outputs -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Pulls packets at the given RATE in packets per second, and pushes them out -+its single output. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBrate\fR (read/write)" 5 -+ -+.PP -+ -+.SH "SEE ALSO" -+.M BandwidthRatedUnqueue n , -+.M Unqueue n , -+.M Shaper n , -+.M RatedSplitter "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/RawSocket.n click-1.6.0-27/inst/share/man/mann/RawSocket.n ---- click-1.6.0/inst/share/man/mann/RawSocket.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/RawSocket.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,72 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/userlevel/rawsocket.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "RAWSOCKET" n "11/Feb/2009" "Click" -+.SH "NAME" -+RawSocket \- Click element; -+transports raw IP packets via safe raw sockets (user-level) -+.SH "SYNOPSIS" -+\fBRawSocket\fR("TCP", [, \fIKEYWORDS\fR]) -+.br -+\fBRawSocket\fR("UDP", [, \fIKEYWORDS\fR]) -+.br -+\fBRawSocket\fR("GRE", [, \fIKEYWORDS\fR]) -+.br -+\fBRawSocket\fR("ICMP", [, \fIKEYWORDS\fR]) -+ -+\fBPorts\fR: at most 1 input, at most 1 output -+.br -+\fBProcessing\fR: pull inputs, push outputs -+.br -+\fBDrivers\fR: userlevel -+.br -+\fBPackage\fR: userlevel (core) -+.br -+.SH "DESCRIPTION" -+Reads data from and writes data to a raw IPv4 socket. The raw IPv4 -+socket may optionally be bound to a source port number in the case of -+TCP/UDP, a GRE key or PPTP call ID in the case of GRE, or an -+identifier in the case of ICMP. Binding a port to a raw IPv4 socket to -+reserve it and suppress TCP RST and ICMP Unreachable errors, is -+specific to PlanetLab Linux. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "SNAPLEN" 8 -+Unsigned integer. Maximum packet length. This value -+represents the MRU of the \fBRawSocket\fR if it is used as a -+packet source. If the MRU is violated by the peer, i.e. if a packet -+longer than SNAPLEN is sent, the connection may be terminated. -+.IP "" 8 -+.IP "PROPER" 8 -+Boolean. PlanetLab specific. If true and Click has been configured -+--with-proper, use Proper to bind a reserved port. -+.IP "" 8 -+.IP "HEADROOM" 8 -+Unsigned Integer. Amount of headroom to reserve in packets created -+by this element. This could be useful for encapsulation protocols -+which add headers to the packet, and can avoid expensive push -+operations later in the packet's life. -+.IP "" 8 -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& RawSocket(UDP, 53) -> ... -+\& -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M Socket "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/RoundRobinIPMapper.n click-1.6.0-27/inst/share/man/mann/RoundRobinIPMapper.n ---- click-1.6.0/inst/share/man/mann/RoundRobinIPMapper.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/RoundRobinIPMapper.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,38 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/rripmapper.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ROUNDROBINIPMAPPER" n "11/Feb/2009" "Click" -+.SH "NAME" -+RoundRobinIPMapper \- Click element; -+round-robin mapper for -+.M IPRewriter n -+.SH "SYNOPSIS" -+\fBRoundRobinIPMapper\fR(PATTERN1, ..., PATTERNn) -+ -+\fBPorts\fR: none -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Works in tandem with -+.M IPRewriter "n" -+to provide round-robin rewriting. This is -+useful, for example, in load-balancing applications. Implements the -+IPMapper interface. -+.PP -+Responds to mapping requests from an -+.M IPRewriter "n" -+by trying the PATTERNs in -+round-robin order and returning the first successfully created mapping. -+.PP -+ -+.SH "SEE ALSO" -+.M IPRewriter n , -+.M TCPRewriter n , -+.M IPRewriterPatterns "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/RoundRobinSched.n click-1.6.0-27/inst/share/man/mann/RoundRobinSched.n ---- click-1.6.0/inst/share/man/mann/RoundRobinSched.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/RoundRobinSched.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,39 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/rrsched.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ROUNDROBINSCHED" n "11/Feb/2009" "Click" -+.SH "NAME" -+RoundRobinSched \- Click element; -+pulls from round-robin inputs -+.SH "SYNOPSIS" -+RoundRobinSched -+ -+\fBPorts\fR: one output, zero or more inputs -+.br -+\fBProcessing\fR: pull -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Each time a pull comes in the output, pulls from its inputs -+in turn until one produces a packet. When the next pull -+comes in, it starts from the input after the one that -+last produced a packet. This amounts to a round robin -+scheduler. -+.PP -+The inputs usually come from Queues or other pull schedulers. -+\fBRoundRobinSched\fR uses notification to avoid pulling from empty inputs. -+.PP -+ -+.SH "SEE ALSO" -+.M PrioSched n , -+.M StrideSched n , -+.M DRRSched n , -+.M RoundRobinSwitch n , -+.M SimpleRoundRobinSched "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/RoundRobinSwitch.n click-1.6.0-27/inst/share/man/mann/RoundRobinSwitch.n ---- click-1.6.0/inst/share/man/mann/RoundRobinSwitch.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/RoundRobinSwitch.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,33 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/rrswitch.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ROUNDROBINSWITCH" n "11/Feb/2009" "Click" -+.SH "NAME" -+RoundRobinSwitch \- Click element; -+sends packets to round-robin outputs -+.SH "SYNOPSIS" -+RoundRobinSwitch -+ -+\fBPorts\fR: one input, one or more outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Pushes each arriving packet to one of the N outputs. The next packet -+will be pushed to the following output in round-robin order. -+.PP -+ -+.SH "SEE ALSO" -+.M StrideSwitch n , -+.M Switch n , -+.M HashSwitch n , -+.M RandomSwitch n , -+.M RoundRobinSched "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/RoundTripCycleCount.n click-1.6.0-27/inst/share/man/mann/RoundTripCycleCount.n ---- click-1.6.0/inst/share/man/mann/RoundTripCycleCount.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/RoundTripCycleCount.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,50 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/linuxmodule/rtcycles.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ROUNDTRIPCYCLECOUNT" n "11/Feb/2009" "Click" -+.SH "NAME" -+RoundTripCycleCount \- Click element; -+measures round trip cycles on a push or pull path -+.SH "SYNOPSIS" -+\fBRoundTripCycleCount\fR() -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBDrivers\fR: linuxmodule -+.br -+\fBPackage\fR: linuxmodule (core) -+.br -+.SH "DESCRIPTION" -+Measures the number of CPU cycles it takes for a push or pull to come back -+to the element. This is a good indication of how much CPU is spent on the -+Click path after or before this element. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBpackets\fR (read-only)" 5 -+Returns the number of packets that have passed. -+.IP "" 5 -+.IP "\fBcycles\fR (read-only)" 5 -+Returns the accumulated round-trip cycles for all passing packets. -+.IP "" 5 -+.IP "\fBreset_counts\fR (write-only)" 5 -+Resets \f(CWpackets\fR and \f(CWcycles\fR counters to zero when written. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M SetCycleCount n , -+.M CycleCountAccum n , -+.M SetPerfCount n , -+.M PerfCountAccum "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ScheduleInfo.n click-1.6.0-27/inst/share/man/mann/ScheduleInfo.n ---- click-1.6.0/inst/share/man/mann/ScheduleInfo.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ScheduleInfo.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,74 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../include/click/standard/scheduleinfo.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SCHEDULEINFO" n "11/Feb/2009" "Click" -+.SH "NAME" -+ScheduleInfo \- Click element; -+specifies scheduling parameters -+.SH "SYNOPSIS" -+\fBScheduleInfo\fR(ELEMENT PARAM, ...) -+ -+\fBPorts\fR: None -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Provides scheduling parameters for specified elements. Each configuration -+argument has the form `ELEMENT PARAM', meaning that the element -+named ELEMENT has scheduling parameter PARAM. Scheduling -+parameters are real numbers that set how often one element should be -+scheduled in relation to another. For example, -+if elements A and B have -+scheduling parameters 2 and 0.5, respectively, then A will be scheduled -+2/0.5 = 4 times as often as B. The default scheduling parameter is 1. -+.PP -+\fBScheduleInfo\fR elements inside a compound element can specify scheduling -+parameters for that compound's components. -+Outer \fBScheduleInfo\fR elements -+can specify a ``scheduling parameter'' for the compound -+element as a whole. This ``scheduling parameter'' is really a scaling -+factor affecting the compound's components. For example, consider this -+configuration, -+.PP -+.nf -+\& elementclass Compound { -+\& i :: InfiniteSource -> output; -+\& ScheduleInfo(i 0.5); -+\& } -+\& c :: Compound -> Discard; -+\& ScheduleInfo(c 4); -+.fi -+.PP -+which is the same as the following configuration, after compound elements -+are expanded. -+.PP -+.nf -+\& c/i :: InfiniteSource -> Discard@3 :: Discard; -+\& c/ScheduleInfo@2 :: ScheduleInfo(i 0.5); -+\& ScheduleInfo@4 :: ScheduleInfo(c 4); -+.fi -+.PP -+The name of the first \fBScheduleInfo\fR element starts with `c/', so it is -+used to look up scheduling parameters for elements named `c/\fIwhatever\fR'. -+(This includes all components of the compound element `c'.) -+The second \fBScheduleInfo\fR element, however, has no slash in its name, -+so it is used to look up all scheduling parameters, -+including scaling factors for compound elements. -+The InfiniteSource's final scaling parameter will be 2: -+the scaling factor 4 times the local scheduling parameter 0.5. -+.PP -+An outer \fBScheduleInfo\fR element can override local scheduling parameters. -+For example, if the second \fBScheduleInfo\fR element above was -+.PP -+.nf -+\& ScheduleInfo@4 :: ScheduleInfo(c 4, c/i 10.5) -+.fi -+.PP -+then the InfiniteSource's final scaling parameter would be 10.5. -+ -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ScheduleLinux.n click-1.6.0-27/inst/share/man/mann/ScheduleLinux.n ---- click-1.6.0/inst/share/man/mann/ScheduleLinux.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ScheduleLinux.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,30 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/linuxmodule/schedulelinux.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SCHEDULELINUX" n "11/Feb/2009" "Click" -+.SH "NAME" -+ScheduleLinux \- Click element; -+returns to Linux scheduler -+.SH "SYNOPSIS" -+ScheduleLinux -+ -+\fBPorts\fR: none -+.br -+\fBDrivers\fR: linuxmodule -+.br -+\fBPackage\fR: linuxmodule (core) -+.br -+.SH "DESCRIPTION" -+Returns to Linux's scheduler every time it is scheduled by Click. Use -+.M ScheduleInfo "n" -+to specify how often this should happen. -+.PP -+ -+.SH "SEE ALSO" -+.M ScheduleInfo "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Script.n click-1.6.0-27/inst/share/man/mann/Script.n ---- click-1.6.0/inst/share/man/mann/Script.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Script.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,267 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/script.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SCRIPT" n "11/Feb/2009" "Click" -+.SH "NAME" -+Script \- Click element; -+script a Click router configuration -+.SH "SYNOPSIS" -+\fBScript\fR(INSTRUCTIONS...) -+ -+\fBPorts\fR: none -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+The \fBScript\fR element implements a simple scripting language useful for -+controlling Click configurations. Scripts can set variables, call handlers, -+wait for prodding from other elements, and stop the router. -+.PP -+ -+.SH "INSTRUCTIONS" -+Each configuration argument is an \fIinstruction\fR (except for optional -+keywords; see below). \fBScript\fR generally processes these instructions -+sequentially. -+.PP -+ -+.SS "Handler Instructions" -+In all cases, text arguments are subject to substitutions; see below. -+.PP -+ -+.IP "\&'\f(CWset\fR VAR TEXT'" 8 -+Sets the script variable $VAR to TEXT. -+.IP "" 8 -+.IP "\&'\f(CWinit\fR VAR TEXT'" 8 -+Initializes the script variable $VAR to TEXT. This assignment happens exactly -+once, when the \fBScript\fR element is initialized; later the instruction has no -+effect. -+.IP "" 8 -+.IP "\&'\f(CWprint\fR [>FILE | >>FILE] [TEXT | HANDLER]'" 8 -+Prints text, or the result of calling a read handler, followed by a newline. -+At user level, the text is written to the standard output, except that if the -+argument begins with > or >>, then the text is written or appended to the -+specified FILE. In the kernel, the text is written to the system log. -+.IP "" 8 -+If \f(CWprint\fR's argument starts with a letter, '@', or '_', then it is treated -+as a read handler. Otherwise, it is treated as quoted text; \fBScript\fR prints the -+unquoted version. For example, assuming the 'c.count' read handler -+returns "0": -+.IP "" 8 -+.nf -+\& print c.count => 0 -+\& print "c.count" => c.count -+\& print '"c.count"' => "c.count" -+\& set x c.count -+\& print $x => c.count -+\& print $($x) => 0 -+.fi -+.IP "" 8 -+ -+ -+.IP "\&'\f(CWread\fR HANDLER [ARG...]'" 8 -+Call a read handler and print the handler name and result to standard error. (In the kernel, the result is printed to the system log.) For example, the -+configuration 'Idle -> c::Counter -> Idle; \fBScript\fR(read c.count)' would print -+print this to standard error: -+.IP "" 8 -+.nf -+\& c.count: -+\& 0 -+.fi -+.IP "" 8 -+Contrast the '\f(CWprint\fR' instruction. -+.IP "" 8 -+ -+.IP "\&'\f(CWwrite\fR HANDLER [ARG...]'" 8 -+Call a write handler. The handler's return status is available in following -+instructions as the '$?' variable. -+.IP "" 8 -+.IP "\&'\f(CWreadq\fR HANDLER [ARG...]', '\f(CWwriteq\fR HANDLER [ARG...]'" 8 -+Same as \f(CWread\fR and \f(CWwrite\fR, but removes one layer of quoting from the ARGs -+before calling the handler. -+.IP "" 8 -+.PP -+ -+.SS "Blocking Instructions" -+ -+ -+.IP "\&'\f(CWpause\fR [COUNT]'" 8 -+Block until the \fBScript\fR element's 'step' handler is called COUNT times. COUNT -+defaults to 1. -+.IP "" 8 -+.IP "\&'\f(CWwait\fR TIME'" 8 -+Wait for TIME seconds, or until a step, whichever comes first; then go to the -+next instruction. TIME has microsecond precision. -+.IP "" 8 -+.PP -+ -+.SS "Control Instructions" -+ -+ -+.IP "\&'\f(CWlabel\fR LABEL'" 8 -+Defines a label named LABEL. -+.IP "" 8 -+.IP "\&'\f(CWgoto\fR LABEL [CONDITION]'" 8 -+Transfers control to the named label. \fBScript\fR elements detect loops; if an -+element's script appears to be looping (it executes 1000 goto instructions -+without blocking), the script is disabled. If CONDITION is supplied, then the -+branch executes only when CONDITION is true. -+.IP "" 8 -+As a special case, '\f(CWgoto exit [CONDITION]\fR' or '\f(CWgoto end [CONDITION]\fR' -+ends execution of the script, much like an '\f(CWexit\fR' or '\f(CWend\fR' instruction. -+.IP "" 8 -+.IP "\&'\f(CWloop\fR'" 8 -+Transfers control to the first instruction. -+.IP "" 8 -+.IP "\&'\f(CWreturn\fR [VALUE]'" 8 -+End execution of this script, returning VALUE. This instruction is most -+useful for passive scripts; VALUE will be returned as the value of the \f(CWrun\fR -+handler. -+.IP "" 8 -+.IP "\&'\f(CWexit\fR', '\f(CWend\fR'" 8 -+End execution of this script. For signal scripts, the '\f(CWexit\fR' instruction -+\fIdoes not\fR reinstall the script, whereas the '\f(CWend\fR' instruction does. -+.IP "" 8 -+.PP -+ -+.SH "SCRIPT TYPES" -+Scripts come in several types, including active scripts, which start running -+as soon as the configuration is loaded; passive scripts, which run only when -+prodded; signal scripts, which run in response to a signal; and driver -+scripts, which are active scripts that also control when the driver stops. -+The optional TYPE keyword argument is used to select a script type. The types -+are: -+.PP -+ -+ -+.IP "\f(CWACTIVE\fR" 8 -+An active script starts running as soon as the router is initialized. This is -+the default. -+.IP "" 8 -+.IP "\f(CWPASSIVE\fR" 8 -+A passive script runs in response to a handler, namely the \f(CWrun\fR handler. -+Passive scripts can help build complex handlers from existing simple ones; for -+example, here's a passive script whose \f(CWs.run\fR read handler returns the sum -+of two Counter handlers. -+.IP "" 8 -+.nf -+\& ... c1 :: Counter ... c2 :: Counter ... -+\& s :: Script(TYPE PASSIVE, -+\& return $(add $(c1.count) $(c2.count))) -+.fi -+.IP "" 8 -+Within the script, the \f(CWrun\fR handler's arguments, if any, are available -+via the \f(CW$args\fR variable. The first, second, and so forth space-separated -+portions of \f(CW$args\fR are available via the \f(CW$1\fR, \f(CW$2\fR, ... variables. -+.nf -+\& -+.fi -+.IP "" 8 -+ -+ -+.IP "\f(CWDRIVER\fR" 8 -+A driver script manages the Click driver's stop events. See -+.M DriverManager "n" -+for -+more information. -+.IP "" 8 -+.IP "\f(CWSIGNAL\fR SIGNO..." 8 -+User-level only: A signal script runs in response to the signal(s) specified -+by the SIGNO argument(s). Each SIGNO can be an integer or a signal name, such -+as INT or HUP. Soon after the driver receives a named signal, this script -+will run. The signal handler is automatically blocked until the script runs. -+The signal script will be reinstalled atomically as long as the script -+completes without blocking. If it blocks, however, the signal script will not -+be installed from the blocking point until the script completes. If multiple -+\fBScript\fR elements select the same signal, all the scripts will run. -+.IP "" 8 -+.PP -+ -+.SH "SUBSTITUTIONS" -+Text in most \fBScript\fR instructions undergoes variable substitution. References -+to script variables, such as '\f(CW$x\fR', are replaced by the variable text. -+Additionally, the form '\f(CW$(HANDLER [ARG...])\fR' can be used to interpolate a -+read handler's value. Variable and handler references can be nested inside -+a '\f(CW$(...)\fR' block. For example, the following script will print 0, 1, 2, 3, -+and 4 on separate lines, then exit. Note the use of \fBScript\fR's arithmetic -+handlers. -+.PP -+.nf -+\& s :: Script(set x 0, -+\& label begin_loop, -+\& print $x, -+\& set x $(s.add $x 1), -+\& goto begin_loop $(s.lt $x 5), -+\& stop); -+.fi -+.PP -+This can be further shortened since local handler references do not require -+the element name. Thus, "$(s.add ...)" can be written "$(add ...)", as below. -+.PP -+.nf -+\& Script(set x 0, -+\& label begin_loop, -+\& print $x, -+\& set x $(add $x 1), -+\& goto begin_loop $(lt $x 5), -+\& stop); -+.fi -+.PP -+ -+ -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBstep\fR (write-only)" 5 -+Advance the instruction pointer past the current blocking instruction (\f(CWpause\fR or \f(CWwait\fR). A numeric argument will step past that many blocking instructions. -+.IP "" 5 -+.IP "\fBgoto\fR (write-only)" 5 -+Move the instruction pointer to the specified label. -+.IP "" 5 -+.IP "\fBrun\fR (read/write)" 5 -+Run the script. If the script ends with a '\f(CWreturn\fR' instruction, then the -+handler returns with that value. -+.IP "" 5 -+.IP "\fBadd\fR (read with parameters)" 5 -+Useful for arithmetic. Adds a space-separated list of integers; for example, -+\&'\f(CWadd 10 5 2\fR' returns "\f(CW17\fR". (At user level, the arithmetic and -+comparison operators can parse floating-point numbers as well as integers.) -+.IP "" 5 -+.IP "\fBsub\fR (read with parameters)" 5 -+Subtracts a space-separated list of -+numbers; for example, '\f(CWsub 10 5 2\fR' returns -+"\f(CW3\fR". -+.IP "" 5 -+.IP "\fBmul, div, idiv\fR (read with parameters)" 5 -+Multiplies or divides a space-separated list of numbers and returns the -+result. At user level, the '\f(CWidiv\fR' handler truncates its result to an -+integer and returns that, whereas the '\f(CWdiv\fR' handler returns a -+floating-point number; in the kernel, '\f(CWidiv\fR' and '\f(CWdiv\fR' both perform -+integer division. -+.IP "" 5 -+.IP "\fBeq, ne, lt, gt, le, ge\fR (read with parameters)" 5 -+Compares two parameters and return the result. For example, '\f(CWeq 10 -+0xA\fR' returns "\f(CWtrue\fR", but '\f(CWle 9 8\fR' returns "\f(CWfalse\fR". If either -+parameter cannot be interpreted as a number, performs a string comparison. -+For example, '\f(CWeq 10x 10x\fR' return "\f(CWtrue\fR". -+.IP "" 5 -+.IP "\fBnot\fR (read with parameters)" 5 -+Useful for true/false operations. Parses its parameter as a Boolean and -+returns its negation. -+.IP "" 5 -+.IP "\fBsprintf\fR (read with parameters)" 5 -+Parses its parameters as a space-separated list of arguments. The first -+argument is a format string; the remaining arguments are formatted -+accordingly. For example, '\f(CWsprintf "%05x" 127\fR' returns "\f(CW0007F\fR". -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M DriverManager "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/SetAnnoByte.n click-1.6.0-27/inst/share/man/mann/SetAnnoByte.n ---- click-1.6.0/inst/share/man/mann/SetAnnoByte.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/SetAnnoByte.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,42 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/setannobyte.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SETANNOBYTE" n "11/Feb/2009" "Click" -+.SH "NAME" -+SetAnnoByte \- Click element; -+sets packet user annotations -+.SH "SYNOPSIS" -+\fBSetAnnoByte\fR(OFFSET, VALUE) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Sets each packet's user annotation byte at OFFSET to VALUE, an integer -+0..255. Permissible values for OFFSET are 0 to n-1, inclusive, where -+n is typically 24. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBoffset\fR (read-only)" 5 -+Returns OFFSET -+.IP "" 5 -+.IP "\fBvalue\fR (read-only)" 5 -+Returns VALUE -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M Paint "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/SetCRC32.n click-1.6.0-27/inst/share/man/mann/SetCRC32.n ---- click-1.6.0/inst/share/man/mann/SetCRC32.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/SetCRC32.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,28 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/setcrc32.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SETCRC32" n "11/Feb/2009" "Click" -+.SH "NAME" -+SetCRC32 \- Click element; -+calculates CRC32 and prepends to packet -+.SH "SYNOPSIS" -+\fBSetCRC32\fR() -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Computes a CRC32 over each packet and appends the 4 CRC -+bytes to the packet. -+ -+.SH "SEE ALSO" -+.M CheckCRC32 "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/SetCycleCount.n click-1.6.0-27/inst/share/man/mann/SetCycleCount.n ---- click-1.6.0/inst/share/man/mann/SetCycleCount.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/SetCycleCount.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,42 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/linuxmodule/setcyclecount.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SETCYCLECOUNT" n "11/Feb/2009" "Click" -+.SH "NAME" -+SetCycleCount \- Click element; -+stores cycle count in annotation -+.SH "SYNOPSIS" -+\fBSetCycleCount\fR() -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBDrivers\fR: linuxmodule -+.br -+\fBPackage\fR: linuxmodule (core) -+.br -+.SH "DESCRIPTION" -+Stores the current cycle count in an annotation in each packet. In -+combination with -+.M CycleCountAccum "n" , -+this lets you measure how many cycles it -+takes a packet to pass from one point to another. -+.PP -+ -+.SH "NOTES" -+A packet has room for either exactly one cycle count or exactly one -+performance metric. -+.PP -+ -+.SH "SEE ALSO" -+.M CycleCountAccum n , -+.M RoundTripCycleCount n , -+.M SetPerfCount n , -+.M PerfCountAccum "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/SetIPAddress.n click-1.6.0-27/inst/share/man/mann/SetIPAddress.n ---- click-1.6.0/inst/share/man/mann/SetIPAddress.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/SetIPAddress.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,30 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/setipaddress.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SETIPADDRESS" n "11/Feb/2009" "Click" -+.SH "NAME" -+SetIPAddress \- Click element; -+sets destination IP address annotations -+.SH "SYNOPSIS" -+\fBSetIPAddress\fR(IPADDR) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Set the destination IP address annotation of incoming packets to the -+static IP address IPADDR. -+.PP -+ -+.SH "SEE ALSO" -+.M StoreIPAddress n , -+.M GetIPAddress "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/SetIPChecksum.n click-1.6.0-27/inst/share/man/mann/SetIPChecksum.n ---- click-1.6.0/inst/share/man/mann/SetIPChecksum.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/SetIPChecksum.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,41 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/setipchecksum.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SETIPCHECKSUM" n "11/Feb/2009" "Click" -+.SH "NAME" -+SetIPChecksum \- Click element; -+sets IP packets' checksums -+.SH "SYNOPSIS" -+\fBSetIPChecksum\fR() -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Expects an IP packet as input. -+Calculates the IP header's checksum and sets the checksum header field. -+.PP -+You will not normally need \fBSetIPChecksum\fR. Most elements that modify an IP -+header, like -+.M DecIPTTL "n" , -+.M SetIPDSCP "n" , -+and -+.M IPRewriter "n" , -+already update the -+checksum incrementally. -+.PP -+ -+.SH "SEE ALSO" -+.M CheckIPHeader n , -+.M DecIPTTL n , -+.M SetIPDSCP n , -+.M IPRewriter "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/SetIPDSCP.n click-1.6.0-27/inst/share/man/mann/SetIPDSCP.n ---- click-1.6.0/inst/share/man/mann/SetIPDSCP.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/SetIPDSCP.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,28 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/setipdscp.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SETIPDSCP" n "11/Feb/2009" "Click" -+.SH "NAME" -+SetIPDSCP \- Click element; -+sets IP packets' DSCP fields -+.SH "SYNOPSIS" -+\fBSetIPDSCP\fR(DSCP) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Expects IP packets as input and -+sets their Differential Services Code Point to DSCP. -+Then it incrementally recalculates the IP checksum -+and passes the packet to output 0. -+The DSCP is the upper 6 bits of the IP TOS field. -+ -diff -Nurb click-1.6.0/inst/share/man/mann/SetPacketType.n click-1.6.0-27/inst/share/man/mann/SetPacketType.n ---- click-1.6.0/inst/share/man/mann/SetPacketType.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/SetPacketType.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,28 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/setpackettype.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SETPACKETTYPE" n "11/Feb/2009" "Click" -+.SH "NAME" -+SetPacketType \- Click element; -+sets packet type annotation -+.SH "SYNOPSIS" -+\fBSetPacketType\fR(TYPE) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+\fBSetPacketType\fR sets passing packets' packet type annotations to TYPE. The -+packet type annotation tells Linux about the packet's link-level -+characteristics. For example, was the packet sent directly to this host, or -+was it broadcast? TYPE should be one of `\f(CWHOST\fR', `\f(CWBROADCAST\fR', -+`\f(CWMULTICAST\fR', `\f(CWOTHERHOST\fR', `\f(CWOUTGOING\fR', or `\f(CWLOOPBACK\fR'. -+ -diff -Nurb click-1.6.0/inst/share/man/mann/SetPerfCount.n click-1.6.0-27/inst/share/man/mann/SetPerfCount.n ---- click-1.6.0/inst/share/man/mann/SetPerfCount.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/SetPerfCount.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,46 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/linuxmodule/setperfcount.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SETPERFCOUNT" n "11/Feb/2009" "Click" -+.SH "NAME" -+SetPerfCount \- Click element; -+stores Pentium Pro performance metric in annotation -+.SH "SYNOPSIS" -+\fBSetPerfCount\fR(TYPE) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBDrivers\fR: linuxmodule -+.br -+\fBPackage\fR: linuxmodule (core) -+.br -+.SH "DESCRIPTION" -+Stores information about the Pentium Pro performance metric TYPE in each -+packet. In combination with -+.M PerfCountAccum "n" , -+this lets you measure how the -+metric changes over the packet's lifetime. -+.PP -+ -+.SH "NOTES" -+A packet has room for either exactly one cycle count or exactly one -+performance metric. -+.PP -+Valid performance metric names are \f(CWBUS_TRAN_INVAL\fR, \f(CWBUS_TRAN_MEM\fR, -+\f(CWDCU_MISS_OUTSTANDING\fR, \f(CWIFU_FETCH\fR, \f(CWIFU_FETCH_MISS\fR, \f(CWIFU_MEM_STALL\fR, -+\f(CWINST_RETIRED\fR, \f(CWL2_IFETCH\fR, \f(CWL2_LD\fR, \f(CWL2_LINES_IN\fR, \f(CWL2_LINES_OUT\fR, -+\f(CWL2_LINES_OUTM\fR, and \f(CWL2_RQSTS\fR. -+.PP -+ -+.SH "SEE ALSO" -+.M PerfCountAccum n , -+.M SetCycleCount n , -+.M CycleCountAccum "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/SetRandIPAddress.n click-1.6.0-27/inst/share/man/mann/SetRandIPAddress.n ---- click-1.6.0/inst/share/man/mann/SetRandIPAddress.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/SetRandIPAddress.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,33 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/setrandipaddress.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SETRANDIPADDRESS" n "11/Feb/2009" "Click" -+.SH "NAME" -+SetRandIPAddress \- Click element; -+sets destination IP address annotations randomly -+.SH "SYNOPSIS" -+\fBSetRandIPAddress\fR(PREFIX, [LIMIT]) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Set the destination IP address annotation to a random number within -+the specified PREFIX. -+.PP -+If LIMIT is given, at most LIMIT distinct addresses will be generated. -+.PP -+ -+.SH "SEE ALSO" -+.M StoreIPAddress n , -+.M GetIPAddress n , -+.M SetIPAddress "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/SetTCPChecksum.n click-1.6.0-27/inst/share/man/mann/SetTCPChecksum.n ---- click-1.6.0/inst/share/man/mann/SetTCPChecksum.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/SetTCPChecksum.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,34 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/tcpudp/settcpchecksum.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SETTCPCHECKSUM" n "11/Feb/2009" "Click" -+.SH "NAME" -+SetTCPChecksum \- Click element; -+sets TCP packets' checksums -+.SH "SYNOPSIS" -+\fBSetTCPChecksum\fR([FIXOFF]) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: tcpudp (core) -+.br -+.SH "DESCRIPTION" -+Input packets should be TCP in IP. -+.PP -+Calculates the TCP header's checksum and sets the checksum header field. -+Uses the IP header fields to generate the pseudo-header. -+.PP -+ -+.SH "SEE ALSO" -+.M CheckTCPHeader n , -+.M SetIPChecksum n , -+.M CheckIPHeader n , -+.M SetUDPChecksum "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/SetTimestamp.n click-1.6.0-27/inst/share/man/mann/SetTimestamp.n ---- click-1.6.0/inst/share/man/mann/SetTimestamp.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/SetTimestamp.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,45 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/settimestamp.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SETTIMESTAMP" n "11/Feb/2009" "Click" -+.SH "NAME" -+SetTimestamp \- Click element; -+store the time in the packet's timestamp annotation -+.SH "SYNOPSIS" -+\fBSetTimestamp\fR([TIMESTAMP, \fIkeyword\fR FIRST, DELTA]) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Store the specified TIMESTAMP in the packet's timestamp annotation. If -+TIMESTAMP is not specified, then sets the annotation to the system time when -+the packet arrived at the \fBSetTimestamp\fR element. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "FIRST" 8 -+Boolean. If true, then set the packet's "first timestamp" annotation, not its -+timestamp annotation. Default is true. -+.IP "" 8 -+.IP "DELTA" 8 -+Boolean. If true, then set the packet's timestamp annotation to the -+difference between its current timestamp annotation and its "first timestamp" -+annotation. Default is false. -+.IP "" 8 -+.PP -+ -+.SH "SEE ALSO" -+.M StoreTimestamp n , -+.M PrintOld "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/SetUDPChecksum.n click-1.6.0-27/inst/share/man/mann/SetUDPChecksum.n ---- click-1.6.0/inst/share/man/mann/SetUDPChecksum.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/SetUDPChecksum.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,38 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/tcpudp/setudpchecksum.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SETUDPCHECKSUM" n "11/Feb/2009" "Click" -+.SH "NAME" -+SetUDPChecksum \- Click element; -+sets UDP packets' checksums -+.SH "SYNOPSIS" -+\fBSetUDPChecksum\fR() -+ -+\fBPorts\fR: 1 input, 1-2 outputs -+.br -+\fBProcessing\fR: agnostic, but output 1 is push -+.br -+\fBPackage\fR: tcpudp (core) -+.br -+.SH "DESCRIPTION" -+Input packets must be UDP in IP (the protocol field isn't checked). -+.PP -+Calculates the UDP checksum and sets the UDP header's checksum field. Uses -+IP header fields to generate the pseudo-header. -+.PP -+If input packets are IP fragments, or the UDP length is longer than the -+packet, then pushes the input packets to the 2nd output, or drops them if -+there is no 2nd output. -+.PP -+ -+.SH "SEE ALSO" -+.M CheckUDPHeader n , -+.M SetIPChecksum n , -+.M CheckIPHeader n , -+.M SetTCPChecksum "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Shaper.n click-1.6.0-27/inst/share/man/mann/Shaper.n ---- click-1.6.0/inst/share/man/mann/Shaper.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Shaper.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,54 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/shaper.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SHAPER" n "11/Feb/2009" "Click" -+.SH "NAME" -+Shaper \- Click element; -+shapes traffic to maximum rate (pkt/s) -+.SH "SYNOPSIS" -+\fBShaper\fR(RATE) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: pull -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+\fBShaper\fR is a pull element that allows a maximum of RATE packets per second -+to pass through. That is, traffic is shaped to RATE packets per -+second. \fBShaper\fR is dependent on the timing of its pull requests; if it -+receives only sporadic pull requests, then it will emit packets only -+sporadically. However, if it receives a large number of evenly-spaced pull -+requests, then it will emit packets at the specified RATE with low -+burstiness. -+.PP -+ -+.SH "NOTES" -+\fBShaper\fR cannot implement every rate smoothly. For example, it can smoothly -+generate 1000000 packets per second and 1000244 packets per second, but not -+rates in between. (In-between rates will result in minor burstiness.) This -+granularity issue is negligible at low rates, and becomes serious at very -+high rates; for example, \fBShaper\fR cannot smoothly implement any rate between -+2.048e10 and 4.096e10 packets per second. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBrate\fR (read/write)" 5 -+Returns or sets the RATE parameter. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M BandwidthShaper n , -+.M RatedSplitter n , -+.M RatedUnqueue "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/SimpleQueue.n click-1.6.0-27/inst/share/man/mann/SimpleQueue.n ---- click-1.6.0/inst/share/man/mann/SimpleQueue.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/SimpleQueue.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,80 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/simplequeue.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SIMPLEQUEUE" n "11/Feb/2009" "Click" -+.SH "NAME" -+SimpleQueue \- Click element; -+stores packets in a FIFO queue -+.SH "SYNOPSIS" -+SimpleQueue -+.br -+\fBSimpleQueue\fR(CAPACITY) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: push inputs, pull outputs -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Stores incoming packets in a first-in-first-out queue. -+Drops incoming packets if the queue already holds CAPACITY packets. -+The default for CAPACITY is 1000. -+.PP -+\fBMultithreaded Click note:\fR \fBSimpleQueue\fR is designed to be used in an -+environment with at most one concurrent pusher and at most one concurrent -+puller. Thus, at most one thread pushes to the \fBSimpleQueue\fR at a time and at -+most one thread pulls from the \fBSimpleQueue\fR at a time. Different threads can -+push to and pull from the \fBSimpleQueue\fR concurrently, however. See -+.M MSQueue "n" -+for -+a queue that can support multiple concurrent pushers. -+.PP -+ -+.SH "NOTES" -+The -+.M Queue "n" -+and -+.M NotifierQueue "n" -+elements act like \fBSimpleQueue\fR, but additionally -+notify interested parties when they change state (from nonempty to empty or -+vice versa, and/or from nonfull to full or vice versa). -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBlength\fR (read-only)" 5 -+Returns the current number of packets in the queue. -+.IP "" 5 -+.IP "\fBhighwater_length\fR (read-only)" 5 -+Returns the maximum number of packets that have ever been in the queue at once. -+.IP "" 5 -+.IP "\fBcapacity\fR (read/write)" 5 -+Returns or sets the queue's capacity. -+.IP "" 5 -+.IP "\fBdrops\fR (read-only)" 5 -+Returns the number of packets dropped by the queue so far. -+.IP "" 5 -+.IP "\fBreset_counts\fR (write-only)" 5 -+When written, resets the \f(CWdrops\fR and \f(CWhighwater_length\fR counters. -+.IP "" 5 -+.IP "\fBreset\fR (write-only)" 5 -+When written, drops all packets in the queue. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M Queue n , -+.M NotifierQueue n , -+.M MixedQueue n , -+.M RED n , -+.M FrontDropQueue n , -+.M MSQueue "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Socket.n click-1.6.0-27/inst/share/man/mann/Socket.n ---- click-1.6.0/inst/share/man/mann/Socket.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Socket.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,165 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/userlevel/socket.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SOCKET" n "11/Feb/2009" "Click" -+.SH "NAME" -+Socket \- Click element; -+a socket transport (user-level) -+.SH "SYNOPSIS" -+\fBSocket\fR("TCP", IP, PORTNUMBER [, LOCALIP] [, LOCALPORTNUMBER] [, \fIKEYWORDS\fR]) -+.br -+\fBSocket\fR("UDP", IP, PORTNUMBER [, LOCALIP] [, LOCALPORTNUMBER] [, \fIKEYWORDS\fR]) -+.br -+\fBSocket\fR("UNIX", FILENAME [, LOCALFILENAME] [, \fIKEYWORDS\fR]) -+.br -+\fBSocket\fR("UNIX_DGRAM", FILENAME [, LOCALFILENAME] [, \fIKEYWORDS\fR]) -+ -+\fBPorts\fR: at most 1 input, at most 1 output -+.br -+\fBDrivers\fR: userlevel -+.br -+\fBPackage\fR: userlevel (core) -+.br -+.SH "DESCRIPTION" -+Transports packets over various types of sockets. Packets do not flow -+through \fBSocket\fR elements (i.e., \fBSocket\fR is an "x/y" element). Instead, -+input packets are sent to a remote host or process, and packets -+received from the remote host or process are emitted on the output. -+.PP -+A \fBSocket\fR element of type "TCP" or "UNIX" may be either a server (the -+default if CLIENT is not set) or a client (if CLIENT is set or if the -+element has no outputs). If a server, the specified address/port/file -+is bound and connections are accepted one at a time. If a client, a -+connection attempt is made to the specified address/port/file during -+element initialization. -+.PP -+A \fBSocket\fR element of type "UDP" or "UNIX_DGRAM" may also be either a -+server or client. However, because datagram sockets are not connection -+oriented, a datagram server may receive (and thus emit) packets from -+multiple remote hosts or processes. If a server, input packets are -+sent to the last remote host or process to send a packet to the -+server. If a client, input packets are sent to the specified -+address/port/file. -+.PP -+For convenience, if a client UDP \fBSocket\fR is configured with a zero IP -+address, the \fBSocket\fR will send input packets to the destination IP -+annotation of each packet. -+.PP -+If "LOCALIP"/"LOCALPORTNUMBER" or "LOCALFILENAME" is specified, CLIENT -+is assumed if not set and the specified local address/port/file will -+be bound before the connection attempt is made. If CLIENT is set to -+false, any "LOCALIP"/"LOCALPORTNUMBER" and "LOCALFILENAME" arguments -+are ignored. -+.PP -+\fBSocket\fR inputs are agnostic, i.e., they may be either "pull" or -+"push". If pushed, packets will block on the underlying socket; -+otherwise, the socket will pull packets as it can accept them. For -+best performance, place a Notifier element (such as NotifierQueue) -+upstream of a "pull" \fBSocket\fR. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "SNAPLEN" 8 -+Unsigned integer. Maximum length of packets that can be -+received. Default is 2048 bytes. -+.IP "" 8 -+.IP "NODELAY" 8 -+Boolean. Applies to TCP sockets only. If set, disable the Nagle -+algorithm. This means that segments are always sent as soon as -+possible, even if there is only a small amount of data. When not set, -+data is buffered until there is a sufficient amount to send out, -+thereby avoiding the frequent sending of small packets, which results -+in poor utilization of the network. Default is true. -+.IP "" 8 -+.IP "CLIENT" 8 -+Boolean. If set, forces the socket to connect() (if SOCK_STREAM) to -+the specified address/port (if AF_INET) or file handle (if AF_UNIX), -+instead of bind()-ing and listen()-ing to it. -+.IP "" 8 -+Default is false. However, if a \fBSocket\fR element has no output and -+CLIENT is unspecified, it is assumed to be a client socket. If a -+\fBSocket\fR element has no input and CLIENT is unspecified, it is assumed -+to be a server socket. -+.IP "" 8 -+.IP "SNDBUF" 8 -+Unsigned integer. Sets the maximum size in bytes of the underlying -+socket send buffer. The default value is set by the wmem_default -+sysctl and the maximum allowed value is set by the wmem_max sysctl. -+.IP "" 8 -+.IP "RCVBUF" 8 -+Unsigned integer. Sets the maximum size in bytes of the underlying -+socket receive buffer. The default value is set by the rmem_default -+sysctl and the maximum allowed value is set by the rmem_max sysctl. -+.IP "" 8 -+.IP "TIMESTAMP" 8 -+Boolean. If set, sets the timestamp field on received packets to the -+current time. Default is true. -+.IP "" 8 -+.IP "ALLOW" 8 -+The name of an IPRouteTable element, like RadixIPLookup or -+DirectIPLookup. If set and the \fBSocket\fR element is a server, the \fBSocket\fR -+element will lookup source IP addresses of clients in the specified -+IPRouteTable before accepting a connection (if SOCK_STREAM) or -+datagram (if SOCK_DGRAM). If the address is found, the connection or -+datagram is accepted. If the address is not found, the DENY table will -+then be checked (see below). -+.IP "" 8 -+.IP "DENY" 8 -+The name of an IPRouteTable element, like RadixIPLookup or -+DirectIPLookup. If set and the \fBSocket\fR element is a server, the \fBSocket\fR -+element will lookup source IP addresses of clients in the specified -+IPRouteTable before accepting a connection (if SOCK_STREAM) or -+datagram (if SOCK_DGRAM). If the address is found, the connection or -+datagram is dropped, otherwise it is accepted. Note that the ALLOW -+table, if specified, is checked first. Wildcard matches may be -+specified with netmasks; for example, to deny all hosts, specify a -+route to "0.0.0.0/0" in the DENY table. -+.IP "" 8 -+.IP "VERBOSE" 8 -+Boolean. When true, \fBSocket\fR will print messages whenever it accepts a -+new connection or drops an old one. Default is false. -+.IP "" 8 -+.IP "PROPER" 8 -+Boolean. PlanetLab specific. If true and Click has been configured -+--with-proper, use Proper to bind a reserved port. -+.IP "" 8 -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& // A server socket -+\& Socket(TCP, 0.0.0.0, 80) -> ... -+\& -+\& // A client socket -+\& ... -> Socket(TCP, 1.2.3.4, 80) -+\& -+\& // A bi-directional server socket (handles one client at a time) -+\& ... -> Socket(TCP, 0.0.0.0, 80) -> ... -+\& -+\& // A bi-directional client socket -+\& ... -> Socket(TCP, 1.2.3.4, 80, CLIENT true) -> ... -+\& -+\& // A bi-directional client socket bound to a particular local port -+\& ... -> Socket(TCP, 1.2.3.4, 80, 0.0.0.0, 54321) -> ... -+\& -+\& // A localhost server socket -+\& allow :: RadixIPLookup(127.0.0.1 0); -+\& deny :: RadixIPLookup(0.0.0.0/0 0); -+\& allow -> deny -> allow; // (makes the configuration valid) -+\& Socket(TCP, 0.0.0.0, 80, ALLOW allow, DENY deny) -> ... -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M RawSocket "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/SortedIPLookup.n click-1.6.0-27/inst/share/man/mann/SortedIPLookup.n ---- click-1.6.0/inst/share/man/mann/SortedIPLookup.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/SortedIPLookup.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,34 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/sortediplookup.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SORTEDIPLOOKUP" n "11/Feb/2009" "Click" -+.SH "NAME" -+SortedIPLookup \- Click element; -+simple IP routing table -+.SH "SYNOPSIS" -+\fBSortedIPLookup\fR(ADDR1/MASK1 [GW1] OUT1, ADDR2/MASK2 [GW2] OUT2, ...) -+ -+\fBPorts\fR: 1 input, any number of outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+\fBSortedIPLookup\fR is a version of -+.M LinearIPLookup "n" -+that sorts the routing table. -+In practice, however, it performs worse than -+.M LinearIPLookup "n" , -+which itself -+performs terribly, so it is deprecated. -+.PP -+ -+.SH "SEE ALSO" -+.M LinearIPLookup "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/SourceIPHashMapper.n click-1.6.0-27/inst/share/man/mann/SourceIPHashMapper.n ---- click-1.6.0/inst/share/man/mann/SourceIPHashMapper.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/SourceIPHashMapper.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,40 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/siphmapper.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SOURCEIPHASHMAPPER" n "11/Feb/2009" "Click" -+.SH "NAME" -+SourceIPHashMapper \- Click element; -+Source IP Hash mapper for -+.M IPRewriter n -+.SH "SYNOPSIS" -+\fBSourceIPHashMapper\fR(NNODES SEED, PATTERN1, ..., PATTERNn) -+ -+\fBPorts\fR: none -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Works in tandem with -+.M IPRewriter "n" -+to provide source IP-based rewriting. -+This is useful, for example, in load-balancing applications. Implements the -+IPMapper interface. -+.PP -+Like -+.M RoundRobinIPMapper "n" , -+but also uses consistent hashing to map -+map elements by source IP to the same node in the cluster, even -+if nodes are added or removed. -+.PP -+ -+.SH "SEE ALSO" -+.M IPRewriter n , -+.M TCPRewriter n , -+.M IPRewriterPatterns n , -+.M RoundRobinIPMapper "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/SpinlockAcquire.n click-1.6.0-27/inst/share/man/mann/SpinlockAcquire.n ---- click-1.6.0/inst/share/man/mann/SpinlockAcquire.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/SpinlockAcquire.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,24 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/spinlockacquire.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SPINLOCKACQUIRE" n "11/Feb/2009" "Click" -+.SH "NAME" -+SpinlockAcquire \- Click element; -+acquires spinlock -+.SH "SYNOPSIS" -+\fBSpinlockAcquire\fR(LOCK) -+ -+\fBPorts\fR: any number of inputs, any number of outputs -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Acquires the spinlock named LOCK. LOCK must be defined in a SpinlockInfo element. -+ -diff -Nurb click-1.6.0/inst/share/man/mann/SpinlockInfo.n click-1.6.0-27/inst/share/man/mann/SpinlockInfo.n ---- click-1.6.0/inst/share/man/mann/SpinlockInfo.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/SpinlockInfo.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,24 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/spinlockinfo.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SPINLOCKINFO" n "11/Feb/2009" "Click" -+.SH "NAME" -+SpinlockInfo \- Click element; -+specifies names of spinlocks -+.SH "SYNOPSIS" -+\fBSpinlockInfo\fR(NAME, ...) -+ -+\fBPorts\fR: none -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Lets you use mnemonic names for spinlocks. Each name names a spinlock that -+the SpinlockAcquire and SpinlockRelease elements can use to reference a -+spinlock. -+ -diff -Nurb click-1.6.0/inst/share/man/mann/SpinlockRelease.n click-1.6.0-27/inst/share/man/mann/SpinlockRelease.n ---- click-1.6.0/inst/share/man/mann/SpinlockRelease.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/SpinlockRelease.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,24 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/spinlockrelease.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SPINLOCKRELEASE" n "11/Feb/2009" "Click" -+.SH "NAME" -+SpinlockRelease \- Click element; -+releases spinlock -+.SH "SYNOPSIS" -+\fBSpinlockRelease\fR(LOCK) -+ -+\fBPorts\fR: any number of inputs, any number of outputs -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Releases the spinlock named LOCK. LOCK must be defined in a SpinlockInfo element. -+ -diff -Nurb click-1.6.0/inst/share/man/mann/StaticIPLookup.n click-1.6.0-27/inst/share/man/mann/StaticIPLookup.n ---- click-1.6.0/inst/share/man/mann/StaticIPLookup.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/StaticIPLookup.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,60 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/lookupiproute.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "STATICIPLOOKUP" n "11/Feb/2009" "Click" -+.SH "NAME" -+StaticIPLookup \- Click element; -+simple static IP routing table -+.SH "SYNOPSIS" -+\fBStaticIPLookup\fR(ADDR1/MASK1 [GW1] OUT1, ADDR2/MASK2 [GW2] OUT2, ...) -+ -+\fBPorts\fR: 1 input, any number of outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+\fBNote:\fR Lookups and table updates with \fBStaticIPLookup\fR are extremely slow; the -+.M RadixIPLookup "n" , -+.M DirectIPLookup "n" , -+and -+.M RangeIPLookup "n" -+elements should be preferred -+in almost all cases. See -+.M IPRouteTable "n" -+for a performance comparison. We -+provide \fBStaticIPLookup\fR nevertheless for its simplicity. -+.PP -+This element acts like -+.M LinearIPLookup "n" , -+but does not allow dynamic adding and -+deleting of routes. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBtable\fR (read-only)" 5 -+Outputs a human-readable version of the current routing table. -+.IP "" 5 -+.IP "\fBlookup\fR (read-only)" 5 -+Reports the OUTput port and GW corresponding to an address. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M RadixIPLookup n , -+.M DirectIPLookup n , -+.M RangeIPLookup n , -+.M LinearIPLookup n , -+.M SortedIPLookup n , -+.M LinuxIPLookup n , -+.M IPRouteTable "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/StaticPullSwitch.n click-1.6.0-27/inst/share/man/mann/StaticPullSwitch.n ---- click-1.6.0/inst/share/man/mann/StaticPullSwitch.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/StaticPullSwitch.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,41 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/staticpullswitch.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "STATICPULLSWITCH" n "11/Feb/2009" "Click" -+.SH "NAME" -+StaticPullSwitch \- Click element; -+forwards pull requests to fixed input -+.SH "SYNOPSIS" -+\fBStaticPullSwitch\fR(INPUT) -+ -+\fBPorts\fR: any number of inputs, 1 output -+.br -+\fBProcessing\fR: pull -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+On every pull, \fBStaticPullSwitch\fR returns the packet pulled from one of its -+input ports -- specifically, INPUT. Negative INPUTs mean always return -+a null packet. \fBStaticPullSwitch\fR has an unlimited number of inputs. -+.PP -+ -+.SH "NOTES" -+\fBStaticPullSwitch\fR differs from -+.M PullSwitch "n" -+in that it has no \f(CWswitch\fR write -+handler, and thus does not allow INPUT to be changed at run time. -+.PP -+ -+.SH "SEE ALSO" -+.M PullSwitch n , -+.M PrioSched n , -+.M RoundRobinSched n , -+.M StrideSched n , -+.M Switch "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/StaticSwitch.n click-1.6.0-27/inst/share/man/mann/StaticSwitch.n ---- click-1.6.0/inst/share/man/mann/StaticSwitch.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/StaticSwitch.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,40 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/staticswitch.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "STATICSWITCH" n "11/Feb/2009" "Click" -+.SH "NAME" -+StaticSwitch \- Click element; -+sends packet stream to fixed output -+.SH "SYNOPSIS" -+\fBStaticSwitch\fR(OUTPUT) -+ -+\fBPorts\fR: 1 input, any number of outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+\fBStaticSwitch\fR sends every incoming packet to one of its output ports -- -+specifically, OUTPUT. Negative OUTPUT means to destroy input packets -+instead of forwarding them. \fBStaticSwitch\fR has an unlimited number of -+outputs. -+.PP -+ -+.SH "NOTES" -+\fBStaticSwitch\fR differs from -+.M Switch "n" -+in that it has no \f(CWswitch\fR write handler, -+and thus does not allow OUTPUT to be changed at run time. -+.PP -+ -+.SH "SEE ALSO" -+.M Switch n , -+.M StrideSwitch n , -+.M PullSwitch "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/StaticThreadSched.n click-1.6.0-27/inst/share/man/mann/StaticThreadSched.n ---- click-1.6.0/inst/share/man/mann/StaticThreadSched.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/StaticThreadSched.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,30 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/linuxmodule/staticthreadsched.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "STATICTHREADSCHED" n "11/Feb/2009" "Click" -+.SH "NAME" -+StaticThreadSched \- Click element; -+specifies element and thread scheduling parameters -+.SH "SYNOPSIS" -+\fBStaticThreadSched\fR(ELEMENT THREAD, ...) -+ -+\fBPorts\fR: none -+.br -+\fBDrivers\fR: linuxmodule -+.br -+\fBPackage\fR: linuxmodule (core) -+.br -+.SH "DESCRIPTION" -+Statically binds elements to threads. If more than one \fBStaticThreadSched\fR -+is specified, they will all run. The one that runs later may override an -+earlier run. -+ -+.SH "SEE ALSO" -+.M ThreadMonitor n , -+.M BalancedThreadSched "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/StoreData.n click-1.6.0-27/inst/share/man/mann/StoreData.n ---- click-1.6.0/inst/share/man/mann/StoreData.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/StoreData.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,29 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/storedata.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "STOREDATA" n "11/Feb/2009" "Click" -+.SH "NAME" -+StoreData \- Click element; -+changes packet data -+.SH "SYNOPSIS" -+\fBStoreData\fR(OFFSET, DATA) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Changes packet data starting at OFFSET to DATA. -+.PP -+ -+.SH "SEE ALSO" -+.M AlignmentInfo n , -+click-align(1) -+ -diff -Nurb click-1.6.0/inst/share/man/mann/StoreIPAddress.n click-1.6.0-27/inst/share/man/mann/StoreIPAddress.n ---- click-1.6.0/inst/share/man/mann/StoreIPAddress.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/StoreIPAddress.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,69 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/storeipaddress.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "STOREIPADDRESS" n "11/Feb/2009" "Click" -+.SH "NAME" -+StoreIPAddress \- Click element; -+stores IP address in packet -+.SH "SYNOPSIS" -+\fBStoreIPAddress\fR(OFFSET) -+.br -+\fBStoreIPAddress\fR(ADDRESS, OFFSET) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+The one-argument form writes the destination IP address annotation into the -+packet at offset OFFSET, usually an integer. But if the annotation is zero, it -+doesn't change the packet. -+.PP -+The two-argument form writes ADDRESS into the packet at offset OFFSET. ADDRESS -+can be zero. -+.PP -+The OFFSET argument may be the special string 'src' or 'dst'. In this case, -+incoming packets must be IP packets. \fBStoreIPAddress\fR writes the address into -+either the source or destination field of the IP packet header, as specified, -+and incrementally updates the IP checksum (and, if appropriate, the TCP/UDP -+checksum) to account for the change. -+.PP -+ -+.SH "NOTES" -+Unless you use a special OFFSET of 'src' or 'dst', this element doesn't -+recalculate any checksums. If you store the address into an existing IP -+packet, the packet's checksum will need to be set -- for example, with -+.M SetIPChecksum "n" . -+And don't forget that you might need to recalculate TCP and UDP -+checksums as well. Here's a useful compound element: -+.PP -+.nf -+\& elementclass FixIPChecksums { -+\& // fix the IP checksum, and any embedded checksums that -+\& // include data from the IP header (TCP and UDP in particular) -+\& input -> SetIPChecksum -+\& -> ipc :: IPClassifier(tcp, udp, -) -+\& -> SetTCPChecksum -+\& -> output; -+\& ipc[1] -> SetUDPChecksum -> output; -+\& ipc[2] -> output -+\& } -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M SetIPChecksum n , -+.M SetTCPChecksum n , -+.M SetUDPChecksum n , -+.M IPAddrPairRewriter n , -+.M IPAddrRewriter "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/StrideSched.n click-1.6.0-27/inst/share/man/mann/StrideSched.n ---- click-1.6.0/inst/share/man/mann/StrideSched.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/StrideSched.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,52 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/stridesched.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "STRIDESCHED" n "11/Feb/2009" "Click" -+.SH "NAME" -+StrideSched \- Click element; -+pulls from stride-scheduled inputs -+.SH "SYNOPSIS" -+\fBStrideSched\fR(TICKETS0, ..., TICKETS\fIN-1\fR) -+ -+\fBPorts\fR: 1 or more inputs, 1 output -+.br -+\fBProcessing\fR: pull -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Has one output and N inputs. Performs simple packet-based stride -+scheduling, assigning TICKETS\fIi\fR to input \fIi\fR for each input. -+.PP -+Each time a pull comes in on the output, it pulls on its inputs in the order -+specified by the stride scheduling queue, until all inputs have been tried -+or one produces a packet. If an input does not produce a packet, it is not -+tried again in the current round (for the current pull on the output) even -+if it has a very short stride. This minimizes overhead and ensures that -+an input that produces a packet, if any, is found as soon as possible, -+consistently with the stride scheduler ordering. -+.PP -+The inputs usually come from Queues or other pull schedulers. -+\fBStrideSched\fR uses notification to avoid pulling from empty inputs. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBtickets0...tickets\fIN-1\fB\fR (read/write)" 5 -+Returns or sets the number of tickets for each input port. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M PrioSched n , -+.M RoundRobinSched n , -+.M DRRSched n , -+.M StrideSwitch "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/StrideSwitch.n click-1.6.0-27/inst/share/man/mann/StrideSwitch.n ---- click-1.6.0/inst/share/man/mann/StrideSwitch.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/StrideSwitch.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,45 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/strideswitch.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "STRIDESWITCH" n "11/Feb/2009" "Click" -+.SH "NAME" -+StrideSwitch \- Click element; -+sends packets to stride-scheduled outputs -+.SH "SYNOPSIS" -+\fBStrideSwitch\fR(TICKETS0, ..., TICKETS\fIN-1\fR) -+ -+\fBPorts\fR: 1 input, 1 or more outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Has one input and N outputs. Performs simple packet-based stride -+switching, assigning TICKETS\fIi\fR to output \fIi\fR. -+.PP -+Each time a packet arrives on the input, \fBStrideSwitch\fR sends the packet to -+the next scheduled output according to the stride scheduling algorithm. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBtickets0...tickets\fIN-1\fB\fR (read/write)" 5 -+Returns or sets the number of tickets for each output port. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M RoundRobinSwitch n , -+.M Switch n , -+.M HashSwitch n , -+.M RandomSwitch n , -+.M StrideSched "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Strip.n click-1.6.0-27/inst/share/man/mann/Strip.n ---- click-1.6.0/inst/share/man/mann/Strip.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Strip.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,41 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/strip.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "STRIP" n "11/Feb/2009" "Click" -+.SH "NAME" -+Strip \- Click element; -+strips bytes from front of packets -+.SH "SYNOPSIS" -+\fBStrip\fR(LENGTH) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Deletes the first LENGTH bytes from each packet. -+ -+.SH "EXAMPLES" -+Use this to get rid of the Ethernet header: -+.PP -+.nf -+\& Strip(14) -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M StripToNetworkHeader n , -+.M StripIPHeader n , -+.M EtherEncap n , -+.M IPEncap n , -+.M Truncate "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/StripIPHeader.n click-1.6.0-27/inst/share/man/mann/StripIPHeader.n ---- click-1.6.0/inst/share/man/mann/StripIPHeader.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/StripIPHeader.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,42 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/stripipheader.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "STRIPIPHEADER" n "11/Feb/2009" "Click" -+.SH "NAME" -+StripIPHeader \- Click element; -+strips outermost IP header -+.SH "SYNOPSIS" -+\fBStripIPHeader\fR() -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Strips the outermost IP header from IP packets, based on the IP Header -+annotation. -+.PP -+Note that the packet's annotations are not changed. Thus, the packet's IP -+header annotation continues to point at the IP header, even though the IP -+header's data is now out of range. To correctly handle an IP-in-IP packet, -+you will probably need to follow \fBStripIPHeader\fR with a -+.M CheckIPHeader "n" -+or -+.M MarkIPHeader "n" -+element, thus marking the packet's inner header. -+.PP -+ -+.SH "SEE ALSO" -+.M CheckIPHeader n , -+.M CheckIPHeader2 n , -+.M MarkIPHeader n , -+.M UnstripIPHeader n , -+.M Strip "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/StripToNetworkHeader.n click-1.6.0-27/inst/share/man/mann/StripToNetworkHeader.n ---- click-1.6.0/inst/share/man/mann/StripToNetworkHeader.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/StripToNetworkHeader.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,33 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/striptonet.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "STRIPTONETWORKHEADER" n "11/Feb/2009" "Click" -+.SH "NAME" -+StripToNetworkHeader \- Click element; -+strips everything preceding network header -+.SH "SYNOPSIS" -+\fBStripToNetworkHeader\fR() -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Strips any data preceding the network header from every passing packet. -+Requires a network header annotation, such as an IP header annotation, -+on every packet. -+If the packet's network header annotation points before the start of the -+packet data, then \fBStripToNetworkHeader\fR will move the packet data pointer -+back, to point at the network header. -+.PP -+ -+.SH "SEE ALSO" -+.M Strip "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Suppressor.n click-1.6.0-27/inst/share/man/mann/Suppressor.n ---- click-1.6.0/inst/share/man/mann/Suppressor.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Suppressor.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,41 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/suppressor.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SUPPRESSOR" n "11/Feb/2009" "Click" -+.SH "NAME" -+Suppressor \- Click element; -+passes packets unchanged, optionally dropping some input ports -+.SH "SYNOPSIS" -+Suppressor -+ -+\fBPorts\fR: any number of inputs, the same number of outputs -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+\fBSuppressor\fR has \fIn\fR inputs and \fIn\fR outputs. It generally passes packets -+from input \fIi\fR to output \fIi\fR unchanged. However, any input port can be -+suppressed, through a handler or a method call by another element. Packets -+arriving on suppressed push input ports are dropped; pull requests arriving -+on suppressed pull output ports are ignored. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBactive0...active\fIN-1\fB\fR (read/write)" 5 -+Returns or sets whether each port is active (that is, not suppressed). -+Every port starts out active. -+.IP "" 5 -+.IP "\fBreset\fR (write-only)" 5 -+Resets every port to active. -+.PP -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Switch.n click-1.6.0-27/inst/share/man/mann/Switch.n ---- click-1.6.0/inst/share/man/mann/Switch.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Switch.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,52 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/switch.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "SWITCH" n "11/Feb/2009" "Click" -+.SH "NAME" -+Switch \- Click element; -+sends packet stream to settable output -+.SH "SYNOPSIS" -+\fBSwitch\fR([OUTPUT]) -+ -+\fBPorts\fR: 1 input, any number of outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+\fBSwitch\fR sends every incoming packet to one of its output ports -- -+specifically, OUTPUT. The default OUTPUT is zero; negative OUTPUT means to -+destroy input packets instead of forwarding them. You can change OUTPUT with a -+write handler. \fBSwitch\fR has an unlimited number of outputs. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBswitch\fR (read/write)" 5 -+Return or set the OUTPUT parameter. -+.IP "" 5 -+.IP "\fBCLICK_LLRPC_GET_SWITCH\fR (llrpc)" 5 -+Argument is a pointer to an integer, in which the \fBSwitch\fR's K parameter is -+stored. -+.IP "" 5 -+.IP "\fBCLICK_LLRPC_SET_SWITCH\fR (llrpc)" 5 -+Argument is a pointer to an integer. Sets the K parameter to that integer. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M StaticSwitch n , -+.M PullSwitch n , -+.M RoundRobinSwitch n , -+.M StrideSwitch n , -+.M HashSwitch n , -+.M RandomSwitch "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/TCPRewriter.n click-1.6.0-27/inst/share/man/mann/TCPRewriter.n ---- click-1.6.0/inst/share/man/mann/TCPRewriter.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/TCPRewriter.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,87 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/tcpudp/tcprewriter.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "TCPREWRITER" n "11/Feb/2009" "Click" -+.SH "NAME" -+TCPRewriter \- Click element; -+rewrites TCP packets' addresses, ports, and sequence numbers -+.SH "SYNOPSIS" -+\fBTCPRewriter\fR(INPUTSPEC1, ..., INPUTSPECn [, KEYWORDS]) -+ -+\fBPorts\fR: 1 or more inputs, 1-256 outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: tcpudp (core) -+.br -+.SH "DESCRIPTION" -+Rewrites TCP flows by changing their source address, source port, destination -+address, and/or destination port, and optionally, their sequence numbers and -+acknowledgement numbers. It also changes the destination IP address -+annotation; see the DST_ANNO keyword argument below. -+.PP -+This element is an -+.M IPRewriter "n" -like -+element. Please read the -+.M IPRewriter "n" -+documentation for more information and a detailed description of its -+INPUTSPEC arguments. -+.PP -+In addition to -+.M IPRewriter "n" 's -+functionality, the \fBTCPRewriter\fR element can add or -+subtract amounts from incoming packets' sequence and acknowledgement numbers, -+including any SACK acknowledgement numbers. Each newly created mapping starts -+with these deltas at zero; other elements can request changes to a given -+mapping. For example, -+.M FTPPortMapper "n" -+uses this facility. -+.PP -+Keyword arguments determine how often stale mappings should be removed. -+.PP -+ -+ -+.IP "TCP_TIMEOUT \fItime\fR" 5 -+Time out TCP connections every \fItime\fR seconds. Default is 24 hours. -+.IP "" 5 -+.IP "TCP_DONE_TIMEOUT \fItime\fR" 5 -+Time out completed TCP connections every \fItime\fR seconds. Default is 30 -+seconds. FIN and RST flags mark TCP connections as complete. -+.IP "" 5 -+.IP "REAP_TCP \fItime\fR" 5 -+Reap timed-out TCP connections every \fItime\fR seconds. If no packets -+corresponding to a given mapping have been seen for TCP_TIMEOUT, remove the -+mapping as stale. Default is 1 hour. -+.IP "" 5 -+.IP "REAP_TCP_DONE \fItime\fR" 5 -+Reap timed-out completed TCP connections every \fItime\fR seconds. Default is 10 -+seconds. -+.IP "" 5 -+.IP "DST_ANNO" 5 -+Boolean. If true, then set the destination IP address annotation on passing -+packets to the rewritten destination address. Default is true. -+.IP "" 5 -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBmappings\fR (read-only)" 5 -+Returns a human-readable description of the \fBTCPRewriter\fR's current set of -+mappings. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M IPRewriter n , -+.M IPAddrRewriter n , -+.M IPAddrPairRewriter n , -+.M IPRewriterPatterns n , -+.M FTPPortMapper "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Tee.n click-1.6.0-27/inst/share/man/mann/Tee.n ---- click-1.6.0/inst/share/man/mann/Tee.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Tee.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,34 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/tee.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "TEE, PULLTEE" n "11/Feb/2009" "Click" -+.SH "NAME" -+Tee, PullTee \- Click elements; -+duplicates packets -+.SH "SYNOPSIS" -+\fBTee\fR([N]) -+.br -+\fBPullTee\fR([N]) -+ -+\fBPorts\fR: 1 input, 1 or more outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+\fBTee\fR sends a copy of each incoming packet out each output. -+.PP -+\fBPullTee\fR's input and its first output are pull; its other outputs are push. -+Each time the pull output pulls a packet, it -+sends a copy out the push outputs. -+.PP -+\fBTee\fR and \fBPullTee\fR have however many outputs are used in the configuration, -+but you can say how many outputs you expect with the optional argument -+N. -+ -diff -Nurb click-1.6.0/inst/share/man/mann/TimedSink.n click-1.6.0-27/inst/share/man/mann/TimedSink.n ---- click-1.6.0/inst/share/man/mann/TimedSink.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/TimedSink.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,28 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/timedsink.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "TIMEDSINK" n "11/Feb/2009" "Click" -+.SH "NAME" -+TimedSink \- Click element; -+periodically pulls and drops a packet -+.SH "SYNOPSIS" -+\fBTimedSink\fR([INTERVAL]) -+ -+\fBPorts\fR: 1 input, no outputs -+.br -+\fBProcessing\fR: pull -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Pulls one packet every INTERVAL seconds from its input. -+Discards the packet. Default INTERVAL is 500 milliseconds. -+ -+.SH "SEE ALSO" -+.M Shaper "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/TimedSource.n click-1.6.0-27/inst/share/man/mann/TimedSource.n ---- click-1.6.0/inst/share/man/mann/TimedSource.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/TimedSource.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,70 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/timedsource.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "TIMEDSOURCE" n "11/Feb/2009" "Click" -+.SH "NAME" -+TimedSource \- Click element; -+periodically generates a packet -+.SH "SYNOPSIS" -+\fBTimedSource\fR([INTERVAL, DATA, \fIKEYWORDS\fR]) -+ -+\fBPorts\fR: no inputs, 1 output -+.br -+\fBProcessing\fR: push -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Creates packets consisting of DATA. Pushes such a packet out its single output -+about once every INTERVAL seconds. INTERVAL has millisecond precision. Default -+INTERVAL is 500 milliseconds; default DATA is at least 64 bytes long. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "DATA" 8 -+String. Same as the DATA argument. -+.IP "" 8 -+.IP "INTERVAL" 8 -+Number of seconds. Same as the INTERVAL argument. -+.IP "" 8 -+.IP "LIMIT" 8 -+Integer. Stops sending after LIMIT packets are generated; but if LIMIT is -+negative, sends packets forever. -+.IP "" 8 -+.IP "STOP" 8 -+Boolean. If true, then stop the driver once LIMIT packets are sent. Default is -+false. -+.IP "" 8 -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& TimedSource(INTERVAL 0.333) -> ... -+.fi -+.PP -+ -+ -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBdata\fR (read/write)" 5 -+Returns or sets the DATA parameter. -+.IP "" 5 -+.IP "\fBinterval\fR (read/write)" 5 -+Returns or sets the INTERVAL parameter. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M InfiniteSource "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ToDevice.n click-1.6.0-27/inst/share/man/mann/ToDevice.n ---- click-1.6.0/inst/share/man/mann/ToDevice.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ToDevice.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,112 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/linuxmodule/todevice.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "TODEVICE" n "11/Feb/2009" "Click" -+.SH "NAME" -+ToDevice \- Click element; -+sends packets to network device (Linux kernel) -+.SH "SYNOPSIS" -+\fBToDevice\fR(DEVNAME [, BURST, \fIKEYWORDS\fR]) -+ -+\fBPorts\fR: 1 input, no outputs -+.br -+\fBProcessing\fR: pull -+.br -+\fBDrivers\fR: linuxmodule -+.br -+\fBPackage\fR: linuxmodule (core) -+.br -+.SH "DESCRIPTION" -+This manual page describes the Linux kernel module version of the \fBToDevice\fR -+element. For the user-level element, read the -+.M ToDevice.u "n" -+manual page. -+.PP -+Pulls packets from its single input and sends them out the Linux network -+interface named DEVNAME. DEVNAME may also be an Ethernet address, in which -+case \fBToDevice\fR searches for a device with that address. -+.PP -+Sends up to BURST packets each time it is scheduled. By default, BURST is 16. -+For good performance, you should set BURST to be 8 times the number of -+elements that could generate packets for this device. -+.PP -+Packets must have a link header. For Ethernet, \fBToDevice\fR makes sure every -+packet is at least 60 bytes long (but see NO_PAD). -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "BURST" 8 -+Unsigned integer. Same as the BURST argument. -+.IP "" 8 -+.IP "QUIET" 8 -+Boolean. If true, then suppress device up/down messages. Default is false. -+.IP "" 8 -+.IP "ALLOW_NONEXISTENT" 8 -+Allow nonexistent devices. If true, and no device named DEVNAME exists when -+the router is initialized, then \fBToDevice\fR will report a warning (rather than an -+error). Later, while the router is running, if a device named DEVNAME appears, -+\fBToDevice\fR will seamlessly begin sending packets to it. Default is false. -+.IP "" 8 -+.IP "NO_PAD" 8 -+Boolean. If true, don't force packets to be at least 60 bytes (the -+minimum Ethernet packet size). This is useful because some 802.11 -+cards can send shorter Ethernet format packets. Defaults false. -+.IP "" 8 -+.PP -+ -+.SH "NOTES" -+The Linux networking code may also send packets out the device. If the device -+is in polling mode, Click will try to ensure that Linux eventually sends its -+packets. Linux may cause the device to be busy when a \fBToDevice\fR wants to send a -+packet. Click is not clever enough to re-queue such packets, and discards -+them. -+.PP -+In Linux 2.2, whether or not the device is running in polling mode, \fBToDevice\fR -+depends on the device driver's send operation for synchronization (e.g. tulip -+send operation uses a bit lock). In Linux 2.4, we use the device's "xmit_lock" -+to synchronize. -+.PP -+Packets sent via \fBToDevice\fR will not be received by any packet sniffers on the -+machine. Use -+.M Tee "n" -+and -+.M ToHostSniffers "n" -+to send packets to sniffers explicitly. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBcount\fR (read-only)" 5 -+Returns the number of packets \fBToDevice\fR has pulled. -+.IP "" 5 -+.IP "\fBcalls\fR (read-only)" 5 -+Returns a summary of \fBToDevice\fR statistics. -+.IP "" 5 -+.IP "\fBdrops\fR (read-only)" 5 -+Returns the number of packets \fBToDevice\fR has dropped. \fBToDevice\fR will drop -+packets because they are too short for the device, or because the device -+explicitly rejected them. -+.IP "" 5 -+.IP "\fBreset_counts\fR (write-only)" 5 -+Resets counters to zero when written. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M FromDevice n , -+.M PollDevice n , -+.M FromHost n , -+.M ToHost n , -+.M ToDevice.u n , -+.M Tee n , -+.M ToHostSniffers "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ToDevice.u.n click-1.6.0-27/inst/share/man/mann/ToDevice.u.n ---- click-1.6.0/inst/share/man/mann/ToDevice.u.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ToDevice.u.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,68 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/userlevel/todevice.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "TODEVICE.U" n "11/Feb/2009" "Click" -+.SH "NAME" -+ToDevice.u \- Click element; -+sends packets to network device (user-level) -+.SH "SYNOPSIS" -+\fBToDevice\fR(DEVNAME [, \fIKEYWORDS\fR]) -+ -+\fBPorts\fR: 1 input, at most 2 outputs -+.br -+\fBProcessing\fR: pull inputs, push outputs -+.br -+\fBDrivers\fR: userlevel -+.br -+\fBPackage\fR: userlevel (core) -+.br -+.SH "DESCRIPTION" -+This manual page describes the user-level version of the \fBToDevice\fR element. -+For the Linux kernel module element, read the -+.M ToDevice n -+manual page. -+.PP -+Pulls packets and sends them out the named device using -+Berkeley Packet Filters (or Linux equivalent). -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "DEBUG" 8 -+Boolean. If true, print out debug messages. -+.IP "" 8 -+.PP -+This element is only available at user level. -+.PP -+.SH "NOTES" -+Packets sent via \fBToDevice\fR should already have a link-level -+header prepended. This means that ARP processing, -+for example, must already have been done. -+.PP -+Under Linux, a -+.M FromDevice n -+element will not receive packets sent by a -+\fBToDevice\fR element for the same device. Under other operating systems, your -+mileage may vary. -+.PP -+Packets that are written successfully are sent on output 0, if it exists. -+Packets that fail to be written are pushed out output 1, if it exists. -+.PP -+.M KernelTun "n" -+lets you send IP packets to the host kernel's IP processing code, -+sort of like the kernel module's ToHost element. -+.PP -+ -+.SH "SEE ALSO" -+.M FromDevice.u n , -+.M FromDump n , -+.M ToDump n , -+.M KernelTun n , -+\fBToDevice\fR(n) -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ToDump.n click-1.6.0-27/inst/share/man/mann/ToDump.n ---- click-1.6.0/inst/share/man/mann/ToDump.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ToDump.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,95 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/userlevel/todump.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "TODUMP" n "11/Feb/2009" "Click" -+.SH "NAME" -+ToDump \- Click element; -+writes packets to a tcpdump file -+.SH "SYNOPSIS" -+\fBToDump\fR(FILENAME [, \fIkeywords\fR SNAPLEN, ENCAP, USE_ENCAP_FROM, EXTRA_LENGTH]) -+ -+\fBPorts\fR: 1 input, at most 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBDrivers\fR: userlevel, ns -+.br -+\fBPackage\fR: userlevel (core) -+.br -+.SH "DESCRIPTION" -+Writes incoming packets to FILENAME in `tcpdump -w' format. This file can be -+read by `tcpdump -r', or by -+.M FromDump "n" -+on a later run. FILENAME can be `-', in -+which case \fBToDump\fR writes to the standard output. -+.PP -+Writes at most SNAPLEN bytes of each packet to the file. The default SNAPLEN -+is 2000. If SNAPLEN is 0, the whole packet will be written to the file. ENCAP -+specifies the first header each packet is expected to have. This information -+is stored in the file header, and must be correct or tcpdump won't be able to -+read the file correctly. It can be \f(CWETHER\fR (Ethernet encapsulation), -+\f(CWIP\fR (raw IP packets), \f(CWFDDI\fR, \f(CWATM\fR, \f(CW802_11\fR, \f(CWSLL\fR, \f(CWAIRONET\fR, \f(CWHDLC\fR, -+\f(CWPPP_HDLC\fR, \f(CWPPP\fR, \f(CWSUNATM\fR, \f(CWPRISM\fR, or \f(CWNULL\fR; the default is \f(CWETHER\fR. -+.PP -+\fBToDump\fR may have zero or one output. If it has an output, then it emits all -+received packets on that output. \fBToDump\fR will schedule itself on the task list -+if it is used as a pull element with no outputs. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "SNAPLEN" 8 -+Integer. See above. -+.IP "" 8 -+.IP "ENCAP" 8 -+The encapsulation type to store in the dump. See above. -+.IP "" 8 -+.IP "USE_ENCAP_FROM" 8 -+Argument is a space-separated list of element names. At initialization time, -+\fBToDump\fR will check these elements' `encap' handlers, and parse them as ENCAP -+arguments. If all the handlers agree, \fBToDump\fR will use that encapsulation type; -+otherwise, it will report an error. You can specify at most one of ENCAP and -+USE_ENCAP_FROM. -+.M FromDump "n" -+and -+.M FromDevice.u "n" -+have `encap' handlers. -+.IP "" 8 -+.IP "EXTRA_LENGTH" 8 -+Boolean. Set to true if you want \fBToDump\fR to store any extra length as recorded -+in packets' extra length annotations. Default is true. -+.IP "" 8 -+.PP -+This element is only available at user level. -+.PP -+.SH "NOTES" -+\fBToDump\fR stores packets' true length annotations when available. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBcount\fR (read-only)" 5 -+Returns the number of packets emitted so far. -+.IP "" 5 -+.IP "\fBreset_counts\fR (write-only)" 5 -+Resets "count" to 0. -+.IP "" 5 -+.IP "\fBfilename\fR (read-only)" 5 -+Returns the filename. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M FromDump n , -+.M FromDevice.u n , -+.M ToDevice.u n , -+tcpdump(1) -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ToHost.n click-1.6.0-27/inst/share/man/mann/ToHost.n ---- click-1.6.0/inst/share/man/mann/ToHost.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ToHost.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,107 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/linuxmodule/tohost.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "TOHOST" n "11/Feb/2009" "Click" -+.SH "NAME" -+ToHost \- Click element; -+sends packets to Linux -+.SH "SYNOPSIS" -+\fBToHost\fR([DEVNAME, \fIkeywords\fR SNIFFERS, QUIET, ALLOW_NONEXISTENT]) -+ -+\fBPorts\fR: 1 input, no outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBDrivers\fR: linuxmodule -+.br -+\fBPackage\fR: linuxmodule (core) -+.br -+.SH "DESCRIPTION" -+Hands packets to the ordinary Linux protocol stack. -+Expects packets with Ethernet headers. -+.PP -+You should probably give Linux IP packets addressed to -+the local machine (including broadcasts), and a copy -+of each ARP reply. -+.PP -+If DEVNAME is present, each packet is marked to appear as if it originated -+from that network device -- that is, its device annotation is set to that -+device. As with -+.M ToDevice "n" , -+DEVNAME can be an Ethernet address. -+.PP -+This element is only available in the Linux kernel module. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "SNIFFERS" 8 -+Boolean. If true, then \fBToHost\fR will send packets to the kernel so that only -+tcpdump(1), and other sniffer programs on the host, will receive them. -+Default is false. -+.IP "" 8 -+.IP "QUIET" 8 -+Boolean. If true, then suppress device up/down messages. Default is false. -+.IP "" 8 -+.IP "ALLOW_NONEXISTENT" 8 -+Allow nonexistent devices. If true, and no device named DEVNAME exists when -+the router is initialized, then \fBToHost\fR will report a warning (rather than -+an error). Later, while the router is running, if a device named DEVNAME -+appears, \fBToHost\fR will seamlessly begin using it. Default is false. -+.IP "" 8 -+.PP -+ -+.SH "NOTES" -+Linux expects packets to have valid device annotations and packet type -+annotations. \fBToHost\fR will not pass packets with null device annotations to -+Linux! Use the `\f(CWToHost(eth0)\fR' syntax to supply a device annotation. Most -+packets generated by Click will have null device annotations -- for -+example, -+.M InfiniteSource "n" -+makes packets with null device annotations. -+Exceptions include -+.M FromDevice "n" -+and -+.M PollDevice "n" . -+.PP -+Linux depends on packet type annotations as well. It will generally only -+process packets with packet type annotation HOST. (Other packets, such as -+packets originally sent to some other host, are sent only to packet -+sniffers like tcpdump(1). Linux will handle some BROADCAST and MULTICAST -+packets.) By default, packets made by Click have HOST packet type -+annotations. However, if you modified a packet that you originally got from -+some device, that packet may have some other type. Use -+.M SetPacketType "n" -+to -+reset the type appropriately. -+.PP -+Finally, IPv4 packets should have a destination IP address corresponding -+to DEVNAME, and a routable source address. Otherwise Linux will silently -+drop the packets. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBdrops\fR (read-only)" 5 -+Reports the number of packets \fBToHost\fR has dropped because they had a null -+device annotation. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M ToHostSniffers n , -+.M FromHost n , -+.M FromDevice n , -+.M PollDevice n , -+.M ToDevice n , -+.M SetPacketType n , -+.M InfiniteSource "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ToHost.u.n click-1.6.0-27/inst/share/man/mann/ToHost.u.n ---- click-1.6.0/inst/share/man/mann/ToHost.u.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ToHost.u.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,54 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/userlevel/tohost.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "TOHOST.U" n "11/Feb/2009" "Click" -+.SH "NAME" -+ToHost.u \- Click element; -+sends packets to Linux via Universal TUN/TAP device. -+.SH "SYNOPSIS" -+\fBToHost\fR([DEVNAME]) -+ -+\fBPorts\fR: 1 input, no outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBDrivers\fR: userlevel -+.br -+\fBPackage\fR: userlevel (core) -+.br -+.SH "DESCRIPTION" -+Hands packets to the ordinary Linux protocol stack. -+Expects packets with Ethernet headers. -+.PP -+You should probably give Linux IP packets addressed to -+the local machine (including broadcasts), and a copy -+of each ARP reply. -+.PP -+\fBToHost\fR requires an initialized -+.M FromHost "n" -+with the same DEVNAME. -+.PP -+IPv4 packets should have a destination IP address corresponding -+to DEVNAME, and a routable source address. Otherwise Linux will silently -+drop the packets. -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBdrops\fR (read-only)" 5 -+Reports the number of packets \fBToHost\fR has dropped because they had a null -+device annotation. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M FromHost.u n , -+.M FromHost "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ToHostSniffers.n click-1.6.0-27/inst/share/man/mann/ToHostSniffers.n ---- click-1.6.0/inst/share/man/mann/ToHostSniffers.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ToHostSniffers.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,51 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/linuxmodule/tohostsniffers.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "TOHOSTSNIFFERS" n "11/Feb/2009" "Click" -+.SH "NAME" -+ToHostSniffers \- Click element; -+sends packets to Linux packet sniffers -+.SH "SYNOPSIS" -+\fBToHostSniffers\fR([DEVNAME, \fIkeywords\fR SNIFFERS, QUIET, ALLOW_NONEXISTENT]) -+ -+\fBPorts\fR: 1 input, no outputs -+.br -+\fBProcessing\fR: push -+.br -+\fBDrivers\fR: linuxmodule -+.br -+\fBPackage\fR: linuxmodule (core) -+.br -+.SH "DESCRIPTION" -+Hands packets to any packet sniffers registered with Linux, such as packet -+sockets. Packets are not passed to the ordinary Linux networking stack. -+Expects packets with Ethernet headers. -+.PP -+If DEVNAME is present, each packet is marked to appear as if it originated -+from that network device. As with -+.M ToDevice "n" , -+DEVNAME can be an Ethernet -+address. -+.PP -+This element is only available in the Linux kernel module. -+.PP -+ -+.SH "NOTES" -+\fBToHostSniffers\fR behaves exactly like -+.M ToHost "n" , -+except that the SNIFFERS -+keyword argument defaults to true. -+.PP -+ -+.SH "SEE ALSO" -+.M ToHost n , -+.M FromHost n , -+.M FromDevice n , -+.M PollDevice n , -+.M ToDevice "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ToRawSocket.n click-1.6.0-27/inst/share/man/mann/ToRawSocket.n ---- click-1.6.0/inst/share/man/mann/ToRawSocket.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ToRawSocket.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,60 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/userlevel/torawsocket.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "TORAWSOCKET" n "11/Feb/2009" "Click" -+.SH "NAME" -+ToRawSocket \- Click element; -+sends IP packets through a safe raw socket (user-level) -+.SH "SYNOPSIS" -+\fBToRawSocket\fR("TCP", ) -+.br -+\fBToRawSocket\fR("UDP", ) -+.br -+\fBToRawSocket\fR("GRE", ) -+.br -+\fBToRawSocket\fR("ICMP", ) -+ -+\fBPorts\fR: at most 1 input, at most 1 output -+.br -+\fBProcessing\fR: pull -+.br -+\fBDrivers\fR: userlevel -+.br -+\fBPackage\fR: userlevel (core) -+.br -+.SH "DESCRIPTION" -+Writes data to a raw IPv4 socket. The raw IPv4 socket may optionally -+be bound to a source port number in the case of TCP/UDP, a GRE key or -+PPTP call ID in the case of GRE, or an identifier in the case of -+ICMP. Binding a port to a raw IPv4 socket to reserve it and suppress -+TCP RST and ICMP Unreachable errors, is specific to PlanetLab Linux. -+.PP -+This element exists only for backward compatibility. See the more -+general -+.M RawSocket "n" -+implementation for details, and for supported -+keyword arguments. A \fBToRawSocket\fR is equivalent to a -+.M RawSocket "n" -+with -+no outputs. -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& ... -> ToRawSocket(UDP, 47) -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M FromRawSocket n , -+.M RawSocket n , -+.M Socket "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/ToSocket.n click-1.6.0-27/inst/share/man/mann/ToSocket.n ---- click-1.6.0/inst/share/man/mann/ToSocket.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/ToSocket.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,58 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/userlevel/tosocket.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "TOSOCKET" n "11/Feb/2009" "Click" -+.SH "NAME" -+ToSocket \- Click element; -+sends data to socket (user-level) -+.SH "SYNOPSIS" -+\fBToSocket\fR("TCP", IP, PORTNUMBER [, \fIKEYWORDS\fR]) -+.br -+\fBToSocket\fR("UDP", IP, PORTNUMBER [, \fIKEYWORDS\fR]) -+.br -+\fBToSocket\fR("UNIX", FILENAME [, \fIKEYWORDS\fR]) -+.br -+\fBToSocket\fR("UNIX_DGRAM", FILENAME [, \fIKEYWORDS\fR]) -+ -+\fBPorts\fR: at most 1 input, at most 1 output -+.br -+\fBProcessing\fR: pull -+.br -+\fBDrivers\fR: userlevel -+.br -+\fBPackage\fR: userlevel (core) -+.br -+.SH "DESCRIPTION" -+Sends data to the specified socket. Input packets are sent to the -+remote host or process. -+.PP -+This element exists only for backward compatibility. See the more -+general -+.M Socket "n" -+implementation for details, and for supported keyword -+arguments. A \fBToSocket\fR is equivalent to a -+.M Socket "n" -+with the CLIENT -+keyword set to TRUE or a -+.M Socket "n" -+with no outputs. -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& ... -> ToSocket(1.2.3.4, UDP, 47) -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M FromSocket n , -+.M Socket "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Truncate.n click-1.6.0-27/inst/share/man/mann/Truncate.n ---- click-1.6.0/inst/share/man/mann/Truncate.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Truncate.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,27 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/truncate.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "TRUNCATE" n "11/Feb/2009" "Click" -+.SH "NAME" -+Truncate \- Click element; -+limit packet length. -+.SH "SYNOPSIS" -+\fBTruncate\fR(LENGTH) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Shorten packets to at most LENGTH bytes. -+ -+.SH "SEE ALSO" -+.M Strip "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/UDPIPEncap.n click-1.6.0-27/inst/share/man/mann/UDPIPEncap.n ---- click-1.6.0/inst/share/man/mann/UDPIPEncap.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/UDPIPEncap.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,69 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/tcpudp/udpipencap.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "UDPIPENCAP" n "11/Feb/2009" "Click" -+.SH "NAME" -+UDPIPEncap \- Click element; -+encapsulates packets in static UDP/IP headers -+.SH "SYNOPSIS" -+\fBUDPIPEncap\fR(SRC, SPORT, DST, DPORT [, CHECKSUM]) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: tcpudp (core) -+.br -+.SH "DESCRIPTION" -+Encapsulates each incoming packet in a UDP/IP packet with source address -+SRC, source port SPORT, destination address DST, and destination port -+DPORT. The UDP checksum is calculated if CHECKSUM? is true; it is true by -+default. -+.PP -+As a special case, if DST is "DST_ANNO", then the destination address -+is set to the incoming packet's destination address annotation. -+.PP -+The \fBUDPIPEncap\fR element adds both a UDP header and an IP header. -+.PP -+The -+.M Strip "n" -+element can be used by the receiver to get rid of the -+encapsulation header. -+.PP -+ -+.SH "EXAMPLES" -+ -+.nf -+\& UDPIPEncap(1.0.0.1, 1234, 2.0.0.2, 1234) -+.fi -+.PP -+ -+ -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBsrc\fR (read/write)" 5 -+Returns or sets the SRC source address argument. -+.IP "" 5 -+.IP "\fBsport\fR (read/write)" 5 -+Returns or sets the SPORT source port argument. -+.IP "" 5 -+.IP "\fBdst\fR (read/write)" 5 -+Returns or sets the DST destination address argument. -+.IP "" 5 -+.IP "\fBdport\fR (read/write)" 5 -+Returns or sets the DPORT destination port argument. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M Strip n , -+.M IPEncap "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/UMLSwitch.n click-1.6.0-27/inst/share/man/mann/UMLSwitch.n ---- click-1.6.0/inst/share/man/mann/UMLSwitch.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/UMLSwitch.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,37 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/userlevel/umlswitch.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "UMLSWITCH" n "11/Feb/2009" "Click" -+.SH "NAME" -+UMLSwitch \- Click element; -+Connects to a UML switch daemon -+.SH "SYNOPSIS" -+\fBUMLSwitch\fR([FILENAME]) -+ -+\fBPorts\fR: at most 1 input, at most 1 output -+.br -+\fBProcessing\fR: pull inputs, push outputs -+.br -+\fBDrivers\fR: userlevel -+.br -+\fBPackage\fR: userlevel (core) -+.br -+.SH "DESCRIPTION" -+Transports packets to and from a User Mode Linux switch daemon -+instance. Packets do not flow through \fBUMLSwitch\fR elements (i.e., -+\fBUMLSwitch\fR is an "x/y" element). Instead, input packets are sent to the -+UML switch, and packets received from the UML switch are emitted on -+the output. -+.PP -+If FILENAME is not specified, "/tmp/uml.ctl" will be used as the path -+to the UML control socket. -+.PP -+ -+.SH "SEE ALSO" -+.M Socket "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Unqueue.n click-1.6.0-27/inst/share/man/mann/Unqueue.n ---- click-1.6.0/inst/share/man/mann/Unqueue.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Unqueue.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,55 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/unqueue.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "UNQUEUE" n "11/Feb/2009" "Click" -+.SH "NAME" -+Unqueue \- Click element; -+pull-to-push converter -+.SH "SYNOPSIS" -+\fBUnqueue\fR([BURST, \fIKEYWORDS\fR]) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: pull inputs, push outputs -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Pulls packets whenever they are available, then pushes them out -+its single output. Pulls a maximum of BURST packets every time -+it is scheduled. Default BURST is 1. If BURST -+is less than 0, pull until nothing comes back. -+.PP -+Keyword arguments are: -+.PP -+ -+ -+.IP "ACTIVE" 4 -+If false, does nothing (doesn't pull packets). One possible use -+is to set ACTIVE to false in the configuration, and later -+change it to true with a handler from DriverManager element. -+The default value is true. -+.IP "" 4 -+.PP -+ -+.SH "ELEMENT HANDLERS" -+ -+ -+ -+.IP "\fBcount\fR (read-only)" 5 -+Returns the count of packets that have passed through \fBUnqueue\fR. -+.IP "" 5 -+.IP "\fBactive\fR (read/write)" 5 -+The same as ACTIVE keyword. -+.IP "" 5 -+.PP -+ -+.SH "SEE ALSO" -+.M RatedUnqueue n , -+.M BandwidthRatedUnqueue "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Unqueue2.n click-1.6.0-27/inst/share/man/mann/Unqueue2.n ---- click-1.6.0/inst/share/man/mann/Unqueue2.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Unqueue2.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,35 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/unqueue2.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "UNQUEUE2" n "11/Feb/2009" "Click" -+.SH "NAME" -+Unqueue2 \- Click element; -+pull-to-push converter -+.SH "SYNOPSIS" -+\fBUnqueue2\fR([BURSTSIZE]) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: pull inputs, push outputs -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Pulls packets whenever they are available, then pushes them out its single -+output. Pulls a maximum of BURSTSIZE packets every time it is scheduled, -+unless downstream queues are full. Default BURSTSIZE is 1. If BURSTSIZE is -+0, pull until nothing comes back. \fBUnqueue2\fR will not pull if there is a -+downstream queue that is full. It will also limit burst size to equal to -+the number of available slots in the fullest downstream queue. -+.PP -+ -+.SH "SEE ALSO" -+.M Unqueue n , -+.M RatedUnqueue n , -+.M BandwidthRatedUnqueue "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/Unstrip.n click-1.6.0-27/inst/share/man/mann/Unstrip.n ---- click-1.6.0/inst/share/man/mann/Unstrip.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/Unstrip.n 2009-02-11 14:08:51.000000000 -0500 -@@ -0,0 +1,39 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/standard/unstrip.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "UNSTRIP" n "11/Feb/2009" "Click" -+.SH "NAME" -+Unstrip \- Click element; -+unstrips bytes from front of packets -+.SH "SYNOPSIS" -+\fBUnstrip\fR(LENGTH) -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: standard (core) -+.br -+.SH "DESCRIPTION" -+Put LENGTH bytes at the front of the packet. These LENGTH bytes may be bytes -+previously removed by Strip. -+ -+.SH "EXAMPLES" -+Use this to get rid of the Ethernet header and put it back on: -+.PP -+.nf -+\& Strip(14) -> ... -> Unstrip(14) -+.fi -+.PP -+ -+ -+ -+.SH "SEE ALSO" -+.M EtherEncap n , -+.M IPEncap "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/UnstripIPHeader.n click-1.6.0-27/inst/share/man/mann/UnstripIPHeader.n ---- click-1.6.0/inst/share/man/mann/UnstripIPHeader.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/UnstripIPHeader.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,36 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' from '../elements/ip/unstripipheader.hh' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "UNSTRIPIPHEADER" n "11/Feb/2009" "Click" -+.SH "NAME" -+UnstripIPHeader \- Click element; -+restores outermost IP header -+.SH "SYNOPSIS" -+\fBUnstripIPHeader\fR() -+ -+\fBPorts\fR: 1 input, 1 output -+.br -+\fBProcessing\fR: agnostic -+.br -+\fBPackage\fR: ip (core) -+.br -+.SH "DESCRIPTION" -+Put outermost IP header back onto a stripped packet, based on the IP Header -+annotation from -+.M MarkIPHeader "n" -+or -+.M CheckIPHeader "n" . -+If IP header already on, -+forwards packet unmodified. -+.PP -+ -+.SH "SEE ALSO" -+.M CheckIPHeader n , -+.M MarkIPHeader n , -+.M StripIPHeader "n" -+ -diff -Nurb click-1.6.0/inst/share/man/mann/elements-click.n click-1.6.0-27/inst/share/man/mann/elements-click.n ---- click-1.6.0/inst/share/man/mann/elements-click.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/elements-click.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,1323 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ELEMENTS-CLICK" n "11/Feb/2009" "Click" -+.SH "NAME" -+elements-click - documented Click element classes -+.SH "DESCRIPTION" -+This page lists all Click element classes that have manual page documentation. -+.\"html

By Function: -+.\"html Basic Sources and Sinks - Basic Classification and Selection - Basic Packet Transfer - Counters - Timestamps - Basic Packet Modification - Packet Storage - Active Queue Management - Packet Scheduling - Traffic Shaping - Information Elements - Network Devices - Host and Socket Communication - Ethernet - ARP - IPv4 - IPv4 Routing - ICMP - Network Address Translation - TCP - UDP - Trace Manipulation - TCP/IP Measurement - CRCs - Paint Annotations - Annotations - Debugging - Control - Multithreaded Click - devices
-+.\"html Alphabetical List

-+.SH "BY FUNCTION" -+.SS "Basic Sources and Sinks" -+.PP -+.PD 0 -+.TP 20 -+.M Discard n -+drops all packets -+.TP 20 -+.M DiscardNoFree n -+drops all packets, but does not free any of them. -+.TP 20 -+.M Idle n -+discards packets -+.TP 20 -+.M InfiniteSource n -+generates packets whenever scheduled -+.TP 20 -+.M RandomSource n -+generates random packets whenever scheduled -+.TP 20 -+.M RatedSource n -+generates packets at specified rate -+.TP 20 -+.M TimedSink n -+periodically pulls and drops a packet -+.TP 20 -+.M TimedSource n -+periodically generates a packet -+.PD -+.SS "Basic Classification and Selection" -+.PP -+.PD 0 -+.TP 20 -+.M CheckLength n -+drops large packets -+.TP 20 -+.M Classifier n -+classifies packets by contents -+.TP 20 -+.M HashSwitch n -+classifies packets by hash of contents -+.TP 20 -+.M RandomSample n -+samples packets with some probability -+.TP 20 -+.M RandomSwitch n -+sends packets to random outputs -+.TP 20 -+.M RoundRobinSwitch n -+sends packets to round-robin outputs -+.TP 20 -+.M StaticSwitch n -+sends packet stream to fixed output -+.TP 20 -+.M StrideSwitch n -+sends packets to stride-scheduled outputs -+.TP 20 -+.M Suppressor n -+passes packets unchanged, optionally dropping some input ports -+.TP 20 -+.M Switch n -+sends packet stream to settable output -+.PD -+.SS "Basic Packet Transfer" -+.PP -+.PD 0 -+.TP 20 -+.M Null n -+passes packets unchanged -+.TP 20 -+.M Null1 n -+copy of -+.M Null "n" -+.TP 20 -+.M PullNull n -+passes packets unchanged -+.TP 20 -+.M PullTee n -+duplicates packets -+.TP 20 -+.M PushNull n -+passes packets unchanged -+.TP 20 -+.M Tee n -+duplicates packets -+.PD -+.SS "Counters" -+.PP -+.PD 0 -+.TP 20 -+.M AverageCounter n -+measures historical packet count and rate -+.TP 20 -+.M Counter n -+measures packet count and rate -+.TP 20 -+.M CycleCountAccum n -+collects differences in cycle counters -+.TP 20 -+.M PerfCountAccum n -+collects differences in Pentium Pro performance metrics -+.TP 20 -+.M PerfCountInfo n -+turn on Pentium Pro performance metrics -+.TP 20 -+.M RoundTripCycleCount n -+measures round trip cycles on a push or pull path -+.TP 20 -+.M SetCycleCount n -+stores cycle count in annotation -+.TP 20 -+.M SetPerfCount n -+stores Pentium Pro performance metric in annotation -+.PD -+.SS "Timestamps" -+.PP -+.PD 0 -+.TP 20 -+.M SetTimestamp n -+store the time in the packet's timestamp annotation -+.PD -+.SS "Basic Packet Modification" -+.PP -+.PD 0 -+.TP 20 -+.M Align n -+aligns packet data -+.TP 20 -+.M RandomBitErrors n -+changes packet data with some probability -+.TP 20 -+.M StoreData n -+changes packet data -+.TP 20 -+.M Strip n -+strips bytes from front of packets -+.TP 20 -+.M StripToNetworkHeader n -+strips everything preceding network header -+.TP 20 -+.M Truncate n -+limit packet length. -+.TP 20 -+.M Unstrip n -+unstrips bytes from front of packets -+.PD -+.SS "Packet Storage" -+.PP -+.PD 0 -+.TP 20 -+.M FrontDropQueue n -+stores packets in drop-from-front FIFO queue -+.TP 20 -+.M MixedQueue n -+stores packets in a FIFO/LIFO queue -+.TP 20 -+.M NotifierQueue n -+stores packets in a FIFO queue -+.TP 20 -+.M Queue n -+stores packets in a FIFO queue -+.TP 20 -+.M SimpleQueue n -+stores packets in a FIFO queue -+.PD -+.SS "Active Queue Management" -+.PP -+.PD 0 -+.TP 20 -+.M AdaptiveRED n -+drops packets according to Adaptive RED -+.TP 20 -+.M RED n -+drops packets according to RED -+.PD -+.SS "Packet Scheduling" -+.PP -+.PD 0 -+.TP 20 -+.M DRRSched n -+pulls from inputs with deficit round robin scheduling -+.TP 20 -+.M PrioSched n -+pulls from priority-scheduled inputs -+.TP 20 -+.M PullSwitch n -+forwards pull requests to settable input -+.TP 20 -+.M RoundRobinSched n -+pulls from round-robin inputs -+.TP 20 -+.M StaticPullSwitch n -+forwards pull requests to fixed input -+.TP 20 -+.M StrideSched n -+pulls from stride-scheduled inputs -+.PD -+.SS "Traffic Shaping" -+.PP -+.PD 0 -+.TP 20 -+.M BandwidthMeter n -+classifies packet stream by arrival rate -+.TP 20 -+.M BandwidthRatedSplitter n -+splits flow of packets at specified bandwidth rate -+.TP 20 -+.M BandwidthRatedUnqueue n -+pull-to-push converter -+.TP 20 -+.M BandwidthShaper n -+shapes traffic to maximum rate (bytes/s) -+.TP 20 -+.M Burster n -+pull-to-push converter -+.TP 20 -+.M CompareBlock n -+drops packets out of rate range -+.TP 20 -+.M DelayShaper n -+shapes traffic to meet delay requirements -+.TP 20 -+.M DelayUnqueue n -+delay inducing pull-to-push converter -+.TP 20 -+.M LinkUnqueue n -+link emulator -+.TP 20 -+.M Meter n -+classifies packet stream by rate (pkt/s) -+.TP 20 -+.M RatedSplitter n -+splits flow of packets at specified rate -+.TP 20 -+.M RatedUnqueue n -+pull-to-push converter -+.TP 20 -+.M Shaper n -+shapes traffic to maximum rate (pkt/s) -+.TP 20 -+.M Unqueue n -+pull-to-push converter -+.TP 20 -+.M Unqueue2 n -+pull-to-push converter -+.PD -+.SS "Information Elements" -+.PP -+.PD 0 -+.TP 20 -+.M AddressInfo n -+specifies address information -+.TP 20 -+.M AlignmentInfo n -+specifies alignment information -+.TP 20 -+.M PortInfo n -+stores named TCP/UDP port information -+.TP 20 -+.M ScheduleInfo n -+specifies scheduling parameters -+.TP 20 -+.M ScheduleLinux n -+returns to Linux scheduler -+.PD -+.SS "Network Devices" -+.PP -+.PD 0 -+.TP 20 -+.M FromDevice n -+reads packets from network device (Linux kernel) -+.TP 20 -+.M FromDevice.u n -+reads packets from network device (user-level) -+.TP 20 -+.M PollDevice n -+polls packets from network device (kernel) -+.TP 20 -+.M ToDevice n -+sends packets to network device (Linux kernel) -+.TP 20 -+.M ToDevice.u n -+sends packets to network device (user-level) -+.PD -+.SS "Host and Socket Communication" -+.PP -+.PD 0 -+.TP 20 -+.M FromHost n -+reads packets from Linux -+.TP 20 -+.M FromHost.u n -+interface to /dev/net/tun or ethertap (user-level) -+.TP 20 -+.M FromRawSocket n -+reads raw IP packets from safe raw socket (user-level) -+.TP 20 -+.M FromSocket n -+reads data from socket (user-level) -+.TP 20 -+.M KernelFilter n -+block kernel from handling packets -+.TP 20 -+.M KernelTap n -+interface to /dev/tap or ethertap (user-level) -+.TP 20 -+.M KernelTun n -+interface to /dev/tun or ethertap (user-level) -+.TP 20 -+.M RawSocket n -+transports raw IP packets via safe raw sockets (user-level) -+.TP 20 -+.M Socket n -+a socket transport (user-level) -+.TP 20 -+.M ToHost n -+sends packets to Linux -+.TP 20 -+.M ToHost.u n -+sends packets to Linux via Universal TUN/TAP device. -+.TP 20 -+.M ToHostSniffers n -+sends packets to Linux packet sniffers -+.TP 20 -+.M ToRawSocket n -+sends IP packets through a safe raw socket (user-level) -+.TP 20 -+.M ToSocket n -+sends data to socket (user-level) -+.PD -+.SS "Ethernet" -+.PP -+.PD 0 -+.TP 20 -+.M EnsureEther n -+ensures that IP packets are Ethernet encapsulated -+.TP 20 -+.M EtherEncap n -+encapsulates packets in Ethernet header -+.TP 20 -+.M EtherMirror n -+swaps Ethernet source and destination -+.TP 20 -+.M HostEtherFilter n -+drops Ethernet packets sent to other machines -+.PD -+.SS "ARP" -+.PP -+.PD 0 -+.TP 20 -+.M ARPFaker n -+periodically generates an ARP reply -+.TP 20 -+.M ARPPrint n -+pretty-prints ARP packets a la tcpdump -+.TP 20 -+.M ARPQuerier n -+encapsulates IP packets in Ethernet headers found via ARP -+.TP 20 -+.M ARPResponder n -+generates responses to ARP queries -+.TP 20 -+.M CheckARPHeader n -+checks ARP header -+.PD -+.SS "IPv4" -+.PP -+.PD 0 -+.TP 20 -+.M CheckIPHeader n -+checks IP header -+.TP 20 -+.M CheckIPHeader2 n -+checks IP header, no checksum -+.TP 20 -+.M DecIPTTL n -+decrements IP time-to-live, drops dead packets -+.TP 20 -+.M FixIPSrc n -+sets IP source field if requested by annotation -+.TP 20 -+.M GetIPAddress n -+sets destination IP address annotation from packet data -+.TP 20 -+.M IPClassifier n -+classifies IP packets by contents -+.TP 20 -+.M IPEncap n -+encapsulates packets in static IP header -+.TP 20 -+.M IPFilter n -+filters IP packets by contents -+.TP 20 -+.M IPFragmenter n -+fragments large IP packets -+.TP 20 -+.M IPGWOptions n -+processes router IP options -+.TP 20 -+.M IPInputCombo n -+input combo for IP routing -+.TP 20 -+.M IPMirror n -+swaps IP source and destination -+.TP 20 -+.M IPNameInfo n -+stores name information about IP packets -+.TP 20 -+.M IPOutputCombo n -+output combo for IP routing -+.TP 20 -+.M IPPrint n -+pretty-prints IP packets -+.TP 20 -+.M IPReassembler n -+Reassembles fragmented IP packets -+.TP 20 -+.M MarkIPCE n -+sets IP packets' ECN field to Congestion Experienced -+.TP 20 -+.M MarkIPHeader n -+sets IP header annotation -+.TP 20 -+.M SetIPAddress n -+sets destination IP address annotations -+.TP 20 -+.M SetIPChecksum n -+sets IP packets' checksums -+.TP 20 -+.M SetIPDSCP n -+sets IP packets' DSCP fields -+.TP 20 -+.M SetRandIPAddress n -+sets destination IP address annotations randomly -+.TP 20 -+.M StoreIPAddress n -+stores IP address in packet -+.TP 20 -+.M StripIPHeader n -+strips outermost IP header -+.TP 20 -+.M UnstripIPHeader n -+restores outermost IP header -+.PD -+.SS "IPv4 Routing" -+.PP -+.PD 0 -+.TP 20 -+.M DirectIPLookup n -+IP routing lookup using direct-indexed tables -+.TP 20 -+.M IPRouteTable n -+IP routing table superclass -+.TP 20 -+.M LinearIPLookup n -+simple IP routing table -+.TP 20 -+.M LinuxIPLookup n -+interface to Linux's routing table -+.TP 20 -+.M RadixIPLookup n -+IP lookup using a radix trie -+.TP 20 -+.M RangeIPLookup n -+IP routing lookup through binary search in a very compact table -+.TP 20 -+.M RIPSend n -+periodically generates specified RIP II packet -+.TP 20 -+.M SortedIPLookup n " (deprecated)" -+simple IP routing table -+.TP 20 -+.M StaticIPLookup n -+simple static IP routing table -+.PD -+.SS "ICMP" -+.PP -+.PD 0 -+.TP 20 -+.M CheckICMPHeader n -+checks ICMP header on ICMP packets -+.TP 20 -+.M ICMPError n -+generates ICMP error packets -+.TP 20 -+.M ICMPPingEncap n -+encapsulates packets in ICMP ping headers -+.TP 20 -+.M ICMPPingResponder n -+responds to ICMP echo requests -+.TP 20 -+.M ICMPPingSource n -+periodically sends ICMP echo requests -+.PD -+.SS "Network Address Translation" -+.PP -+.PD 0 -+.TP 20 -+.M FTPPortMapper n -+manipulates -+.M IPRewriter "n" -+for FTP -+.TP 20 -+.M ICMPPingRewriter n -+rewrites ICMP echo requests and replies -+.TP 20 -+.M ICMPRewriter n -+rewrites ICMP packets based on IP rewriter mappings -+.TP 20 -+.M IPAddrPairRewriter n -+rewrites IP packets' addresses by address pair -+.TP 20 -+.M IPAddrRewriter n -+rewrites IP packets' addresses -+.TP 20 -+.M IPRewriter n -+rewrites TCP/UDP packets' addresses and ports -+.TP 20 -+.M IPRewriterPatterns n -+specifies shared -+.M IPRewriter n -+patterns -+.TP 20 -+.M RoundRobinIPMapper n -+round-robin mapper for -+.M IPRewriter n -+.TP 20 -+.M SourceIPHashMapper n -+Source IP Hash mapper for -+.M IPRewriter n -+.TP 20 -+.M TCPRewriter n -+rewrites TCP packets' addresses, ports, and sequence numbers -+.PD -+.SS "TCP" -+.PP -+.PD 0 -+.TP 20 -+.M CheckTCPHeader n -+checks TCP header on TCP/IP packets -+.TP 20 -+.M FastTCPFlows n -+creates packets flows with static TCP/IP/Ethernet headers -+.TP 20 -+.M RFC2507Comp n -+RFC2507 IPv4/TCP header compressor. -+.TP 20 -+.M RFC2507Decomp n -+RFC2507 IPv4/TCP header decompressor. -+.TP 20 -+.M SetTCPChecksum n -+sets TCP packets' checksums -+.PD -+.SS "UDP" -+.PP -+.PD 0 -+.TP 20 -+.M CheckUDPHeader n -+checks UDP header on UDP/IP packets -+.TP 20 -+.M DynamicUDPIPEncap n -+encapsulates packets in dynamic UDP/IP headers -+.TP 20 -+.M FastUDPFlows n -+creates packets flows with static UDP/IP/Ethernet headers -+.TP 20 -+.M FastUDPSource n -+creates packets with static UDP/IP/Ethernet headers -+.TP 20 -+.M SetUDPChecksum n -+sets UDP packets' checksums -+.TP 20 -+.M UDPIPEncap n -+encapsulates packets in static UDP/IP headers -+.PD -+.SS "Trace Manipulation" -+.PP -+.PD 0 -+.TP 20 -+.M FromDump n -+reads packets from a tcpdump file -+.TP 20 -+.M ToDump n -+writes packets to a tcpdump file -+.PD -+.SS "TCP/IP Measurement" -+.PP -+.PD 0 -+.TP 20 -+.M IPRateMonitor n -+measures coming and going IP traffic rates -+.PD -+.SS "CRCs" -+.PP -+.PD 0 -+.TP 20 -+.M CheckCRC32 n -+checks packet CRC32s -+.TP 20 -+.M SetCRC32 n -+calculates CRC32 and prepends to packet -+.PD -+.SS "Paint Annotations" -+.PP -+.PD 0 -+.TP 20 -+.M CheckPaint n -+checks packets' paint annotation -+.TP 20 -+.M Paint n -+sets packet paint annotations -+.TP 20 -+.M PaintSwitch n -+sends packet stream to output chosen per-packet -+.TP 20 -+.M PaintTee n -+duplicates packets with given paint annotation -+.PD -+.SS "Annotations" -+.PP -+.PD 0 -+.TP 20 -+.M DropBroadcasts n -+drops link-level broadcast and multicast packets -+.TP 20 -+.M SetAnnoByte n -+sets packet user annotations -+.TP 20 -+.M SetPacketType n -+sets packet type annotation -+.PD -+.SS "Debugging" -+.PP -+.PD 0 -+.TP 20 -+.M Error n -+always fails -+.TP 20 -+.M Print n -+prints packet contents -+.PD -+.SS "Control" -+.PP -+.PD 0 -+.TP 20 -+.M ChangeUID n -+relinquish root privilege -+.TP 20 -+.M ChatterSocket n -+reports chatter messages to connected sockets -+.TP 20 -+.M ControlSocket n -+opens control sockets for other programs -+.TP 20 -+.M DriverManager n -+a -+.M Script "n" -+that manages driver stop events -+.TP 20 -+.M KernelHandlerProxy n -+proxies kernel module handlers at user level -+.TP 20 -+.M Message n -+prints a message on configuration -+.TP 20 -+.M PokeHandlers n " (deprecated)" -+calls write handlers at specified times -+.TP 20 -+.M ProgressBar n -+prints a progress bar to standard error -+.TP 20 -+.M QuitWatcher n -+stops router processing -+.TP 20 -+.M Script n -+script a Click router configuration -+.PD -+.SS "Multithreaded Click" -+.PP -+.PD 0 -+.TP 20 -+.M CPUQueue n -+stores packets in FIFO queues. -+.TP 20 -+.M CPUSwitch n -+classifies packets by cpu -+.TP 20 -+.M LookupIPRouteMP n -+simple static IP routing table -+.TP 20 -+.M MSQueue n -+stores packets in a FIFO queue -+.TP 20 -+.M SpinlockAcquire n -+acquires spinlock -+.TP 20 -+.M SpinlockInfo n -+specifies names of spinlocks -+.TP 20 -+.M SpinlockRelease n -+releases spinlock -+.TP 20 -+.M StaticThreadSched n -+specifies element and thread scheduling parameters -+.PD -+.SS "devices" -+.PP -+.PD 0 -+.TP 20 -+.M UMLSwitch n -+Connects to a UML switch daemon -+.PD -+.SH "ALPHABETICAL LIST" -+.PP -+.PD 0 -+.TP 20 -+.M AdaptiveRED n -+drops packets according to Adaptive RED -+.TP 20 -+.M AddressInfo n -+specifies address information -+.TP 20 -+.M Align n -+aligns packet data -+.TP 20 -+.M AlignmentInfo n -+specifies alignment information -+.TP 20 -+.M ARPFaker n -+periodically generates an ARP reply -+.TP 20 -+.M ARPPrint n -+pretty-prints ARP packets a la tcpdump -+.TP 20 -+.M ARPQuerier n -+encapsulates IP packets in Ethernet headers found via ARP -+.TP 20 -+.M ARPResponder n -+generates responses to ARP queries -+.TP 20 -+.M AverageCounter n -+measures historical packet count and rate -+.TP 20 -+.M BandwidthMeter n -+classifies packet stream by arrival rate -+.TP 20 -+.M BandwidthRatedSplitter n -+splits flow of packets at specified bandwidth rate -+.TP 20 -+.M BandwidthRatedUnqueue n -+pull-to-push converter -+.TP 20 -+.M BandwidthShaper n -+shapes traffic to maximum rate (bytes/s) -+.TP 20 -+.M Burster n -+pull-to-push converter -+.TP 20 -+.M ChangeUID n -+relinquish root privilege -+.TP 20 -+.M ChatterSocket n -+reports chatter messages to connected sockets -+.TP 20 -+.M CheckARPHeader n -+checks ARP header -+.TP 20 -+.M CheckCRC32 n -+checks packet CRC32s -+.TP 20 -+.M CheckICMPHeader n -+checks ICMP header on ICMP packets -+.TP 20 -+.M CheckIPHeader n -+checks IP header -+.TP 20 -+.M CheckIPHeader2 n -+checks IP header, no checksum -+.TP 20 -+.M CheckLength n -+drops large packets -+.TP 20 -+.M CheckPaint n -+checks packets' paint annotation -+.TP 20 -+.M CheckTCPHeader n -+checks TCP header on TCP/IP packets -+.TP 20 -+.M CheckUDPHeader n -+checks UDP header on UDP/IP packets -+.TP 20 -+.M Classifier n -+classifies packets by contents -+.TP 20 -+.M CompareBlock n -+drops packets out of rate range -+.TP 20 -+.M ControlSocket n -+opens control sockets for other programs -+.TP 20 -+.M Counter n -+measures packet count and rate -+.TP 20 -+.M CPUQueue n -+stores packets in FIFO queues. -+.TP 20 -+.M CPUSwitch n -+classifies packets by cpu -+.TP 20 -+.M CycleCountAccum n -+collects differences in cycle counters -+.TP 20 -+.M DecIPTTL n -+decrements IP time-to-live, drops dead packets -+.TP 20 -+.M DelayShaper n -+shapes traffic to meet delay requirements -+.TP 20 -+.M DelayUnqueue n -+delay inducing pull-to-push converter -+.TP 20 -+.M DirectIPLookup n -+IP routing lookup using direct-indexed tables -+.TP 20 -+.M Discard n -+drops all packets -+.TP 20 -+.M DiscardNoFree n -+drops all packets, but does not free any of them. -+.TP 20 -+.M DriverManager n -+a -+.M Script "n" -+that manages driver stop events -+.TP 20 -+.M DropBroadcasts n -+drops link-level broadcast and multicast packets -+.TP 20 -+.M DRRSched n -+pulls from inputs with deficit round robin scheduling -+.TP 20 -+.M DynamicUDPIPEncap n -+encapsulates packets in dynamic UDP/IP headers -+.TP 20 -+.M EnsureEther n -+ensures that IP packets are Ethernet encapsulated -+.TP 20 -+.M Error n -+always fails -+.TP 20 -+.M EtherEncap n -+encapsulates packets in Ethernet header -+.TP 20 -+.M EtherMirror n -+swaps Ethernet source and destination -+.TP 20 -+.M FastTCPFlows n -+creates packets flows with static TCP/IP/Ethernet headers -+.TP 20 -+.M FastUDPFlows n -+creates packets flows with static UDP/IP/Ethernet headers -+.TP 20 -+.M FastUDPSource n -+creates packets with static UDP/IP/Ethernet headers -+.TP 20 -+.M FixIPSrc n -+sets IP source field if requested by annotation -+.TP 20 -+.M FromDevice n -+reads packets from network device (Linux kernel) -+.TP 20 -+.M FromDevice.u n -+reads packets from network device (user-level) -+.TP 20 -+.M FromDump n -+reads packets from a tcpdump file -+.TP 20 -+.M FromHost n -+reads packets from Linux -+.TP 20 -+.M FromHost.u n -+interface to /dev/net/tun or ethertap (user-level) -+.TP 20 -+.M FromRawSocket n -+reads raw IP packets from safe raw socket (user-level) -+.TP 20 -+.M FromSocket n -+reads data from socket (user-level) -+.TP 20 -+.M FrontDropQueue n -+stores packets in drop-from-front FIFO queue -+.TP 20 -+.M FTPPortMapper n -+manipulates -+.M IPRewriter "n" -+for FTP -+.TP 20 -+.M GetIPAddress n -+sets destination IP address annotation from packet data -+.TP 20 -+.M HashSwitch n -+classifies packets by hash of contents -+.TP 20 -+.M HostEtherFilter n -+drops Ethernet packets sent to other machines -+.TP 20 -+.M ICMPError n -+generates ICMP error packets -+.TP 20 -+.M ICMPPingEncap n -+encapsulates packets in ICMP ping headers -+.TP 20 -+.M ICMPPingResponder n -+responds to ICMP echo requests -+.TP 20 -+.M ICMPPingRewriter n -+rewrites ICMP echo requests and replies -+.TP 20 -+.M ICMPPingSource n -+periodically sends ICMP echo requests -+.TP 20 -+.M ICMPRewriter n -+rewrites ICMP packets based on IP rewriter mappings -+.TP 20 -+.M Idle n -+discards packets -+.TP 20 -+.M InfiniteSource n -+generates packets whenever scheduled -+.TP 20 -+.M IPAddrPairRewriter n -+rewrites IP packets' addresses by address pair -+.TP 20 -+.M IPAddrRewriter n -+rewrites IP packets' addresses -+.TP 20 -+.M IPClassifier n -+classifies IP packets by contents -+.TP 20 -+.M IPEncap n -+encapsulates packets in static IP header -+.TP 20 -+.M IPFilter n -+filters IP packets by contents -+.TP 20 -+.M IPFragmenter n -+fragments large IP packets -+.TP 20 -+.M IPGWOptions n -+processes router IP options -+.TP 20 -+.M IPInputCombo n -+input combo for IP routing -+.TP 20 -+.M IPMirror n -+swaps IP source and destination -+.TP 20 -+.M IPNameInfo n -+stores name information about IP packets -+.TP 20 -+.M IPOutputCombo n -+output combo for IP routing -+.TP 20 -+.M IPPrint n -+pretty-prints IP packets -+.TP 20 -+.M IPRateMonitor n -+measures coming and going IP traffic rates -+.TP 20 -+.M IPReassembler n -+Reassembles fragmented IP packets -+.TP 20 -+.M IPRewriter n -+rewrites TCP/UDP packets' addresses and ports -+.TP 20 -+.M IPRewriterPatterns n -+specifies shared -+.M IPRewriter n -+patterns -+.TP 20 -+.M IPRouteTable n -+IP routing table superclass -+.TP 20 -+.M KernelFilter n -+block kernel from handling packets -+.TP 20 -+.M KernelHandlerProxy n -+proxies kernel module handlers at user level -+.TP 20 -+.M KernelTap n -+interface to /dev/tap or ethertap (user-level) -+.TP 20 -+.M KernelTun n -+interface to /dev/tun or ethertap (user-level) -+.TP 20 -+.M LinearIPLookup n -+simple IP routing table -+.TP 20 -+.M LinkUnqueue n -+link emulator -+.TP 20 -+.M LinuxIPLookup n -+interface to Linux's routing table -+.TP 20 -+.M LookupIPRouteMP n -+simple static IP routing table -+.TP 20 -+.M MarkIPCE n -+sets IP packets' ECN field to Congestion Experienced -+.TP 20 -+.M MarkIPHeader n -+sets IP header annotation -+.TP 20 -+.M Message n -+prints a message on configuration -+.TP 20 -+.M Meter n -+classifies packet stream by rate (pkt/s) -+.TP 20 -+.M MixedQueue n -+stores packets in a FIFO/LIFO queue -+.TP 20 -+.M MSQueue n -+stores packets in a FIFO queue -+.TP 20 -+.M NotifierQueue n -+stores packets in a FIFO queue -+.TP 20 -+.M Null n -+passes packets unchanged -+.TP 20 -+.M Null1 n -+copy of -+.M Null "n" -+.TP 20 -+.M Paint n -+sets packet paint annotations -+.TP 20 -+.M PaintSwitch n -+sends packet stream to output chosen per-packet -+.TP 20 -+.M PaintTee n -+duplicates packets with given paint annotation -+.TP 20 -+.M PerfCountAccum n -+collects differences in Pentium Pro performance metrics -+.TP 20 -+.M PerfCountInfo n -+turn on Pentium Pro performance metrics -+.TP 20 -+.M PokeHandlers n " (deprecated)" -+calls write handlers at specified times -+.TP 20 -+.M PollDevice n -+polls packets from network device (kernel) -+.TP 20 -+.M PortInfo n -+stores named TCP/UDP port information -+.TP 20 -+.M Print n -+prints packet contents -+.TP 20 -+.M PrioSched n -+pulls from priority-scheduled inputs -+.TP 20 -+.M ProgressBar n -+prints a progress bar to standard error -+.TP 20 -+.M PullNull n -+passes packets unchanged -+.TP 20 -+.M PullSwitch n -+forwards pull requests to settable input -+.TP 20 -+.M PullTee n -+duplicates packets -+.TP 20 -+.M PushNull n -+passes packets unchanged -+.TP 20 -+.M Queue n -+stores packets in a FIFO queue -+.TP 20 -+.M QuitWatcher n -+stops router processing -+.TP 20 -+.M RadixIPLookup n -+IP lookup using a radix trie -+.TP 20 -+.M RandomBitErrors n -+changes packet data with some probability -+.TP 20 -+.M RandomSample n -+samples packets with some probability -+.TP 20 -+.M RandomSource n -+generates random packets whenever scheduled -+.TP 20 -+.M RandomSwitch n -+sends packets to random outputs -+.TP 20 -+.M RangeIPLookup n -+IP routing lookup through binary search in a very compact table -+.TP 20 -+.M RatedSource n -+generates packets at specified rate -+.TP 20 -+.M RatedSplitter n -+splits flow of packets at specified rate -+.TP 20 -+.M RatedUnqueue n -+pull-to-push converter -+.TP 20 -+.M RawSocket n -+transports raw IP packets via safe raw sockets (user-level) -+.TP 20 -+.M RED n -+drops packets according to RED -+.TP 20 -+.M RFC2507Comp n -+RFC2507 IPv4/TCP header compressor. -+.TP 20 -+.M RFC2507Decomp n -+RFC2507 IPv4/TCP header decompressor. -+.TP 20 -+.M RIPSend n -+periodically generates specified RIP II packet -+.TP 20 -+.M RoundRobinIPMapper n -+round-robin mapper for -+.M IPRewriter n -+.TP 20 -+.M RoundRobinSched n -+pulls from round-robin inputs -+.TP 20 -+.M RoundRobinSwitch n -+sends packets to round-robin outputs -+.TP 20 -+.M RoundTripCycleCount n -+measures round trip cycles on a push or pull path -+.TP 20 -+.M ScheduleInfo n -+specifies scheduling parameters -+.TP 20 -+.M ScheduleLinux n -+returns to Linux scheduler -+.TP 20 -+.M Script n -+script a Click router configuration -+.TP 20 -+.M SetAnnoByte n -+sets packet user annotations -+.TP 20 -+.M SetCRC32 n -+calculates CRC32 and prepends to packet -+.TP 20 -+.M SetCycleCount n -+stores cycle count in annotation -+.TP 20 -+.M SetIPAddress n -+sets destination IP address annotations -+.TP 20 -+.M SetIPChecksum n -+sets IP packets' checksums -+.TP 20 -+.M SetIPDSCP n -+sets IP packets' DSCP fields -+.TP 20 -+.M SetPacketType n -+sets packet type annotation -+.TP 20 -+.M SetPerfCount n -+stores Pentium Pro performance metric in annotation -+.TP 20 -+.M SetRandIPAddress n -+sets destination IP address annotations randomly -+.TP 20 -+.M SetTCPChecksum n -+sets TCP packets' checksums -+.TP 20 -+.M SetTimestamp n -+store the time in the packet's timestamp annotation -+.TP 20 -+.M SetUDPChecksum n -+sets UDP packets' checksums -+.TP 20 -+.M Shaper n -+shapes traffic to maximum rate (pkt/s) -+.TP 20 -+.M SimpleQueue n -+stores packets in a FIFO queue -+.TP 20 -+.M Socket n -+a socket transport (user-level) -+.TP 20 -+.M SortedIPLookup n " (deprecated)" -+simple IP routing table -+.TP 20 -+.M SourceIPHashMapper n -+Source IP Hash mapper for -+.M IPRewriter n -+.TP 20 -+.M SpinlockAcquire n -+acquires spinlock -+.TP 20 -+.M SpinlockInfo n -+specifies names of spinlocks -+.TP 20 -+.M SpinlockRelease n -+releases spinlock -+.TP 20 -+.M StaticIPLookup n -+simple static IP routing table -+.TP 20 -+.M StaticPullSwitch n -+forwards pull requests to fixed input -+.TP 20 -+.M StaticSwitch n -+sends packet stream to fixed output -+.TP 20 -+.M StaticThreadSched n -+specifies element and thread scheduling parameters -+.TP 20 -+.M StoreData n -+changes packet data -+.TP 20 -+.M StoreIPAddress n -+stores IP address in packet -+.TP 20 -+.M StrideSched n -+pulls from stride-scheduled inputs -+.TP 20 -+.M StrideSwitch n -+sends packets to stride-scheduled outputs -+.TP 20 -+.M Strip n -+strips bytes from front of packets -+.TP 20 -+.M StripIPHeader n -+strips outermost IP header -+.TP 20 -+.M StripToNetworkHeader n -+strips everything preceding network header -+.TP 20 -+.M Suppressor n -+passes packets unchanged, optionally dropping some input ports -+.TP 20 -+.M Switch n -+sends packet stream to settable output -+.TP 20 -+.M TCPRewriter n -+rewrites TCP packets' addresses, ports, and sequence numbers -+.TP 20 -+.M Tee n -+duplicates packets -+.TP 20 -+.M TimedSink n -+periodically pulls and drops a packet -+.TP 20 -+.M TimedSource n -+periodically generates a packet -+.TP 20 -+.M ToDevice n -+sends packets to network device (Linux kernel) -+.TP 20 -+.M ToDevice.u n -+sends packets to network device (user-level) -+.TP 20 -+.M ToDump n -+writes packets to a tcpdump file -+.TP 20 -+.M ToHost n -+sends packets to Linux -+.TP 20 -+.M ToHost.u n -+sends packets to Linux via Universal TUN/TAP device. -+.TP 20 -+.M ToHostSniffers n -+sends packets to Linux packet sniffers -+.TP 20 -+.M ToRawSocket n -+sends IP packets through a safe raw socket (user-level) -+.TP 20 -+.M ToSocket n -+sends data to socket (user-level) -+.TP 20 -+.M Truncate n -+limit packet length. -+.TP 20 -+.M UDPIPEncap n -+encapsulates packets in static UDP/IP headers -+.TP 20 -+.M UMLSwitch n -+Connects to a UML switch daemon -+.TP 20 -+.M Unqueue n -+pull-to-push converter -+.TP 20 -+.M Unqueue2 n -+pull-to-push converter -+.TP 20 -+.M Unstrip n -+unstrips bytes from front of packets -+.TP 20 -+.M UnstripIPHeader n -+restores outermost IP header -+.PD -diff -Nurb click-1.6.0/inst/share/man/mann/elements.n click-1.6.0-27/inst/share/man/mann/elements.n ---- click-1.6.0/inst/share/man/mann/elements.n 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/inst/share/man/mann/elements.n 2009-02-11 14:08:52.000000000 -0500 -@@ -0,0 +1,1323 @@ -+.\" -*- mode: nroff -*- -+.\" Generated by 'click-elem2man' -+.de M -+.IR "\\$1" "(\\$2)\\$3" -+.. -+.de RM -+.RI "\\$1" "\\$2" "(\\$3)\\$4" -+.. -+.TH "ELEMENTS" n "11/Feb/2009" "Click" -+.SH "NAME" -+elements - documented Click element classes -+.SH "DESCRIPTION" -+This page lists all Click element classes that have manual page documentation. -+.\"html

By Function: -+.\"html Basic Sources and Sinks - Basic Classification and Selection - Basic Packet Transfer - Counters - Timestamps - Basic Packet Modification - Packet Storage - Active Queue Management - Packet Scheduling - Traffic Shaping - Information Elements - Network Devices - Host and Socket Communication - Ethernet - ARP - IPv4 - IPv4 Routing - ICMP - Network Address Translation - TCP - UDP - Trace Manipulation - TCP/IP Measurement - CRCs - Paint Annotations - Annotations - Debugging - Control - Multithreaded Click - devices - Basic Sources and Sinks - Basic Classification and Selection - Basic Packet Transfer - Counters - Timestamps - Basic Packet Modification - Packet Storage - Active Queue Management - Packet Scheduling - Traffic Shaping - Information Elements - Network Devices - Host and Socket Communication - Ethernet - ARP - IPv4 - IPv4 Routing - ICMP - Network Address Translation - TCP - UDP - Trace Manipulation - TCP/IP Measurement - CRCs - Paint Annotations - Annotations - Debugging - Control - Multithreaded Click - devices
-+.\"html Alphabetical List

-+.SH "BY FUNCTION" -+.SS "Basic Sources and Sinks" -+.PP -+.PD 0 -+.TP 20 -+.M Discard n -+drops all packets -+.TP 20 -+.M DiscardNoFree n -+drops all packets, but does not free any of them. -+.TP 20 -+.M Idle n -+discards packets -+.TP 20 -+.M InfiniteSource n -+generates packets whenever scheduled -+.TP 20 -+.M RandomSource n -+generates random packets whenever scheduled -+.TP 20 -+.M RatedSource n -+generates packets at specified rate -+.TP 20 -+.M TimedSink n -+periodically pulls and drops a packet -+.TP 20 -+.M TimedSource n -+periodically generates a packet -+.PD -+.SS "Basic Classification and Selection" -+.PP -+.PD 0 -+.TP 20 -+.M CheckLength n -+drops large packets -+.TP 20 -+.M Classifier n -+classifies packets by contents -+.TP 20 -+.M HashSwitch n -+classifies packets by hash of contents -+.TP 20 -+.M RandomSample n -+samples packets with some probability -+.TP 20 -+.M RandomSwitch n -+sends packets to random outputs -+.TP 20 -+.M RoundRobinSwitch n -+sends packets to round-robin outputs -+.TP 20 -+.M StaticSwitch n -+sends packet stream to fixed output -+.TP 20 -+.M StrideSwitch n -+sends packets to stride-scheduled outputs -+.TP 20 -+.M Suppressor n -+passes packets unchanged, optionally dropping some input ports -+.TP 20 -+.M Switch n -+sends packet stream to settable output -+.PD -+.SS "Basic Packet Transfer" -+.PP -+.PD 0 -+.TP 20 -+.M Null n -+passes packets unchanged -+.TP 20 -+.M Null1 n -+copy of -+.M Null "n" -+.TP 20 -+.M PullNull n -+passes packets unchanged -+.TP 20 -+.M PullTee n -+duplicates packets -+.TP 20 -+.M PushNull n -+passes packets unchanged -+.TP 20 -+.M Tee n -+duplicates packets -+.PD -+.SS "Counters" -+.PP -+.PD 0 -+.TP 20 -+.M AverageCounter n -+measures historical packet count and rate -+.TP 20 -+.M Counter n -+measures packet count and rate -+.TP 20 -+.M CycleCountAccum n -+collects differences in cycle counters -+.TP 20 -+.M PerfCountAccum n -+collects differences in Pentium Pro performance metrics -+.TP 20 -+.M PerfCountInfo n -+turn on Pentium Pro performance metrics -+.TP 20 -+.M RoundTripCycleCount n -+measures round trip cycles on a push or pull path -+.TP 20 -+.M SetCycleCount n -+stores cycle count in annotation -+.TP 20 -+.M SetPerfCount n -+stores Pentium Pro performance metric in annotation -+.PD -+.SS "Timestamps" -+.PP -+.PD 0 -+.TP 20 -+.M SetTimestamp n -+store the time in the packet's timestamp annotation -+.PD -+.SS "Basic Packet Modification" -+.PP -+.PD 0 -+.TP 20 -+.M Align n -+aligns packet data -+.TP 20 -+.M RandomBitErrors n -+changes packet data with some probability -+.TP 20 -+.M StoreData n -+changes packet data -+.TP 20 -+.M Strip n -+strips bytes from front of packets -+.TP 20 -+.M StripToNetworkHeader n -+strips everything preceding network header -+.TP 20 -+.M Truncate n -+limit packet length. -+.TP 20 -+.M Unstrip n -+unstrips bytes from front of packets -+.PD -+.SS "Packet Storage" -+.PP -+.PD 0 -+.TP 20 -+.M FrontDropQueue n -+stores packets in drop-from-front FIFO queue -+.TP 20 -+.M MixedQueue n -+stores packets in a FIFO/LIFO queue -+.TP 20 -+.M NotifierQueue n -+stores packets in a FIFO queue -+.TP 20 -+.M Queue n -+stores packets in a FIFO queue -+.TP 20 -+.M SimpleQueue n -+stores packets in a FIFO queue -+.PD -+.SS "Active Queue Management" -+.PP -+.PD 0 -+.TP 20 -+.M AdaptiveRED n -+drops packets according to Adaptive RED -+.TP 20 -+.M RED n -+drops packets according to RED -+.PD -+.SS "Packet Scheduling" -+.PP -+.PD 0 -+.TP 20 -+.M DRRSched n -+pulls from inputs with deficit round robin scheduling -+.TP 20 -+.M PrioSched n -+pulls from priority-scheduled inputs -+.TP 20 -+.M PullSwitch n -+forwards pull requests to settable input -+.TP 20 -+.M RoundRobinSched n -+pulls from round-robin inputs -+.TP 20 -+.M StaticPullSwitch n -+forwards pull requests to fixed input -+.TP 20 -+.M StrideSched n -+pulls from stride-scheduled inputs -+.PD -+.SS "Traffic Shaping" -+.PP -+.PD 0 -+.TP 20 -+.M BandwidthMeter n -+classifies packet stream by arrival rate -+.TP 20 -+.M BandwidthRatedSplitter n -+splits flow of packets at specified bandwidth rate -+.TP 20 -+.M BandwidthRatedUnqueue n -+pull-to-push converter -+.TP 20 -+.M BandwidthShaper n -+shapes traffic to maximum rate (bytes/s) -+.TP 20 -+.M Burster n -+pull-to-push converter -+.TP 20 -+.M CompareBlock n -+drops packets out of rate range -+.TP 20 -+.M DelayShaper n -+shapes traffic to meet delay requirements -+.TP 20 -+.M DelayUnqueue n -+delay inducing pull-to-push converter -+.TP 20 -+.M LinkUnqueue n -+link emulator -+.TP 20 -+.M Meter n -+classifies packet stream by rate (pkt/s) -+.TP 20 -+.M RatedSplitter n -+splits flow of packets at specified rate -+.TP 20 -+.M RatedUnqueue n -+pull-to-push converter -+.TP 20 -+.M Shaper n -+shapes traffic to maximum rate (pkt/s) -+.TP 20 -+.M Unqueue n -+pull-to-push converter -+.TP 20 -+.M Unqueue2 n -+pull-to-push converter -+.PD -+.SS "Information Elements" -+.PP -+.PD 0 -+.TP 20 -+.M AddressInfo n -+specifies address information -+.TP 20 -+.M AlignmentInfo n -+specifies alignment information -+.TP 20 -+.M PortInfo n -+stores named TCP/UDP port information -+.TP 20 -+.M ScheduleInfo n -+specifies scheduling parameters -+.TP 20 -+.M ScheduleLinux n -+returns to Linux scheduler -+.PD -+.SS "Network Devices" -+.PP -+.PD 0 -+.TP 20 -+.M FromDevice n -+reads packets from network device (Linux kernel) -+.TP 20 -+.M FromDevice.u n -+reads packets from network device (user-level) -+.TP 20 -+.M PollDevice n -+polls packets from network device (kernel) -+.TP 20 -+.M ToDevice n -+sends packets to network device (Linux kernel) -+.TP 20 -+.M ToDevice.u n -+sends packets to network device (user-level) -+.PD -+.SS "Host and Socket Communication" -+.PP -+.PD 0 -+.TP 20 -+.M FromHost n -+reads packets from Linux -+.TP 20 -+.M FromHost.u n -+interface to /dev/net/tun or ethertap (user-level) -+.TP 20 -+.M FromRawSocket n -+reads raw IP packets from safe raw socket (user-level) -+.TP 20 -+.M FromSocket n -+reads data from socket (user-level) -+.TP 20 -+.M KernelFilter n -+block kernel from handling packets -+.TP 20 -+.M KernelTap n -+interface to /dev/tap or ethertap (user-level) -+.TP 20 -+.M KernelTun n -+interface to /dev/tun or ethertap (user-level) -+.TP 20 -+.M RawSocket n -+transports raw IP packets via safe raw sockets (user-level) -+.TP 20 -+.M Socket n -+a socket transport (user-level) -+.TP 20 -+.M ToHost n -+sends packets to Linux -+.TP 20 -+.M ToHost.u n -+sends packets to Linux via Universal TUN/TAP device. -+.TP 20 -+.M ToHostSniffers n -+sends packets to Linux packet sniffers -+.TP 20 -+.M ToRawSocket n -+sends IP packets through a safe raw socket (user-level) -+.TP 20 -+.M ToSocket n -+sends data to socket (user-level) -+.PD -+.SS "Ethernet" -+.PP -+.PD 0 -+.TP 20 -+.M EnsureEther n -+ensures that IP packets are Ethernet encapsulated -+.TP 20 -+.M EtherEncap n -+encapsulates packets in Ethernet header -+.TP 20 -+.M EtherMirror n -+swaps Ethernet source and destination -+.TP 20 -+.M HostEtherFilter n -+drops Ethernet packets sent to other machines -+.PD -+.SS "ARP" -+.PP -+.PD 0 -+.TP 20 -+.M ARPFaker n -+periodically generates an ARP reply -+.TP 20 -+.M ARPPrint n -+pretty-prints ARP packets a la tcpdump -+.TP 20 -+.M ARPQuerier n -+encapsulates IP packets in Ethernet headers found via ARP -+.TP 20 -+.M ARPResponder n -+generates responses to ARP queries -+.TP 20 -+.M CheckARPHeader n -+checks ARP header -+.PD -+.SS "IPv4" -+.PP -+.PD 0 -+.TP 20 -+.M CheckIPHeader n -+checks IP header -+.TP 20 -+.M CheckIPHeader2 n -+checks IP header, no checksum -+.TP 20 -+.M DecIPTTL n -+decrements IP time-to-live, drops dead packets -+.TP 20 -+.M FixIPSrc n -+sets IP source field if requested by annotation -+.TP 20 -+.M GetIPAddress n -+sets destination IP address annotation from packet data -+.TP 20 -+.M IPClassifier n -+classifies IP packets by contents -+.TP 20 -+.M IPEncap n -+encapsulates packets in static IP header -+.TP 20 -+.M IPFilter n -+filters IP packets by contents -+.TP 20 -+.M IPFragmenter n -+fragments large IP packets -+.TP 20 -+.M IPGWOptions n -+processes router IP options -+.TP 20 -+.M IPInputCombo n -+input combo for IP routing -+.TP 20 -+.M IPMirror n -+swaps IP source and destination -+.TP 20 -+.M IPNameInfo n -+stores name information about IP packets -+.TP 20 -+.M IPOutputCombo n -+output combo for IP routing -+.TP 20 -+.M IPPrint n -+pretty-prints IP packets -+.TP 20 -+.M IPReassembler n -+Reassembles fragmented IP packets -+.TP 20 -+.M MarkIPCE n -+sets IP packets' ECN field to Congestion Experienced -+.TP 20 -+.M MarkIPHeader n -+sets IP header annotation -+.TP 20 -+.M SetIPAddress n -+sets destination IP address annotations -+.TP 20 -+.M SetIPChecksum n -+sets IP packets' checksums -+.TP 20 -+.M SetIPDSCP n -+sets IP packets' DSCP fields -+.TP 20 -+.M SetRandIPAddress n -+sets destination IP address annotations randomly -+.TP 20 -+.M StoreIPAddress n -+stores IP address in packet -+.TP 20 -+.M StripIPHeader n -+strips outermost IP header -+.TP 20 -+.M UnstripIPHeader n -+restores outermost IP header -+.PD -+.SS "IPv4 Routing" -+.PP -+.PD 0 -+.TP 20 -+.M DirectIPLookup n -+IP routing lookup using direct-indexed tables -+.TP 20 -+.M IPRouteTable n -+IP routing table superclass -+.TP 20 -+.M LinearIPLookup n -+simple IP routing table -+.TP 20 -+.M LinuxIPLookup n -+interface to Linux's routing table -+.TP 20 -+.M RadixIPLookup n -+IP lookup using a radix trie -+.TP 20 -+.M RangeIPLookup n -+IP routing lookup through binary search in a very compact table -+.TP 20 -+.M RIPSend n -+periodically generates specified RIP II packet -+.TP 20 -+.M SortedIPLookup n " (deprecated)" -+simple IP routing table -+.TP 20 -+.M StaticIPLookup n -+simple static IP routing table -+.PD -+.SS "ICMP" -+.PP -+.PD 0 -+.TP 20 -+.M CheckICMPHeader n -+checks ICMP header on ICMP packets -+.TP 20 -+.M ICMPError n -+generates ICMP error packets -+.TP 20 -+.M ICMPPingEncap n -+encapsulates packets in ICMP ping headers -+.TP 20 -+.M ICMPPingResponder n -+responds to ICMP echo requests -+.TP 20 -+.M ICMPPingSource n -+periodically sends ICMP echo requests -+.PD -+.SS "Network Address Translation" -+.PP -+.PD 0 -+.TP 20 -+.M FTPPortMapper n -+manipulates -+.M IPRewriter "n" -+for FTP -+.TP 20 -+.M ICMPPingRewriter n -+rewrites ICMP echo requests and replies -+.TP 20 -+.M ICMPRewriter n -+rewrites ICMP packets based on IP rewriter mappings -+.TP 20 -+.M IPAddrPairRewriter n -+rewrites IP packets' addresses by address pair -+.TP 20 -+.M IPAddrRewriter n -+rewrites IP packets' addresses -+.TP 20 -+.M IPRewriter n -+rewrites TCP/UDP packets' addresses and ports -+.TP 20 -+.M IPRewriterPatterns n -+specifies shared -+.M IPRewriter n -+patterns -+.TP 20 -+.M RoundRobinIPMapper n -+round-robin mapper for -+.M IPRewriter n -+.TP 20 -+.M SourceIPHashMapper n -+Source IP Hash mapper for -+.M IPRewriter n -+.TP 20 -+.M TCPRewriter n -+rewrites TCP packets' addresses, ports, and sequence numbers -+.PD -+.SS "TCP" -+.PP -+.PD 0 -+.TP 20 -+.M CheckTCPHeader n -+checks TCP header on TCP/IP packets -+.TP 20 -+.M FastTCPFlows n -+creates packets flows with static TCP/IP/Ethernet headers -+.TP 20 -+.M RFC2507Comp n -+RFC2507 IPv4/TCP header compressor. -+.TP 20 -+.M RFC2507Decomp n -+RFC2507 IPv4/TCP header decompressor. -+.TP 20 -+.M SetTCPChecksum n -+sets TCP packets' checksums -+.PD -+.SS "UDP" -+.PP -+.PD 0 -+.TP 20 -+.M CheckUDPHeader n -+checks UDP header on UDP/IP packets -+.TP 20 -+.M DynamicUDPIPEncap n -+encapsulates packets in dynamic UDP/IP headers -+.TP 20 -+.M FastUDPFlows n -+creates packets flows with static UDP/IP/Ethernet headers -+.TP 20 -+.M FastUDPSource n -+creates packets with static UDP/IP/Ethernet headers -+.TP 20 -+.M SetUDPChecksum n -+sets UDP packets' checksums -+.TP 20 -+.M UDPIPEncap n -+encapsulates packets in static UDP/IP headers -+.PD -+.SS "Trace Manipulation" -+.PP -+.PD 0 -+.TP 20 -+.M FromDump n -+reads packets from a tcpdump file -+.TP 20 -+.M ToDump n -+writes packets to a tcpdump file -+.PD -+.SS "TCP/IP Measurement" -+.PP -+.PD 0 -+.TP 20 -+.M IPRateMonitor n -+measures coming and going IP traffic rates -+.PD -+.SS "CRCs" -+.PP -+.PD 0 -+.TP 20 -+.M CheckCRC32 n -+checks packet CRC32s -+.TP 20 -+.M SetCRC32 n -+calculates CRC32 and prepends to packet -+.PD -+.SS "Paint Annotations" -+.PP -+.PD 0 -+.TP 20 -+.M CheckPaint n -+checks packets' paint annotation -+.TP 20 -+.M Paint n -+sets packet paint annotations -+.TP 20 -+.M PaintSwitch n -+sends packet stream to output chosen per-packet -+.TP 20 -+.M PaintTee n -+duplicates packets with given paint annotation -+.PD -+.SS "Annotations" -+.PP -+.PD 0 -+.TP 20 -+.M DropBroadcasts n -+drops link-level broadcast and multicast packets -+.TP 20 -+.M SetAnnoByte n -+sets packet user annotations -+.TP 20 -+.M SetPacketType n -+sets packet type annotation -+.PD -+.SS "Debugging" -+.PP -+.PD 0 -+.TP 20 -+.M Error n -+always fails -+.TP 20 -+.M Print n -+prints packet contents -+.PD -+.SS "Control" -+.PP -+.PD 0 -+.TP 20 -+.M ChangeUID n -+relinquish root privilege -+.TP 20 -+.M ChatterSocket n -+reports chatter messages to connected sockets -+.TP 20 -+.M ControlSocket n -+opens control sockets for other programs -+.TP 20 -+.M DriverManager n -+a -+.M Script "n" -+that manages driver stop events -+.TP 20 -+.M KernelHandlerProxy n -+proxies kernel module handlers at user level -+.TP 20 -+.M Message n -+prints a message on configuration -+.TP 20 -+.M PokeHandlers n " (deprecated)" -+calls write handlers at specified times -+.TP 20 -+.M ProgressBar n -+prints a progress bar to standard error -+.TP 20 -+.M QuitWatcher n -+stops router processing -+.TP 20 -+.M Script n -+script a Click router configuration -+.PD -+.SS "Multithreaded Click" -+.PP -+.PD 0 -+.TP 20 -+.M CPUQueue n -+stores packets in FIFO queues. -+.TP 20 -+.M CPUSwitch n -+classifies packets by cpu -+.TP 20 -+.M LookupIPRouteMP n -+simple static IP routing table -+.TP 20 -+.M MSQueue n -+stores packets in a FIFO queue -+.TP 20 -+.M SpinlockAcquire n -+acquires spinlock -+.TP 20 -+.M SpinlockInfo n -+specifies names of spinlocks -+.TP 20 -+.M SpinlockRelease n -+releases spinlock -+.TP 20 -+.M StaticThreadSched n -+specifies element and thread scheduling parameters -+.PD -+.SS "devices" -+.PP -+.PD 0 -+.TP 20 -+.M UMLSwitch n -+Connects to a UML switch daemon -+.PD -+.SH "ALPHABETICAL LIST" -+.PP -+.PD 0 -+.TP 20 -+.M AdaptiveRED n -+drops packets according to Adaptive RED -+.TP 20 -+.M AddressInfo n -+specifies address information -+.TP 20 -+.M Align n -+aligns packet data -+.TP 20 -+.M AlignmentInfo n -+specifies alignment information -+.TP 20 -+.M ARPFaker n -+periodically generates an ARP reply -+.TP 20 -+.M ARPPrint n -+pretty-prints ARP packets a la tcpdump -+.TP 20 -+.M ARPQuerier n -+encapsulates IP packets in Ethernet headers found via ARP -+.TP 20 -+.M ARPResponder n -+generates responses to ARP queries -+.TP 20 -+.M AverageCounter n -+measures historical packet count and rate -+.TP 20 -+.M BandwidthMeter n -+classifies packet stream by arrival rate -+.TP 20 -+.M BandwidthRatedSplitter n -+splits flow of packets at specified bandwidth rate -+.TP 20 -+.M BandwidthRatedUnqueue n -+pull-to-push converter -+.TP 20 -+.M BandwidthShaper n -+shapes traffic to maximum rate (bytes/s) -+.TP 20 -+.M Burster n -+pull-to-push converter -+.TP 20 -+.M ChangeUID n -+relinquish root privilege -+.TP 20 -+.M ChatterSocket n -+reports chatter messages to connected sockets -+.TP 20 -+.M CheckARPHeader n -+checks ARP header -+.TP 20 -+.M CheckCRC32 n -+checks packet CRC32s -+.TP 20 -+.M CheckICMPHeader n -+checks ICMP header on ICMP packets -+.TP 20 -+.M CheckIPHeader n -+checks IP header -+.TP 20 -+.M CheckIPHeader2 n -+checks IP header, no checksum -+.TP 20 -+.M CheckLength n -+drops large packets -+.TP 20 -+.M CheckPaint n -+checks packets' paint annotation -+.TP 20 -+.M CheckTCPHeader n -+checks TCP header on TCP/IP packets -+.TP 20 -+.M CheckUDPHeader n -+checks UDP header on UDP/IP packets -+.TP 20 -+.M Classifier n -+classifies packets by contents -+.TP 20 -+.M CompareBlock n -+drops packets out of rate range -+.TP 20 -+.M ControlSocket n -+opens control sockets for other programs -+.TP 20 -+.M Counter n -+measures packet count and rate -+.TP 20 -+.M CPUQueue n -+stores packets in FIFO queues. -+.TP 20 -+.M CPUSwitch n -+classifies packets by cpu -+.TP 20 -+.M CycleCountAccum n -+collects differences in cycle counters -+.TP 20 -+.M DecIPTTL n -+decrements IP time-to-live, drops dead packets -+.TP 20 -+.M DelayShaper n -+shapes traffic to meet delay requirements -+.TP 20 -+.M DelayUnqueue n -+delay inducing pull-to-push converter -+.TP 20 -+.M DirectIPLookup n -+IP routing lookup using direct-indexed tables -+.TP 20 -+.M Discard n -+drops all packets -+.TP 20 -+.M DiscardNoFree n -+drops all packets, but does not free any of them. -+.TP 20 -+.M DriverManager n -+a -+.M Script "n" -+that manages driver stop events -+.TP 20 -+.M DropBroadcasts n -+drops link-level broadcast and multicast packets -+.TP 20 -+.M DRRSched n -+pulls from inputs with deficit round robin scheduling -+.TP 20 -+.M DynamicUDPIPEncap n -+encapsulates packets in dynamic UDP/IP headers -+.TP 20 -+.M EnsureEther n -+ensures that IP packets are Ethernet encapsulated -+.TP 20 -+.M Error n -+always fails -+.TP 20 -+.M EtherEncap n -+encapsulates packets in Ethernet header -+.TP 20 -+.M EtherMirror n -+swaps Ethernet source and destination -+.TP 20 -+.M FastTCPFlows n -+creates packets flows with static TCP/IP/Ethernet headers -+.TP 20 -+.M FastUDPFlows n -+creates packets flows with static UDP/IP/Ethernet headers -+.TP 20 -+.M FastUDPSource n -+creates packets with static UDP/IP/Ethernet headers -+.TP 20 -+.M FixIPSrc n -+sets IP source field if requested by annotation -+.TP 20 -+.M FromDevice n -+reads packets from network device (Linux kernel) -+.TP 20 -+.M FromDevice.u n -+reads packets from network device (user-level) -+.TP 20 -+.M FromDump n -+reads packets from a tcpdump file -+.TP 20 -+.M FromHost n -+reads packets from Linux -+.TP 20 -+.M FromHost.u n -+interface to /dev/net/tun or ethertap (user-level) -+.TP 20 -+.M FromRawSocket n -+reads raw IP packets from safe raw socket (user-level) -+.TP 20 -+.M FromSocket n -+reads data from socket (user-level) -+.TP 20 -+.M FrontDropQueue n -+stores packets in drop-from-front FIFO queue -+.TP 20 -+.M FTPPortMapper n -+manipulates -+.M IPRewriter "n" -+for FTP -+.TP 20 -+.M GetIPAddress n -+sets destination IP address annotation from packet data -+.TP 20 -+.M HashSwitch n -+classifies packets by hash of contents -+.TP 20 -+.M HostEtherFilter n -+drops Ethernet packets sent to other machines -+.TP 20 -+.M ICMPError n -+generates ICMP error packets -+.TP 20 -+.M ICMPPingEncap n -+encapsulates packets in ICMP ping headers -+.TP 20 -+.M ICMPPingResponder n -+responds to ICMP echo requests -+.TP 20 -+.M ICMPPingRewriter n -+rewrites ICMP echo requests and replies -+.TP 20 -+.M ICMPPingSource n -+periodically sends ICMP echo requests -+.TP 20 -+.M ICMPRewriter n -+rewrites ICMP packets based on IP rewriter mappings -+.TP 20 -+.M Idle n -+discards packets -+.TP 20 -+.M InfiniteSource n -+generates packets whenever scheduled -+.TP 20 -+.M IPAddrPairRewriter n -+rewrites IP packets' addresses by address pair -+.TP 20 -+.M IPAddrRewriter n -+rewrites IP packets' addresses -+.TP 20 -+.M IPClassifier n -+classifies IP packets by contents -+.TP 20 -+.M IPEncap n -+encapsulates packets in static IP header -+.TP 20 -+.M IPFilter n -+filters IP packets by contents -+.TP 20 -+.M IPFragmenter n -+fragments large IP packets -+.TP 20 -+.M IPGWOptions n -+processes router IP options -+.TP 20 -+.M IPInputCombo n -+input combo for IP routing -+.TP 20 -+.M IPMirror n -+swaps IP source and destination -+.TP 20 -+.M IPNameInfo n -+stores name information about IP packets -+.TP 20 -+.M IPOutputCombo n -+output combo for IP routing -+.TP 20 -+.M IPPrint n -+pretty-prints IP packets -+.TP 20 -+.M IPRateMonitor n -+measures coming and going IP traffic rates -+.TP 20 -+.M IPReassembler n -+Reassembles fragmented IP packets -+.TP 20 -+.M IPRewriter n -+rewrites TCP/UDP packets' addresses and ports -+.TP 20 -+.M IPRewriterPatterns n -+specifies shared -+.M IPRewriter n -+patterns -+.TP 20 -+.M IPRouteTable n -+IP routing table superclass -+.TP 20 -+.M KernelFilter n -+block kernel from handling packets -+.TP 20 -+.M KernelHandlerProxy n -+proxies kernel module handlers at user level -+.TP 20 -+.M KernelTap n -+interface to /dev/tap or ethertap (user-level) -+.TP 20 -+.M KernelTun n -+interface to /dev/tun or ethertap (user-level) -+.TP 20 -+.M LinearIPLookup n -+simple IP routing table -+.TP 20 -+.M LinkUnqueue n -+link emulator -+.TP 20 -+.M LinuxIPLookup n -+interface to Linux's routing table -+.TP 20 -+.M LookupIPRouteMP n -+simple static IP routing table -+.TP 20 -+.M MarkIPCE n -+sets IP packets' ECN field to Congestion Experienced -+.TP 20 -+.M MarkIPHeader n -+sets IP header annotation -+.TP 20 -+.M Message n -+prints a message on configuration -+.TP 20 -+.M Meter n -+classifies packet stream by rate (pkt/s) -+.TP 20 -+.M MixedQueue n -+stores packets in a FIFO/LIFO queue -+.TP 20 -+.M MSQueue n -+stores packets in a FIFO queue -+.TP 20 -+.M NotifierQueue n -+stores packets in a FIFO queue -+.TP 20 -+.M Null n -+passes packets unchanged -+.TP 20 -+.M Null1 n -+copy of -+.M Null "n" -+.TP 20 -+.M Paint n -+sets packet paint annotations -+.TP 20 -+.M PaintSwitch n -+sends packet stream to output chosen per-packet -+.TP 20 -+.M PaintTee n -+duplicates packets with given paint annotation -+.TP 20 -+.M PerfCountAccum n -+collects differences in Pentium Pro performance metrics -+.TP 20 -+.M PerfCountInfo n -+turn on Pentium Pro performance metrics -+.TP 20 -+.M PokeHandlers n " (deprecated)" -+calls write handlers at specified times -+.TP 20 -+.M PollDevice n -+polls packets from network device (kernel) -+.TP 20 -+.M PortInfo n -+stores named TCP/UDP port information -+.TP 20 -+.M Print n -+prints packet contents -+.TP 20 -+.M PrioSched n -+pulls from priority-scheduled inputs -+.TP 20 -+.M ProgressBar n -+prints a progress bar to standard error -+.TP 20 -+.M PullNull n -+passes packets unchanged -+.TP 20 -+.M PullSwitch n -+forwards pull requests to settable input -+.TP 20 -+.M PullTee n -+duplicates packets -+.TP 20 -+.M PushNull n -+passes packets unchanged -+.TP 20 -+.M Queue n -+stores packets in a FIFO queue -+.TP 20 -+.M QuitWatcher n -+stops router processing -+.TP 20 -+.M RadixIPLookup n -+IP lookup using a radix trie -+.TP 20 -+.M RandomBitErrors n -+changes packet data with some probability -+.TP 20 -+.M RandomSample n -+samples packets with some probability -+.TP 20 -+.M RandomSource n -+generates random packets whenever scheduled -+.TP 20 -+.M RandomSwitch n -+sends packets to random outputs -+.TP 20 -+.M RangeIPLookup n -+IP routing lookup through binary search in a very compact table -+.TP 20 -+.M RatedSource n -+generates packets at specified rate -+.TP 20 -+.M RatedSplitter n -+splits flow of packets at specified rate -+.TP 20 -+.M RatedUnqueue n -+pull-to-push converter -+.TP 20 -+.M RawSocket n -+transports raw IP packets via safe raw sockets (user-level) -+.TP 20 -+.M RED n -+drops packets according to RED -+.TP 20 -+.M RFC2507Comp n -+RFC2507 IPv4/TCP header compressor. -+.TP 20 -+.M RFC2507Decomp n -+RFC2507 IPv4/TCP header decompressor. -+.TP 20 -+.M RIPSend n -+periodically generates specified RIP II packet -+.TP 20 -+.M RoundRobinIPMapper n -+round-robin mapper for -+.M IPRewriter n -+.TP 20 -+.M RoundRobinSched n -+pulls from round-robin inputs -+.TP 20 -+.M RoundRobinSwitch n -+sends packets to round-robin outputs -+.TP 20 -+.M RoundTripCycleCount n -+measures round trip cycles on a push or pull path -+.TP 20 -+.M ScheduleInfo n -+specifies scheduling parameters -+.TP 20 -+.M ScheduleLinux n -+returns to Linux scheduler -+.TP 20 -+.M Script n -+script a Click router configuration -+.TP 20 -+.M SetAnnoByte n -+sets packet user annotations -+.TP 20 -+.M SetCRC32 n -+calculates CRC32 and prepends to packet -+.TP 20 -+.M SetCycleCount n -+stores cycle count in annotation -+.TP 20 -+.M SetIPAddress n -+sets destination IP address annotations -+.TP 20 -+.M SetIPChecksum n -+sets IP packets' checksums -+.TP 20 -+.M SetIPDSCP n -+sets IP packets' DSCP fields -+.TP 20 -+.M SetPacketType n -+sets packet type annotation -+.TP 20 -+.M SetPerfCount n -+stores Pentium Pro performance metric in annotation -+.TP 20 -+.M SetRandIPAddress n -+sets destination IP address annotations randomly -+.TP 20 -+.M SetTCPChecksum n -+sets TCP packets' checksums -+.TP 20 -+.M SetTimestamp n -+store the time in the packet's timestamp annotation -+.TP 20 -+.M SetUDPChecksum n -+sets UDP packets' checksums -+.TP 20 -+.M Shaper n -+shapes traffic to maximum rate (pkt/s) -+.TP 20 -+.M SimpleQueue n -+stores packets in a FIFO queue -+.TP 20 -+.M Socket n -+a socket transport (user-level) -+.TP 20 -+.M SortedIPLookup n " (deprecated)" -+simple IP routing table -+.TP 20 -+.M SourceIPHashMapper n -+Source IP Hash mapper for -+.M IPRewriter n -+.TP 20 -+.M SpinlockAcquire n -+acquires spinlock -+.TP 20 -+.M SpinlockInfo n -+specifies names of spinlocks -+.TP 20 -+.M SpinlockRelease n -+releases spinlock -+.TP 20 -+.M StaticIPLookup n -+simple static IP routing table -+.TP 20 -+.M StaticPullSwitch n -+forwards pull requests to fixed input -+.TP 20 -+.M StaticSwitch n -+sends packet stream to fixed output -+.TP 20 -+.M StaticThreadSched n -+specifies element and thread scheduling parameters -+.TP 20 -+.M StoreData n -+changes packet data -+.TP 20 -+.M StoreIPAddress n -+stores IP address in packet -+.TP 20 -+.M StrideSched n -+pulls from stride-scheduled inputs -+.TP 20 -+.M StrideSwitch n -+sends packets to stride-scheduled outputs -+.TP 20 -+.M Strip n -+strips bytes from front of packets -+.TP 20 -+.M StripIPHeader n -+strips outermost IP header -+.TP 20 -+.M StripToNetworkHeader n -+strips everything preceding network header -+.TP 20 -+.M Suppressor n -+passes packets unchanged, optionally dropping some input ports -+.TP 20 -+.M Switch n -+sends packet stream to settable output -+.TP 20 -+.M TCPRewriter n -+rewrites TCP packets' addresses, ports, and sequence numbers -+.TP 20 -+.M Tee n -+duplicates packets -+.TP 20 -+.M TimedSink n -+periodically pulls and drops a packet -+.TP 20 -+.M TimedSource n -+periodically generates a packet -+.TP 20 -+.M ToDevice n -+sends packets to network device (Linux kernel) -+.TP 20 -+.M ToDevice.u n -+sends packets to network device (user-level) -+.TP 20 -+.M ToDump n -+writes packets to a tcpdump file -+.TP 20 -+.M ToHost n -+sends packets to Linux -+.TP 20 -+.M ToHost.u n -+sends packets to Linux via Universal TUN/TAP device. -+.TP 20 -+.M ToHostSniffers n -+sends packets to Linux packet sniffers -+.TP 20 -+.M ToRawSocket n -+sends IP packets through a safe raw socket (user-level) -+.TP 20 -+.M ToSocket n -+sends data to socket (user-level) -+.TP 20 -+.M Truncate n -+limit packet length. -+.TP 20 -+.M UDPIPEncap n -+encapsulates packets in static UDP/IP headers -+.TP 20 -+.M UMLSwitch n -+Connects to a UML switch daemon -+.TP 20 -+.M Unqueue n -+pull-to-push converter -+.TP 20 -+.M Unqueue2 n -+pull-to-push converter -+.TP 20 -+.M Unstrip n -+unstrips bytes from front of packets -+.TP 20 -+.M UnstripIPHeader n -+restores outermost IP header -+.PD -Files click-1.6.0/inst.tar.gz and click-1.6.0-27/inst.tar.gz differ -diff -Nurb click-1.6.0/installch click-1.6.0-27/installch ---- click-1.6.0/installch 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/installch 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,66 @@ -+#! /bin/sh -+# -+# installch - install a program, script, or datafile if changed -+# -+# Copyright (c) 2006 Mazu Networks, Inc. -+# -+# Permission is hereby granted, free of charge, to any person obtaining a -+# copy of this software and associated documentation files (the "Software"), -+# to deal in the Software without restriction, subject to the conditions -+# listed in the Click LICENSE file. These conditions include: you must -+# preserve this copyright notice, and you cannot mention the copyright -+# holders in advertising related to the Software without their permission. -+# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+# notice is a summary of the Click LICENSE file; the license in that file is -+# legally binding. -+ -+install=${INSTALL-/usr/bin/install -c} -+src= -+dst= -+multi= -+mode=0755 -+user=`id -u` -+group=`id -g` -+ -+while [ x"$1" != x ]; do -+ case $1 in -+ -m) -+ mode="$2"; install="$install -m $2"; shift; shift; continue;; -+ -*) -+ echo "installch: unknown option $1" 1>&2; exit 1;; -+ *) -+ if [ x"$src" = x ]; then -+ src="$1" -+ elif [ x"$dst" = x ]; then -+ dst="$1" -+ else -+ multi=1; src="$src $dst"; dst="$1" -+ fi -+ shift; continue;; -+ esac -+done -+ -+if [ x"$dst" = x ]; then -+ echo "installch: too few arguments" 1>&2; exit 1 -+fi -+ -+if [ x"$multi" = 1 -a ! -d "$dst" ]; then -+ echo "installch: last argument must be directory" 1>&2; exit 1 -+fi -+ -+doinstall () { -+ while [ x"$1" != x ]; do -+ if [ -d "$dst" ]; then d="$dst/"`basename "$1"`; else d="$dst"; fi -+ if [ -r "$d" ] && cmp "$1" "$d" >/dev/null; then -+ chmod $mode "$d" || exit 1 -+ chgrp $group "$d" || exit 1 -+ else -+ $install "$1" "$d" || exit 1 -+ fi -+ shift -+ done -+} -+ -+doinstall $src -+ -+exit 0 -diff -Nurb click-1.6.0/lib/bitvector.cc.orig click-1.6.0-27/lib/bitvector.cc.orig ---- click-1.6.0/lib/bitvector.cc.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/lib/bitvector.cc.orig 2007-07-16 19:47:50.000000000 -0400 -@@ -0,0 +1,216 @@ -+// -*- c-basic-offset: 4; related-file-name: "../include/click/bitvector.hh" -*- -+/* -+ * bitvector.{cc,hh} -- generic bit vector class -+ * Eddie Kohler -+ * -+ * Copyright (c) 1999-2000 Massachusetts Institute of Technology -+ * Copyright (c) 2002 International Computer Science Institute -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, subject to the conditions -+ * listed in the Click LICENSE file. These conditions include: you must -+ * preserve this copyright notice, and you cannot mention the copyright -+ * holders in advertising related to the Software without their permission. -+ * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+ * notice is a summary of the Click LICENSE file; the license in that file is -+ * legally binding. -+ */ -+ -+#include -+#include -+CLICK_DECLS -+ -+void -+Bitvector::finish_copy_constructor(const Bitvector &o) -+{ -+ int nn = max_word(); -+ _data = new uint32_t[nn + 1]; -+ for (int i = 0; i <= nn; i++) -+ _data[i] = o._data[i]; -+} -+ -+void -+Bitvector::clear() -+{ -+ int nn = max_word(); -+ for (int i = 0; i <= nn; i++) -+ _data[i] = 0; -+} -+ -+bool -+Bitvector::zero() const -+{ -+ int nn = max_word(); -+ for (int i = 0; i <= nn; i++) -+ if (_data[i]) -+ return false; -+ return true; -+} -+ -+void -+Bitvector::resize_to_max(int new_max, bool valid_n) -+{ -+ int want_u = (new_max >> 5) + 1; -+ int have_u = (valid_n ? max_word() : MAX_INLINE_WORD) + 1; -+ if (have_u < MAX_INLINE_WORD + 1) -+ have_u = MAX_INLINE_WORD + 1; -+ if (want_u <= have_u) -+ return; -+ -+ uint32_t *new_data = new uint32_t[want_u]; -+ memcpy(new_data, _data, have_u * sizeof(uint32_t)); -+ memset(new_data + have_u, 0, (want_u - have_u) * sizeof(uint32_t)); -+ if (_data != &_f0) -+ delete[] _data; -+ _data = new_data; -+} -+ -+void -+Bitvector::clear_last() -+{ -+ if ((_max&0x1F) != 0x1F) { -+ uint32_t mask = (1U << ((_max&0x1F)+1)) - 1; -+ _data[_max>>5] &= mask; -+ } else if (_max < 0) -+ _data[0] = 0; -+} -+ -+Bitvector & -+Bitvector::operator=(const Bitvector &o) -+{ -+#if CLICK_LINUXMODULE || CLICK_BSDMODULE -+ // We might not have been initialized properly. -+ if (!_data) -+ _max = -1, _data = &_f0; -+#endif -+ if (&o == this) -+ /* nada */; -+ else if (o.max_word() <= MAX_INLINE_WORD) -+ memcpy(_data, o._data, 8); -+ else { -+ if (_data != &_f0) -+ delete[] _data; -+ _data = new uint32_t[o.max_word() + 1]; -+ memcpy(_data, o._data, (o.max_word() + 1) * sizeof(uint32_t)); -+ } -+ _max = o._max; -+ return *this; -+} -+ -+Bitvector & -+Bitvector::assign(int n, bool value) -+{ -+ resize(n); -+ uint32_t bits = (value ? 0xFFFFFFFFU : 0U); -+ int copy = max_word(); -+ for (int i = 0; i <= copy; i++) -+ _data[i] = bits; -+ if (value) -+ clear_last(); -+ return *this; -+} -+ -+void -+Bitvector::negate() -+{ -+ int nn = max_word(); -+ uint32_t *data = _data; -+ for (int i = 0; i <= nn; i++) -+ data[i] = ~data[i]; -+ clear_last(); -+} -+ -+Bitvector & -+Bitvector::operator&=(const Bitvector &o) -+{ -+ assert(o._max == _max); -+ int nn = max_word(); -+ uint32_t *data = _data, *o_data = o._data; -+ for (int i = 0; i <= nn; i++) -+ data[i] &= o_data[i]; -+ return *this; -+} -+ -+Bitvector & -+Bitvector::operator|=(const Bitvector &o) -+{ -+ if (o._max > _max) -+ resize(o._max + 1); -+ int nn = max_word(); -+ uint32_t *data = _data, *o_data = o._data; -+ for (int i = 0; i <= nn; i++) -+ data[i] |= o_data[i]; -+ return *this; -+} -+ -+Bitvector & -+Bitvector::operator^=(const Bitvector &o) -+{ -+ assert(o._max == _max); -+ int nn = max_word(); -+ uint32_t *data = _data, *o_data = o._data; -+ for (int i = 0; i <= nn; i++) -+ data[i] ^= o_data[i]; -+ return *this; -+} -+ -+void -+Bitvector::or_at(const Bitvector &o, int offset) -+{ -+ assert(offset >= 0 && offset + o._max <= _max); -+ uint32_t bits_1st = offset&0x1F; -+ int my_pos = offset>>5; -+ int o_pos = 0; -+ int my_max_word = max_word(); -+ int o_max_word = o.max_word(); -+ uint32_t *data = _data; -+ uint32_t *o_data = o._data; -+ -+ while (true) { -+ uint32_t val = o_data[o_pos]; -+ data[my_pos] |= (val << bits_1st); -+ -+ my_pos++; -+ if (my_pos > my_max_word) -+ break; -+ -+ if (bits_1st) -+ data[my_pos] |= (val >> (32 - bits_1st)); -+ -+ o_pos++; -+ if (o_pos > o_max_word) -+ break; -+ } -+} -+ -+void -+Bitvector::or_with_difference(const Bitvector &o, Bitvector &diff) -+{ -+ if (o._max > _max) -+ resize(o._max + 1); -+ if (diff._max > _max) -+ diff.resize(o._max + 1); -+ int nn = max_word(); -+ uint32_t *data = _data, *diff_data = diff._data; -+ const uint32_t *o_data = o._data; -+ for (int i = 0; i <= nn; i++) { -+ diff_data[i] = o_data[i] & ~data[i]; -+ data[i] |= o_data[i]; -+ } -+} -+ -+bool -+Bitvector::nonzero_intersection(const Bitvector &o) const -+{ -+ int nn = o.max_word(); -+ if (nn > max_word()) -+ nn = max_word(); -+ const uint32_t *data = _data, *o_data = o._data; -+ for (int i = 0; i <= nn; i++) -+ if (data[i] & o_data[i]) -+ return true; -+ return false; -+} -+ -+CLICK_ENDDECLS -diff -Nurb click-1.6.0/lib/in_cksum.c.orig click-1.6.0-27/lib/in_cksum.c.orig ---- click-1.6.0/lib/in_cksum.c.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/lib/in_cksum.c.orig 2007-07-16 19:47:50.000000000 -0400 -@@ -0,0 +1,111 @@ -+/* -*- c-basic-offset: 4 -*- -+ * -+ * in_cksum.c -- Internet checksum -+ * borrowed, with bug fixes, from one of the BSDs -+ */ -+ -+#include -+#if CLICK_BSDMODULE -+# include -+# include -+#endif -+#include -+#if CLICK_LINUXMODULE -+# include -+#else -+# include -+#endif -+ -+#if !CLICK_LINUXMODULE -+uint16_t -+click_in_cksum(const unsigned char *addr, int len) -+{ -+ int nleft = len; -+ const uint16_t *w = (const uint16_t *)addr; -+ uint32_t sum = 0; -+ uint16_t answer = 0; -+ -+ /* -+ * Our algorithm is simple, using a 32 bit accumulator (sum), we add -+ * sequential 16 bit words to it, and at the end, fold back all the -+ * carry bits from the top 16 bits into the lower 16 bits. -+ */ -+ while (nleft > 1) { -+ sum += *w++; -+ nleft -= 2; -+ } -+ -+ /* mop up an odd byte, if necessary */ -+ if (nleft == 1) { -+ *(unsigned char *)(&answer) = *(const unsigned char *)w ; -+ sum += answer; -+ } -+ -+ /* add back carry outs from top 16 bits to low 16 bits */ -+ sum = (sum & 0xffff) + (sum >> 16); -+ sum += (sum >> 16); -+ /* guaranteed now that the lower 16 bits of sum are correct */ -+ -+ answer = ~sum; /* truncate to 16 bits */ -+ return answer; -+} -+ -+uint16_t -+click_in_cksum_pseudohdr_raw(uint32_t csum, uint32_t src, uint32_t dst, int proto, int packet_len) -+{ -+ assert(csum <= 0xFFFF); -+ csum = ~csum & 0xFFFF; -+# ifdef __i386__ -+ // borrowed from Linux -+ __asm__("\n\ -+ addl %1, %0\n\ -+ adcl %2, %0\n\ -+ adcl %3, %0\n\ -+ adcl $0, %0\n" -+ : "=r" (csum) -+ : "g" (src), "g" (dst), "g" ((htons(packet_len) << 16) + (proto << 8)), "0" (csum)); -+ __asm__("\n\ -+ addl %1, %0\n\ -+ adcl $0xffff, %0\n" -+ : "=r" (csum) -+ : "r" (csum << 16), "0" (csum & 0xFFFF0000)); -+ return (~csum) >> 16; -+# else -+ csum += (src & 0xffff) + (src >> 16); -+ csum += (dst & 0xffff) + (dst >> 16); -+ csum += htons(packet_len) + htons(proto); -+ csum = (csum & 0xffff) + (csum >> 16); -+ return ~(csum + (csum >> 16)) & 0xFFFF; -+# endif -+} -+#endif -+ -+uint16_t -+click_in_cksum_pseudohdr_hard(uint32_t csum, const struct click_ip *iph, int packet_len) -+{ -+ const uint8_t *opt = (const uint8_t *)(iph + 1); -+ const uint8_t *end_opt = ((const uint8_t *)iph) + (iph->ip_hl << 2); -+ while (opt < end_opt) { -+ /* check one-byte options */ -+ if (*opt == IPOPT_NOP) { -+ opt++; -+ continue; -+ } else if (*opt == IPOPT_EOL) -+ break; -+ -+ /* check option length */ -+ if (opt + 1 >= end_opt || opt[1] < 2 || opt + opt[1] > end_opt) -+ break; -+ -+ /* grab correct final destination from source routing option */ -+ if ((*opt == IPOPT_SSRR || *opt == IPOPT_LSRR) && opt[1] >= 7) { -+ uint32_t daddr; -+ memcpy(&daddr, opt + opt[1] - 4, 4); -+ return click_in_cksum_pseudohdr_raw(csum, iph->ip_src.s_addr, daddr, iph->ip_p, packet_len); -+ } -+ -+ opt += opt[1]; -+ } -+ -+ return click_in_cksum_pseudohdr_raw(csum, iph->ip_src.s_addr, iph->ip_dst.s_addr, iph->ip_p, packet_len); -+} -diff -Nurb click-1.6.0/lib/ino.cc click-1.6.0-27/lib/ino.cc ---- click-1.6.0/lib/ino.cc 2007-09-11 15:39:22.000000000 -0400 -+++ click-1.6.0-27/lib/ino.cc 2009-01-20 22:34:50.000000000 -0500 -@@ -34,6 +34,16 @@ - _generation = 0; - } - -+#define DT_UNKNOWN 0 -+#define DT_FIFO 1 -+#define DT_CHR 2 -+#define DT_DIR 4 -+#define DT_BLK 6 -+#define DT_REG 8 -+#define DT_LNK 10 -+#define DT_SOCK 12 -+#define DT_WHT 14 -+ - void - ClickIno::cleanup() - { -diff -Nurb click-1.6.0/lib/ino.cc.orig click-1.6.0-27/lib/ino.cc.orig ---- click-1.6.0/lib/ino.cc.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/lib/ino.cc.orig 2007-09-11 15:39:22.000000000 -0400 -@@ -0,0 +1,440 @@ -+// -*- c-basic-offset: 4; related-file-name: "../include/click/ino.hh" -*- -+/* -+ * ino.{cc,hh} -- inode numbers for Click file systems -+ * Eddie Kohler -+ * -+ * Copyright (c) 2002 International Computer Science Institute -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software") -+ * to deal in the Software without restriction, subject to the conditions -+ * listed in the Click LICENSE file. These conditions include: you must -+ * preserve this copyright notice, and you cannot mention the copyright -+ * holders in advertising related to the Software without their permission. -+ * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+ * notice is a summary of the Click LICENSE file; the license in that file is -+ * legally binding. -+ */ -+ -+#include -+#include -+#include -+#include -+#if INO_DEBUG -+# include -+#endif -+CLICK_DECLS -+ -+void -+ClickIno::initialize() -+{ -+ _x = 0; -+ _nentries = _cap = 0; -+ _router = 0; -+ _generation = 0; -+} -+ -+void -+ClickIno::cleanup() -+{ -+ for (int i = 0; i < _cap; i++) -+ _x[i].name.~String(); -+ CLICK_LFREE(_x, sizeof(Entry) * _cap); -+ initialize(); -+} -+ -+int -+ClickIno::grow(int min_size) -+{ -+ if (_cap >= min_size) -+ return 0; -+ int new_cap = (_cap ? _cap : 128); -+ while (new_cap < min_size) -+ new_cap *= 2; -+ // cheat on memory: bad me! -+ Entry *nse = (Entry *)CLICK_LALLOC(sizeof(Entry) * new_cap); -+ if (!nse) -+ return -ENOMEM; -+ memcpy(nse, _x, sizeof(Entry) * _cap); -+ for (int i = _cap; i < new_cap; i++) -+ new((void *)&nse[i]) String(); -+ CLICK_LFREE(_x, sizeof(Entry) * _cap); -+ _x = nse; -+ _cap = new_cap; -+ return 0; -+} -+ -+ -+static int -+entry_compar(const void *v1, const void *v2) -+{ -+ const ClickIno::Entry *a = reinterpret_cast(v1); -+ const ClickIno::Entry *b = reinterpret_cast(v2); -+ return String::compare(a->name, b->name); -+} -+ -+int -+ClickIno::true_prepare(Router *r, uint32_t generation) -+{ -+ // config lock must be held! -+ -+ int nelem = (r ? r->nelements() : 0) + 1; -+ if (grow(nelem) < 0) -+ return -ENOMEM; -+ -+ // add sentinel entry -+ _x[0].name = String(); -+ _x[0].elementno_plus1 = 0; -+ _x[0].xindex = 0; -+ _x[0].skip = 0; -+ _x[0].flags = 0; -+ _nentries = 1; -+ -+ // exit early if router is empty -+ if (nelem == 1) { -+ _generation = generation; -+ _router = r; -+ _x[0].flags = X_SUBDIR_CONFLICTS_CALCULATED; -+ return 0; -+ } -+ -+ // add entries for actual elements -+ for (int i = 1; i < nelem; i++) { -+ _x[i].name = r->ename(i - 1); -+ _x[i].elementno_plus1 = i; -+ _x[i].skip = 0; -+ _x[i].flags = 0; -+ } -+ -+ // sort _x -+ click_qsort(&_x[1], nelem - 1, sizeof(Entry), entry_compar); -+ -+ // add new _x entries for intermediate directories -+ int n = nelem; -+ for (int i = 1; i < nelem; i++) { -+ // make local copies of the names since we might resize _x -+ String name = _x[i].name; -+ String last_name = _x[i-1].name; -+ int slash = name.find_right('/'); -+ // rely on '/' being less than any other valid name character in -+ // ASCII. If the prefix of "last_name" matches the part of "name" -+ // before a slash, then we know that "last_name" matches the whole -+ // component (rather than a fake match like "a/b/cc" <-> "a/b/c/e"). -+ while (slash >= 0 && (last_name.length() < slash || memcmp(name.data(), last_name.data(), slash) != 0)) { -+ if (n >= _cap && grow(n + 1) < 0) -+ return -ENOMEM; -+ _x[n].name = name.substring(0, slash); -+ _x[n].elementno_plus1 = n; -+ _x[n].skip = 0; -+ _x[n].flags = X_FAKE; -+ slash = _x[n].name.find_right('/'); -+ n++; -+ } -+ } -+ -+ // resort _x if necessary -+ if (n != nelem) -+ click_qsort(&_x[1], n - 1, sizeof(Entry), entry_compar); -+ -+ // calculate 'skip' -+ _x[0].skip = n - 1; -+ for (int i = 1; i < n - 1; i++) { -+ const String &name = _x[i].name; -+ int length = name.length(); -+ int j = i + 1; -+ while (j < n && _x[j].name.length() > length -+ && _x[j].name[length] == '/') { -+ assert(_x[j].name.substring(0, length) == name); -+ _x[i].skip++; -+ j++; -+ } -+ } -+ -+ // calculate 'xindex' -+ for (int i = 1; i < n; i++) -+ _x[_x[i].elementno_plus1].xindex = i; -+ -+ // done -+ _nentries = n; -+ _generation = generation; -+ _router = r; -+ return 0; -+} -+ -+ -+static int -+string_compar(const void *v1, const void *v2) -+{ -+ const String *a = reinterpret_cast(v1); -+ const String *b = reinterpret_cast(v2); -+ return String::compare(*a, *b); -+} -+ -+void -+ClickIno::calculate_handler_conflicts(int parent_elementno) -+{ -+ // configuration lock must be held! -+ -+ // no conflicts if no router, no children, or this element is fake -+ assert(parent_elementno >= -1 && parent_elementno < _nentries - 1); -+ int parent_xindex = xindex(parent_elementno); -+ if ((_x[parent_xindex].flags & (X_FAKE | X_SUBDIR_CONFLICTS_CALCULATED)) -+ || _x[parent_xindex].skip == 0) { -+ _x[parent_xindex].flags |= X_SUBDIR_CONFLICTS_CALCULATED; -+ return; -+ } -+ -+ // find the relevant handler indexes and names -+ Vector his; -+ Router::element_hindexes(Router::element(_router, parent_elementno), his); -+ Vector names; -+ for (int* hip = his.begin(); hip < his.end(); hip++) { -+ const Handler* h = Router::handler(_router, *hip); -+ if (h->visible()) -+ names.push_back(h->name()); -+ } -+ -+ // sort names -+ if (names.size()) -+ click_qsort(&names[0], names.size(), sizeof(String), string_compar); -+ -+ // run over the arrays, marking conflicts -+ int xi = parent_xindex + 1; -+ int next_xi = next_xindex(parent_elementno); -+ int hi = 0; -+ int name_start = (parent_xindex ? _x[parent_xindex].name.length() + 1 : 0); -+ while (xi < next_xi && hi < names.size()) { -+ int compare = String::compare(_x[xi].name.substring(name_start), names[hi]); -+ if (compare == 0) { // there is a conflict -+ _x[xi].flags |= X_HANDLER_CONFLICT; -+ xi += _x[xi].skip + 1; -+ hi++; -+ } else if (compare < 0) -+ xi += _x[xi].skip + 1; -+ else -+ hi++; -+ } -+ -+ // mark subdirectory as calculated -+ _x[parent_xindex].flags |= X_SUBDIR_CONFLICTS_CALCULATED; -+} -+ -+ -+int -+ClickIno::nlink(ino_t ino) -+{ -+ // must be called with config_lock held -+ int elementno = INO_ELEMENTNO(ino); -+ -+ // it might be a handler -+ if (INO_ISHANDLER(ino)) { -+ int xi = xindex(elementno); -+ // one for the number directory (or global directory), plus one if the -+ // name directory exists (for element handlers whose element name -+ // isn't a handler conflict) -+ return 1 + (xi > 0 && !(_x[xi].flags & X_HANDLER_CONFLICT)); -+ } -+ -+ // otherwise, it is a directory -+ int nlink = 2; -+ if (INO_DT_HAS_U(ino) && _router) -+ nlink += _router->nelements(); -+ if (INO_DT_HAS_N(ino)) { -+ int xi = xindex(elementno) + 1; -+ if (!(_x[xi - 1].flags & X_SUBDIR_CONFLICTS_CALCULATED)) -+ calculate_handler_conflicts(elementno); -+ int next_xi = next_xindex(elementno); -+ while (xi < next_xi) { -+ if (!(_x[xi].flags & X_HANDLER_CONFLICT) || INO_DIRTYPE(ino) == INO_DT_N) -+ nlink++; -+ xi += _x[xi].skip + 1; -+ } -+ } -+ return nlink; -+} -+ -+int -+ClickIno::name_search(const String &n, int first_xi, int last_xi, int name_offset) const -+{ -+ while (first_xi <= last_xi) { -+ int mid = (first_xi + last_xi) >> 1; -+ int cmp = String::compare(n, _x[mid].name.substring(name_offset)); -+ if (cmp == 0) -+ return mid; -+ else if (cmp < 0) -+ last_xi = mid - 1; -+ else -+ first_xi = mid + 1; -+ } -+ return -1; -+} -+ -+ino_t -+ClickIno::lookup(ino_t ino, const String &component) -+{ -+ // must be called with config_lock held -+ int elementno = INO_ELEMENTNO(ino); -+ int nelements = (_router ? _router->nelements() : 0); -+ -+ // quit early on empty string -+ if (!component.length()) -+ return 0; -+ -+ // quick check for dot -+ if (component[0] == '.' && component.length() == 1) -+ return ino; -+ -+ // look for numbers -+ if (INO_DT_HAS_U(ino) && component[0] >= '1' && component[0] <= '9') { -+ int eindex = component[0] - '0'; -+ for (int i = 1; i < component.length(); i++) -+ if (component[i] >= '0' && component[i] <= '9' && eindex < 1000000000) -+ eindex = (eindex * 10) + component[i] - '0'; -+ else -+ goto number_failed; -+ eindex--; -+ if (!_router || eindex >= _router->nelements()) -+ goto number_failed; -+ return INO_MKHDIR(eindex); -+ } -+ -+ number_failed: -+ // look for handlers -+ if (INO_DT_HAS_H(ino) && elementno < nelements) { -+ Element *element = Router::element(_router, elementno); -+ int hi = Router::hindex(element, component); -+ if (hi >= 0) -+ if (Router::handler(_router, hi)->visible()) -+ return INO_MKHANDLER(elementno, hi); -+ } -+ -+ // look for names -+ if (INO_DT_HAS_N(ino)) { -+ // delimit boundaries of search region -+ int first_xi = xindex(elementno) + 1; -+ int last_xi = next_xindex(elementno) - 1; -+ int name_offset = _x[first_xi - 1].name.length() + 1; -+ int found = name_search(component, first_xi, last_xi, (name_offset > 1 ? name_offset : 0)); -+ if (found >= 0) -+ return INO_MKHNDIR(ClickIno::elementno(found)); -+ } -+ -+ // check for dot dot -+ if (component[0] == '.' && component.length() == 2 && component[1] == '.') { -+ int xi = xindex(elementno); -+ int slash = _x[xi].name.find_right('/'); -+ if (slash < 0 || INO_DIRTYPE(ino) == INO_DT_H) -+ return INO_GLOBALDIR; -+ int found = name_search(_x[xi].name.substring(0, slash), 1, _nentries - 1, 0); -+ if (found >= 0) -+ return INO_MKHNDIR(ClickIno::elementno(found)); -+ panic("clickfs: .."); // should never happen -+ } -+ -+ // no luck -+ return 0; -+} -+ -+int -+ClickIno::readdir(ino_t ino, uint32_t &f_pos, filldir_t filldir, void *thunk) -+{ -+ // File positions: -+ // 0x00000-0x0FFFF ignored -+ // 0x10000-0x1FFFF handlers -+ // 0x20000-0x2FFFF numbers -+ // 0x30000-0x3FFFF names -+ -+#define RD_HOFF 0x10000 -+#define RD_UOFF 0x20000 -+#define RD_NOFF 0x30000 -+#define RD_XOFF 0x40000 -+#define FILLDIR(a, b, c, d, e, f) do { if (!filldir(a, b, c, d, e, f)) return 0; } while (0) -+ -+ int elementno = INO_ELEMENTNO(ino); -+ int nelements = (_router ? _router->nelements() : 0); -+ -+ // handler names -+ if (f_pos < RD_HOFF) -+ f_pos = RD_HOFF; -+ if (f_pos < RD_UOFF && INO_DT_HAS_H(ino) && elementno < nelements) { -+ Element *element = Router::element(_router, elementno); -+ Vector his; -+ Router::element_hindexes(element, his); -+ while (f_pos >= RD_HOFF && f_pos < his.size() + RD_HOFF) { -+ const Handler* h = Router::handler(_router, his[f_pos - RD_HOFF]); -+ if (h->visible()) -+ FILLDIR(h->name().data(), h->name().length(), INO_MKHANDLER(elementno, his[f_pos - RD_HOFF]), DT_REG, f_pos, thunk); -+ f_pos++; -+ } -+ } -+ -+ // subdirectory numbers -+ if (f_pos < RD_UOFF) -+ f_pos = RD_UOFF; -+ if (f_pos < RD_NOFF && INO_DT_HAS_U(ino) && _router) { -+ char buf[10]; -+ int nelem = _router->nelements(); -+ while (f_pos >= RD_UOFF && f_pos < RD_UOFF + nelem) { -+ int elem = f_pos - RD_UOFF; -+ sprintf(buf, "%d", elem + 1); -+ FILLDIR(buf, strlen(buf), INO_MKHDIR(elem), DT_DIR, f_pos, thunk); -+ f_pos++; -+ } -+ } -+ -+ // figure out edges of directory -+ int xi = xindex(elementno) + 1; -+ int next_xi = next_xindex(elementno); -+ -+ // subdirectory names -+ if (f_pos < RD_NOFF) -+ f_pos = RD_NOFF; -+ if (f_pos < RD_XOFF && INO_DT_HAS_N(ino)) { -+ bool include_conflicts = (INO_DIRTYPE(ino) == INO_DT_N); -+ if (!include_conflicts && !(_x[xi - 1].flags & X_SUBDIR_CONFLICTS_CALCULATED)) -+ calculate_handler_conflicts(elementno); -+ int name_offset = _x[xi - 1].name.length(); -+ if (name_offset > 0) -+ name_offset++; // skip slash -+ for (int j = RD_NOFF; xi < next_xi; xi += _x[xi].skip + 1, j++) -+ if (f_pos == j) { -+ if (!(_x[xi].flags & X_HANDLER_CONFLICT) || include_conflicts) -+ FILLDIR(_x[xi].name.data() + name_offset, _x[xi].name.length() - name_offset, INO_MKHNDIR(ClickIno::elementno(xi)), DT_DIR, f_pos, thunk); -+ f_pos++; -+ } -+ } -+ -+ f_pos = RD_XOFF; -+ return 1; -+} -+ -+#if INO_DEBUG -+String -+ClickIno::info() const -+{ -+ StringAccum sa; -+ for (int i = 0; i < _nentries; i++) { -+ sa << i << ". " << _x[i].name; -+ if (_x[i].name.length() >= 40) -+ sa << ' '; -+ else -+ sa.append(" ", 40 - _x[i].name.length()); -+ sa << 'E' << (_x[i].elementno_plus1 - 1) << '/' -+ << 'X' << _x[i].xindex << '\t' -+ << "->" << (i + 1 + _x[i].skip); -+ if (_x[i].flags) { -+ sa << '\t'; -+ if (_x[i].flags & X_FAKE) -+ sa << 'F'; -+ if (_x[i].flags & X_HANDLER_CONFLICT) -+ sa << 'H'; -+ if (_x[i].flags & X_SUBDIR_CONFLICTS_CALCULATED) -+ sa << 'S'; -+ } -+ sa << '\n'; -+ } -+ return sa.take_string(); -+} -+#endif -+ -+CLICK_ENDDECLS -diff -Nurb click-1.6.0/lib/nameinfo.cc.orig click-1.6.0-27/lib/nameinfo.cc.orig ---- click-1.6.0/lib/nameinfo.cc.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/lib/nameinfo.cc.orig 2007-07-16 19:47:50.000000000 -0400 -@@ -0,0 +1,536 @@ -+// -*- c-basic-offset: 4; related-file-name: "../include/click/nameinfo.hh" -*- -+/* -+ * nameinfo.{cc,hh} -- stores name information -+ * Eddie Kohler -+ * -+ * Copyright (c) 2005 The Regents of the University of California -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, subject to the conditions -+ * listed in the Click LICENSE file. These conditions include: you must -+ * preserve this copyright notice, and you cannot mention the copyright -+ * holders in advertising related to the Software without their permission. -+ * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+ * notice is a summary of the Click LICENSE file; the license in that file is -+ * legally binding. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+CLICK_DECLS -+ -+static NameInfo *the_name_info; -+ -+void -+NameDB::define(const String &, const void *, int) -+{ -+} -+ -+String -+NameDB::revfind(const void *, int) -+{ -+ return String(); -+} -+ -+ -+bool -+StaticNameDB::query(const String &name, void *value, int vsize) -+{ -+ assert(vsize == 4); -+ const char *namestr = name.c_str(); -+ int l = 0, r = _nentries - 1; -+ while (l <= r) { -+ int m = (l + r) / 2; -+ int cmp = strcmp(namestr, _entries[m].name); -+ if (cmp == 0) { -+ *reinterpret_cast(value) = _entries[m].value; -+ return true; -+ } else if (cmp < 0) -+ r = m - 1; -+ else -+ l = m + 1; -+ } -+ return false; -+} -+ -+String -+StaticNameDB::revfind(const void *value, int vsize) -+{ -+ assert(vsize == 4); -+ uint32_t ivalue; -+ memcpy(&ivalue, value, 4); -+ for (int i = 0; i < _nentries; i++) -+ if (_entries[i].value == ivalue) -+ return String::stable_string(_entries[i].name); -+ return String(); -+} -+ -+ -+void * -+DynamicNameDB::find(const String &name, bool create) -+{ -+ if (_sorted > 20) -+ sort(); -+ -+ if (_sorted == 100) { -+ int l = 0, r = _names.size() - 1, m; -+ while (l <= r) { -+ m = (l + r) / 2; -+ int cmp = String::compare(name, _names[m]); -+ if (cmp == 0) -+ return _values.data() + value_size() * m; -+ else if (cmp < 0) -+ r = m - 1; -+ else -+ l = m + 1; -+ } -+ } else { -+ _sorted++; -+ for (int i = 0; i < _names.size(); i++) -+ if (name == _names[i]) -+ return _values.data() + value_size() * i; -+ } -+ -+ if (create) { -+ _sorted = 0; -+ _names.push_back(name); -+ _values.extend(value_size()); -+ return _values.data() + _values.length() - value_size(); -+ } else -+ return 0; -+} -+ -+static int -+namelist_sort_compar(const void *athunk, const void *bthunk, void *othunk) -+{ -+ const int *a = (const int *) athunk, *b = (const int *) bthunk; -+ const String *o = (const String *) othunk; -+ return String::compare(o[*a], o[*b]); -+} -+ -+void -+DynamicNameDB::sort() -+{ -+ if (_sorted == 100 || _names.size() == 0) -+ return; -+ -+ Vector permutation(_names.size(), 0); -+ for (int i = 0; i < _names.size(); i++) -+ permutation[i] = i; -+ click_qsort(permutation.begin(), permutation.size(), sizeof(int), namelist_sort_compar, _names.begin()); -+ -+ Vector new_names(_names.size(), String()); -+ StringAccum new_values(_values.length()); -+ new_values.extend(_values.length()); -+ -+ String *nn = new_names.begin(); -+ char *nv = new_values.data(); -+ for (int i = 0; i < _names.size(); i++, nn++, nv += value_size()) { -+ *nn = _names[permutation[i]]; -+ memcpy(nv, _values.data() + value_size() * permutation[i], value_size()); -+ } -+ -+ _names.swap(new_names); -+ _values.swap(new_values); -+ _sorted = 100; -+} -+ -+bool -+DynamicNameDB::query(const String& name, void* value, int vsize) -+{ -+ assert(value_size() == vsize); -+ if (void *x = find(name, false)) { -+ memcpy(value, x, vsize); -+ return true; -+ } else -+ return false; -+} -+ -+void -+DynamicNameDB::define(const String& name, const void* value, int vsize) -+{ -+ assert(value_size() == vsize); -+ if (void *x = find(name, true)) -+ memcpy(x, value, vsize); -+} -+ -+ -+String -+DynamicNameDB::revfind(const void *value, int vsize) -+{ -+ const uint8_t *dx = (const uint8_t *) _values.data(); -+ for (int i = 0; i < _names.size(); i++, dx += vsize) -+ if (memcmp(dx, value, vsize) == 0) -+ return _names[i]; -+ return String(); -+} -+ -+ -+NameInfo::NameInfo() -+{ -+#ifdef CLICK_NAMEDB_CHECK -+ _check_generation = (uintptr_t) this; -+#endif -+} -+ -+NameInfo::~NameInfo() -+{ -+ for (int i = 0; i < _namedbs.size(); i++) -+ delete _namedbs[i]; -+} -+ -+void -+NameInfo::static_initialize() -+{ -+ the_name_info = new NameInfo; -+} -+ -+void -+NameInfo::static_cleanup() -+{ -+ delete the_name_info; -+} -+ -+#if 0 -+String -+NameInfo::NameList::rlookup(uint32_t val) -+{ -+ assert(_value_size == 4); -+ const uint32_t *x = (const uint32_t *) _values.value_size(); -+ for (int i = 0; i < _names.size(); i++) -+ if (x[i] == val) -+ return _names[i]; -+ return String(); -+} -+#endif -+ -+NameDB * -+NameInfo::namedb(uint32_t type, int vsize, const String &prefix, NameDB *install) -+{ -+ NameDB *db; -+ -+ // binary-search types -+ int l = 0, r = _namedb_roots.size() - 1, m; -+ while (l <= r) { -+ m = (l + r) / 2; -+ if (type == _namedb_roots[m]->_type) -+ goto found_root; -+ else if (type < _namedb_roots[m]->_type) -+ r = m - 1; -+ else -+ l = m + 1; -+ } -+ -+ // type not found -+ if (install == install_dynamic_sentinel()) -+ install = new DynamicNameDB(type, prefix, vsize); -+ if (install) { -+ assert(!install->_installed); -+ install->_installed = this; -+ _namedbs.push_back(install); -+ _namedb_roots.insert(_namedb_roots.begin() + l, install); -+ return install; -+ } else -+ return 0; -+ -+ found_root: -+ // walk tree to find prefix match; keep track of closest prefix -+ db = _namedb_roots[m]; -+ NameDB *closest = 0; -+ while (db) { -+ if (db->_prefix.length() <= prefix.length() -+ && memcmp(db->_prefix.data(), prefix.data(), db->_prefix.length()) == 0) { -+ closest = db; -+ db = db->_prefix_child; -+ } else -+ db = db->_prefix_sibling; -+ } -+ -+ // prefix found? -+ if (closest && closest->_prefix == prefix) { -+ assert(vsize < 0 || closest->_value_size == vsize); -+ return closest; -+ } -+ -+ // prefix not found -+ if (install == install_dynamic_sentinel()) -+ install = new DynamicNameDB(type, prefix, vsize); -+ if (install) { -+ assert(!install->_installed); -+ install->_installed = this; -+ _namedbs.push_back(install); -+ install->_prefix_parent = closest; -+ NameDB **pp = (closest ? &closest->_prefix_child : &_namedb_roots[m]); -+ install->_prefix_sibling = *pp; -+ *pp = install; -+ // adopt nodes that should be our children -+ pp = &install->_prefix_sibling; -+ while (*pp) { -+ if (prefix.length() < (*pp)->_prefix.length() -+ && memcmp((*pp)->_prefix.data(), prefix.data(), prefix.length()) == 0) { -+ NameDB *new_child = *pp; -+ *pp = new_child->_prefix_sibling; -+ new_child->_prefix_parent = install; -+ new_child->_prefix_sibling = install->_prefix_child; -+ install->_prefix_child = new_child; -+ } else -+ pp = &(*pp)->_prefix_sibling; -+ } -+ return install; -+ } else { -+ assert(!closest || vsize < 0 || closest->_value_size == vsize); -+ return closest; -+ } -+} -+ -+NameDB * -+NameInfo::getdb(uint32_t type, const Element *e, int vsize, bool create) -+{ -+ if (e) { -+ if (NameInfo *ni = (create ? e->router()->force_name_info() : e->router()->name_info())) { -+ NameDB *install = (create ? ni->install_dynamic_sentinel() : 0); -+ String ename = e->name(); -+ int last_slash = ename.find_right('/'); -+ if (last_slash >= 0) -+ return ni->namedb(type, vsize, ename.substring(0, last_slash + 1), install); -+ else -+ return ni->namedb(type, vsize, String(), install); -+ } -+ } -+ -+ NameDB *install = (create ? the_name_info->install_dynamic_sentinel() : 0); -+ return the_name_info->namedb(type, vsize, String(), install); -+} -+ -+void -+NameInfo::installdb(NameDB *db, const Element *prefix) -+{ -+ NameInfo *ni = (prefix ? prefix->router()->force_name_info() : the_name_info); -+ NameDB *curdb = ni->namedb(db->type(), db->value_size(), db->prefix(), db); -+ if (curdb != db) { -+ assert(!curdb->_prefix_child || curdb->_prefix_child->prefix().length() > db->prefix().length()); -+ db->_installed = ni; -+ db->_prefix_child = curdb->_prefix_child; -+ db->_prefix_parent = curdb; -+ curdb->_prefix_child = db; -+ for (NameDB *child = db->_prefix_child; child; child = child->_prefix_sibling) -+ child->_prefix_parent = db; -+ ni->_namedbs.push_back(db); -+ } -+#if CLICK_NAMEDB_CHECK -+ ni->check(ErrorHandler::default_handler()); -+#endif -+} -+ -+void -+NameInfo::removedb(NameDB *db) -+{ -+ if (!db->_installed) -+ return; -+ -+ // This is an uncommon operation, so don't worry about its performance. -+ NameInfo *ni = db->_installed; -+ int m; -+ for (m = 0; m < ni->_namedb_roots.size(); m++) -+ if (ni->_namedb_roots[m]->_type == db->_type) -+ break; -+ -+ NameDB **pp = (db->_prefix_parent ? &db->_prefix_parent->_prefix_child -+ : &ni->_namedb_roots[m]); -+ // Remove from sibling list -+ for (NameDB *sib = *pp; sib != db; sib = sib->_prefix_sibling) -+ /* do nothing */; -+ // Patch children in -+ *pp = db->_prefix_sibling; -+ while (NameDB *cdb = db->_prefix_child) { -+ db->_prefix_child = cdb->_prefix_sibling; -+ cdb->_prefix_parent = db->_prefix_parent; -+ cdb->_prefix_sibling = *pp; -+ *pp = cdb; -+ } -+ // Maybe remove root -+ if (!*pp && !db->_prefix_parent) -+ ni->_namedb_roots.erase(pp); -+ // Remove from _namedbs -+ for (int i = 0; i < ni->_namedbs.size(); i++) -+ if (ni->_namedbs[i] == db) { -+ ni->_namedbs[i] = ni->_namedbs.back(); -+ ni->_namedbs.pop_back(); -+ break; -+ } -+ // Mark as not installed -+ db->_installed = 0; -+ -+#if CLICK_NAMEDB_CHECK -+ ni->check(ErrorHandler::default_handler()); -+#endif -+} -+ -+bool -+NameInfo::query(uint32_t type, const Element *e, const String &name, void *value, int vsize) -+{ -+ while (1) { -+ NameDB *db = getdb(type, e, vsize, false); -+ while (db) { -+ if (db->query(name, value, vsize)) -+ return true; -+ db = db->prefix_parent(); -+ } -+ if (!e) -+ return false; -+ e = 0; -+ } -+} -+ -+bool -+NameInfo::query_int(uint32_t type, const Element *e, const String &name, int32_t *value) -+{ -+ return query(type, e, name, value, 4) || cp_integer(name, value); -+} -+ -+bool -+NameInfo::query_int(uint32_t type, const Element *e, const String &name, uint32_t *value) -+{ -+ return query(type, e, name, value, 4) || cp_integer(name, value); -+} -+ -+String -+NameInfo::revquery(uint32_t type, const Element *e, const void *value, int vsize) -+{ -+ while (1) { -+ NameDB *db = getdb(type, e, vsize, false); -+ while (db) { -+ if (String s = db->revfind(value, vsize)) -+ return s; -+ db = db->prefix_parent(); -+ } -+ if (!e) -+ return String(); -+ e = 0; -+ } -+} -+ -+ -+#ifdef CLICK_NAMEDB_CHECK -+void -+NameInfo::check(ErrorHandler *errh) -+{ -+ StringAccum sa; -+ sa << "NameInfo[" << (void*) this << "]: "; -+ PrefixErrorHandler perrh(errh, sa.take_string()); -+ _check_generation++; -+ for (int i = 0; i < _namedb_roots.size(); i++) { -+ NameDB *db = _namedb_roots[i]; -+ if (i < _namedb_roots.size() - 1 -+ && db->type() >= _namedb_roots[i+1]->type()) -+ perrh.error("db roots out of order at %i (%x/%x)", i, (unsigned) db->type(), (unsigned) _namedb_roots[i+1]->type()); -+ checkdb(db, 0, &perrh); -+ } -+ for (int i = 0; i < _namedbs.size(); i++) -+ if (_namedbs[i]->_check_generation != _check_generation) -+ perrh.error("DB[%x %s %p] in namedbs, but inaccessible", _namedbs[i]->_type, _namedbs[i]->_prefix.c_str(), _namedbs[i]); -+} -+ -+void -+NameInfo::checkdb(NameDB *db, NameDB *parent, ErrorHandler *errh) -+{ -+ StringAccum sa; -+ sa.snprintf(20, "DB[%x ", db->_type); -+ if (db->_prefix) -+ sa << db->_prefix << ' '; -+ sa << (void*) db << "]: "; -+ PrefixErrorHandler perrh(errh, sa.take_string()); -+ -+ // check self -+ if (!db->_installed) -+ perrh.error("not installed"); -+ else if (db->_installed != this) -+ perrh.error("installed in %p, not this NameInfo", db->_installed); -+ if (db->_check_generation == _check_generation) -+ perrh.error("installed in more than one place"); -+ db->_check_generation = _check_generation; -+ for (int i = 0; i < _namedbs.size(); i++) -+ if (_namedbs[i] == db) -+ goto found_in_namedbs; -+ perrh.error("not in _namedbs"); -+ found_in_namedbs: -+ -+ // check parent relationships -+ if (db->_prefix_parent != parent) -+ perrh.error("bad parent (%p/%p)", db->_prefix_parent, parent); -+ else if (parent && (db->_prefix.length() < parent->_prefix.length() -+ || db->_prefix.substring(0, parent->_prefix.length()) != parent->_prefix)) -+ perrh.error("parent prefix (%s) disagrees with prefix", parent->_prefix.c_str()); -+ if (db->_prefix && db->_prefix.back() != '/') -+ perrh.error("prefix doesn't end with '/'"); -+ if (parent && parent->_type != db->_type) -+ perrh.error("parent DB[%x %s %p] has different type", parent->_type, parent->_prefix.c_str(), parent); -+ if (parent && parent->_value_size != db->_value_size) -+ perrh.error("parent DB[%x %s %p] has different value size (%u/%u)", parent->_type, parent->_prefix.c_str(), parent, parent->_value_size, db->_value_size); -+ -+ // check sibling relationships -+ for (NameDB* sib = db->_prefix_sibling; sib; sib = sib->_prefix_sibling) { -+ int l1 = db->_prefix.length(), l2 = sib->_prefix.length(); -+ if (l1 < l2 ? sib->_prefix.substring(0, l1) == db->_prefix -+ : db->_prefix.substring(0, l2) == sib->_prefix) -+ perrh.error("sibling DB[%x %s %p] should have parent/child relationship", sib->_type, sib->_prefix.c_str(), sib); -+ if (sib->_type != db->_type) -+ perrh.error("sibling DB[%x %s %p] has different type", sib->_type, sib->_prefix.c_str(), sib); -+ if (sib->_value_size != db->_value_size) -+ perrh.error("sibling DB[%x %s %p] has different value size (%u/%u)", sib->_type, sib->_prefix.c_str(), sib, sib->_value_size, db->_value_size); -+ } -+ -+ // check db itself -+ db->check(&perrh); -+ -+ // recurse down and to the side -+ perrh.message("OK"); -+ if (db->_prefix_child) { -+ PrefixErrorHandler perrh2(errh, " "); -+ checkdb(db->_prefix_child, db, &perrh2); -+ } -+ if (db->_prefix_sibling) -+ checkdb(db->_prefix_sibling, parent, errh); -+} -+ -+void -+NameDB::check(ErrorHandler *) -+{ -+} -+ -+void -+StaticNameDB::check(ErrorHandler *errh) -+{ -+ for (int i = 0; i < _nentries - 1; i++) -+ if (strcmp(_entries[i].name, _entries[i+1].name) >= 0) -+ errh->error("entries %d/%d (%s/%s) out of order", i, i+1, _entries[i].name, _entries[i+1].name); -+} -+ -+void -+DynamicNameDB::check(ErrorHandler *errh) -+{ -+ if (_sorted == 100) -+ for (int i = 0; i < _names.size() - 1; i++) -+ if (String::compare(_names[i], _names[i+1]) >=0) -+ errh->error("entries %d/%d (%s/%s) out of order", i, i+1, _names[i].c_str(), _names[i+1].c_str()); -+ if (_values.length() != _names.size() * value_size()) -+ errh->error("odd value length %d (should be %d)", _values.length(), _names.size() * value_size()); -+} -+ -+void -+NameInfo::check(const Element *e, ErrorHandler *errh) -+{ -+ if (e) -+ if (NameInfo *ni = e->router()->name_info()) -+ ni->check(errh); -+ the_name_info->check(errh); -+} -+#endif -+ -+ -+CLICK_ENDDECLS -diff -Nurb click-1.6.0/lib/straccum.cc.orig click-1.6.0-27/lib/straccum.cc.orig ---- click-1.6.0/lib/straccum.cc.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/lib/straccum.cc.orig 2007-08-28 01:08:36.000000000 -0400 -@@ -0,0 +1,302 @@ -+// -*- c-basic-offset: 4; related-file-name: "../include/click/straccum.hh" -*- -+/* -+ * straccum.{cc,hh} -- build up strings with operator<< -+ * Eddie Kohler -+ * -+ * Copyright (c) 1999-2000 Massachusetts Institute of Technology -+ * Copyright (c) 2007 Regents of the University of California -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, subject to the conditions -+ * listed in the Click LICENSE file. These conditions include: you must -+ * preserve this copyright notice, and you cannot mention the copyright -+ * holders in advertising related to the Software without their permission. -+ * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+ * notice is a summary of the Click LICENSE file; the license in that file is -+ * legally binding. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+CLICK_DECLS -+ -+/** @class StringAccum -+ * @brief Efficiently build up Strings from pieces. -+ * -+ * Like the String class, StringAccum represents a string of characters. -+ * However, unlike a String, a StringAccum is inherently mutable, and -+ * efficiently supports building up a large string from many smaller pieces. -+ * -+ * StringAccum objects support operator<<() operations for most fundamental -+ * data types. A StringAccum is generally built up by operator<<(), and then -+ * turned into a String by the take_string() method. Extracting the String -+ * from a StringAccum does no memory allocation or copying; the StringAccum's -+ * memory is donated to the String. -+ * -+ *

Out-of-memory StringAccums

-+ * -+ * When there is not enough memory to add requested characters to a -+ * StringAccum object, the object becomes a special "out-of-memory" string. -+ * Out-of-memory strings are contagious: the result of any concatenation -+ * operation involving an out-of-memory string is another out-of-memory -+ * string. Calling take_string() on an out-of-memory StringAccum returns an -+ * out-of-memory String. -+ * -+ * Out-of-memory StringAccum objects nominally have zero characters. -+ */ -+ -+ -+void -+StringAccum::make_out_of_memory() -+{ -+ assert(_cap >= 0); -+ CLICK_LFREE(_s, _cap); -+ _s = reinterpret_cast(const_cast(String::out_of_memory_data())); -+ _cap = -1; -+ _len = 0; -+} -+ -+bool -+StringAccum::grow(int want) -+{ -+ // can't append to out-of-memory strings -+ if (_cap < 0) -+ return false; -+ -+ int ncap = (_cap ? _cap * 2 : 128); -+ while (ncap <= want) -+ ncap *= 2; -+ -+ unsigned char *n = (unsigned char *) CLICK_LALLOC(ncap); -+ if (!n) { -+ make_out_of_memory(); -+ return false; -+ } -+ -+ if (_s) -+ memcpy(n, _s, _cap); -+ CLICK_LFREE(_s, _cap); -+ _s = n; -+ _cap = ncap; -+ return true; -+} -+ -+/** @brief Append @a len copies of character @a c to this StringAccum. */ -+void -+StringAccum::append_fill(int c, int len) -+{ -+ if (char *s = extend(len)) -+ memset(s, c, len); -+} -+ -+/** @brief Null-terminate this StringAccum and return its data. -+ -+ Note that the null character does not contribute to the StringAccum's -+ length(), and later append() and similar operations can overwrite it. If -+ appending the null character fails, the StringAccum becomes out-of-memory -+ and the returned value is a null string. */ -+const char * -+StringAccum::c_str() -+{ -+ if (_len < _cap || grow(_len)) -+ _s[_len] = '\0'; -+ return reinterpret_cast(_s); -+} -+ -+/** @brief Return a String object with this StringAccum's contents. -+ -+ This operation donates the StringAccum's memory to the returned String. -+ After a call to take_string(), the StringAccum object becomes empty, and -+ any future append() operations may cause memory allocations. If the -+ StringAccum is out-of-memory, the returned String is also out-of-memory. -+ However, take_string() resets the StringAccum's out-of-memory state. */ -+String -+StringAccum::take_string() -+{ -+ int len = length(); -+ int cap = _cap; -+ char *str = reinterpret_cast(_s); -+ if (len > 0) { -+ _s = 0; -+ _len = _cap = 0; -+ return String::claim_string(str, len, cap); -+ } else if (!out_of_memory()) -+ return String(); -+ else { -+ clear(); -+ return String::out_of_memory_string(); -+ } -+} -+ -+/** @brief Swaps this StringAccum's contents with @a o. */ -+void -+StringAccum::swap(StringAccum &o) -+{ -+ unsigned char *os = o._s; -+ int olen = o._len, ocap = o._cap; -+ o._s = _s; -+ o._len = _len, o._cap = _cap; -+ _s = os; -+ _len = olen, _cap = ocap; -+} -+ -+/** @relates StringAccum -+ @brief Append decimal representation of @a i to @a sa. -+ @return @a sa */ -+StringAccum & -+operator<<(StringAccum &sa, long i) -+{ -+ if (char *x = sa.reserve(24)) { -+ int len = sprintf(x, "%ld", i); -+ sa.adjust_length(len); -+ } -+ return sa; -+} -+ -+/** @relates StringAccum -+ @brief Append decimal representation of @a u to @a sa. -+ @return @a sa */ -+StringAccum & -+operator<<(StringAccum &sa, unsigned long u) -+{ -+ if (char *x = sa.reserve(24)) { -+ int len = sprintf(x, "%lu", u); -+ sa.adjust_length(len); -+ } -+ return sa; -+} -+ -+/** @brief Append representation of @a num to this StringAccum. -+ @param num number to append -+ @param base numeric base: must be 8, 10, or 16 -+ @param uppercase true means use uppercase letters in base 16 */ -+void -+StringAccum::append_numeric(String::uint_large_t num, int base, bool uppercase) -+{ -+ // Unparse a large integer. Linux kernel sprintf can't handle %lld, so we -+ // provide our own function, and use it everywhere to catch bugs. -+ -+ char buf[256]; -+ char *trav = buf + 256; -+ -+ assert(base == 10 || base == 16 || base == 8); -+ if (base != 10) { -+ const char *digits = (uppercase ? "0123456789ABCDEF" : "0123456789abcdef"); -+ while (num > 0) { -+ *--trav = digits[num & (base - 1)]; -+ num >>= (base >> 3) + 2; -+ } -+ } -+ -+ while (num > 0) { -+ // k = Approx[num/10] -- know that k <= num/10 -+ String::uint_large_t k = (num >> 4) + (num >> 5) + (num >> 8) -+ + (num >> 9) + (num >> 12) + (num >> 13) + (num >> 16) -+ + (num >> 17); -+ String::uint_large_t m; -+ -+ // increase k until it exactly equals floor(num/10). on exit, m is -+ // the remainder: m < 10 and num == 10*k + m. -+ while (1) { -+ // d = 10*k -+ String::uint_large_t d = (k << 3) + (k << 1); -+ m = num - d; -+ if (m < 10) -+ break; -+ -+ // delta = Approx[m/10] -- know that delta <= m/10 -+ String::uint_large_t delta = (m >> 4) + (m >> 5) + (m >> 8) + (m >> 9); -+ if (m >= 0x1000) -+ delta += (m >> 12) + (m >> 13) + (m >> 16) + (m >> 17); -+ -+ // delta might have underflowed: add at least 1 -+ k += (delta ? delta : 1); -+ } -+ -+ *--trav = '0' + (unsigned)m; -+ num = k; -+ } -+ -+ // make sure at least one 0 is written -+ if (trav == buf + 256) -+ *--trav = '0'; -+ -+ append(trav, buf + 256); -+} -+ -+/** @overload */ -+void -+StringAccum::append_numeric(String::int_large_t num, int base, bool uppercase) -+{ -+ if (num < 0) { -+ *this << '-'; -+ append_numeric(static_cast(-num), base, uppercase); -+ } else -+ append_numeric(static_cast(num), base, uppercase); -+} -+ -+#if defined(CLICK_USERLEVEL) || defined(CLICK_TOOL) -+/** @relates StringAccum -+ @brief Append decimal representation of @a d to @a sa. -+ @return @a sa */ -+StringAccum & -+operator<<(StringAccum &sa, double d) -+{ -+ if (char *x = sa.reserve(256)) { -+ int len = sprintf(x, "%.12g", d); -+ sa.adjust_length(len); -+ } -+ return sa; -+} -+#endif -+ -+/** @relates StringAccum -+ @brief Append hexadecimal representation @a ptr's value to @a sa. -+ @return @a sa */ -+StringAccum & -+operator<<(StringAccum &sa, void *ptr) -+{ -+ if (char *x = sa.reserve(30)) { -+ int len = sprintf(x, "%p", ptr); -+ sa.adjust_length(len); -+ } -+ return sa; -+} -+ -+/** @brief Append result of snprintf() to this StringAccum. -+ @param n maximum number of characters to print -+ @param format format argument to snprintf() -+ -+ The terminating null character is not appended to the string. -+ -+ @note The safe vsnprintf() variant is called if it exists. It does in -+ the Linux kernel, and on modern Unix variants. However, -+ if it does not exist on your machine, then this function is actually -+ unsafe, and you should make sure that the printf() invocation represented -+ by your arguments will never write more than @a n characters, not -+ including the terminating null. */ -+StringAccum & -+StringAccum::snprintf(int n, const char *format, ...) -+{ -+ va_list val; -+ va_start(val, format); -+ if (char *x = reserve(n + 1)) { -+#if CLICK_LINUXMODULE || HAVE_VSNPRINTF -+ int len = vsnprintf(x, n + 1, format, val); -+#else -+ int len = vsprintf(x, format, val); -+ assert(len <= n); -+#endif -+ adjust_length(len); -+ } -+ va_end(val); -+ return *this; -+} -+ -+CLICK_ENDDECLS -diff -Nurb click-1.6.0/lib/string.cc.orig click-1.6.0-27/lib/string.cc.orig ---- click-1.6.0/lib/string.cc.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/lib/string.cc.orig 2007-09-09 23:45:30.000000000 -0400 -@@ -0,0 +1,836 @@ -+// -*- c-basic-offset: 4; related-file-name: "../include/click/string.hh" -*- -+/* -+ * string.{cc,hh} -- a String class with shared substrings -+ * Eddie Kohler -+ * -+ * Copyright (c) 1999-2000 Massachusetts Institute of Technology -+ * Copyright (c) 2004-2007 Regents of the University of California -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, subject to the conditions -+ * listed in the Click LICENSE file. These conditions include: you must -+ * preserve this copyright notice, and you cannot mention the copyright -+ * holders in advertising related to the Software without their permission. -+ * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+ * notice is a summary of the Click LICENSE file; the license in that file is -+ * legally binding. -+ */ -+ -+#include -+#include -+#include -+#include -+CLICK_DECLS -+ -+/** @file string.hh -+ * @brief Click's String class. -+ */ -+ -+/** @class String -+ * @brief A string of characters. -+ * -+ * The String class represents a string of characters. Strings may be -+ * constructed from C strings, characters, numbers, and so forth. They may -+ * also be added together. The underlying character arrays are dynamically -+ * allocated; String operations allocate and free memory as needed. A String -+ * and its substrings generally share memory. Accessing a character by index -+ * takes O(1) time; so does creating a substring. -+ * -+ *

Initialization

-+ * -+ * The String implementation must be explicitly initialized before use; see -+ * static_initialize(). Explicit initialization is used because static -+ * constructors and other automatic initialization tricks don't work in the -+ * kernel. However, at user level, you can declare a String::Initializer -+ * object to initialize the library. -+ * -+ *

Out-of-memory strings

-+ * -+ * When there is not enough memory to create a particular string, a special -+ * "out-of-memory" string is returned instead. Out-of-memory strings are -+ * contagious: the result of any concatenation operation involving an -+ * out-of-memory string is another out-of-memory string. Thus, the final -+ * result of a series of String operations will be an out-of-memory string, -+ * even if the out-of-memory condition occurs in the middle. -+ * -+ * Out-of-memory strings have zero characters, but they aren't equal to other -+ * empty strings. If @a s is a normal String (even an empty string), and @a -+ * oom is an out-of-memory string, then @a s @< @a oom. -+ * -+ * All out-of-memory strings are equal and share the same data(), which is -+ * different from the data() of any other string. See -+ * String::out_of_memory_data(). The String::out_of_memory_string() function -+ * returns an out-of-memory string. -+ */ -+ -+String::Memo *String::null_memo = 0; -+String::Memo *String::permanent_memo = 0; -+String::Memo *String::oom_memo = 0; -+String *String::null_string_p = 0; -+String *String::oom_string_p = 0; -+const char String::oom_string_data = 0; -+ -+/** @cond never */ -+inline -+String::Memo::Memo() -+ : _capacity(0), _real_data("") -+{ -+ _refcount = 0; -+ _dirty = 0; -+} -+ -+inline -+String::Memo::Memo(char *data, int dirty, int capacity) -+ : _capacity(capacity), _real_data(data) -+{ -+ _refcount = 0; -+ _dirty = dirty; -+} -+ -+String::Memo::Memo(int dirty, int capacity) -+ : _capacity(capacity), _real_data((char *) CLICK_LALLOC(capacity)) -+{ -+ assert(capacity >= dirty); -+ _refcount = 1; -+ _dirty = dirty; -+} -+ -+String::Memo::~Memo() -+{ -+ if (_capacity) { -+ assert(_capacity >= _dirty); -+ CLICK_LFREE(_real_data, _capacity); -+ } -+} -+/** @endcond never */ -+ -+ -+/** @brief Create a String containing the ASCII base-10 representation of @a i. -+ */ -+String::String(int i) -+{ -+ char buf[128]; -+ sprintf(buf, "%d", i); -+ assign(buf, -1); -+} -+ -+/** @brief Create a String containing the ASCII base-10 representation of @a u. -+ */ -+String::String(unsigned u) -+{ -+ char buf[128]; -+ sprintf(buf, "%u", u); -+ assign(buf, -1); -+} -+ -+/** @brief Create a String containing the ASCII base-10 representation of @a i. -+ */ -+String::String(long i) -+{ -+ char buf[128]; -+ sprintf(buf, "%ld", i); -+ assign(buf, -1); -+} -+ -+/** @brief Create a String containing the ASCII base-10 representation of @a u. -+ */ -+String::String(unsigned long u) -+{ -+ char buf[128]; -+ sprintf(buf, "%lu", u); -+ assign(buf, -1); -+} -+ -+// Implemented a [u]int64_t converter in StringAccum -+// (use the code even at user level to hunt out bugs) -+ -+#if HAVE_LONG_LONG -+/** @brief Create a String containing the ASCII base-10 representation of @a q. -+ */ -+String::String(long long q) -+{ -+ StringAccum sa; -+ sa << q; -+ assign(sa.data(), sa.length()); -+} -+ -+/** @brief Create a String containing the ASCII base-10 representation of @a q. -+ */ -+String::String(unsigned long long q) -+{ -+ StringAccum sa; -+ sa << q; -+ assign(sa.data(), sa.length()); -+} -+#endif -+ -+#if HAVE_INT64_TYPES && !HAVE_INT64_IS_LONG && !HAVE_INT64_IS_LONG_LONG -+/** @brief Create a String containing the ASCII base-10 representation of @a q. -+ */ -+String::String(int64_t q) -+{ -+ StringAccum sa; -+ sa << q; -+ assign(sa.data(), sa.length()); -+} -+ -+/** @brief Create a String containing the ASCII base-10 representation of @a q. -+ */ -+String::String(uint64_t q) -+{ -+ StringAccum sa; -+ sa << q; -+ assign(sa.data(), sa.length()); -+} -+#endif -+ -+#ifdef CLICK_USERLEVEL -+ -+/** @brief Create a String containing the ASCII base-10 representation of @a d. -+ * @note This function is only available at user level. -+ */ -+String::String(double d) -+{ -+ char buf[128]; -+ int len = sprintf(buf, "%.12g", d); -+ assign(buf, len); -+} -+ -+#endif -+ -+String -+String::claim_string(char *str, int len, int capacity) -+{ -+ assert(str && len > 0 && capacity >= len); -+ Memo *new_memo = new Memo(str, len, capacity); -+ if (new_memo) -+ return String(str, len, new_memo); -+ else -+ return String(&oom_string_data, 0, oom_memo); -+} -+ -+/** @brief Return a String that directly references the first @a len -+ * characters of @a s. -+ * -+ * This function is suitable for static constant strings whose data is known -+ * to stay around forever, such as C string constants. If @a len @< 0, treats -+ * @a s as a null-terminated C string. -+ */ -+String -+String::stable_string(const char *s, int len) -+{ -+ if (len < 0) -+ len = (s ? strlen(s) : 0); -+ return String(s, len, permanent_memo); -+} -+ -+/** @brief Create and return a String containing @a len random characters. */ -+String -+String::garbage_string(int len) -+{ -+ String s; -+ s.append_garbage(len); -+ return s; -+} -+ -+/** @brief Create and return a String containing an ASCII representation of @a num. -+ * @param num Number. -+ * @param base Base; must be 8, 10, or 16. Defaults to 10. -+ * @param uppercase If true, then use uppercase letters in base 16. -+ */ -+String -+String::numeric_string(int_large_t num, int base, bool uppercase) -+{ -+ StringAccum sa; -+ sa.append_numeric(num, base, uppercase); -+ return sa.take_string(); -+} -+ -+/** @brief Create and return a String containing an ASCII representation of @a num. -+ * @param num Number. -+ * @param base Base; must be 8, 10, or 16. Defaults to 10. -+ * @param uppercase If true, then use uppercase letters in base 16. -+ */ -+String -+String::numeric_string(uint_large_t num, int base, bool uppercase) -+{ -+ StringAccum sa; -+ sa.append_numeric(num, base, uppercase); -+ return sa.take_string(); -+} -+ -+void -+String::make_out_of_memory() -+{ -+ if (_memo) -+ deref(); -+ _memo = oom_memo; -+ _memo->_refcount++; -+ _data = _memo->_real_data; -+ _length = 0; -+} -+ -+void -+String::assign(const char *str, int len) -+{ -+ if (!str) { -+ assert(len <= 0); -+ len = 0; -+ } else if (len < 0) -+ len = strlen(str); -+ -+ if (len == 0) { -+ _memo = (str == &oom_string_data ? oom_memo : null_memo); -+ _memo->_refcount++; -+ -+ } else { -+ // Make 'capacity' a multiple of 16 characters and bigger than 'len'. -+ int capacity = (len + 16) & ~15; -+ _memo = new Memo(len, capacity); -+ if (!_memo || !_memo->_real_data) { -+ make_out_of_memory(); -+ return; -+ } -+ memcpy(_memo->_real_data, str, len); -+ } -+ -+ _data = _memo->_real_data; -+ _length = len; -+} -+ -+/** @brief Append @a len random characters to this string. -+ @return Modifiable pointer to the appended random characters. -+ -+ The caller may safely modify the returned memory. Null is returned if the -+ string becomes out-of-memory. */ -+char * -+String::append_garbage(int len) -+{ -+ // Appending anything to "out of memory" leaves it as "out of memory" -+ if (len <= 0 || _memo == oom_memo) -+ return 0; -+ -+ // If we can, append into unused space. First, we check that there's -+ // enough unused space for 'len' characters to fit; then, we check -+ // that the unused space immediately follows the data in '*this'. -+ uint32_t dirty = _memo->_dirty; -+ if (_memo->_capacity > dirty + len) { -+ char *real_dirty = _memo->_real_data + dirty; -+ if (real_dirty == _data + _length -+ && _memo->_dirty.compare_and_swap(dirty, dirty + len)) { -+ _length += len; -+ assert(_memo->_dirty < _memo->_capacity); -+ return real_dirty; -+ } -+ } -+ -+ // Now we have to make new space. Make sure the new capacity is a -+ // multiple of 16 characters and that it is at least 16. But for large -+ // strings, allocate a power of 2, since power-of-2 sizes minimize waste -+ // in frequently-used allocators, like Linux kmalloc. -+ int new_capacity = (_length + len < 1024 ? (_length + 16) & ~15 : 1024); -+ while (new_capacity < _length + len) -+ new_capacity *= 2; -+ -+#if CLICK_DMALLOC -+ // Keep total allocation a power of 2 by leaving extra space for the -+ // DMALLOC Chunk. -+ if (_length + len < new_capacity - 32) -+ new_capacity -= 32; -+#endif -+ -+ Memo *new_memo = new Memo(_length + len, new_capacity); -+ if (!new_memo || !new_memo->_real_data) { -+ delete new_memo; -+ make_out_of_memory(); -+ return 0; -+ } -+ -+ char *new_data = new_memo->_real_data; -+ memcpy(new_data, _data, _length); -+ -+ deref(); -+ _data = new_data; -+ new_data += _length; // now new_data points to the garbage -+ _length += len; -+ _memo = new_memo; -+ return new_data; -+} -+ -+/** @brief Append the first @a len characters of @a suffix to this string. -+ * -+ * @param suffix data to append -+ * @param len length of data -+ * -+ * If @a len @< 0, treats @a suffix as a null-terminated C string. */ -+void -+String::append(const char *suffix, int len) -+{ -+ if (!suffix) { -+ assert(len <= 0); -+ len = 0; -+ } else if (len < 0) -+ len = strlen(suffix); -+ -+ if (suffix == &oom_string_data) -+ // Appending "out of memory" to a regular string makes it "out of -+ // memory" -+ make_out_of_memory(); -+ else if (char *space = append_garbage(len)) -+ memcpy(space, suffix, len); -+} -+ -+/** @brief Append @a len copies of character @a c to this string. */ -+void -+String::append_fill(int c, int len) -+{ -+ assert(len >= 0); -+ if (char *space = append_garbage(len)) -+ memset(space, c, len); -+} -+ -+/** @brief Ensure the string's data is unshared and return a mutable pointer -+ * to it. */ -+char * -+String::mutable_data() -+{ -+ // If _memo has a capacity (it's not one of the special strings) and it's -+ // uniquely referenced, return _data right away. -+ if (_memo->_capacity && _memo->_refcount == 1) -+ return const_cast(_data); -+ -+ // Otherwise, make a copy of it. Rely on: deref() doesn't change _data or -+ // _length; and if _capacity == 0, then deref() doesn't free _real_data. -+ assert(!_memo->_capacity || _memo->_refcount > 1); -+ deref(); -+ assign(_data, _length); -+ return const_cast(_data); -+} -+ -+/** @brief Null-terminates the string and returns a mutable pointer to its -+ * data. -+ * @sa String::c_str */ -+char * -+String::mutable_c_str() -+{ -+ (void) mutable_data(); -+ (void) c_str(); -+ return const_cast(_data); -+} -+ -+/** @brief Null-terminates the string. -+ * -+ * The terminating null character isn't considered part of the string, so -+ * this->length() doesn't change. Returns a corresponding C string pointer. -+ * The returned pointer is semi-temporary; it will persist until the string is -+ * destroyed, or someone appends to it. */ -+const char * -+String::c_str() const -+{ -+ // If _memo has no capacity, then this is one of the special strings (null -+ // or PermString). We are guaranteed, in these strings, that _data[_length] -+ // exists. We can return _data immediately if we have a '\0' in the right -+ // place. -+ if (!_memo->_capacity && _data[_length] == '\0') -+ return _data; -+ -+ // Otherwise, this invariant must hold (there's more real data in _memo than -+ // in our substring). -+ assert(!_memo->_capacity -+ || _memo->_real_data + _memo->_dirty >= _data + _length); -+ -+ // Has the character after our substring been set? -+ uint32_t dirty = _memo->_dirty; -+ if (_memo->_real_data + dirty == _data + _length) { -+ if (_memo->_capacity > dirty -+ && _memo->_dirty.compare_and_swap(dirty, dirty + 1)) { -+ // Character after our substring has not been set. Change it to '\0'. -+ // This case will never occur on special strings. -+ char *real_data = const_cast(_data); -+ real_data[_length] = '\0'; -+ return _data; -+ } -+ -+ } else { -+ // Character after our substring has been set. OK to return _data if it is -+ // already '\0'. -+ if (_data[_length] == '\0') -+ return _data; -+ } -+ -+ // If we get here, we must make a copy of our portion of the string. -+ { -+ String s(_data, _length); -+ deref(); -+ assign(s); -+ } -+ -+ char *real_data = const_cast(_data); -+ real_data[_length] = '\0'; -+ _memo->_dirty++; // include '\0' in used portion of _memo -+ return _data; -+} -+ -+/** @brief Returns a substring of this string, consisting of the @a len -+ * characters starting at index @a pos. -+ * -+ * @param pos substring's first position relative to the string. -+ * @param len length of the substring. -+ * -+ * If @a pos is negative, starts that far from the end of the string. If @a -+ * len is negative, leaves that many characters off the end of the string. -+ * (This follows perl's semantics.) Returns a null string if the adjusted @a -+ * pos is out of range. Truncates the substring if @a len goes beyond the end -+ * of the string. -+ */ -+String -+String::substring(int pos, int len) const -+{ -+ if (pos < 0) -+ pos += _length; -+ if (len < 0) -+ len = _length - pos + len; -+ if (pos + len > _length) -+ len = _length - pos; -+ -+ if (pos < 0 || len <= 0) -+ return String(); -+ else -+ return String(_data + pos, len, _memo); -+} -+ -+/** @brief Search for a character in a string. -+ * -+ * @param c character to search for -+ * @param start initial search position -+ * -+ * Return the index of the leftmost occurence of @a c, starting at index @a -+ * start and working up to the end of the string. Returns -1 if @a c is not -+ * found. */ -+int -+String::find_left(char c, int start) const -+{ -+ if (start < 0) -+ start = 0; -+ for (int i = start; i < _length; i++) -+ if (_data[i] == c) -+ return i; -+ return -1; -+} -+ -+/** @brief Search for a substring in a string. -+ * -+ * @param str substring to search for -+ * @param start initial search position -+ * -+ * Return the index of the leftmost occurence of the substring @a str, starting -+ * at index @a start and working up to the end of the string. Returns -1 if -+ * @a str is not found. */ -+int -+String::find_left(const String &str, int start) const -+{ -+ if (start < 0) -+ start = 0; -+ if (start >= length()) -+ return -1; -+ if (!str.length()) -+ return 0; -+ int first_c = (unsigned char)str[0]; -+ int pos = start, max_pos = length() - str.length(); -+ for (pos = find_left(first_c, pos); pos >= 0 && pos <= max_pos; -+ pos = find_left(first_c, pos + 1)) -+ if (!memcmp(_data + pos, str._data, str.length())) -+ return pos; -+ return -1; -+} -+ -+/** @brief Search for a character in a string. -+ * -+ * @param c character to search for -+ * @param start initial search position -+ * -+ * Return the index of the rightmost occurence of the character @a c, starting -+ * at index @a start and working back to the beginning of the string. Returns -+ * -1 if @a c is not found. @a start may start beyond the end of the -+ * string. */ -+int -+String::find_right(char c, int start) const -+{ -+ if (start >= _length) -+ start = _length - 1; -+ for (int i = start; i >= 0; i--) -+ if (_data[i] == c) -+ return i; -+ return -1; -+} -+ -+static String -+hard_lower(const String &s, int pos) -+{ -+ String new_s(s.data(), s.length()); -+ char *x = const_cast(new_s.data()); // know it's mutable -+ int len = s.length(); -+ for (; pos < len; pos++) -+ x[pos] = tolower(x[pos]); -+ return new_s; -+} -+ -+/** @brief Returns a lowercased version of this string. -+ * -+ * Translates the ASCII characters 'A' through 'Z' into their lowercase -+ * equivalents. */ -+String -+String::lower() const -+{ -+ // avoid copies -+ for (int i = 0; i < _length; i++) -+ if (_data[i] >= 'A' && _data[i] <= 'Z') -+ return hard_lower(*this, i); -+ return *this; -+} -+ -+static String -+hard_upper(const String &s, int pos) -+{ -+ String new_s(s.data(), s.length()); -+ char *x = const_cast(new_s.data()); // know it's mutable -+ int len = s.length(); -+ for (; pos < len; pos++) -+ x[pos] = toupper(x[pos]); -+ return new_s; -+} -+ -+/** @brief Returns an uppercased version of this string. -+ * -+ * Translates the ASCII characters 'a' through 'z' into their uppercase -+ * equivalents. */ -+String -+String::upper() const -+{ -+ // avoid copies -+ for (int i = 0; i < _length; i++) -+ if (_data[i] >= 'a' && _data[i] <= 'z') -+ return hard_upper(*this, i); -+ return *this; -+} -+ -+static String -+hard_printable(const String &s, int pos) -+{ -+ StringAccum sa(s.length() * 2); -+ sa.append(s.data(), pos); -+ const unsigned char *x = reinterpret_cast(s.data()); -+ int len = s.length(); -+ for (; pos < len; pos++) { -+ if (x[pos] >= 32 && x[pos] < 127) -+ sa << x[pos]; -+ else if (x[pos] < 32) -+ sa << '^' << (unsigned char)(x[pos] + 64); -+ else if (char *buf = sa.extend(4, 1)) -+ sprintf(buf, "\\%03o", x[pos]); -+ } -+ return sa.take_string(); -+} -+ -+/** @brief Returns a "printable" version of this string. -+ * -+ * Translates control characters 0-31 into "control" sequences, such as "^@" -+ * for the null character, and characters 127-255 into octal escape sequences, -+ * such as "\377" for 255. */ -+String -+String::printable() const -+{ -+ // avoid copies -+ for (int i = 0; i < _length; i++) -+ if (_data[i] < 32 || _data[i] > 126) -+ return hard_printable(*this, i); -+ return *this; -+} -+ -+/** @brief Returns a substring with spaces trimmed from the end. */ -+String -+String::trim_space() const -+{ -+ for (int i = _length - 1; i >= 0; i--) -+ if (!isspace(_data[i])) -+ return substring(0, i + 1); -+ // return out-of-memory string if input is out-of-memory string -+ return (_length ? String() : *this); -+} -+ -+/** @brief Returns a hex-quoted version of the string. -+ * -+ * For example, the string "Abcd" would convert to "\<41626364>". */ -+String -+String::quoted_hex() const -+{ -+ static const char hex_digits[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; -+ StringAccum sa; -+ char *buf; -+ if (out_of_memory() || !(buf = sa.extend(length() * 2 + 3))) -+ return out_of_memory_string(); -+ *buf++ = '\\'; -+ *buf++ = '<'; -+ const uint8_t *e = reinterpret_cast(end()); -+ for (const uint8_t *x = reinterpret_cast(begin()); x < e; x++) { -+ *buf++ = hex_digits[(*x >> 4) & 0xF]; -+ *buf++ = hex_digits[*x & 0xF]; -+ } -+ *buf++ = '>'; -+ return sa.take_string(); -+} -+ -+/** @brief Hash function. -+ * @return The hash value of this String. -+ * -+ * Equal String objects always have equal hashcode() values. -+ */ -+size_t -+String::hashcode() const -+{ -+ int l = length(); -+ const char *d = data(); -+ if (!l) -+ return 0; -+ else if (l == 1) -+ return d[0] | (d[0] << 8); -+ else if (l < 4) -+ return d[0] + (d[1] << 3) + (l << 12); -+ else -+ return d[0] + (d[1] << 8) + (d[2] << 16) + (d[3] << 24) -+ + (l << 12) + (d[l-1] << 10); -+} -+ -+/** @brief Return true iff this string is equal to the data in @a s. -+ * @param s string data to compare to -+ * @param len length of @a s -+ * -+ * Same as String::compare(*this, String(s, len)) == 0. If @a len @< 0, then -+ * treats @a s as a null-terminated C string. -+ * -+ * @sa String::compare(const String &a, const String &b) */ -+bool -+String::equals(const char *s, int len) const -+{ -+ // It'd be nice to make "out-of-memory" strings compare unequal to -+ // anything, even themseleves, but this would be a bad idea for Strings -+ // used as (for example) keys in hashtables. Instead, "out-of-memory" -+ // strings compare unequal to other null strings, but equal to each other. -+ if (len < 0) -+ len = strlen(s); -+ if (_length != len) -+ return false; -+ else if (_data == s) -+ return true; -+ else if (len == 0) -+ return (s != &oom_string_data && _memo != oom_memo); -+ else -+ return memcmp(_data, s, len) == 0; -+} -+ -+/** @brief Compare this string with the data in @a s. -+ * @param s string data to compare to -+ * @param len length of @a s -+ * -+ * Same as String::compare(*this, String(s, len)). If @a len @< 0, then treats -+ * @a s as a null-terminated C string. -+ * -+ * @sa String::compare(const String &a, const String &b) */ -+int -+String::compare(const char *s, int len) const -+{ -+ if (len < 0) -+ len = strlen(s); -+ if (_data == s) -+ return _length - len; -+ else if (_memo == oom_memo) -+ return 1; -+ else if (s == &oom_string_data) -+ return -1; -+ else if (_length == len) -+ return memcmp(_data, s, len); -+ else if (_length < len) { -+ int v = memcmp(_data, s, _length); -+ return (v ? v : -1); -+ } else { -+ int v = memcmp(_data, s, len); -+ return (v ? v : 1); -+ } -+} -+ -+ -+/** @class String::Initializer -+ * @brief Initializes the String implementation. -+ * -+ * This class's constructor initializes the String implementation by calling -+ * String::static_initialize(). You should declare a String::Initializer -+ * object at global scope in any file that declares a global String object. -+ * For example: -+ * @code -+ * static String::Initializer initializer; -+ * String global_string = "100"; -+ * @endcode */ -+ -+String::Initializer::Initializer() -+{ -+ String::static_initialize(); -+} -+ -+/** @brief Initialize the String implementation. -+ * -+ * This function must be called before any String functionality is used. It -+ * is safe to call it multiple times. -+ * -+ * @note Elements don't need to worry about static_initialize(); Click drivers -+ * have already called it for you. -+ * -+ * @sa String::Initializer */ -+void -+String::static_initialize() -+{ -+ // function called to initialize static globals -+ if (!null_memo) { -+#if CLICK_DMALLOC -+ CLICK_DMALLOC_REG("str0"); -+#endif -+ null_memo = new Memo; -+ null_memo->_refcount++; -+ permanent_memo = new Memo; -+ permanent_memo->_refcount++; -+ // use a separate string for oom_memo's data, so we can distinguish -+ // the pointer -+ oom_memo = new Memo; -+ oom_memo->_refcount++; -+ oom_memo->_real_data = const_cast(&oom_string_data); -+ null_string_p = new String; -+ oom_string_p = new String(&oom_string_data, 0, oom_memo); -+#if CLICK_DMALLOC -+ CLICK_DMALLOC_REG("????"); -+#endif -+ } -+} -+ -+/** @brief Clean up the String implementation. -+ * -+ * Call this function to release any memory allocated by the String -+ * implementation. */ -+void -+String::static_cleanup() -+{ -+ if (null_string_p) { -+ delete null_string_p; -+ null_string_p = 0; -+ delete oom_string_p; -+ oom_string_p = 0; -+ if (oom_memo->_refcount.dec_and_test()) -+ delete oom_memo; -+ if (permanent_memo->_refcount.dec_and_test()) -+ delete permanent_memo; -+ if (null_memo->_refcount.dec_and_test()) -+ delete null_memo; -+ null_memo = permanent_memo = oom_memo = 0; -+ } -+} -+ -+CLICK_ENDDECLS -diff -Nurb click-1.6.0/lib/vectorv.cc.orig click-1.6.0-27/lib/vectorv.cc.orig ---- click-1.6.0/lib/vectorv.cc.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/lib/vectorv.cc.orig 2007-07-16 19:47:50.000000000 -0400 -@@ -0,0 +1,125 @@ -+/* -+ * vectorv.cc -- template specialization for Vector -+ * Eddie Kohler -+ * -+ * Copyright (c) 1999-2000 Massachusetts Institute of Technology -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, subject to the conditions -+ * listed in the Click LICENSE file. These conditions include: you must -+ * preserve this copyright notice, and you cannot mention the copyright -+ * holders in advertising related to the Software without their permission. -+ * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+ * notice is a summary of the Click LICENSE file; the license in that file is -+ * legally binding. -+ */ -+ -+#include -+#include -+#include -+CLICK_DECLS -+ -+Vector::Vector(const Vector &o) -+ : _l(0), _n(0), _capacity(0) -+{ -+ *this = o; -+} -+ -+Vector::~Vector() -+{ -+ delete[] _l; -+} -+ -+Vector & -+Vector::operator=(const Vector &o) -+{ -+ if (&o != this) { -+ _n = 0; -+ if (reserve(o._n)) { -+ _n = o._n; -+ memcpy(_l, o._l, sizeof(void *) * _n); -+ } -+ } -+ return *this; -+} -+ -+Vector & -+Vector::assign(size_type n, void* e) -+{ -+ _n = 0; -+ resize(n, e); -+ return *this; -+} -+ -+bool -+Vector::reserve(size_type want) -+{ -+ if (want < 0) -+ want = (_capacity > 0 ? _capacity * 2 : 4); -+ if (want <= _capacity) -+ return true; -+ -+ void** new_l = new void*[want]; -+ if (!new_l) -+ return false; -+ -+ memcpy(new_l, _l, sizeof(void*) * _n); -+ delete[] _l; -+ -+ _l = new_l; -+ _capacity = want; -+ return true; -+} -+ -+Vector::iterator -+Vector::insert(iterator i, void* e) -+{ -+ assert(i >= begin() && i <= end()); -+ size_type pos = i - begin(); -+ if (_n < _capacity || reserve(RESERVE_GROW)) { -+ i = begin() + pos; -+ memmove(i + 1, i, (end() - i) * sizeof(void*)); -+ *i = e; -+ _n++; -+ } -+ return i; -+} -+ -+Vector::iterator -+Vector::erase(iterator a, iterator b) -+{ -+ if (b > a) { -+ assert(a >= begin() && b <= end()); -+ memmove(a, b, (end() - b) * sizeof(void*)); -+ _n -= b - a; -+ return a; -+ } else -+ return b; -+} -+ -+void -+Vector::resize(size_type nn, void* e) -+{ -+ if (nn <= _capacity || reserve(nn)) { -+ for (size_type i = _n; i < nn; i++) -+ _l[i] = e; -+ _n = nn; -+ } -+} -+ -+void -+Vector::swap(Vector& o) -+{ -+ void **l = _l; -+ size_type n = _n; -+ size_type cap = _capacity; -+ _l = o._l; -+ _n = o._n; -+ _capacity = o._capacity; -+ o._l = l; -+ o._n = n; -+ o._capacity = cap; -+} -+ -+CLICK_ENDDECLS -diff -Nurb click-1.6.0/linuxmodule/.tmp_versions/click.mod click-1.6.0-27/linuxmodule/.tmp_versions/click.mod ---- click-1.6.0/linuxmodule/.tmp_versions/click.mod 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/linuxmodule/.tmp_versions/click.mod 2009-02-11 16:55:09.000000000 -0500 -@@ -0,0 +1,2 @@ -+/d/click/click-1.6.0-27/linuxmodule/click.ko -+/d/click/click-1.6.0-27/linuxmodule/crc32.o /d/click/click-1.6.0-27/linuxmodule/in_cksum.o /d/click/click-1.6.0-27/linuxmodule/string.o /d/click/click-1.6.0-27/linuxmodule/straccum.o /d/click/click-1.6.0-27/linuxmodule/nameinfo.o /d/click/click-1.6.0-27/linuxmodule/bitvector.o /d/click/click-1.6.0-27/linuxmodule/vectorv.o /d/click/click-1.6.0-27/linuxmodule/templatei.o /d/click/click-1.6.0-27/linuxmodule/bighashmap_arena.o /d/click/click-1.6.0-27/linuxmodule/ipaddress.o /d/click/click-1.6.0-27/linuxmodule/ipflowid.o /d/click/click-1.6.0-27/linuxmodule/etheraddress.o /d/click/click-1.6.0-27/linuxmodule/packet.o /d/click/click-1.6.0-27/linuxmodule/error.o /d/click/click-1.6.0-27/linuxmodule/timestamp.o /d/click/click-1.6.0-27/linuxmodule/glue.o /d/click/click-1.6.0-27/linuxmodule/task.o /d/click/click-1.6.0-27/linuxmodule/timer.o /d/click/click-1.6.0-27/linuxmodule/atomic.o /d/click/click-1.6.0-27/linuxmodule/gaprate.o /d/click/click-1.6.0-27/linuxmodule/element.o /d/click/click-1.6.0-27/linuxmodule/confparse.o /d/click/click-1.6.0-27/linuxmodule/variableenv.o /d/click/click-1.6.0-27/linuxmodule/lexer.o /d/click/click-1.6.0-27/linuxmodule/elemfilter.o /d/click/click-1.6.0-27/linuxmodule/routerthread.o /d/click/click-1.6.0-27/linuxmodule/router.o /d/click/click-1.6.0-27/linuxmodule/master.o /d/click/click-1.6.0-27/linuxmodule/handlercall.o /d/click/click-1.6.0-27/linuxmodule/notifier.o /d/click/click-1.6.0-27/linuxmodule/integers.o /d/click/click-1.6.0-27/linuxmodule/iptable.o /d/click/click-1.6.0-27/linuxmodule/driver.o /d/click/click-1.6.0-27/linuxmodule/ino.o /d/click/click-1.6.0-27/linuxmodule/addressinfo.o /d/click/click-1.6.0-27/linuxmodule/alignmentinfo.o /d/click/click-1.6.0-27/linuxmodule/errorelement.o /d/click/click-1.6.0-27/linuxmodule/portinfo.o /d/click/click-1.6.0-27/linuxmodule/scheduleinfo.o /d/click/click-1.6.0-27/linuxmodule/ftpportmapper.o /d/click/click-1.6.0-27/linuxmodule/adaptivered.o /d/click/click-1.6.0-27/linuxmodule/red.o /d/click/click-1.6.0-27/linuxmodule/arpfaker.o /d/click/click-1.6.0-27/linuxmodule/arpprint.o /d/click/click-1.6.0-27/linuxmodule/arpquerier.o /d/click/click-1.6.0-27/linuxmodule/arpresponder.o /d/click/click-1.6.0-27/linuxmodule/checkarpheader.o /d/click/click-1.6.0-27/linuxmodule/ensureether.o /d/click/click-1.6.0-27/linuxmodule/etherencap.o /d/click/click-1.6.0-27/linuxmodule/ethermirror.o /d/click/click-1.6.0-27/linuxmodule/hostetherfilter.o /d/click/click-1.6.0-27/linuxmodule/checkicmpheader.o /d/click/click-1.6.0-27/linuxmodule/icmperror.o /d/click/click-1.6.0-27/linuxmodule/icmppingencap.o /d/click/click-1.6.0-27/linuxmodule/icmppingresponder.o /d/click/click-1.6.0-27/linuxmodule/icmppingrewriter.o /d/click/click-1.6.0-27/linuxmodule/icmprewriter.o /d/click/click-1.6.0-27/linuxmodule/icmpsendpings.o /d/click/click-1.6.0-27/linuxmodule/checkipheader.o /d/click/click-1.6.0-27/linuxmodule/checkipheader2.o /d/click/click-1.6.0-27/linuxmodule/crapfilter.o /d/click/click-1.6.0-27/linuxmodule/crapfilter2.o /d/click/click-1.6.0-27/linuxmodule/crapfilter3.o /d/click/click-1.6.0-27/linuxmodule/decipttl.o /d/click/click-1.6.0-27/linuxmodule/fixipsrc.o /d/click/click-1.6.0-27/linuxmodule/getipaddress.o /d/click/click-1.6.0-27/linuxmodule/ipaddrpairrewriter.o /d/click/click-1.6.0-27/linuxmodule/ipaddrrewriter.o /d/click/click-1.6.0-27/linuxmodule/ipclassifier.o /d/click/click-1.6.0-27/linuxmodule/ipencap.o /d/click/click-1.6.0-27/linuxmodule/ipfieldinfo.o /d/click/click-1.6.0-27/linuxmodule/ipfilter.o /d/click/click-1.6.0-27/linuxmodule/ipfragmenter.o /d/click/click-1.6.0-27/linuxmodule/ipgwoptions.o /d/click/click-1.6.0-27/linuxmodule/ipinputcombo.o /d/click/click-1.6.0-27/linuxmodule/ipmirror.o /d/click/click-1.6.0-27/linuxmodule/ipnameinfo.o /d/click/click-1.6.0-27/linuxmodule/ipoutputcombo.o /d/click/click-1.6.0-27/linuxmodule/ipprint.o /d/click/click-1.6.0-27/linuxmodule/ipreassembler.o /d/click/click-1.6.0-27/linuxmodule/iproutetable.o /d/click/click-1.6.0-27/linuxmodule/iprw.o /d/click/click-1.6.0-27/linuxmodule/iprwpatterns.o /d/click/click-1.6.0-27/linuxmodule/lineariplookup.o /d/click/click-1.6.0-27/linuxmodule/lookupiproute.o /d/click/click-1.6.0-27/linuxmodule/lookupiproutemp.o /d/click/click-1.6.0-27/linuxmodule/markipce.o /d/click/click-1.6.0-27/linuxmodule/markipheader.o /d/click/click-1.6.0-27/linuxmodule/radixiplookup.o /d/click/click-1.6.0-27/linuxmodule/rfc2507c.o /d/click/click-1.6.0-27/linuxmodule/rfc2507d.o /d/click/click-1.6.0-27/linuxmodule/ripsend.o /d/click/click-1.6.0-27/linuxmodule/rripmapper.o /d/click/click-1.6.0-27/linuxmodule/setipaddress.o /d/click/click-1.6.0-27/linuxmodule/setipchecksum.o /d/click/click-1.6.0-27/linuxmodule/setipdscp.o /d/click/click-1.6.0-27/linuxmodule/setrandipaddress.o /d/click/click-1.6.0-27/linuxmodule/siphmapper.o /d/click/click-1.6.0-27/linuxmodule/sortediplookup.o /d/click/click-1.6.0-27/linuxmodule/storeipaddress.o /d/click/click-1.6.0-27/linuxmodule/stripipheader.o /d/click/click-1.6.0-27/linuxmodule/unstripipheader.o /d/click/click-1.6.0-27/linuxmodule/anydevice.o /d/click/click-1.6.0-27/linuxmodule/cpuqueue.o /d/click/click-1.6.0-27/linuxmodule/cpuswitch.o /d/click/click-1.6.0-27/linuxmodule/cyclecountaccum.o /d/click/click-1.6.0-27/linuxmodule/fasttcpflows.o /d/click/click-1.6.0-27/linuxmodule/fastudpflows.o /d/click/click-1.6.0-27/linuxmodule/fastudpsrc.o /d/click/click-1.6.0-27/linuxmodule/fromdevice.o /d/click/click-1.6.0-27/linuxmodule/fromhost.o /d/click/click-1.6.0-27/linuxmodule/perfcountaccum.o /d/click/click-1.6.0-27/linuxmodule/perfcountinfo.o /d/click/click-1.6.0-27/linuxmodule/perfcountuser.o /d/click/click-1.6.0-27/linuxmodule/polldevice.o /d/click/click-1.6.0-27/linuxmodule/rtcycles.o /d/click/click-1.6.0-27/linuxmodule/schedulelinux.o /d/click/click-1.6.0-27/linuxmodule/setcyclecount.o /d/click/click-1.6.0-27/linuxmodule/setperfcount.o /d/click/click-1.6.0-27/linuxmodule/staticthreadsched.o /d/click/click-1.6.0-27/linuxmodule/todevice.o /d/click/click-1.6.0-27/linuxmodule/tohost.o /d/click/click-1.6.0-27/linuxmodule/tohostsniffers.o /d/click/click-1.6.0-27/linuxmodule/align.o /d/click/click-1.6.0-27/linuxmodule/averagecounter.o /d/click/click-1.6.0-27/linuxmodule/bandwidthmeter.o /d/click/click-1.6.0-27/linuxmodule/bandwidthshaper.o /d/click/click-1.6.0-27/linuxmodule/burster.o /d/click/click-1.6.0-27/linuxmodule/bwratedsplitter.o /d/click/click-1.6.0-27/linuxmodule/bwratedunqueue.o /d/click/click-1.6.0-27/linuxmodule/checkcrc32.o /d/click/click-1.6.0-27/linuxmodule/checklength.o /d/click/click-1.6.0-27/linuxmodule/checkpaint.o /d/click/click-1.6.0-27/linuxmodule/classifier.o /d/click/click-1.6.0-27/linuxmodule/compblock.o /d/click/click-1.6.0-27/linuxmodule/counter.o /d/click/click-1.6.0-27/linuxmodule/delayshaper.o /d/click/click-1.6.0-27/linuxmodule/delayunqueue.o /d/click/click-1.6.0-27/linuxmodule/devirtualizeinfo.o /d/click/click-1.6.0-27/linuxmodule/discard.o /d/click/click-1.6.0-27/linuxmodule/discardnofree.o /d/click/click-1.6.0-27/linuxmodule/drivermanager.o /d/click/click-1.6.0-27/linuxmodule/dropbroadcasts.o /d/click/click-1.6.0-27/linuxmodule/drr.o /d/click/click-1.6.0-27/linuxmodule/frontdropqueue.o /d/click/click-1.6.0-27/linuxmodule/fullnotequeue.o /d/click/click-1.6.0-27/linuxmodule/hashswitch.o /d/click/click-1.6.0-27/linuxmodule/idle.o /d/click/click-1.6.0-27/linuxmodule/infinitesource.o /d/click/click-1.6.0-27/linuxmodule/linkunqueue.o /d/click/click-1.6.0-27/linuxmodule/messageelement.o /d/click/click-1.6.0-27/linuxmodule/meter.o /d/click/click-1.6.0-27/linuxmodule/mixedqueue.o /d/click/click-1.6.0-27/linuxmodule/msqueue.o /d/click/click-1.6.0-27/linuxmodule/notifierqueue.o /d/click/click-1.6.0-27/linuxmodule/nullelement.o /d/click/click-1.6.0-27/linuxmodule/nulls.o /d/click/click-1.6.0-27/linuxmodule/paint.o /d/click/click-1.6.0-27/linuxmodule/paintswitch.o /d/click/click-1.6.0-27/linuxmodule/painttee.o /d/click/click-1.6.0-27/linuxmodule/pokehandlers.o /d/click/click-1.6.0-27/linuxmodule/print.o /d/click/click-1.6.0-27/linuxmodule/priosched.o /d/click/click-1.6.0-27/linuxmodule/pullswitch.o /d/click/click-1.6.0-27/linuxmodule/quitwatcher.o /d/click/click-1.6.0-27/linuxmodule/randomerror.o /d/click/click-1.6.0-27/linuxmodule/randomsample.o /d/click/click-1.6.0-27/linuxmodule/randomsource.o /d/click/click-1.6.0-27/linuxmodule/randomswitch.o /d/click/click-1.6.0-27/linuxmodule/ratedsource.o /d/click/click-1.6.0-27/linuxmodule/ratedsplitter.o /d/click/click-1.6.0-27/linuxmodule/ratedunqueue.o /d/click/click-1.6.0-27/linuxmodule/rrsched.o /d/click/click-1.6.0-27/linuxmodule/rrswitch.o /d/click/click-1.6.0-27/linuxmodule/script.o /d/click/click-1.6.0-27/linuxmodule/setannobyte.o /d/click/click-1.6.0-27/linuxmodule/setcrc32.o /d/click/click-1.6.0-27/linuxmodule/setpackettype.o /d/click/click-1.6.0-27/linuxmodule/settimestamp.o /d/click/click-1.6.0-27/linuxmodule/shaper.o /d/click/click-1.6.0-27/linuxmodule/simplequeue.o /d/click/click-1.6.0-27/linuxmodule/spinlockacquire.o /d/click/click-1.6.0-27/linuxmodule/spinlockinfo.o /d/click/click-1.6.0-27/linuxmodule/spinlockrelease.o /d/click/click-1.6.0-27/linuxmodule/staticpullswitch.o /d/click/click-1.6.0-27/linuxmodule/staticswitch.o /d/click/click-1.6.0-27/linuxmodule/storedata.o /d/click/click-1.6.0-27/linuxmodule/stridesched.o /d/click/click-1.6.0-27/linuxmodule/strideswitch.o /d/click/click-1.6.0-27/linuxmodule/strip.o /d/click/click-1.6.0-27/linuxmodule/striptonet.o /d/click/click-1.6.0-27/linuxmodule/suppressor.o /d/click/click-1.6.0-27/linuxmodule/switch.o /d/click/click-1.6.0-27/linuxmodule/tee.o /d/click/click-1.6.0-27/linuxmodule/timedsink.o /d/click/click-1.6.0-27/linuxmodule/timedsource.o /d/click/click-1.6.0-27/linuxmodule/truncate.o /d/click/click-1.6.0-27/linuxmodule/unqueue.o /d/click/click-1.6.0-27/linuxmodule/unqueue2.o /d/click/click-1.6.0-27/linuxmodule/unstrip.o /d/click/click-1.6.0-27/linuxmodule/checktcpheader.o /d/click/click-1.6.0-27/linuxmodule/checkudpheader.o /d/click/click-1.6.0-27/linuxmodule/dynudpipencap.o /d/click/click-1.6.0-27/linuxmodule/iprewriter.o /d/click/click-1.6.0-27/linuxmodule/settcpchecksum.o /d/click/click-1.6.0-27/linuxmodule/setudpchecksum.o /d/click/click-1.6.0-27/linuxmodule/tcprewriter.o /d/click/click-1.6.0-27/linuxmodule/udpipencap.o /d/click/click-1.6.0-27/linuxmodule/kernelversion.o /d/click/click-1.6.0-27/linuxmodule/read-pmc.o /d/click/click-1.6.0-27/linuxmodule/config.o /d/click/click-1.6.0-27/linuxmodule/sched.o /d/click/click-1.6.0-27/linuxmodule/module.o /d/click/click-1.6.0-27/linuxmodule/clickfs.o /d/click/click-1.6.0-27/linuxmodule/skbmgr.o /d/click/click-1.6.0-27/linuxmodule/ksyms.o /d/click/click-1.6.0-27/linuxmodule/elements.o -diff -Nurb click-1.6.0/linuxmodule/.tmp_versions/proclikefs.mod click-1.6.0-27/linuxmodule/.tmp_versions/proclikefs.mod ---- click-1.6.0/linuxmodule/.tmp_versions/proclikefs.mod 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/linuxmodule/.tmp_versions/proclikefs.mod 2009-02-11 16:55:09.000000000 -0500 -@@ -0,0 +1,2 @@ -+/d/click/click-1.6.0-27/linuxmodule/proclikefs.ko -+/d/click/click-1.6.0-27/linuxmodule/proclikefsmod.o -diff -Nurb click-1.6.0/linuxmodule/Makefile click-1.6.0-27/linuxmodule/Makefile ---- click-1.6.0/linuxmodule/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/linuxmodule/Makefile 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,294 @@ -+## The following line supports click-mkmindriver and should not be changed. -+## Click linuxmodule driver Makefile ## -+SHELL = /bin/sh -+ -+subdir := linuxmodule -+conf_auxdir = $(top_srcdir) -+ -+prefix = /d/click/click-1.6.0-27/inst -+exec_prefix = /d/click/click-1.6.0-27/inst -+bindir = /d/click/click-1.6.0-27/inst/bin -+sbindir = /d/click/click-1.6.0-27/inst/sbin -+libdir = /d/click/click-1.6.0-27/inst/lib -+linuxdir = /d/kernels/linux-2.6.27.10-clickport -+ -+LIB_CXX_OBJS = string.o straccum.o nameinfo.o \ -+ bitvector.o vectorv.o templatei.o bighashmap_arena.o \ -+ ipaddress.o ipflowid.o etheraddress.o \ -+ packet.o \ -+ error.o timestamp.o glue.o task.o timer.o atomic.o gaprate.o \ -+ element.o \ -+ confparse.o variableenv.o lexer.o elemfilter.o \ -+ routerthread.o router.o master.o handlercall.o notifier.o \ -+ integers.o iptable.o \ -+ driver.o ino.o \ -+ $(EXTRA_DRIVER_OBJS) -+ -+EXTRA_DRIVER_OBJS = -+ -+LIB_C_OBJS = crc32.o in_cksum.o -+ -+LINUXMODULE_CXX_OBJS = config.o sched.o module.o clickfs.o skbmgr.o -+ -+LINUXMODULE_C_OBJS = kernelversion.o read-pmc.o -+ -+STD_ELEMENT_OBJS = addressinfo.o alignmentinfo.o \ -+ errorelement.o portinfo.o scheduleinfo.o -+ -+ifndef MINDRIVER -+DRIVER = click -+ELEMENTSCONF = elements -+KSYMS = ksyms -+else -+DRIVER = $(MINDRIVER)click -+ELEMENTSCONF = elements_$(MINDRIVER) -+KSYMS = ksyms_$(MINDRIVER) -+endif -+ -+INSTALLOBJS = $(DRIVER).o proclikefs.o -+ -+ -+ifeq (1,1) -+ -+########################################################################## -+## LINUX 2.6 ## -+ -+KERNELPATH = /d/kernels/linux-2.6.27.10-clickport -+ -+ifeq ($(KBUILD_EXTMOD),) -+top_srcdir := .. -+srcdir := . -+top_builddir := .. -+else -+ifeq (.,.) -+top_srcdir := $(src)/.. -+srcdir := $(src) -+else -+ifeq ($(patsubst /%,/,.),/) -+top_srcdir := .. -+srcdir := . -+else -+top_srcdir := $(obj)/.. -+srcdir := $(obj)/. -+endif -+endif -+top_builddir := $(obj)/.. -+endif -+ -+CLICKINSTALL = /usr/bin/install -c -+CLICKINSTALL_DATA = /usr/bin/install -c -m 644 -+CLICKmkinstalldirs = $(conf_auxdir)/mkinstalldirs -+ -+CLICK_ELEM2MAKE = $(top_builddir)/click-buildtool elem2make --linux26 -+ -+CLICKCC = gcc -w -W -Wall -+CLICKCXX = g++ -w -W -Wall -fno-exceptions -fno-rtti -D__SMP__ -+ -+LINUXCFLAGS = $(shell echo "$(CPPFLAGS) $(CFLAGS)" | sed \ -+ -e s,-fno-unit-at-a-time,, -e s,-Wstrict-prototypes,, \ -+ -e s,-Wdeclaration-after-statement,, \ -+ -e s,-Wno-pointer-sign,, -e s,-fno-common,,) -+CLICKCPPFLAGS = -DCLICK_LINUXMODULE -+CLICKCFLAGS = -O2 -+CLICKCXXFLAGS = -O2 -+CLICKDEPCFLAGS = -Wp,-MD,$(depfile) -+ -+CLICKDEFS = -DHAVE_CONFIG_H -+CLICKINCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -+ -I$(srcdir) -I$(top_srcdir) -I$(linuxdir)/include -I$(linuxdir)/include/asm/mach-default -+ -+CXXCOMPILE = $(CLICKCXX) $(LINUXCFLAGS) $(CLICKCPPFLAGS) $(CLICKCFLAGS) \ -+ $(CLICKCXXFLAGS) $(CLICKDEFS) $(CLICKINCLUDES) $(CLICKDEPCFLAGS) -+COMPILE = $(CLICKCC) $(LINUXCFLAGS) $(CLICKCPPFLAGS) $(CLICKCFLAGS) \ -+ $(CLICKDEFS) $(CLICKINCLUDES) $(CLICKDEPCFLAGS) -+ -+quiet_cmd_cxxcompile = CXX $(quiet_modtag) $(subst $(obj)/,,$@) -+cmd_cxxcompile = $(CXXCOMPILE) -c -o $@ $< -+ -+quiet_cmd_ccompile = CC $(quiet_modtag) $(subst $(obj)/,,$@) -+cmd_ccompile = $(COMPILE) -c -o $@ $< -+ -+EXTRA_CFLAGS = $(CLICKCPPFLAGS) $(CLICKCFLAGS) $(CLICKDEFS) $(CLICKINCLUDES) -+ -+obj-m += $(INSTALLOBJS) -+ -+$(DRIVER)-objs = $(LIB_C_OBJS) $(LIB_CXX_OBJS) $(STD_ELEMENT_OBJS) \ -+ $(ELEMENT_OBJS) $(LINUXMODULE_C_OBJS) $(LINUXMODULE_CXX_OBJS) \ -+ $(KSYMS).o $(ELEMENTSCONF).o -+proclikefs-objs = proclikefsmod.o -+ -+KSYM_OBJS = $(LIB_C_OBJS) $(LIB_CXX_OBJS) $(STD_ELEMENT_OBJS) \ -+ $(ELEMENT_OBJS) $(LINUXMODULE_C_OBJS) $(LINUXMODULE_CXX_OBJS) -+ -+all: Makefile $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc always -+ $(MAKE) -C $(KERNELPATH) M=$(shell pwd) modules -+ -+ -+$(addprefix $(obj)/,$(LIB_CXX_OBJS)): $(obj)/%.o : $(top_srcdir)/lib/%.cc -+ $(call if_changed_dep,cxxcompile) -+ -+$(addprefix $(obj)/,$(LIB_C_OBJS)): $(obj)/%.o : $(top_srcdir)/lib/%.c -+ $(call if_changed_dep,ccompile) -+ -+$(addprefix $(obj)/,$(LINUXMODULE_CXX_OBJS)): $(obj)/%.o : $(srcdir)/%.cc -+ $(call if_changed_dep,cxxcompile) -+ -+$(addprefix $(obj)/,$(LINUXMODULE_C_OBJS)): $(obj)/%.o : $(srcdir)/%.c -+ $(call if_changed_dep,ccompile) -+ -+$(addprefix $(obj)/,$(STD_ELEMENT_OBJS)): $(obj)/%.o : $(top_srcdir)/elements/standard/%.cc -+ $(call if_changed_dep,cxxcompile) -+ -+$(obj)/$(ELEMENTSCONF).o : $(obj)/$(ELEMENTSCONF).cc -+ $(call if_changed_dep,cxxcompile) -+ -+$(obj)/proclikefsmod.o : $(srcdir)/proclikefs.c -+ $(call if_changed_rule,cc_o_c) -+ -+$(obj)/$(KSYMS).c: $(addprefix $(obj)/,$(KSYM_OBJS)) $(top_builddir)/click-buildtool $(addprefix $(obj)/,$(ELEMENTSCONF).mk) -+ $(top_builddir)/click-buildtool ksyms -C $(obj) -x kernelversion.o $(KSYM_OBJS) > $(obj)/$(KSYMS).c -+$(obj)/$(KSYMS).o: $(obj)/$(KSYMS).c -+ $(call if_changed_dep,ccompile) -+ -+ifneq ($(MAKECMDGOALS),clean) -+-include $(obj)/$(ELEMENTSCONF).mk -+endif -+ -+# Don't install in Linux directories for now -+# $(MAKE) -C $(KERNELPATH) M=$(shell pwd) modules_install -+install: Makefile $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc all -+ $(CLICKmkinstalldirs) $(DESTDIR)$(libdir) -+ for i in $(patsubst %.o,%.ko,$(INSTALLOBJS)); do $(CLICKINSTALL_DATA) $$i $(DESTDIR)$(libdir)/$$i; done -+install-man: -+ : -+uninstall: -+ for i in $(patsubst %.o,%.ko,$(INSTALLOBJS)); do /bin/rm -f $(DESTDIR)$(libdir)/$$i; done -+ -+else -+ -+########################################################################## -+## LINUX 2.4 ## -+ -+top_srcdir := .. -+srcdir := . -+top_builddir := .. -+ -+VPATH = .:$(top_srcdir)/lib:$(top_srcdir)/$(subdir):$(top_srcdir)/elements/standard -+ -+CC = gcc -w -W -Wall -+CPP = gcc -W -Wall -E -+CXX = g++ -w -W -Wall -fno-exceptions -fno-rtti -D__SMP__ -+CXXCPP = g++ -W -Wall -E -+LD = ld -+STRIP = strip -+INSTALL = /usr/bin/install -c -+INSTALL_DATA = /usr/bin/install -c -m 644 -+mkinstalldirs = $(conf_auxdir)/mkinstalldirs -+CLICK_ELEM2MAKE = $(top_builddir)/click-buildtool elem2make -+ -+ifeq ($(V),1) -+ccompile = $(COMPILE) $(1) -+cxxcompile = $(CXXCOMPILE) $(1) -+else -+ccompile = @/bin/echo ' ' $(2) $< && $(COMPILE) $(1) -+cxxcompile = @/bin/echo ' ' $(2) $< && $(CXXCOMPILE) $(1) -+endif -+ -+.SUFFIXES: -+.SUFFIXES: .c .cc .o .S .s .i .ii -+ -+.c.o: -+ $(call ccompile,-c $< -o $@,CC) -+.c.i: -+ $(call ccompile,-E $< > $@,CPP) -+.s.o: -+ $(call ccompile,-c $< -o $@,ASM) -+.S.o: -+ $(call ccompile,-c $< -o $@,ASM) -+.cc.o: -+ $(call cxxcompile,-c $< -o $@,CXX) -+.cc.s: -+ $(call cxxcompile,-S $< -o $@,CXX -S) -+.cc.ii: -+ $(call cxxcompile,-E $< > $@,CXXCPP) -+ -+ -+OBJS = $(LIB_CXX_OBJS) $(LIB_C_OBJS) $(STD_ELEMENT_OBJS) $(ELEMENT_OBJS) \ -+ $(LINUXMODULE_CXX_OBJS) $(LINUXMODULE_C_OBJS) $(ELEMENTSCONF).o -+ -+CPPFLAGS = -DCLICK_LINUXMODULE -+CFLAGS = -O2 -+CXXFLAGS = -O2 -+DEPCFLAGS = -MD -+ -+DEFS = -DHAVE_CONFIG_H -+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -+ -I$(srcdir) -I$(top_srcdir) -I$(linuxdir)/include -+LDFLAGS = -+LIBS = -+ -+CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS) -+CXXLD = $(CXX) -+CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ -+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS) -+CCLD = $(CC) -+LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@ -+ -+all: $(INSTALLOBJS) -+ -+ifneq ($(MAKECMDGOALS),clean) -+-include $(ELEMENTSCONF).mk -+endif -+ -+$(DRIVER).o: Makefile $(OBJS) -+ $(LD) -r -o $(DRIVER).o $(OBJS) -+ $(STRIP) -g $(DRIVER).o -+ -+proclikefs.o: proclikefs.c Makefile -+ $(COMPILE) -D__KERNEL__ -DMODULE -c $< -o $@ -+ -+DEPFILES := $(wildcard *.d) -+ifneq ($(DEPFILES),) -+include $(DEPFILES) -+endif -+ -+install: $(INSTALLOBJS) -+ $(mkinstalldirs) $(DESTDIR)$(libdir) -+ for i in $(INSTALLOBJS); do $(INSTALL_DATA) $$i $(DESTDIR)$(libdir)/$$i; done -+install-man: -+ : -+uninstall: -+ for i in $(INSTALLOBJS); do /bin/rm -f $(DESTDIR)$(libdir)/$$i; done -+ -+endif -+ -+ -+########################################################################## -+## ANY LINUX ## -+ -+elemlist: -+ @/bin/rm -f elements.conf -+ @$(MAKE) elements.conf -+elements.conf: $(top_builddir)/config.status $(top_builddir)/click-buildtool -+ echo "linuxmodule app aqm ethernet icmp ip standard tcpudp" | $(top_builddir)/click-buildtool findelem -r linuxmodule -p $(top_srcdir) > elements.conf -+$(ELEMENTSCONF).mk: $(ELEMENTSCONF).conf $(top_builddir)/click-buildtool -+ $(CLICK_ELEM2MAKE) -x "$(STD_ELEMENT_OBJS)" < $(ELEMENTSCONF).conf > $(ELEMENTSCONF).mk -+$(ELEMENTSCONF).cc: $(ELEMENTSCONF).conf $(top_builddir)/click-buildtool -+ $(top_builddir)/click-buildtool elem2export < $(ELEMENTSCONF).conf > $(ELEMENTSCONF).cc -+ @rm -f $(ELEMENTSCONF).d -+ -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status -+ -+always: -+ @: -+ -+clean: -+ -rm -f *~ *.d *.o *.mod.c *.ko -+ -rm -f .version .*.o.flags .*.o.d .*.o.cmd .*.ko.cmd -+ -rm -f $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc $(KSYMS).c elements.conf -+distclean: clean -+ -rm -f Makefile -+ -+.PHONY: all clean distclean elemlist install uninstall always -diff -Nurb click-1.6.0/linuxmodule/Makefile.in click-1.6.0-27/linuxmodule/Makefile.in ---- click-1.6.0/linuxmodule/Makefile.in 2007-09-12 18:26:17.000000000 -0400 -+++ click-1.6.0-27/linuxmodule/Makefile.in 2009-01-27 12:21:27.000000000 -0500 -@@ -95,7 +95,7 @@ - - CLICKDEFS = @DEFS@ - CLICKINCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -- -I$(srcdir) -I$(top_srcdir) -I$(linuxdir)/include -+ -I$(srcdir) -I$(top_srcdir) -I$(linuxdir)/include -I$(linuxdir)/include/asm/mach-default - - CXXCOMPILE = $(CLICKCXX) $(LINUXCFLAGS) $(CLICKCPPFLAGS) $(CLICKCFLAGS) \ - $(CLICKCXXFLAGS) $(CLICKDEFS) $(CLICKINCLUDES) $(CLICKDEPCFLAGS) -diff -Nurb click-1.6.0/linuxmodule/Makefile.in.orig click-1.6.0-27/linuxmodule/Makefile.in.orig ---- click-1.6.0/linuxmodule/Makefile.in.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/linuxmodule/Makefile.in.orig 2007-09-12 18:26:17.000000000 -0400 -@@ -0,0 +1,294 @@ -+## The following line supports click-mkmindriver and should not be changed. -+## Click linuxmodule driver Makefile ## -+SHELL = @SHELL@ -+ -+subdir := linuxmodule -+conf_auxdir = @conf_auxdir@ -+ -+prefix = @prefix@ -+exec_prefix = @exec_prefix@ -+bindir = @bindir@ -+sbindir = @sbindir@ -+libdir = @libdir@ -+linuxdir = @linuxdir@ -+ -+LIB_CXX_OBJS = string.o straccum.o nameinfo.o \ -+ bitvector.o vectorv.o templatei.o bighashmap_arena.o \ -+ ipaddress.o ipflowid.o etheraddress.o \ -+ packet.o \ -+ error.o timestamp.o glue.o task.o timer.o atomic.o gaprate.o \ -+ element.o \ -+ confparse.o variableenv.o lexer.o elemfilter.o \ -+ routerthread.o router.o master.o handlercall.o notifier.o \ -+ integers.o iptable.o \ -+ driver.o ino.o \ -+ $(EXTRA_DRIVER_OBJS) -+ -+EXTRA_DRIVER_OBJS = @EXTRA_DRIVER_OBJS@ -+ -+LIB_C_OBJS = crc32.o in_cksum.o -+ -+LINUXMODULE_CXX_OBJS = config.o sched.o module.o clickfs.o skbmgr.o -+ -+LINUXMODULE_C_OBJS = kernelversion.o read-pmc.o -+ -+STD_ELEMENT_OBJS = addressinfo.o alignmentinfo.o \ -+ errorelement.o portinfo.o scheduleinfo.o -+ -+ifndef MINDRIVER -+DRIVER = click -+ELEMENTSCONF = elements -+KSYMS = ksyms -+else -+DRIVER = $(MINDRIVER)click -+ELEMENTSCONF = elements_$(MINDRIVER) -+KSYMS = ksyms_$(MINDRIVER) -+endif -+ -+INSTALLOBJS = $(DRIVER).o proclikefs.o -+ -+ -+ifeq (@LINUXMODULE_2_6@,1) -+ -+########################################################################## -+## LINUX 2.6 ## -+ -+KERNELPATH = @linuxdir@ -+ -+ifeq ($(KBUILD_EXTMOD),) -+top_srcdir := @top_srcdir@ -+srcdir := @srcdir@ -+top_builddir := .. -+else -+ifeq (@srcdir@,.) -+top_srcdir := $(src)/.. -+srcdir := $(src) -+else -+ifeq ($(patsubst /%,/,@srcdir@),/) -+top_srcdir := @top_srcdir@ -+srcdir := @srcdir@ -+else -+top_srcdir := $(obj)/@top_srcdir@ -+srcdir := $(obj)/@srcdir@ -+endif -+endif -+top_builddir := $(obj)/.. -+endif -+ -+CLICKINSTALL = @INSTALL@ -+CLICKINSTALL_DATA = @INSTALL@ -m 644 -+CLICKmkinstalldirs = $(conf_auxdir)/mkinstalldirs -+ -+CLICK_ELEM2MAKE = $(top_builddir)/click-buildtool elem2make --linux26 -+ -+CLICKCC = @KERNEL_CC@ -+CLICKCXX = @KERNEL_CXX@ -+ -+LINUXCFLAGS = $(shell echo "$(CPPFLAGS) $(CFLAGS)" | sed \ -+ -e s,-fno-unit-at-a-time,, -e s,-Wstrict-prototypes,, \ -+ -e s,-Wdeclaration-after-statement,, \ -+ -e s,-Wno-pointer-sign,, -e s,-fno-common,,) -+CLICKCPPFLAGS = @CPPFLAGS@ -DCLICK_LINUXMODULE -+CLICKCFLAGS = @CFLAGS_NDEBUG@ -+CLICKCXXFLAGS = @CXXFLAGS_NDEBUG@ -+CLICKDEPCFLAGS = -Wp,-MD,$(depfile) -+ -+CLICKDEFS = @DEFS@ -+CLICKINCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -+ -I$(srcdir) -I$(top_srcdir) -I$(linuxdir)/include -+ -+CXXCOMPILE = $(CLICKCXX) $(LINUXCFLAGS) $(CLICKCPPFLAGS) $(CLICKCFLAGS) \ -+ $(CLICKCXXFLAGS) $(CLICKDEFS) $(CLICKINCLUDES) $(CLICKDEPCFLAGS) -+COMPILE = $(CLICKCC) $(LINUXCFLAGS) $(CLICKCPPFLAGS) $(CLICKCFLAGS) \ -+ $(CLICKDEFS) $(CLICKINCLUDES) $(CLICKDEPCFLAGS) -+ -+quiet_cmd_cxxcompile = CXX $(quiet_modtag) $(subst $(obj)/,,$@) -+cmd_cxxcompile = $(CXXCOMPILE) -c -o $@ $< -+ -+quiet_cmd_ccompile = CC $(quiet_modtag) $(subst $(obj)/,,$@) -+cmd_ccompile = $(COMPILE) -c -o $@ $< -+ -+EXTRA_CFLAGS = $(CLICKCPPFLAGS) $(CLICKCFLAGS) $(CLICKDEFS) $(CLICKINCLUDES) -+ -+obj-m += $(INSTALLOBJS) -+ -+$(DRIVER)-objs = $(LIB_C_OBJS) $(LIB_CXX_OBJS) $(STD_ELEMENT_OBJS) \ -+ $(ELEMENT_OBJS) $(LINUXMODULE_C_OBJS) $(LINUXMODULE_CXX_OBJS) \ -+ $(KSYMS).o $(ELEMENTSCONF).o -+proclikefs-objs = proclikefsmod.o -+ -+KSYM_OBJS = $(LIB_C_OBJS) $(LIB_CXX_OBJS) $(STD_ELEMENT_OBJS) \ -+ $(ELEMENT_OBJS) $(LINUXMODULE_C_OBJS) $(LINUXMODULE_CXX_OBJS) -+ -+all: Makefile $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc always -+ $(MAKE) -C $(KERNELPATH) M=$(shell pwd) modules -+ -+ -+$(addprefix $(obj)/,$(LIB_CXX_OBJS)): $(obj)/%.o : $(top_srcdir)/lib/%.cc -+ $(call if_changed_dep,cxxcompile) -+ -+$(addprefix $(obj)/,$(LIB_C_OBJS)): $(obj)/%.o : $(top_srcdir)/lib/%.c -+ $(call if_changed_dep,ccompile) -+ -+$(addprefix $(obj)/,$(LINUXMODULE_CXX_OBJS)): $(obj)/%.o : $(srcdir)/%.cc -+ $(call if_changed_dep,cxxcompile) -+ -+$(addprefix $(obj)/,$(LINUXMODULE_C_OBJS)): $(obj)/%.o : $(srcdir)/%.c -+ $(call if_changed_dep,ccompile) -+ -+$(addprefix $(obj)/,$(STD_ELEMENT_OBJS)): $(obj)/%.o : $(top_srcdir)/elements/standard/%.cc -+ $(call if_changed_dep,cxxcompile) -+ -+$(obj)/$(ELEMENTSCONF).o : $(obj)/$(ELEMENTSCONF).cc -+ $(call if_changed_dep,cxxcompile) -+ -+$(obj)/proclikefsmod.o : $(srcdir)/proclikefs.c -+ $(call if_changed_rule,cc_o_c) -+ -+$(obj)/$(KSYMS).c: $(addprefix $(obj)/,$(KSYM_OBJS)) $(top_builddir)/click-buildtool $(addprefix $(obj)/,$(ELEMENTSCONF).mk) -+ $(top_builddir)/click-buildtool ksyms -C $(obj) -x kernelversion.o $(KSYM_OBJS) > $(obj)/$(KSYMS).c -+$(obj)/$(KSYMS).o: $(obj)/$(KSYMS).c -+ $(call if_changed_dep,ccompile) -+ -+ifneq ($(MAKECMDGOALS),clean) -+-include $(obj)/$(ELEMENTSCONF).mk -+endif -+ -+# Don't install in Linux directories for now -+# $(MAKE) -C $(KERNELPATH) M=$(shell pwd) modules_install -+install: Makefile $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc all -+ $(CLICKmkinstalldirs) $(DESTDIR)$(libdir) -+ for i in $(patsubst %.o,%.ko,$(INSTALLOBJS)); do $(CLICKINSTALL_DATA) $$i $(DESTDIR)$(libdir)/$$i; done -+install-man: -+ : -+uninstall: -+ for i in $(patsubst %.o,%.ko,$(INSTALLOBJS)); do /bin/rm -f $(DESTDIR)$(libdir)/$$i; done -+ -+else -+ -+########################################################################## -+## LINUX 2.4 ## -+ -+top_srcdir := @top_srcdir@ -+srcdir := @srcdir@ -+top_builddir := .. -+ -+VPATH = .:$(top_srcdir)/lib:$(top_srcdir)/$(subdir):$(top_srcdir)/elements/standard -+ -+CC = @KERNEL_CC@ -+CPP = @CPP@ -+CXX = @KERNEL_CXX@ -+CXXCPP = @CXXCPP@ -+LD = @LD@ -+STRIP = @STRIP@ -+INSTALL = @INSTALL@ -+INSTALL_DATA = @INSTALL@ -m 644 -+mkinstalldirs = $(conf_auxdir)/mkinstalldirs -+CLICK_ELEM2MAKE = $(top_builddir)/click-buildtool elem2make -+ -+ifeq ($(V),1) -+ccompile = $(COMPILE) $(1) -+cxxcompile = $(CXXCOMPILE) $(1) -+else -+ccompile = @/bin/echo ' ' $(2) $< && $(COMPILE) $(1) -+cxxcompile = @/bin/echo ' ' $(2) $< && $(CXXCOMPILE) $(1) -+endif -+ -+.SUFFIXES: -+.SUFFIXES: .c .cc .o .S .s .i .ii -+ -+.c.o: -+ $(call ccompile,-c $< -o $@,CC) -+.c.i: -+ $(call ccompile,-E $< > $@,CPP) -+.s.o: -+ $(call ccompile,-c $< -o $@,ASM) -+.S.o: -+ $(call ccompile,-c $< -o $@,ASM) -+.cc.o: -+ $(call cxxcompile,-c $< -o $@,CXX) -+.cc.s: -+ $(call cxxcompile,-S $< -o $@,CXX -S) -+.cc.ii: -+ $(call cxxcompile,-E $< > $@,CXXCPP) -+ -+ -+OBJS = $(LIB_CXX_OBJS) $(LIB_C_OBJS) $(STD_ELEMENT_OBJS) $(ELEMENT_OBJS) \ -+ $(LINUXMODULE_CXX_OBJS) $(LINUXMODULE_C_OBJS) $(ELEMENTSCONF).o -+ -+CPPFLAGS = @CPPFLAGS@ -DCLICK_LINUXMODULE -+CFLAGS = @CFLAGS_NDEBUG@ -+CXXFLAGS = @CXXFLAGS_NDEBUG@ -+DEPCFLAGS = @DEPCFLAGS@ -+ -+DEFS = @DEFS@ -+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -+ -I$(srcdir) -I$(top_srcdir) -I$(linuxdir)/include -+LDFLAGS = @LDFLAGS@ -+LIBS = @LIBS@ -+ -+CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS) -+CXXLD = $(CXX) -+CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ -+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS) -+CCLD = $(CC) -+LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@ -+ -+all: $(INSTALLOBJS) -+ -+ifneq ($(MAKECMDGOALS),clean) -+-include $(ELEMENTSCONF).mk -+endif -+ -+$(DRIVER).o: Makefile $(OBJS) -+ $(LD) -r -o $(DRIVER).o $(OBJS) -+ $(STRIP) -g $(DRIVER).o -+ -+proclikefs.o: proclikefs.c Makefile -+ $(COMPILE) -D__KERNEL__ -DMODULE -c $< -o $@ -+ -+DEPFILES := $(wildcard *.d) -+ifneq ($(DEPFILES),) -+include $(DEPFILES) -+endif -+ -+install: $(INSTALLOBJS) -+ $(mkinstalldirs) $(DESTDIR)$(libdir) -+ for i in $(INSTALLOBJS); do $(INSTALL_DATA) $$i $(DESTDIR)$(libdir)/$$i; done -+install-man: -+ : -+uninstall: -+ for i in $(INSTALLOBJS); do /bin/rm -f $(DESTDIR)$(libdir)/$$i; done -+ -+endif -+ -+ -+########################################################################## -+## ANY LINUX ## -+ -+elemlist: -+ @/bin/rm -f elements.conf -+ @$(MAKE) elements.conf -+elements.conf: $(top_builddir)/config.status $(top_builddir)/click-buildtool -+ echo "linuxmodule @element_groups@" | $(top_builddir)/click-buildtool findelem -r linuxmodule -p $(top_srcdir) > elements.conf -+$(ELEMENTSCONF).mk: $(ELEMENTSCONF).conf $(top_builddir)/click-buildtool -+ $(CLICK_ELEM2MAKE) -x "$(STD_ELEMENT_OBJS)" < $(ELEMENTSCONF).conf > $(ELEMENTSCONF).mk -+$(ELEMENTSCONF).cc: $(ELEMENTSCONF).conf $(top_builddir)/click-buildtool -+ $(top_builddir)/click-buildtool elem2export < $(ELEMENTSCONF).conf > $(ELEMENTSCONF).cc -+ @rm -f $(ELEMENTSCONF).d -+ -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status -+ -+always: -+ @: -+ -+clean: -+ -rm -f *~ *.d *.o *.mod.c *.ko -+ -rm -f .version .*.o.flags .*.o.d .*.o.cmd .*.ko.cmd -+ -rm -f $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc $(KSYMS).c elements.conf -+distclean: clean -+ -rm -f Makefile -+ -+.PHONY: all clean distclean elemlist install uninstall always -diff -Nurb click-1.6.0/linuxmodule/Makefile.orig click-1.6.0-27/linuxmodule/Makefile.orig ---- click-1.6.0/linuxmodule/Makefile.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/linuxmodule/Makefile.orig 2009-01-19 15:15:55.000000000 -0500 -@@ -0,0 +1,294 @@ -+## The following line supports click-mkmindriver and should not be changed. -+## Click linuxmodule driver Makefile ## -+SHELL = /bin/sh -+ -+subdir := linuxmodule -+conf_auxdir = $(top_srcdir) -+ -+prefix = /usr/local -+exec_prefix = ${prefix} -+bindir = /usr/local/bin -+sbindir = /usr/local/sbin -+libdir = /usr/local/lib -+linuxdir = /d/kernels/linux-2.6.27.10-click -+ -+LIB_CXX_OBJS = string.o straccum.o nameinfo.o \ -+ bitvector.o vectorv.o templatei.o bighashmap_arena.o \ -+ ipaddress.o ipflowid.o etheraddress.o \ -+ packet.o \ -+ error.o timestamp.o glue.o task.o timer.o atomic.o gaprate.o \ -+ element.o \ -+ confparse.o variableenv.o lexer.o elemfilter.o \ -+ routerthread.o router.o master.o handlercall.o notifier.o \ -+ integers.o iptable.o \ -+ driver.o ino.o \ -+ $(EXTRA_DRIVER_OBJS) -+ -+EXTRA_DRIVER_OBJS = -+ -+LIB_C_OBJS = crc32.o in_cksum.o -+ -+LINUXMODULE_CXX_OBJS = config.o sched.o module.o clickfs.o skbmgr.o -+ -+LINUXMODULE_C_OBJS = kernelversion.o read-pmc.o -+ -+STD_ELEMENT_OBJS = addressinfo.o alignmentinfo.o \ -+ errorelement.o portinfo.o scheduleinfo.o -+ -+ifndef MINDRIVER -+DRIVER = click -+ELEMENTSCONF = elements -+KSYMS = ksyms -+else -+DRIVER = $(MINDRIVER)click -+ELEMENTSCONF = elements_$(MINDRIVER) -+KSYMS = ksyms_$(MINDRIVER) -+endif -+ -+INSTALLOBJS = $(DRIVER).o proclikefs.o -+ -+ -+ifeq (1,1) -+ -+########################################################################## -+## LINUX 2.6 ## -+ -+KERNELPATH = /d/kernels/linux-2.6.27.10-click -+ -+ifeq ($(KBUILD_EXTMOD),) -+top_srcdir := .. -+srcdir := . -+top_builddir := .. -+else -+ifeq (.,.) -+top_srcdir := $(src)/.. -+srcdir := $(src) -+else -+ifeq ($(patsubst /%,/,.),/) -+top_srcdir := .. -+srcdir := . -+else -+top_srcdir := $(obj)/.. -+srcdir := $(obj)/. -+endif -+endif -+top_builddir := $(obj)/.. -+endif -+ -+CLICKINSTALL = /usr/bin/install -c -+CLICKINSTALL_DATA = /usr/bin/install -c -m 644 -+CLICKmkinstalldirs = $(conf_auxdir)/mkinstalldirs -+ -+CLICK_ELEM2MAKE = $(top_builddir)/click-buildtool elem2make --linux26 -+ -+CLICKCC = gcc -w -W -Wall -+CLICKCXX = g++ -w -W -Wall -fno-exceptions -fno-rtti -D__SMP__ -+ -+LINUXCFLAGS = $(shell echo "$(CPPFLAGS) $(CFLAGS)" | sed \ -+ -e s,-fno-unit-at-a-time,, -e s,-Wstrict-prototypes,, \ -+ -e s,-Wdeclaration-after-statement,, \ -+ -e s,-Wno-pointer-sign,, -e s,-fno-common,,) -+CLICKCPPFLAGS = -DCLICK_LINUXMODULE -+CLICKCFLAGS = -O2 -+CLICKCXXFLAGS = -O2 -+CLICKDEPCFLAGS = -Wp,-MD,$(depfile) -+ -+CLICKDEFS = -DHAVE_CONFIG_H -+CLICKINCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -+ -I$(srcdir) -I$(top_srcdir) -I$(linuxdir)/include -+ -+CXXCOMPILE = $(CLICKCXX) $(LINUXCFLAGS) $(CLICKCPPFLAGS) $(CLICKCFLAGS) \ -+ $(CLICKCXXFLAGS) $(CLICKDEFS) $(CLICKINCLUDES) $(CLICKDEPCFLAGS) -+COMPILE = $(CLICKCC) $(LINUXCFLAGS) $(CLICKCPPFLAGS) $(CLICKCFLAGS) \ -+ $(CLICKDEFS) $(CLICKINCLUDES) $(CLICKDEPCFLAGS) -+ -+quiet_cmd_cxxcompile = CXX $(quiet_modtag) $(subst $(obj)/,,$@) -+cmd_cxxcompile = $(CXXCOMPILE) -c -o $@ $< -+ -+quiet_cmd_ccompile = CC $(quiet_modtag) $(subst $(obj)/,,$@) -+cmd_ccompile = $(COMPILE) -c -o $@ $< -+ -+EXTRA_CFLAGS = $(CLICKCPPFLAGS) $(CLICKCFLAGS) $(CLICKDEFS) $(CLICKINCLUDES) -+ -+obj-m += $(INSTALLOBJS) -+ -+$(DRIVER)-objs = $(LIB_C_OBJS) $(LIB_CXX_OBJS) $(STD_ELEMENT_OBJS) \ -+ $(ELEMENT_OBJS) $(LINUXMODULE_C_OBJS) $(LINUXMODULE_CXX_OBJS) \ -+ $(KSYMS).o $(ELEMENTSCONF).o -+proclikefs-objs = proclikefsmod.o -+ -+KSYM_OBJS = $(LIB_C_OBJS) $(LIB_CXX_OBJS) $(STD_ELEMENT_OBJS) \ -+ $(ELEMENT_OBJS) $(LINUXMODULE_C_OBJS) $(LINUXMODULE_CXX_OBJS) -+ -+all: Makefile $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc always -+ $(MAKE) -C $(KERNELPATH) M=$(shell pwd) modules -+ -+ -+$(addprefix $(obj)/,$(LIB_CXX_OBJS)): $(obj)/%.o : $(top_srcdir)/lib/%.cc -+ $(call if_changed_dep,cxxcompile) -+ -+$(addprefix $(obj)/,$(LIB_C_OBJS)): $(obj)/%.o : $(top_srcdir)/lib/%.c -+ $(call if_changed_dep,ccompile) -+ -+$(addprefix $(obj)/,$(LINUXMODULE_CXX_OBJS)): $(obj)/%.o : $(srcdir)/%.cc -+ $(call if_changed_dep,cxxcompile) -+ -+$(addprefix $(obj)/,$(LINUXMODULE_C_OBJS)): $(obj)/%.o : $(srcdir)/%.c -+ $(call if_changed_dep,ccompile) -+ -+$(addprefix $(obj)/,$(STD_ELEMENT_OBJS)): $(obj)/%.o : $(top_srcdir)/elements/standard/%.cc -+ $(call if_changed_dep,cxxcompile) -+ -+$(obj)/$(ELEMENTSCONF).o : $(obj)/$(ELEMENTSCONF).cc -+ $(call if_changed_dep,cxxcompile) -+ -+$(obj)/proclikefsmod.o : $(srcdir)/proclikefs.c -+ $(call if_changed_rule,cc_o_c) -+ -+$(obj)/$(KSYMS).c: $(addprefix $(obj)/,$(KSYM_OBJS)) $(top_builddir)/click-buildtool $(addprefix $(obj)/,$(ELEMENTSCONF).mk) -+ $(top_builddir)/click-buildtool ksyms -C $(obj) -x kernelversion.o $(KSYM_OBJS) > $(obj)/$(KSYMS).c -+$(obj)/$(KSYMS).o: $(obj)/$(KSYMS).c -+ $(call if_changed_dep,ccompile) -+ -+ifneq ($(MAKECMDGOALS),clean) -+-include $(obj)/$(ELEMENTSCONF).mk -+endif -+ -+# Don't install in Linux directories for now -+# $(MAKE) -C $(KERNELPATH) M=$(shell pwd) modules_install -+install: Makefile $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc all -+ $(CLICKmkinstalldirs) $(DESTDIR)$(libdir) -+ for i in $(patsubst %.o,%.ko,$(INSTALLOBJS)); do $(CLICKINSTALL_DATA) $$i $(DESTDIR)$(libdir)/$$i; done -+install-man: -+ : -+uninstall: -+ for i in $(patsubst %.o,%.ko,$(INSTALLOBJS)); do /bin/rm -f $(DESTDIR)$(libdir)/$$i; done -+ -+else -+ -+########################################################################## -+## LINUX 2.4 ## -+ -+top_srcdir := .. -+srcdir := . -+top_builddir := .. -+ -+VPATH = .:$(top_srcdir)/lib:$(top_srcdir)/$(subdir):$(top_srcdir)/elements/standard -+ -+CC = gcc -w -W -Wall -+CPP = gcc -W -Wall -E -+CXX = g++ -w -W -Wall -fno-exceptions -fno-rtti -D__SMP__ -+CXXCPP = g++ -W -Wall -E -+LD = ld -+STRIP = strip -+INSTALL = /usr/bin/install -c -+INSTALL_DATA = /usr/bin/install -c -m 644 -+mkinstalldirs = $(conf_auxdir)/mkinstalldirs -+CLICK_ELEM2MAKE = $(top_builddir)/click-buildtool elem2make -+ -+ifeq ($(V),1) -+ccompile = $(COMPILE) $(1) -+cxxcompile = $(CXXCOMPILE) $(1) -+else -+ccompile = @/bin/echo ' ' $(2) $< && $(COMPILE) $(1) -+cxxcompile = @/bin/echo ' ' $(2) $< && $(CXXCOMPILE) $(1) -+endif -+ -+.SUFFIXES: -+.SUFFIXES: .c .cc .o .S .s .i .ii -+ -+.c.o: -+ $(call ccompile,-c $< -o $@,CC) -+.c.i: -+ $(call ccompile,-E $< > $@,CPP) -+.s.o: -+ $(call ccompile,-c $< -o $@,ASM) -+.S.o: -+ $(call ccompile,-c $< -o $@,ASM) -+.cc.o: -+ $(call cxxcompile,-c $< -o $@,CXX) -+.cc.s: -+ $(call cxxcompile,-S $< -o $@,CXX -S) -+.cc.ii: -+ $(call cxxcompile,-E $< > $@,CXXCPP) -+ -+ -+OBJS = $(LIB_CXX_OBJS) $(LIB_C_OBJS) $(STD_ELEMENT_OBJS) $(ELEMENT_OBJS) \ -+ $(LINUXMODULE_CXX_OBJS) $(LINUXMODULE_C_OBJS) $(ELEMENTSCONF).o -+ -+CPPFLAGS = -DCLICK_LINUXMODULE -+CFLAGS = -O2 -+CXXFLAGS = -O2 -+DEPCFLAGS = -MD -+ -+DEFS = -DHAVE_CONFIG_H -+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -+ -I$(srcdir) -I$(top_srcdir) -I$(linuxdir)/include -+LDFLAGS = -+LIBS = -+ -+CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS) -+CXXLD = $(CXX) -+CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ -+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS) -+CCLD = $(CC) -+LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@ -+ -+all: $(INSTALLOBJS) -+ -+ifneq ($(MAKECMDGOALS),clean) -+-include $(ELEMENTSCONF).mk -+endif -+ -+$(DRIVER).o: Makefile $(OBJS) -+ $(LD) -r -o $(DRIVER).o $(OBJS) -+ $(STRIP) -g $(DRIVER).o -+ -+proclikefs.o: proclikefs.c Makefile -+ $(COMPILE) -D__KERNEL__ -DMODULE -c $< -o $@ -+ -+DEPFILES := $(wildcard *.d) -+ifneq ($(DEPFILES),) -+include $(DEPFILES) -+endif -+ -+install: $(INSTALLOBJS) -+ $(mkinstalldirs) $(DESTDIR)$(libdir) -+ for i in $(INSTALLOBJS); do $(INSTALL_DATA) $$i $(DESTDIR)$(libdir)/$$i; done -+install-man: -+ : -+uninstall: -+ for i in $(INSTALLOBJS); do /bin/rm -f $(DESTDIR)$(libdir)/$$i; done -+ -+endif -+ -+ -+########################################################################## -+## ANY LINUX ## -+ -+elemlist: -+ @/bin/rm -f elements.conf -+ @$(MAKE) elements.conf -+elements.conf: $(top_builddir)/config.status $(top_builddir)/click-buildtool -+ echo "linuxmodule app aqm ethernet icmp ip standard tcpudp" | $(top_builddir)/click-buildtool findelem -r linuxmodule -p $(top_srcdir) > elements.conf -+$(ELEMENTSCONF).mk: $(ELEMENTSCONF).conf $(top_builddir)/click-buildtool -+ $(CLICK_ELEM2MAKE) -x "$(STD_ELEMENT_OBJS)" < $(ELEMENTSCONF).conf > $(ELEMENTSCONF).mk -+$(ELEMENTSCONF).cc: $(ELEMENTSCONF).conf $(top_builddir)/click-buildtool -+ $(top_builddir)/click-buildtool elem2export < $(ELEMENTSCONF).conf > $(ELEMENTSCONF).cc -+ @rm -f $(ELEMENTSCONF).d -+ -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status -+ -+always: -+ @: -+ -+clean: -+ -rm -f *~ *.d *.o *.mod.c *.ko -+ -rm -f .version .*.o.flags .*.o.d .*.o.cmd .*.ko.cmd -+ -rm -f $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc $(KSYMS).c elements.conf -+distclean: clean -+ -rm -f Makefile -+ -+.PHONY: all clean distclean elemlist install uninstall always -diff -Nurb click-1.6.0/linuxmodule/Module.symvers click-1.6.0-27/linuxmodule/Module.symvers ---- click-1.6.0/linuxmodule/Module.symvers 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/linuxmodule/Module.symvers 2009-02-11 16:55:10.000000000 -0500 -@@ -0,0 +1,3826 @@ -+0x00000000 _ZN4IPRw9clear_mapER7HashMapI8IPFlowIDPNS_7MappingEE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV7Element /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7MSQueue10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV4IPRw /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPMirror13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z20click_cleanup_configv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13AlignmentInfo5queryEP7ElementiRiS2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ToHostC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13RadixIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIN7IPTable5EntryEE8capacityEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV10IPRewriter /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ICMPRewriter13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZlsR11StringAccumRK12EtherAddress /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7PullTeeC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7PullTeeC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15SpinlockRelease10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10Classifier16count_inbranchesER6VectorIiE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ClassifierC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5AlignD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5AlignC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjED1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjE9set_arenaEP20HashMap_ArenaFactory /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjEC2EiRKj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjEC1EiRKj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PacketTestC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8ToDevice10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RFC2507c13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEE4veltEPS1_i /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPEncap12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDPvE6insertERKS0_S1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10EtherEncap20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV18SilentErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11DelayShaper10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12CompareBlock23fwd_weight_read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14InfiniteSource8run_taskEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriter4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpUnsignedReal10 /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10VectorTestD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10UDPIPEncap10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ToDevice17static_initializeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16RoundRobinSwitchC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16RoundRobinSwitchC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 __assert_fail /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN10BpfyFilter4InsnEED1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN10Classifier4ExprEED1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ToDevice12queue_packetEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI9IPAddressjE16dynamic_resizingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEE4backEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13SetPacketTypeD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13SetPacketTypeD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13SetPacketTypeD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13SetPacketTypeC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13SetPacketTypeC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router15add_requirementERK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13QueueYankTest /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13QueueYankTest9run_timerEP5Timer /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14IPAddrRewriter7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13CheckIPHeader /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK3Tee10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriter10TCPMapping10apply_sackEP9click_tcpi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8PortInfo10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12IPInputCombo /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8FixIPSrc10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8DecIPTTL10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16ICMPPingRewriter4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6PacketC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6MasterC2Ei /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEE9pop_frontEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI8IPFlowIDPvE9find_pairERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16ICMPPingRewriter7Mapping5applyEP14WritablePacket /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12AnyDeviceMap6insertEP9AnyDeviceb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String18make_out_of_memoryEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12RandomSource10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10HashSwitch9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12FastUDPFlows10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10CheckPaintD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8Unqueue212add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPRouteTable11run_commandEiRK6StringP6VectorI7IPRouteEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8IPFilter9Primitive20add_comparison_exprsEP10ClassifierR6VectorIiEiibb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilter9Primitive13simple_negateEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpHandlerCallWrite /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14BigHashMapTestD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressE6resizeEiRKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SortedIPLookup10sort_tableEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8PortInfo15configure_phaseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEEC1EiRKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9IPAddress11make_prefixEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiE6insertERKS0_RKi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Lexer8Compound10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEE5frontEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilter4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpOptional /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Lexer12element_typeERK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV7Unqueue /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK18RoundRobinIPMapper10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router12set_runcountEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetPerfCount9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV10CrapFilter /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8NameInfo9installdbEP6NameDBPK7Element /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11QuitWatcher10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12StaticNameDB /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14MessageElement9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13ICMPPingEncap5flagsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpIPPrefix /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Router10attachmentERK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7MSQueue7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer22process_line_directiveEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier19negate_expr_subtreeER6VectorIiE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6String9find_leftERKS_i /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ScheduleLinux12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier18DominatorOptimizer16dom_shift_branchEiiiiP6VectorIiE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8RTCycles10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6RouterC1ERK6StringP6Master /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14PerfCountAccum10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckARPHeader12reason_textsE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIPvEC1ERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK17_HashMap_iteratorI6StringiE4pairEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIN7IPTable5EntryEE4backEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11DelayShaperC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11DelayShaperC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15BandwidthShaperD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13RatedSplitter /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16ICMPPingRewriter7MappingC1Eb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckIPHeader2D1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckIPHeader2C1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorI9IPAddressE4veltEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjE4swapERS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer11yconnectionEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12IPRouteTable /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11StringAccumC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ActiveNotifier20add_dependent_signalEP14NotifierSignal /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIN7IPTable5EntryEEixEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPRouteTable9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler14static_cleanupEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ComparePacketsD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SortedIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11CiscyFilter4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 click_config_generation /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ToHost12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String14static_cleanupEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIN7IPTable5EntryEE5beginEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRw9clean_mapER7HashMapI8IPFlowIDPNS_7MappingEEj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z20skbmgr_allocate_skbsjjPi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRwD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRwD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRwD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRwC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRwC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11IPGWOptions10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ICMPRewriter19rewrite_ping_packetEP14WritablePacketP8click_ipP20click_icmp_sequencedRK8IPFlowIDPN16ICMPPingRewriter7MappingE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10EtherEncap4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8SetCRC3210port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SetAnnoByte13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router16add_read_handlerEPK7ElementRK6StringPFS3_PS0_PvES7_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element19nelements_allocatedE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringEC1ERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK16SetRandIPAddress10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV16ICMPPingRewriter /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10Classifier4Expr10compatibleERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ARPQuerier9handle_ipEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressE5beginEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11IPGWOptions9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDiE10initializeEP20HashMap_ArenaFactoryj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15PushNullElementC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15PullNullElementC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10EtherEncap10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SetUDPChecksumD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SetTCPChecksumD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9PrioSched7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13QueueYankTest9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ICMPPingSource12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11QuitWatcher9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ICMPPingEncap12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10BpfyFilterC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ToHostD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12ARPResponder6lookupE9IPAddressR12EtherAddress /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11ErrorVeneer9nwarningsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x4a54e14b proclikefs_register_filesystem /d/click/click-1.6.0-27/linuxmodule/proclikefs EXPORT_SYMBOL -+0x00000000 _ZNK14StoreIPAddress10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPAddrPairRewriter7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI6StringiEixERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEE10push_frontERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressED2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressED1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressEC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressEC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK18SourceIPHashMapper10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpIP6Prefix /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11LinkUnqueue10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastTCPFlows12change_portsEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV7Burster /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14DropBroadcasts13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Discard12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z7cp_timeRK6StringP7timeval /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12RatedUnqueue10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11StrideSched7ticketsEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15SpinlockAcquireD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ToDevice7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI8IPFlowIDbE5findpERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12MarkIPHeader10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK4IPRw15configure_phaseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11HandlerCall10initializeEiP7ElementP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEE8pop_backEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11PaintSwitchC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11PaintSwitchC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPReassemblerD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPReassemblerD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPReassemblerD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPReassemblerC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPReassemblerC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier18DominatorOptimizer15intersect_listsERK6VectorIiES4_S4_iiRS2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10UDPIPEncapD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router14static_cleanupEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14StaticIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8DRRSched4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9Bitvector4zeroEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11IPGWOptions12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11ErrorVeneerD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11ErrorVeneerD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV8Unqueue2 /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPPrint9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPEncapC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPEncapC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8DRRSched10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13HashMap_Arena10hard_allocEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6PacketD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6MasterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer10add_tunnelE6StringS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPRewriter4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN19_GLOBAL__N_cp_errno10CpVaHelper16assign_argumentsERK6VectorI6StringEPKcP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9Bitvector6negateEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6String5upperEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6String5lowerEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8MarkIPCE12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11HandlerCall10call_writeEP7ElementRK6StringS4_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastUDPFlows7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK17DynamicUDPIPEncap10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbE3endEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ARPQuerier10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPRouteTable9add_routeERK7IPRoutebPS0_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z17cp_unparse_real10ii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14CheckIPHeader210class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11AddressInfo14query_ethernetE6StringPhP7Element /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5TimerC2EP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11RatedSource12setup_packetEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12MarkIPHeader13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8Notifier14EMPTY_NOTIFIERE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9TimedSink10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI7IPRouteE4swapERS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Lexer16find_connectionsERKN6Router6HookupEbR6VectorIS1_E /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13IPReassembler10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8DecIPTTL7drop_itEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 update_crc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbED2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbEC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiE5frontEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10EtherEncap12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8CPUQueue10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler8lwarningERK6StringPKcz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorI9IPAddressE8capacityEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressE5eraseEPS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15SpinlockAcquire10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13SetCycleCount /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIP7ElementEixEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18RoundRobinIPMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13CheckIPHeader5flagsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SimpleQueue13write_handlerERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Router9elandmarkEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11LinkUnqueue10read_paramEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11StrideSched10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer9TunnelEnd4findERKN6Router6HookupE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV18IPAddrPairRewriter /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14InfiniteSource20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN20HashMap_ArenaFactory11the_factoryE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV17DynamicUDPIPEncap /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer4yvarEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z16cp_unparse_real2yi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Suppressor12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13DynamicNameDB4sortEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z8cp_scanfPKcS0_S0_z /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17ICMPPingResponder13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN20LandmarkErrorHandlerD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN20LandmarkErrorHandlerD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI6StringiE16dynamic_resizingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZThn60_N14InfiniteSourceD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZThn60_N14InfiniteSourceD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbE20set_dynamic_resizingEb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjE6assignEiRKj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10SuppressorD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9StoreData10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPAddrPairRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12SetIPAddress /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbE7resize0Ej /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8RFC2507d10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8RFC2507c10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15PullNullElement4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14FrontDropQueueD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14FrontDropQueueC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z10cp_is_wordRK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ToDevice13change_deviceEP10net_device /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18SourceIPHashMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastUDPFlows10get_packetEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiE9pop_frontEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4Task10initializeEP7Elementb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIN7IPTable5EntryEE3endEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8DRRSched7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK16StaticPullSwitch10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN23_HashMap_const_iteratorI9IPAddressjEC2EPK7HashMapIS0_jEb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN23_HashMap_const_iteratorI9IPAddressjEC1EPK7HashMapIS0_jEb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV11RatedSource /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z21click_clear_error_logv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14LinearIPLookup12lookup_routeE9IPAddressRS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17ICMPPingResponderD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17ICMPPingResponderD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17ICMPPingResponderD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17ICMPPingResponderC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17ICMPPingResponderC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV7RRSched /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14BandwidthMeter17read_rate_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIN6Router6HookupEE4veltEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiEC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiEC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15SpinlockAcquire10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Packet10shift_dataEib /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14SchedOrderTest10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x767af9e9 proclikefs_reinitialize_supers /d/click/click-1.6.0-27/linuxmodule/proclikefs EXPORT_SYMBOL -+0x00000000 _ZN6String13null_string_pE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14IPAddrRewriter10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 click_lalloc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z9cp_real10RK6StringiPj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z9cp_real10RK6StringiPi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN21LinuxModuleLexerExtra7requireE6StringP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7RRSchedC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7RRSchedC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK16ICMPPingRewriter10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10FromDeviceC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler19set_default_handlerEPS_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11TimedSource10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14SetTCPChecksum /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RFC2507d6decodeERPKhRt /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6String9printableEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13SetIPChecksum /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14IPAddrRewriter4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorI6StringE4sizeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4Task17strong_unscheduleEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4Task17strong_rescheduleEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FullNoteQueue4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13PerfCountInfo4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEE7reserveEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ScheduleLinuxD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ScheduleLinuxD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ScheduleLinuxD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ScheduleLinuxC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ScheduleLinuxC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Paint10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14InfiniteSource /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13ICMPPingEncap10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressE6insertEPS0_RKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK20StripToNetworkHeader10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Script9run_timerEP5Timer /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN19_GLOBAL__N_cp_errno10CpVaHelper23assign_keyword_argumentERK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ClassifierD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6String9find_leftEci /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV16VariableExpander /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ARPResponder12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PacketTestD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEEC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Router20element_ports_stringEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14PerfCountAccum4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Paint9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEED1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Element10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV11CiscyFilter /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ARPQuerier9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14ToHostSniffers /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8Notifier15remove_listenerEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IdleD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IdleD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IdleD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IdleC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IdleC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15HostEtherFilterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10CheckPaint4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEE6assignEiRKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15SpinlockAcquire9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12RandomSample10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI6StringiE3endEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11IPGWOptionsC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11IPGWOptionsC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiE6assignEiRKi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK3RED10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetPerfCountD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetPerfCountD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetPerfCountD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetPerfCountC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetPerfCountC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13DiscardNoFree10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8MarkIPCE10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13IPOutputCombo10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14IPAddrRewriter22dump_nmappings_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z30cp_register_stringlist_argtypePKcS0_i /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckUDPHeader4dropENS_6ReasonEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13AlignmentInfo6query1EP7ElementiRiS2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriter21dump_patterns_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18RoundRobinIPMapper15notify_rewriterEP4IPRwP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11QuitWatcherC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11QuitWatcherC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer23expand_compound_elementEiR19VariableEnvironment /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element12PUSH_TO_PULLE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z28cp_va_kparse_remove_keywordsR6VectorI6StringEP7ElementP12ErrorHandlerz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8Truncate10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14MessageElement10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjE6insertERKS0_RKj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV7PullTee /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RFC2507c7encodeXEiiPcRi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPField5parseEPKcS1_iPS_P12ErrorHandlerP7Element /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11SimpleQueue10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Counter13write_handlerERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV20StripToNetworkHeader /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13StripIPHeader /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7MSQueue9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14IPAddrRewriterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14IPAddrRewriterC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDPvE6resizeEj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDPvE6removeERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK17ICMPPingResponder10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ShaperC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSample4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV5Lexer /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Element13configurationER6VectorI6StringE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5MeterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5MeterC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiE5eraseEPiS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressEC2EiRKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressEC1EiRKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z19click_cleanup_schedv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14LinearIPLookup12lookup_entryE9IPAddress /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12RandomSource10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ICMPPingSourceD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ICMPPingSourceC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12FastUDPFlows10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ComparePackets5checkEP6PacketS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13RadixIPLookupD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13RadixIPLookupD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13RadixIPLookupD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13RadixIPLookupC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13RadixIPLookupC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8NameInfoD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8NameInfoD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8NameInfoC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8NameInfoC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDPvE9set_arenaEP20HashMap_ArenaFactory /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckTCPHeader12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SimpleQueue12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK3RED13configurationER6VectorI6StringE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14PerfCountAccumD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14PerfCountAccumC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPRouteTableD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPRouteTableD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8IPFilter5flagsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18SourceIPHashMapper15notify_rewriterEP4IPRwP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13DiscardNoFree12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEE4at_uEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Shaper10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV16UpstreamNotifier /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 click_fsmode /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler5debugEPKcz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Unqueue10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10PullSwitch10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PollDeviceC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10LexerExtraD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPNameInfo17static_initializeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler12ERROR_RESULTE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpHandlerCallPtrRead /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN19_GLOBAL__N_cp_errno10CpVaHelper17add_keyword_errorER11StringAccumiRK6StringPKci /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK17_HashMap_iteratorI6StringiE5valueEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String14append_garbageEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV17ICMPPingResponder /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ClickIno7cleanupEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpWriteHandlerCall /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z10cp_integerRK6StringiPi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringE6resizeEiRKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilter9Primitive16set_transp_protoEiP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ICMPPingSource13write_handlerERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11NullElementC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11NullElementC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer8CompoundD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer8CompoundD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12DelayUnqueue12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ToHost14static_cleanupEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Timer10unscheduleEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiE3endEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12StaticSwitch10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11HandlerCall6assignEP7ElementRK6StringS4_iP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV21LinuxModuleLexerExtra /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9TimedSink9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z20cp_va_static_cleanupv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11CheckPacket10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIPvE6resizeEiS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK3RED12check_paramsEjjjjP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ARPQuerier11expire_hookEP5TimerPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRw16parse_input_specERK6StringRNS_9InputSpecES0_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler9make_textENS_11SeriousnessEPKcPc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Element4nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10CheckCRC32C1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Unqueue11write_paramERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z10cp_keywordRK6StringPS_S2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15CheckICMPHeaderC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10RandomSeedC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiE15find_pair_forceERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressE7reserveEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12RandomSwitch10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5PaintD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5PaintC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14StaticIPLookup /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjEC1ERKjP20HashMap_ArenaFactory /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8SetCRC3213simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10EtherEncapC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjE20set_dynamic_resizingEb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element17add_write_handlerERK6StringPFiS2_PS_PvP12ErrorHandlerES4_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9BitvectoroRERKS_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9BitvectoreOERKS_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9BitvectoraSERKS_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9BitvectoraNERKS_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5TimerC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8NameInfo14static_cleanupEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String4MemoC1Eii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z7cp_wordRK6StringPS_S2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjE6insertEPjRKj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ActiveNotifierD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12GetIPAddress10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier21redirect_expr_subtreeEiiii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN22BandwidthRatedSplitterD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN22BandwidthRatedSplitterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN22BandwidthRatedSplitterD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN22BandwidthRatedSplitterC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN22BandwidthRatedSplitterC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13ConfParseTest10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV7Unstrip /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13NotifierQueueD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13NotifierQueueD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13NotifierQueueD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13NotifierQueueC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13NotifierQueueC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14IPAddrRewriter9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10BpfyFilterD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13QueueYankTest10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRw7MappingC2Eb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRw7MappingC1Eb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8FromHost20set_device_addressesEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13CheckIPHeader10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3RED10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer10lex_configEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9IPAddress17unparse_with_maskES_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDPvE4swapERS2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV7Counter /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PullSwitchC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14LinearIPLookupD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14IPAddrRewriter21dump_mappings_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13SetPacketType20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14PerfCountAccum9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPOutputComboD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPOutputComboD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPOutputComboD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPOutputComboC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPOutputComboC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbEC1ERKbP20HashMap_ArenaFactory /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16StaticPullSwitchC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16StaticPullSwitchC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15LookupIPRouteMP10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14FrontDropQueue10take_stateEP7ElementP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Counter9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ARPFaker13make_responseEPhS0_S0_S0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9IPAddress7unparseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ComparePackets12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8PaintTee9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckUDPHeader12reason_textsE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10PacketTest10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11StringAccum4swapERS_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Discard8run_taskEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cp_errno /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7RIPSendC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7RIPSendC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilter9Primitive5checkERKS0_jP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11IPFieldInfo14static_cleanupEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12RatedUnqueue10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Burster10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Script17static_initializeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV16RoundRobinSwitch /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Element13configurationEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14CheckUDPHeader10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIjE8capacityEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIiE8capacityEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN4IPRw9InputSpecEE5eraseEPS1_S3_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorI9IPAddressE5emptyEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String12claim_stringEPcii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11EnsureEther8smactionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8CPUQueue4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RouterThreadD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RouterThreadD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Router14element_lerrorEP12ErrorHandlerP7ElementPKcz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPRewriterC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Discard10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z8cp_real2RK6StringiPj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z8cp_real2RK6StringiPi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier21bubble_sort_and_exprsEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ShaperD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8PaintTee10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13AlignmentInfo9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPTableD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPTableD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Element10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10UDPIPEncap5flagsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8ToDevice10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11TCPRewriter10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9StoreData10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9SetIPDSCP10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SchedOrderTestD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbE10find_forceERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV8PortInfo /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 srandom /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV8FixIPSrc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV8DecIPTTL /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiE8pop_backEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilter11check_matchEP7ElementiN13ElementFilter8PortTypeE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14InfiniteSource12setup_packetEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEE2atEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12ErrorElement10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSource12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element13COMPLETE_FLOWE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpArgument /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13RatedSplitter10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18SilentErrorHandler11handle_textEN12ErrorHandler11SeriousnessERK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RFC2507c10make_otherEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN23_HashMap_const_iteratorI8IPFlowIDPvEppEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK16UpstreamNotifier10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SetAnnoByte9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14CheckARPHeader10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6SwitchD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Router20unparse_requirementsER11StringAccumRK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 __cxa_pure_virtual /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11EtherMirror10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8DecIPTTL12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z19cp_unparse_intervalRK7timeval /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12SetPerfCount10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14InfiniteSource7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZThn60_N11DelayShaperD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZThn60_N11DelayShaperD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbEC1ERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiE4swapERS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringE5beginEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpIPAddressList /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SimpleQueue4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11CheckLength10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z15cp_handler_nameRK6StringPP7ElementPS_S3_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Element9flow_codeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10BpfyFilter10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ScriptD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15LookupIPRouteMPD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15LookupIPRouteMPD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10CheckCRC3210class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12EtherAddress7unparseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN19ContextErrorHandlerC2EP12ErrorHandlerRK6StringS4_S4_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ARPQuerier10read_tableEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Master3useEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8MarkIPCED2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8MarkIPCED1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8MarkIPCED0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8MarkIPCEC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8MarkIPCEC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14BigHashMapTest10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Unqueue10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ToHostSniffersD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ToHostSniffersC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringE10push_frontERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV11EnsureEther /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Element20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ARPQuerier10take_stateEP7ElementP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RTCycles4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14ActiveNotifier /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI8IPFlowIDbE8nbucketsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18RoundRobinIPMapper4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckTCPHeaderD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckTCPHeaderC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SetAnnoByte12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11EtherMirrorD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11EtherMirrorD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11EtherMirrorD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13DiscardNoFreeD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13DiscardNoFreeD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13DiscardNoFreeD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13DiscardNoFreeC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13DiscardNoFreeC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier18DominatorOptimizer3runEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV6ToHost /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI6StringiE8nbucketsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10FromDeviceD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8RTCycles10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Router15context_messageEiPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11LinkUnqueue10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14AverageCounter /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11AddressInfo10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7RRSched10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11StrideSchedD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11StrideSchedD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11StrideSchedD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14StaticIPLookup12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN11CiscyFilter4InsnEE7reserveEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10VectorTestC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11StrideSched7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11StringAccum11take_stringEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12DelayUnqueue10read_paramEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13RatedSplitter13configurationER6VectorI6StringE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 click_assert_failed /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN5Lexer11ElementTypeEED1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer5unlexERK6Lexeme /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z11cp_unargvecRK6VectorI6StringE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16UpstreamNotifier9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14ComparePackets10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjE11findp_forceERKS0_RKj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18SourceIPHashMapper4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16SetRandIPAddress4pickEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11PaintSwitch13configurationER6VectorI6StringE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element17set_handler_flagsERK6Stringi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIN6Router6HookupEE8capacityEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16ICMPPingRewriterC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16ICMPPingRewriterC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10CheckPaintC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckARPHeaderD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckARPHeaderC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12SetTimestamp /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8SetCRC3210processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13RatedSplitter4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13FTPPortMapper10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringE4backEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9AnyDevice11find_deviceEP12AnyDeviceMapP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10PollDevice10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastTCPFlows12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10ARPQuerier20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ComparePackets10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12RandomSample10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI7IPRouteE5eraseEPS0_S2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer9TunnelEndC2ERKN6Router6HookupEbPS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriter5llrpcEjPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router16element_hindexesEPK7ElementR6VectorIiE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK16RoundRobinSwitch10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12PokeHandlers3addEP7ElementRK6StringS4_i /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriter16tcp_done_gc_hookEP5TimerPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13SetCycleCount10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK4Idle10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK17DynamicUDPIPEncap10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIjE5emptyEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIiE5emptyEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8PaintTeeD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8PaintTeeD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8PaintTeeD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8PaintTeeC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8PaintTeeC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV5Paint /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpBool /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorI9IPAddressEixEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7PullTee10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11LinkUnqueue9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9Bitvector23finish_copy_constructorERKS_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13FullNoteQueue10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10FromDevice12reset_countsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12DelayUnqueue10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV11NullElement /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4Idle4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z19cp_assign_argumentsRK6VectorI6StringEPKS0_S5_PS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13QueueYankTestD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13QueueYankTestD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13QueueYankTestD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13QueueYankTestC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13QueueYankTestC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15CheckICMPHeader10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiE6resizeEj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringE5eraseEPS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z9cp_real10RK6StringiiPj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Burster10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12ARPResponder10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiE5beginEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PollDeviceD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17CastElementFilterC2ERK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17CastElementFilterC1ERK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14DropBroadcastsD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetPerfCount4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8DRRSched10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TimedSource12change_paramERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8NameInfo9query_intEjPK7ElementRK6StringPj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15HostEtherFilter10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12CompareBlock20thresh_write_handlerERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Script10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTVN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12IPClassifier10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12DelayUnqueue10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ARPPrint9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK16StaticPullSwitch10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler5fatalEPKcz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15LookupIPRouteMP9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbE6insertERKS0_RKb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13SetIPChecksum10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11LinkUnqueue12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9CPUSwitch10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIN6Router6HookupEE4backEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12StaticSwitch10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10CheckCRC32D0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9AnyDevice10set_deviceEP10net_deviceP12AnyDeviceMapb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SetAnnoByteC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SetAnnoByteC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15CycleCountAccumC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckARPHeader9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10RandomSeedD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10EtherEncap12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIN6Router6HookupEEixEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11LinkUnqueue10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPRouteTable4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10HashSwitch10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10CheckPaint10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8Truncate9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiE11findp_forceERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14SetTCPChecksum10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Script8add_insnEiiiRK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10EtherEncapD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12StrideSwitch10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIN6Router6HookupEE5beginEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorI6StringE4backEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15PushNullElementD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15PullNullElementD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPAddrPairRewriter21dump_patterns_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11StringAccum8snprintfEiPKcz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SortedIPLookupD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SortedIPLookupC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14InfiniteSource10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10CrapFilterD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 click_master /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriter10take_stateEP7ElementP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPEncap12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11SetAnnoByte20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8RFC2507d10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8RFC2507c10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPInputCombo9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10ARPQuerier10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Align4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10UDPIPEncapC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEE3endEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4Task10initializeEP6Routerb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PullSwitch12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer7ytunnelEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPReassembler5checkEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12GetIPAddress10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8CPUQueue10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12CompareBlock10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PollDevice12reset_countsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18PrefixErrorHandlerD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Unstrip10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PullSwitchD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14IPAddrRewriter21dump_patterns_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10EtherEncap10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjE15find_pair_forceERKS0_RKj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjE2atEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetIPAddress9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router14add_connectionEiiii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18KernelErrorHandlerD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPRouteTable12remove_routeERK7IPRoutePS0_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13FastUDPSource /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12FastTCPFlows10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8ARPPrint10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPRewriter21dump_patterns_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element12connect_portEbiPS_i /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z14cp_is_click_idRK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier19finish_expr_subtreeER6VectorIiENS_8CombinerEii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11CheckLengthD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11CheckLengthD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11CheckLengthD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK18IPAddrPairRewriter10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Counter10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14PerfCountAccum /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z13cp_ip_addressRK6StringP9IPAddressP7Element /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7RRSched10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEEC2EiRKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15CycleCountAccum10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Unqueue8run_taskEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSource10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Master15process_pendingEP12RouterThread /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDPvE20set_dynamic_resizingEb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPRewriter12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpShort /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9Bitvector18or_with_differenceERKS_RS_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8Unqueue29configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPRewriterD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14InfiniteSource4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK17ICMPPingResponder10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17DynamicUDPIPEncap13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12ScheduleInfo15configure_phaseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13RadixIPLookup10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Unqueue10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10UDPIPEncap10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9TimedSinkD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9TimedSinkD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9TimedSinkD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9TimedSinkC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9TimedSinkC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiE9set_arenaEP20HashMap_ArenaFactory /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV8MarkIPCE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEE6insertEPS1_RKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ARPFaker10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z19cp_expand_in_quotesRK6Stringi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI9IPAddressjE5emptyEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15RandomBitErrorsC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPRewriterPatternsD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPRewriterPatternsC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12CompareBlock9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14StaticIPLookupD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14StaticIPLookupC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Switch9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 strtol /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Unqueue10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler6lfatalERK6StringPKcz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRw7Pattern10parse_naptER6VectorI6StringEPPS0_P7ElementP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17DynamicUDPIPEncapD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17DynamicUDPIPEncapD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17DynamicUDPIPEncapD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17DynamicUDPIPEncapC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17DynamicUDPIPEncapC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15SpinlockRelease13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16ICMPPingRewriter10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13ICMPPingEncap10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z10cp_unquoteRK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8Truncate10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI8IPFlowIDbE4findERKS0_RKb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router21check_hookup_elementsEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12GetIPAddress13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Switch10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPRewriterPatterns9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringE7reserveEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15CycleCountAccum10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Script9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDiE9set_arenaEP20HashMap_ArenaFactory /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11DelayShaper4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12AnyDeviceMap10initializeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiEC2ERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PullSwitch5llrpcEjPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiEaSERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiEC1ERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier18start_expr_subtreeER6VectorIiE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13SetIPChecksumD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13SetIPChecksumD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13SetIPChecksumD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13SetIPChecksumC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13SetIPChecksumC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11LinkUnqueueC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11LinkUnqueueC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEE5beginEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpInterval /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIjE4at_uEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIiE4at_uEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiEaSERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiEC2ERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiEC1ERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7PullTee10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12SetPerfCount10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14InfiniteSourceD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14InfiniteSourceC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPFragmenter12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV15UnstripIPHeader /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15RecycledSkbPool10initializeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13IPOutputCombo10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ToHost7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetTimestamp13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Strip9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11EtherMirror13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Router4findERK6StringS0_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16UpstreamNotifier4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SchedOrderTest12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18RoundRobinIPMapperD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiE5beginEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3RED11should_dropEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element7cleanupENS_12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ARPPrintD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ARPPrintD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ARPPrintD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ARPPrintC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ARPPrintC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9StoreData13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12PokeHandlers11write_paramERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPRewriter5llrpcEjPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpArguments /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ClassifierC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIN6Router6HookupEE3endEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PacketTestC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3RED16live_reconfigureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbE10find_forceERKS0_RKb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringE9push_backERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV9SetIPDSCP /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Handler17the_blank_handlerE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPRewriter11udp_gc_hookEP5TimerPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPRewriter11tcp_gc_hookEP5TimerPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10Classifier10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14CheckIPHeader2 /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI6StringiE4findERKS0_RKi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router15force_name_infoEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5PrintD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5PrintC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10FromDevice7got_skbEP7sk_buff /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15UnstripIPHeaderC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Suppressor10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRw7Pattern5parseERK6StringPPS0_P7ElementP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastTCPFlows10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpString /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10VectorTestD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEE6resizeEiRKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRw14take_state_mapER7HashMapI8IPFlowIDPNS_7MappingEEPS3_S6_RK6VectorIPNS_7PatternEESC_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8TruncateD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8TruncateD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8TruncateD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8TruncateC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8TruncateC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriter21dump_mappings_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11SimpleQueue10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPMapperD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPMapperD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4Task11add_pendingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18SourceIPHashMapperD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router12hookup_errorERKNS_6HookupEbPKcP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14AverageCounterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14AverageCounterC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9IPAddress18mask_to_prefix_lenEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV16BaseErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11CiscyFilterD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11CiscyFilterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11CiscyFilterD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpIgnore /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV8Notifier /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7DiscardD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7DiscardD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7DiscardD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10CheckPaintD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Burster10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10RandomSeed15configure_phaseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEE5clearEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Router19unparse_connectionsER11StringAccumRK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14FrontDropQueue4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV10VectorTest /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV10RandomSeed /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8SortTest10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z10cp_integerRK6StringiPx /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiED2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiEC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiEC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiE10push_frontERKi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3RED14read_parameterEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5LexerD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5LexerC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDPvEC2ES1_P20HashMap_ArenaFactory /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiED1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router6HookupC1Eii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11RatedSource10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11PaintSwitch10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressE9push_backERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16SetRandIPAddressC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16SetRandIPAddressC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15RandomBitErrors13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14InfiniteSource9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastTCPFlows8NO_LIMITE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Unstrip10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7RIPSend9run_timerEP5Timer /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8NameInfo6namedbEjiRK6StringP6NameDB /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8NameInfo17static_initializeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ARPResponder12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Router7unparseER11StringAccumRK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FastUDPSource5resetEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN10BpfyFilter4InsnEE7reserveEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN10Classifier4ExprEE7reserveEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4TaskD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4TaskD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12PokeHandlers10timer_hookEP5TimerPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPNameInfo14static_cleanupEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8FromHost10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9Bitvector20nonzero_intersectionERKS_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FTPPortMapper10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Counter10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14CheckTCPHeader10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8Unqueue2D2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8Unqueue2D1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8Unqueue2D0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8Unqueue2C2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8Unqueue2C1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3Tee9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5StripD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5StripC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11RatedSource12change_paramERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV8PaintTee /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZlsR11StringAccumRKN10Classifier4ExprE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier14optimize_exprsEP12ErrorHandleri /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Timer14schedule_afterERK9Timestamp /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZThn60_N18RoundRobinIPMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilter9Primitive5clearEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z19cp_register_argtypePKcS0_iPFvP8cp_valueRK6StringP12ErrorHandlerS0_P7ElementEPFvS2_S9_EPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13QueueYankTest10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV11SetAnnoByte /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14LinearIPLookup10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8FromHost15configure_phaseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13CheckIPHeader10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN19VariableEnvironmentD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorI9IPAddressE4backEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV3RED /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV10PullSwitch /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8IPMirror10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFlowIDC2EPK6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFlowIDC1EPK6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 click_cleanup_packages /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11DelayShaper10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11CiscyFilter10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI9IPAddressjE8nbucketsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12ARPResponder10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7MSQueue12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13CheckIPHeader17static_initializeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6ToHost10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5PaintD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15LookupIPRouteMP4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN12ARPResponder5EntryEEC1ERKS2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z24click_check_header_sizesv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckUDPHeaderD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckUDPHeaderC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9PrioSched10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12PokeHandlers7unpauseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14AverageCounter9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK19VariableEnvironment5valueERK6StringRb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPPrintC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPPrintC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPInputComboD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPInputComboD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPInputComboD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPInputComboC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPInputComboC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringE6insertEPS0_RKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RatedUnqueue12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Paint10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z11cp_ip_route6StringP7IPRoutebP7Element /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN19VariableEnvironmentC2EPS_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8Unqueue210port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8FromHost9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12DelayUnqueue10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpHandlerCallRead /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z10cp_handlerRK6StringiPP7ElementPPK7HandlerS3_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiE5clearEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK4Task6masterEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13ScheduleLinux10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RouterThreadC2EP6Masteri /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RouterThreadC1EP6Masteri /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Element15hotswap_elementEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element16initialize_portsEPKiS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15CheckICMPHeaderD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15CheckICMPHeaderD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetIPAddressD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetIPAddressD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetIPAddressD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetIPAddressC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetIPAddressC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIN7IPTable5EntryEE5frontEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPRewriterPatterns4findEP7ElementRK6StringP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9Bitvector5clearEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11AdaptiveRED16live_reconfigureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17RecycledSkbBucket7cleanupEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14MessageElement /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13AlignmentInfoD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13AlignmentInfoD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13AlignmentInfoD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13AlignmentInfoC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13AlignmentInfoC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SchedOrderTest10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7RRSched10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ICMPPingSource4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9Bitvector6assignEib /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14AverageCounter10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6StringC2Ey /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6StringC2Ex /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6StringC2Em /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6StringC2El /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6StringC2Ej /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6StringC2Ei /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZdlPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZdaPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14LinearIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10HashSwitchD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14BandwidthMeterD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIPvED2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Paint10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorElement10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z9cp_expandRK6StringR16VariableExpanderb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiE4swapERS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEED2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEEC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Script8ExpanderD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringE6assignEiRKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11DirectEWMAXI24StabilityEWMAXParametersILj10EyxEE8update_nEyj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element9PORTS_1_0E /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element9PORTS_0_0E /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Packet14expensive_pushEj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z10cp_integerPKcS0_iPy /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z10cp_integerPKcS0_iPx /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z10cp_integerPKcS0_iPj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z10cp_integerPKcS0_iPi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13RatedSplitter10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9PrioSched4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13PerfCountInfo9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier18DominatorOptimizer12shift_branchEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10UDPIPEncapD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressE4swapERS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckTCPHeader4dropENS_6ReasonEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15CheckICMPHeader12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14SetUDPChecksum10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element16add_read_handlerERK6StringPFS0_PS_PvES4_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12CompareBlockD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12CompareBlockD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12CompareBlockD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12CompareBlockC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12CompareBlockC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer9ycompoundE6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10FromDevice10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10CheckCRC3213simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3REDD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3REDD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3REDD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3REDC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3REDC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element4PULLE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12CompareBlock10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbE6removeERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN20LandmarkErrorHandlerC2EP12ErrorHandlerRK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN20LandmarkErrorHandlerC1EP12ErrorHandlerRK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8CPUQueue12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ARPQuerier10read_statsEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorI9IPAddressE4sizeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPEncap10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ElementFilter6filterER6VectorIP7ElementE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ActiveNotifier15remove_listenerEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV5Meter /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8ARPFaker10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z6jvcompI12chash_node_tIiEiXadL_ZNS1_3keyEEEEiPKvS3_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV6Shaper /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15LookupIPRouteMP10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12FastTCPFlows10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12PokeHandlers11STOP_MARKERE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12MarkIPHeader /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9ICMPError9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12ICMPRewriter10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorI6StringEixEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11IPGWOptions10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastUDPFlows4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10BpfyFilter10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV9CPUSwitch /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z11cp_va_parseRK6VectorI6StringEP7ElementP12ErrorHandlerz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7PullTee10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15PushNullElement10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15PullNullElement10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13DynamicNameDB /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12IPInputCombo10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ComparePackets12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer8Compound6finishEPS_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckUDPHeader9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriter4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiEC2ERKiP20HashMap_ArenaFactory /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiEC1ERKiP20HashMap_ArenaFactory /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16UpstreamNotifierD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16UpstreamNotifierD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16UpstreamNotifierD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element8AGNOSTICE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10Classifier4Expr15not_implies_notERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI7IPRouteED1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Counter12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z16cp_unparse_real2ii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z17click_init_configv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiE6removeERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8CPUQueue4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPAddrPairRewriter21dump_mappings_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZThn60_N17StaticThreadSched22initial_home_thread_idEP4Taskb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8Notifier13FULL_NOTIFIERE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14MessageElementD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPFieldC2Eiii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPFieldC1Eiii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12SpinlockInfo15configure_phaseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7UnstripD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7UnstripD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7UnstripD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Switch11write_paramERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEE4veltEPS1_i /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer11get_elementE6StringiRKS0_S2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FTPPortMapper9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z15cp_unparse_boolb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN20StripToNetworkHeaderC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN20StripToNetworkHeaderC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14StoreIPAddressD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14StoreIPAddressC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15LookupIPRouteMP10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler13prepend_linesERK6StringS2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier25combine_compatible_statesEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Burster9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9TimedSink10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiE10initializeEP20HashMap_ArenaFactoryj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier18DominatorOptimizer26last_common_state_in_listsERK6VectorIiES4_S4_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ToDevice10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15PushNullElement10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15PullNullElement10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer9skip_lineEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z19cp_seconds_as_microRK6StringPj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RTCycles12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12IPFragmenter10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN23_HashMap_const_iteratorI8IPFlowIDPvEC1EPK7HashMapIS0_S1_Eb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10FromDeviceC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler8lmessageERK6StringPKcz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17DynamicUDPIPEncap9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z12cp_ip_prefixRK6StringP9IPAddressS3_P7Element /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK23_HashMap_const_iteratorI6StringiE4pairEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK23_HashMap_const_iteratorI6StringiE4liveEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV10BpfyFilter /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z24dev_get_by_ether_addressRK6StringP7Element /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI8IPFlowIDbE6bucketERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjE3endEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEE9pop_frontEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7MSQueueC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7MSQueueC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK16BaseErrorHandler7nerrorsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15CheckICMPHeader9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringE4swapERS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZThn60_N18SourceIPHashMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Master11kill_routerEP6Router /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13DriverManager10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Switch4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13SetCycleCount10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7RRSched10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjE15find_pair_forceERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEEC1EiRKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10Suppressor10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 click_dmalloc_totalnew /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEE5frontEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6String10quoted_hexEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ICMPPingSource11make_packetEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler19has_default_handlerEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ClassifierD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13PerfCountUser7prepareERK6StringP12ErrorHandleri /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PacketTestD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10CheckCRC3210processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8FromHostD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8FromHostD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8FromHostD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8FromHostC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8FromHostC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13FastUDPSource10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ARPResponder9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9AnyDevice12clear_deviceEP12AnyDeviceMap /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI8IPFlowIDbEixERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11StrideSched4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11StringAccum4growEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ICMPPingSource7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String14permanent_memoE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTVN6Script8ExpanderE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13DiscardNoFree10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Unstrip10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriter10TCPMapping5applyEP14WritablePacket /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RTCycles4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV15RandomBitErrors /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckTCPHeader12reason_textsE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI6StringiE5emptyEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14PerfCountAccum4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14IPAddrRewriter9run_timerEP5Timer /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11EnsureEther4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiE7reserveEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ToDevice8run_taskEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjED2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11StrideSched10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer8yrequireEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13AlignmentInfo10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z11click_qsortPvjjPFiPKvS1_E /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FullNoteQueue4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Counter10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router11add_elementEP7ElementRK6StringS4_S4_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9ICMPError12valid_sourceE7in_addr /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler13decorate_textENS_11SeriousnessERK6StringS3_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14CheckARPHeader /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjE5beginEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14PerfCountAccum10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15BandwidthShaper10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3RED13set_C1_and_C2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7UnqueueD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7UnqueueD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7UnqueueD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK4Idle5flagsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14ICMPPingSource10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4Task10error_hookEPS_Pv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16SetRandIPAddress13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV18PrefixErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Timer8set_hookEP7Element /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14StoreIPAddress9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11StringAccum8capacityEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK18IPAddrPairRewriter17IPAddrPairMapping7unparseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13SetIPChecksum10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilter19length_checked_pushEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8DRRSched10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpIPAddressOrPrefix /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorI6StringE8capacityEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK23_HashMap_const_iteratorI6StringiEcvMS1_KFbvEEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6RouterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11EnsureEther10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15BandwidthShaperC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFlowIDC2EPK8click_ip /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFlowIDC1EPK8click_ip /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z12init_clickfsv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckIPHeader2D0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK3Tee10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Switch5llrpcEjPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RFC2507c8make_keyERKNS_5tcpipERS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8CPUQueue10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpIP6Address /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14BigHashMapTestD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14BigHashMapTestC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIPvE5eraseEPS0_S2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10PollDevice10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PollDeviceC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Element2idEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckARPHeader13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6SwitchC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK17StaticThreadSched10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FTPPortMapper7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier4Expr4flipEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8ARPPrint10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZlsR11StringAccumRK9Timestamp /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringE5eraseEPS0_S2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN20HashMap_ArenaFactoryC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN20HashMap_ArenaFactoryC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SimpleQueue10take_stateEP7ElementP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11LinkUnqueue13write_handlerERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK17DynamicUDPIPEncap10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RatedUnqueue10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12DelayUnqueue9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12AnyDeviceMap10lookup_allEP10net_devicebR6VectorIP9AnyDeviceE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11StrideSched9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorI6StringE2atEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ScriptC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8IPFilter10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjE6resizeEiRKj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6String10trim_spaceEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7CounterC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7CounterC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI9IPAddressjE5beginEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15SpinlockReleaseD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13SetCycleCount4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier18DominatorOptimizerC2EPS_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier18DominatorOptimizerC1EPS_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10RandomSeedC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13StripIPHeader10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV15SpinlockRelease /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14ComparePackets /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPAddrPairRewriterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPAddrPairRewriterC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV17StaticThreadSched /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ARPQuerierD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14SetTCPChecksum10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10MixedQueue4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ToHostC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14PerfCountAccum13reset_handlerERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13CheckIPHeader13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN22BandwidthRatedSplitter4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ComparePacketsD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ComparePacketsC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7PullTeeD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7PullTeeD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7PullTeeD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z14skbmgr_cleanupv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12SetIPAddress10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10CrapFilterC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z19cp_seconds_as_milliRK6StringPj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN23_HashMap_const_iteratorI6StringiEC2EPK7HashMapIS0_iEb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilter9Primitive8set_maskEjijP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14InfiniteSource10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15CycleCountAccumD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15CycleCountAccumD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RFC2507d13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Lexer18element_type_namesER6VectorI6StringE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI8IPFlowIDbE4findERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPAddrPairRewriter9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18SilentErrorHandlerD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11StrideSched12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12RandomSwitch /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ARPQuerier7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5TimerC1EP7Element /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer9end_parseEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14FrontDropQueue10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8FixIPSrc10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8DecIPTTL10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SetAnnoByte18value_read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11NullElement10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9ICMPError7unicastE7in_addr /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK21BandwidthRatedUnqueue10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SetUDPChecksumD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SetUDPChecksumC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SetTCPChecksumD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SetTCPChecksumC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18KernelErrorHandler11handle_textEN12ErrorHandler11SeriousnessERK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ICMPPingEncap9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6ToHost10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Master20timer_reheapify_fromEiP5Timerb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTVN5Lexer8CompoundE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10HashSwitch10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14FrontDropQueue4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10CheckPaint10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router6hindexEPK7ElementRK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSample4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN20HashMap_ArenaFactory14static_cleanupEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpUnsignedShort /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Align9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Router19gport_list_elementsEbRK9BitvectorR6VectorIP7ElementE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15CycleCountAccum12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiE6resizeEiRKi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV6NameDB /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9ICMPError18valid_source_routeEPK8click_ip /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Script18arithmetic_handlerEiR6StringP7ElementPK7HandlerP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router15set_connectionsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPInputCombo4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String9null_memoE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7RIPSend10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11CheckLength4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String6assignEPKci /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String11InitializerC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Switch12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10MixedQueue10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14LinearIPLookup10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRw27incr_clean_map_free_trackedER7HashMapI8IPFlowIDPNS_7MappingEERS3_S6_j /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN20HashMap_ArenaFactory17static_initializeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10ARPQuerier10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13DynamicNameDB4findERK6Stringb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilter9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV9PrioSched /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z16cp_unparse_real2xi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjEaSERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjEC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Switch10read_paramEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PullSwitch10read_paramEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilter12parse_orexprERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV7Discard /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PullSwitch11write_paramERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9AnyDeviceD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9AnyDeviceD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9AnyDeviceD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9AnyDeviceC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9AnyDeviceC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSource9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Script12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6RouterC2ERK6StringP6Master /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14InfiniteSource10read_paramEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14FrontDropQueueD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14FrontDropQueueC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV10UDPIPEncap /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6SwitchD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18SourceIPHashMapper12parse_serverERK6StringPPN4IPRw7PatternEPiS7_S7_P7ElementP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15RandomBitErrorsD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SortedIPLookup4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12IPInputCombo10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ARPQuerier15handle_responseEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ARPFaker9run_timerEP5Timer /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router14set_attachmentERK6StringPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13RadixIPLookup5Radix10free_radixEPS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN20LandmarkErrorHandler13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10UDPIPEncap12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRw22clean_map_free_trackedER7HashMapI8IPFlowIDPNS_7MappingEERS3_S6_j /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14IPAddrRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14DropBroadcasts10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEE5eraseEPS1_S3_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12CompareBlock4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiE6insertEPiRKi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Script8Expander6expandERK6StringiiR11StringAccum /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK17ICMPPingResponder10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12ErrorElement /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI8IPFlowIDbE3endEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN4IPRw9InputSpecEED1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ScriptD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12AnyDeviceMap14lookup_unknownEP10net_deviceP9AnyDevice /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router16global_port_flowEbP7ElementiP13ElementFilterR9Bitvector /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV8FromHost /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI9IPAddressjEixERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13DynamicNameDBD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13DynamicNameDBD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Meter10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPRewriter10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 click_remove_element_type /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ARPResponderD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ARPResponderD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ARPResponderD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ARPResponderC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ARPResponderC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RFC2507c8encode16EiiPcRi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer24deanonymize_element_nameERK6Stringi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI6StringiE5beginEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiE10find_forceERKS0_RKi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router11make_gportsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10FromDevice12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8FixIPSrc13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiE4at_uEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer18force_element_typeE6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11EtherMirrorC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11EtherMirrorC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8DecIPTTLD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8DecIPTTLD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8DecIPTTLD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8DecIPTTLC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8DecIPTTLC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z19cp_va_parse_keywordRK6StringP7ElementP12ErrorHandlerz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15SpinlockAcquire13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8PortInfo9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV8IPMirror /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10FromDeviceD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element27reconfigure_keyword_handlerERK6StringPS_PvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11CheckLength9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14BandwidthMeter10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ToHostD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15HostEtherFilterC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZThn60_N17StaticThreadSchedD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 click_cycle_counter /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK4Idle10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5AlignD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5AlignC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11StrideSchedC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11StrideSchedC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 click_dmalloc_curnew /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10VectorTestC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK18IPAddrPairRewriter10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPAddrPairRewriter12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11TCPRewriter10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13SetPacketType12unparse_typeEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI6StringiE5findpERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4Task11move_threadEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router13remove_hookupEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10Classifier4Expr11not_impliesERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11CheckPacketD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11CheckPacketD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11CheckPacketD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI6StringiE4findERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16UpstreamNotifier12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI8IPFlowIDbE5beginEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9ICMPErrorD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9ICMPErrorD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9ICMPErrorD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9ICMPErrorC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9ICMPErrorC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10EtherEncap9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN19_GLOBAL__N_cp_errno10CpVaHelper15develop_kvaluesEPcP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10IPRewriter10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV22BandwidthRatedSplitter /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14IPAddrRewriterD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Shaper10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11AddressInfo15query_ip_prefixE6StringPhS1_P7Element /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SchedOrderTest12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15UnstripIPHeaderD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15UnstripIPHeaderD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEE4at_uEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPRewriter21dump_mappings_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler11verror_textENS_11SeriousnessERK6StringS3_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier19length_checked_pushEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPEncapD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPEncapD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPEncapD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11RatedSource10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6PacketD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6MasterD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer5yportERi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPTable3addE9IPAddressS0_S0_i /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15CycleCountAccum13reset_handlerERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ICMPPingSourceD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ICMPPingSourceC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ICMPPingEncap13write_handlerERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8Unqueue210processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastTCPFlows9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router16force_attachmentERK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14PerfCountAccumD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5LexerD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10Classifier10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6NameDB6defineERK6StringPKvi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilter10parse_termERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3RED12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PullSwitch9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpHandlerName /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0xa0d2f184 proclikefs_new_inode_operations /d/click/click-1.6.0-27/linuxmodule/proclikefs EXPORT_SYMBOL -+0x00000000 _ZN6Router19new_notifier_signalER14NotifierSignal /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13PerfCountInfo10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEEC1ERKS2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11CiscyFilter10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjE5frontEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV11StrideSched /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterC2EPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterC1EPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13CheckIPHeader12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPMirrorD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPMirrorD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPMirrorD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPMirrorC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPMirrorC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ElementFilterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ElementFilterD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 __rtti_user /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN19ContextErrorHandler13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12DelayUnqueueD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12DelayUnqueueD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12DelayUnqueueD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12DelayUnqueueC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12DelayUnqueueC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler9make_textENS_11SeriousnessEPKcz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10EtherEncap10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14AverageCounter13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjE5eraseEPj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RFC2507cD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RFC2507cD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RFC2507cD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RFC2507cC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RFC2507cC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Paint13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRw14notify_patternEPNS_7PatternEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11CiscyFilter10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV6Switch /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5StripD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PollDevice12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12ScheduleInfo10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PollDeviceD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPRewriter9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14BandwidthMeter10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV8ARPFaker /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13DynamicNameDB6defineERK6StringPKvi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilterD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilterD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilterC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilterC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10CrapFilter10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPRewriter22dump_nmappings_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9IPAddressC2ERK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9IPAddressC1ERK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDPvED2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV15SpinlockAcquire /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12RandomSource10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12FastUDPFlows10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler17remove_conversionEPNS_10ConversionE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIPvEaSERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3RED4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjE9pop_frontEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer10ystatementEb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpInteger64 /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriter10TCPMappingC1Eb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13PerfCountInfoD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13PerfCountInfoD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13PerfCountInfoD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13PerfCountInfoC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13PerfCountInfoC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z21click_dmalloc_cleanupv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV11TimedSource /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIPvE6assignEiS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13SetPacketType13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14NotifierSignal12static_valueE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10RandomSeed12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z11skbmgr_initv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV16SetRandIPAddress /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11LinkUnqueue4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z10cp_integerRK6StringiPj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12RatedUnqueue20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11AddressInfoD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11AddressInfoD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11AddressInfoD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11AdaptiveREDD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11AdaptiveREDD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11AdaptiveREDD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10RandomSeedD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7RRSchedD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7RRSchedD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7RRSchedD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z12cp_va_kparseRK6StringP7ElementP12ErrorHandlerz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbED1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbEC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Script4stepEiii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18RoundRobinIPMapperD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18RoundRobinIPMapperC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10MixedQueueD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPRewriter30dump_tcp_done_mappings_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Lexer17anon_element_nameERK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ICMPPingSource9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14AverageCounter10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10HashSwitchC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11HandlerCall10call_writeERK6StringS2_P7ElementP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIPvED1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler6verrorENS_11SeriousnessERK6StringPKcPc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13SetPacketType /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Packet13expensive_putEj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10CrapFilterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ARPPrint7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorI9IPAddressE5frontEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastTCPFlows5resetEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8CPUQueue12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RouterThread11driver_onceEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Router14econfigurationEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIN7IPTable5EntryEE4at_uEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastUDPFlows12change_portsEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10UDPIPEncapC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjEC2ERKjP20HashMap_ArenaFactory /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SimpleQueue4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12SetIPAddress10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8MarkIPCE10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilter14static_cleanupEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z18cp_ip_address_listRK6StringP6VectorI9IPAddressEP7Element /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8PortInfoD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8PortInfoD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8PortInfoD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8PortInfoC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8PortInfoC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8NameInfo8revqueryEjPK7ElementPKvi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18SourceIPHashMapperD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18SourceIPHashMapperC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckUDPHeader13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIN6Router6HookupEE5frontEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEE2atEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK25VerboseFilterErrorHandler13min_verbosityEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11ErrorVeneer11count_errorEN12ErrorHandler11SeriousnessERK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ActiveNotifierD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16ICMPPingRewriter9run_timerEP5Timer /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12StrideSwitch /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13NotifierQueue10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11CheckLengthC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11CheckLengthC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16DevirtualizeInfoC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16DevirtualizeInfoC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11SetAnnoByte10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ActiveNotifierC2EN8Notifier8SearchOpE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ICMPRewriter9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorElement9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14CheckTCPHeader /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSourceD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSourceD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSourceD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSourceC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSourceC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14IPAddrRewriter13IPAddrMapping5applyEP14WritablePacket /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11ErrorVeneer12reset_countsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14CheckARPHeader10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbE6resizeEj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Master10run_routerEP6Routerb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ICMPPingEncap12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FTPPortMapperD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FTPPortMapperD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FTPPortMapperD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FTPPortMapperC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FTPPortMapperC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN19VariableEnvironment6defineERK6StringS2_b /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorI9IPAddressE2atEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14LinearIPLookupD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14LinearIPLookupC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RouterThread23unschedule_router_tasksEP6Router /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14DropBroadcasts12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressE6assignEiRKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPReassembler13reap_overfullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element8run_taskEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14BigHashMapTest10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14IPAddrRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10CheckPaint9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z9cp_argvecRK6StringR6VectorIS_E /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12SetTimestamp10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Script14static_cleanupEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetPerfCount4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN19ContextErrorHandlerD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressE9pop_frontEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12RatedUnqueue10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14InfiniteSource4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10FromDevice10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV25VerboseFilterErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11LinkUnqueue10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17RecycledSkbBucket10initializeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Handler12unparse_nameEP7Element /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Router20unparse_declarationsER11StringAccumRK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI7IPRouteE7reserveEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ARPQuerier16live_reconfigureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer8CompoundC2ERK6StringS3_P19VariableEnvironment /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer8CompoundC1ERK6StringS3_P19VariableEnvironment /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13ICMPPingEncap10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV11CheckPacket /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13RadixIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4Task10unscheduleEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15LookupIPRouteMPC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SchedOrderTestD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SchedOrderTestC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjE3endEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Discard10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9ICMPError13is_error_typeEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ToHostSniffersD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorI9IPAddressE4at_uEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16StaticPullSwitch9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13FastUDPSource10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Counter5llrpcEjPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15UnstripIPHeader10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPReassembler10find_queueEP6PacketPPP14WritablePacket /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpFilename /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7MSQueue12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckTCPHeaderD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckTCPHeaderC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3RED11read_queuesEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13IPOutputCombo10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK16ICMPPingRewriter10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV11ThreadSched /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN4IPRw9InputSpecEE7reserveEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPReassembler13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPFragmenter9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14ComparePackets10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12RandomSample20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13NotifierQueue4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11AddressInfo8query_ipE6StringPhP7Element /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK16SetRandIPAddress10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV11AdaptiveRED /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14SetUDPChecksum /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEE9push_backERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 click_unprovide /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15CycleCountAccum4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV8IPFilter /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ClickIno4growEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIjE3endEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIiE3endEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12PokeHandlers12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPOutputCombo4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11CheckPacket13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastTCPFlowsD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastTCPFlowsD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastTCPFlowsD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastTCPFlowsC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastTCPFlowsC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckARPHeaderD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5TimerC1EPFvPS_PvES1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10VectorTestD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14StoreIPAddress13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16RoundRobinSwitchD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16RoundRobinSwitchD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16RoundRobinSwitchD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String13stable_stringEPKci /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9SetIPDSCP10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer9TunnelEndC1ERKN6Router6HookupEbPS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8FromHost17static_initializeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 click_has_provision /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13AnyTaskDevice /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiE10find_forceERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK3Tee10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11TCPRewriter11get_mappingEiRK8IPFlowID /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11CiscyFilterC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11CiscyFilterC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z25click_new_file_operationsv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4Idle4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpIPAddress /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Unstrip13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18PrefixErrorHandlerC2EP12ErrorHandlerRK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7RIPSendD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7RIPSendD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7RIPSendD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN19_GLOBAL__N_cp_errno10CpVaHelperC2EP8cp_valueib /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN19_GLOBAL__N_cp_errno10CpVaHelperC1EP8cp_valueib /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14PerfCountAccum10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16ICMPPingRewriter13apply_patternERK8IPFlowID /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpWord /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpSecondsAsMilli /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Align10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10Suppressor10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router17add_write_handlerEPK7ElementRK6StringPFiS5_PS0_PvP12ErrorHandlerES7_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8PaintTee10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element11local_llrpcEjPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7PullTee4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11EnsureEther10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpUnsigned /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10Classifier4Expr9flippableEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ShaperD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiEixEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN23_HashMap_const_iteratorI6StringiEppEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN23_HashMap_const_iteratorI6StringiEppEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5MeterD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5MeterC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPRewriter10take_stateEP7ElementP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Align4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8CPUQueue9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjE8pop_backEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckTCPHeader9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV11EtherMirror /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11AdaptiveRED9run_timerEP5Timer /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PacketTest10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13StripIPHeaderD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13StripIPHeaderD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13StripIPHeaderD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13StripIPHeaderC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13StripIPHeaderC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPReassembler11check_errorEP12ErrorHandleriPK6PacketPKcz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8FixIPSrc10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8DecIPTTL10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN11CiscyFilter4InsnEED1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8NameInfo9query_intEjPK7ElementRK6StringPi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjE10find_forceERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiE9push_backERKi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router19router_read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12RandomSample10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12StaticNameDBD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12StaticNameDBD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Discard4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV11CheckLength /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ScheduleInfo5queryEP7ElementP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18RoundRobinIPMapper7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16ICMPPingRewriter7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15BandwidthShaperD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15BandwidthShaperD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjE5clearEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Shaper10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Counter12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10Classifier4Expr11implies_notERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13QueueYankTest10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpSecondsAsMicro /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13CheckIPHeader10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIPvE6insertEPS0_S0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SimpleQueue16live_reconfigureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9IPAddressC2EPKh /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9IPAddressC1EPKh /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12MarkIPHeader9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9ICMPError10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SpinlockInfo12add_spinlockERK6VectorI6StringERKS1_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiE4backEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ScheduleInfo15initialize_taskEP7ElementP4TaskbP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13DriverManagerD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13DriverManagerD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13DriverManagerC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13DriverManagerC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9SetIPDSCP4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Router4findERK6StringP7ElementP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16ICMPPingRewriter9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI9IPAddressjE5findpERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPAddrPairRewriter17IPAddrPairMapping5applyEP14WritablePacket /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ICMPPingEncapD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ICMPPingEncapD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ICMPPingEncapD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ICMPPingEncapC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ICMPPingEncapC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11SimpleQueue10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Script10find_labelERK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10PullSwitch13configurationER6VectorI6StringE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14PerfCountAccum12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV17CastElementFilter /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ARPQuerierC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18SourceIPHashMapper7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13DiscardNoFree4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12DelayUnqueue8run_taskEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringE4at_uEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12SpinlockInfo10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV11ErrorVeneer /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14DropBroadcastsD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14DropBroadcastsC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbE10initializeEP20HashMap_ArenaFactoryj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13SetCycleCountD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13SetCycleCountD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13SetCycleCountD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13SetCycleCountC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13SetCycleCountC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15PushNullElementC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15PullNullElementC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPRewriter16tcp_done_gc_hookEP5TimerPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10CrapFilter4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SortedIPLookupD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SortedIPLookupC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13IPReassembler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN23_HashMap_const_iteratorI6StringiEC1EPK7HashMapIS0_iEb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router25check_hookup_completenessEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RatedUnqueue9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEEaSERKS2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5TimerC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPPrint10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriterD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriterD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11NullElement10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FullNoteQueue4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriter7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Discard10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEEC2EiRKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiE5clearEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer13lexeme_stringEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ICMPRewriterD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ICMPRewriterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ICMPRewriterD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ICMPRewriterC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ICMPRewriterC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10HashSwitchD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorElementD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorElementD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorElementD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorElementC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorElementC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpSeconds /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpEthernetAddress /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer11begin_parseERK6StringS2_P10LexerExtraP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14ICMPPingSource /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIjE4veltEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIiE4veltEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringED2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringEC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressE4backEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15SpinlockAcquireD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13RatedSplitter10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8NotifierD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8NotifierD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8NotifierD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer8Compound20printable_name_c_strEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z9cp_real10RK6StringiPjS2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10UDPIPEncap12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17StaticThreadSchedD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17StaticThreadSchedD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17StaticThreadSchedD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17StaticThreadSchedC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17StaticThreadSchedC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12StaticSwitch10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEE6insertEPS1_RKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressE4veltEPS0_i /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12SpinlockInfo5queryERK6StringS2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEE4swapERS2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10UDPIPEncapD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Lexer8landmarkEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer10skip_quoteEPKcc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRw7Pattern9parse_natER6VectorI6StringEPPS0_P7ElementP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPReassembler17emit_whole_packetEP14WritablePacketPS1_P6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8FromHost7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ScheduleLinux8run_taskEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Packet4makeEjPKhjj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6NameDBD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14StoreIPAddress10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z17cp_unparse_real10ji /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11AddressInfo15configure_phaseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z18cp_va_space_kparseRK6StringP7ElementP12ErrorHandlerz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Switch10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14StaticIPLookupD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14StaticIPLookupC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15CheckICMPHeader10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7BursterC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7BursterC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8SetCRC32D2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8SetCRC32D1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8SetCRC32D0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8SetCRC32C2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8SetCRC32C1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12PokeHandlers10read_paramEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12GetIPAddress10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10CheckCRC3210port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7IPRoute7unparseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FullNoteQueue9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10FromDevice8run_taskEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIjE4backEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIiE4backEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEE5beginEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK16UpstreamNotifier10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIjEixEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIiEixEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z12cp_ip_prefixRK6StringPhS2_P7Element /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Router13find_ehandlerEiRK6Stringb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 click_random_seed /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12ErrorElement9flow_codeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiE5eraseEPi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV10MixedQueue /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9PrioSchedD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9PrioSchedD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9PrioSchedD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9PrioSchedC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9PrioSchedC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer20skip_backslash_angleEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15HostEtherFilter10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9CPUSwitch10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SortedIPLookup9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ClickIno7readdirEmRjPFbPKcimijPvES3_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjE5beginEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPFragmenterD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPFragmenterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPFragmenterD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPFragmenterC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPFragmenterC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z23cp_va_static_initializev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8CPUQueueD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8CPUQueueD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8CPUQueueD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8CPUQueueC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8CPUQueueC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10Classifier5flagsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZlsR11StringAccumRK7timeval /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10SuppressorD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12SetTimestamp10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDiE20set_dynamic_resizingEb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14InfiniteSourceD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12DelayUnqueue7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSource8run_taskEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK18IPRewriterPatterns15configure_phaseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12ICMPRewriter /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11EnsureEtherD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11EnsureEtherD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11EnsureEtherD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDiE7resize0Ej /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11PaintSwitch4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12ErrorHandler13min_verbosityEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN12ARPResponder5EntryEEaSERKS2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ToDevice12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI9IPAddressjE9find_pairERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11PaintSwitch20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjEC1ERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15RecycledSkbPool7cleanupEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14IPAddrRewriter10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15CheckICMPHeader10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z19cp_ethernet_addressRK6StringPhP7Element /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier14program_stringEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorI9IPAddressE5beginEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressEixEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7ElementC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7ElementC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10Classifier4Expr1sEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer16add_element_typeERK6StringPFP7ElementmEmP6moduleb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14FrontDropQueue /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14BandwidthMeter12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SchedOrderTest8run_taskEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiED2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiED1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringEixEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpEnd /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12PokeHandlers10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14IPAddrRewriter11get_mappingEiRK8IPFlowID /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router7handlerEPK7ElementRK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10PollDevice10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14PerfCountAccum10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Element15configure_phaseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressE5clearEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13SetPacketType10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9SetIPDSCP10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer3lexEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15HostEtherFilter10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5AlignD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13SetCycleCount10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV7IPPrint /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ICMPRewriter14rewrite_packetEP14WritablePacketP8click_ipP9click_udpRK8IPFlowIDPN4IPRw7MappingE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEE5clearEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8FixIPSrc6fix_itEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI9IPAddressjE3endEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZThn60_N18RoundRobinIPMapperD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element20add_default_handlersEb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7MSQueue10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRw7Pattern16parse_with_portsERK6StringPPS0_PiS6_P7ElementP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8IPFilter6lookupE6StringiiRjP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14AverageCounterD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI9IPAddressjE4findERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12SetPerfCount10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15CheckICMPHeader4dropENS_6ReasonEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router11set_handlerEPK7ElementRK6StringiPFiiRS3_PS0_PK7HandlerP12ErrorHandlerEPvSF_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15RandomBitErrors10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PollDevice8run_taskEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14LinearIPLookup /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 click_in_cksum_pseudohdr_hard /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15HostEtherFilterD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15HostEtherFilterD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ActiveNotifier15listener_changeEPvib /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12IPFragmenter /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK3RED10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14SchedOrderTest10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14IPAddrRewriter10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RTCyclesD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RTCyclesD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RTCyclesD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RTCyclesC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RTCyclesC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN25VerboseFilterErrorHandler11handle_textEN12ErrorHandler11SeriousnessERK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17CastElementFilter11check_matchEP7ElementiN13ElementFilter8PortTypeE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z15cleanup_clickfsv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10ARPQuerier9flow_codeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6String5c_strEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK16RoundRobinSwitch10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7RRSched4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14IPAddrRewriter13IPAddrMapping7unparseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI9IPAddressjE6bucketERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringEC2EiRKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13SetPacketType10parse_typeERK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Timer11schedule_atERK9Timestamp /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Shaper9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastUDPFlows12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Znwj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Znaj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14CheckTCPHeader10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Strip13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18PrefixErrorHandler13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12ARPResponder20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10FromDevice10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14DropBroadcasts /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpNamedInteger /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element10set_nportsEii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13SetIPChecksum10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router7elementEPKS_i /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11IPFieldInfo17static_initializeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12MarkIPHeaderD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12MarkIPHeaderD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12MarkIPHeaderD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12MarkIPHeaderC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12MarkIPHeaderC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10IPRewriter10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZlsR11StringAccumRK8IPFlowID /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK4Idle9flow_codeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Element11declarationEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEEixEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13ConfParseTest /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPField7unparseEP7Elementb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7MSQueue4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Master10run_timersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8MarkIPCE10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10HashSwitch10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV15CycleCountAccum /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10CheckPaint10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckARPHeader12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Master5unuseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer19lexical_scoping_outEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15CheckICMPHeader12reason_textsE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8Notifier22downstream_full_signalEP7ElementiP4TaskPS_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiE20set_dynamic_resizingEb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11StringAccum5c_strEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z10cp_integerRK6StringiPy /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18PrefixErrorHandlerD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8DRRSched4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13RadixIPLookup11dump_routesEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV10EtherEncap /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14BandwidthMeter /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV5Align /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ComparePackets7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Handler12unparse_nameEP7ElementRK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RatedUnqueueD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RatedUnqueueD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RatedUnqueueD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RatedUnqueueC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RatedUnqueueC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18KernelErrorHandlerD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14LinearIPLookup5checkEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilter17static_initializeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Discard10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckUDPHeaderD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK18RoundRobinIPMapper15configure_phaseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PollDevice13change_deviceEP10net_device /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjEaSERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjEC2ERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjEC1ERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router16processing_errorERKNS_6HookupES2_biP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10ARPQuerier10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15SpinlockRelease10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11LinkUnqueue18delay_by_bandwidthEP6PacketRK9Timestamp /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPEncap13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Discard13write_handlerERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Shaper4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Print20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13StripIPHeader10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV16StaticPullSwitch /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9SetIPDSCP4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Meter4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK16ICMPPingRewriter10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15CheckICMPHeaderC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11CheckPacket9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ToHost12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRw7Mapping5applyEP14WritablePacket /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z28cp_extend_stringlist_argtypePKcz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6String6equalsEPKci /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10MixedQueueC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14DropBroadcasts7drop_itEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Counter10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9Bitvector10clear_lastEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ARPQuerierD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9TimedSink10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10HashSwitch4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Element5flagsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIjE2atEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIiE2atEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element9run_timerEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10CrapFilter10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN19VariableEnvironmentD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10LexerExtra7requireE6StringP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9Timestamp3secEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14SetUDPChecksum10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetPerfCount4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPRewriterPatternsD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10CrapFilterC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9CPUSwitch4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiEC2EiRKi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiEC1EiRKi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12PokeHandlers20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element10take_stateEPS_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZThn60_N17StaticThreadSchedD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14SortedIPLookup10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16SetRandIPAddress9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV11QuitWatcher /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10BpfyFilterD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z20cp_unparse_bandwidthj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12ARPResponder10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0xcd768ff0 proclikefs_new_file_operations /d/click/click-1.6.0-27/linuxmodule/proclikefs EXPORT_SYMBOL -+0x00000000 _ZN11TimedSourceD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TimedSourceD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TimedSourceD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11StrideSched10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PollDevice10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer7connectEiiii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TimedSource7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDPvE5clearEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN12ARPResponder5EntryEE7reserveEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8ToDevice10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15RecycledSkbPool8allocateEjjiPi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRw7Pattern14create_mappingEiRK8IPFlowIDiiPNS_7MappingES5_RK7HashMapIS1_S5_E /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPReassembler4reapEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11AdaptiveRED10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV19VariableEnvironment /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK23_HashMap_const_iteratorI6StringiE3keyEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15HostEtherFilter9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11SetAnnoByte10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3RED10read_statsEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier17init_expr_subtreeER6VectorIiE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16StaticPullSwitchD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16StaticPullSwitchD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16StaticPullSwitchD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12IPInputCombo5flagsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10FromDevice9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13DiscardNoFree8run_taskEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPRouteTable17add_route_handlerERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z14cp_tcpudp_portRK6StringiPtP7Element /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8ToDevice15configure_phaseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12IPClassifier10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12DelayUnqueue10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6PacketC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6MasterC1Ei /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilter9Primitive12unparse_typeEii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjE7resize0Ej /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRw7Mapping9make_pairEiRK8IPFlowIDS3_iiPS0_S4_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7IPRoute7unparseER11StringAccumb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPRouteTable4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastTCPFlows7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9SetIPDSCP12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14CheckARPHeader10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6String6lengthEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV11PaintSwitch /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14BandwidthMeterD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14BandwidthMeterC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5TimerC1EP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4Task15true_rescheduleEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZThn60_N18SourceIPHashMapperD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z8int_sqrtj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV9ICMPError /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9CPUSwitch10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIN6Router6HookupEE4at_uEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringE4veltEPS0_i /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Print9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbE9copy_fromERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6String9substringEii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK18SourceIPHashMapper15configure_phaseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPRewriter4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjED2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjED1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjEC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjEC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjE10push_frontERKj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpInteger /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11TimedSource10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RFC2507d6decodeERPKhRj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEEC2ERKS2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbE15find_pair_forceERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17StaticThreadSched9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer6expectEib /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6ToHost15configure_phaseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressE5frontEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8FromHost10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressE2atEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbE11findp_forceERKS0_RKb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 click_router /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV7IPEncap /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16UpstreamNotifier4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorI6StringE4veltEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12StrideSwitchD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12StrideSwitchD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12StrideSwitchD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12StrideSwitchC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12StrideSwitchC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9PrioSched10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandlerD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandlerD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV11DelayShaper /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12CompareBlock10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14CheckUDPHeader10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11AddressInfo9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11AdaptiveRED9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10UDPIPEncap13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV7RIPSend /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8Unqueue210read_paramEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14StoreIPAddressD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8MarkIPCE10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8IPMirror10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8RTCycles10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9TimedSink9run_timerEP5Timer /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12PokeHandlers10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12FastTCPFlows10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler6lerrorERK6StringPKcz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10Classifier10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10RandomSeed20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String8oom_memoE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13RatedSplitter9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8PaintTee10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastTCPFlows10get_packetEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SimpleQueue5yank1IN33_GLOBAL__N__ZN13QueueYankTestC2Ev3FooEEEP6PacketT_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13FTPPortMapper /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router15adjust_runcountEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7IPPrint9icmp_lineER11StringAccumPK6Packeti /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpUnsigned64 /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressE4at_uEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI7IPRouteEC1ERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router19initialize_handlersEbb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Lexer16element_landmarkEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FastUDPSource10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpMandatoryKeywords /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15CheckICMPHeader13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriter10TCPMappingC2Eb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15LookupIPRouteMPD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer19ycompound_argumentsEPNS_8CompoundE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13IPReassembler10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ConfParseTest10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Switch10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PollDevice9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14ComparePackets10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringE2atEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11IPGWOptions14handle_optionsEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z19cp_unparse_intervalRK9Timestamp /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK16StaticPullSwitch10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPPrintD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPPrintD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPPrintD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17CastElementFilterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17CastElementFilterD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Suppressor4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8SetCRC3210class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14MessageElementD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14MessageElementC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer22add_router_connectionsEiRK6VectorIiEP6Router /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEE5eraseEPS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9PrioSched10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14LinearIPLookup4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16ICMPPingRewriter21dump_mappings_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI6StringiE4sizeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12RatedUnqueue13configurationER6VectorI6StringE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressEaSERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressEC2ERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressEC1ERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN20StripToNetworkHeaderD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN20StripToNetworkHeaderD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN20StripToNetworkHeaderD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13FullNoteQueue /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler14silent_handlerEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPRouteTable20remove_route_handlerERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ICMPPingSource4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSample12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10PullSwitch20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPFragmenter4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z12cp_bandwidthRK6StringPj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV20HashMap_ArenaFactory /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10RandomSeed9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjE4swapERS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5PrintD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5PrintC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14ICMPPingSource10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11CheckPacketC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11CheckPacketC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastUDPFlows10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z10cp_elementRK6StringP6RouterP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String4MemoD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7IPPrint10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z21cp_unregister_argtypePKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckTCPHeader13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN12ARPResponder5EntryEED1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14BigHashMapTest /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjE11findp_forceERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String14numeric_stringEyib /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String14numeric_stringExib /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10IPRewriter11get_mappingEiRK8IPFlowID /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12CompareBlock24rev_weight_write_handlerERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZlsR11StringAccumm /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZlsR11StringAccuml /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ICMPPingSource9run_timerEP5Timer /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16ICMPPingRewriterD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16ICMPPingRewriterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16ICMPPingRewriterD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN10Classifier4ExprEE5eraseEPS1_S3_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIjE5beginEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIiE5beginEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router17upstream_elementsEP7ElementiP13ElementFilterR6VectorIS1_E /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPInputCombo4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z13cp_skip_spacePKcS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11CheckPacket10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiE9copy_fromERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3TeeD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3TeeD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3TeeD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3TeeC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3TeeC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8ARPFaker10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6String7compareEPKci /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router19downstream_elementsEP7ElementiP13ElementFilterR6VectorIS1_E /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11ErrorVeneer9make_textEN12ErrorHandler11SeriousnessEPKcPc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8DRRSched10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6ToHost5flagsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13PerfCountUser10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5MeterD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV11IPGWOptions /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPAddrPairRewriter4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SetAnnoByte19offset_read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Lexer14remaining_textEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12RandomSwitch10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK17DynamicUDPIPEncap5flagsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14BigHashMapTestD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14BigHashMapTestC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEE4backEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13SetIPChecksum13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FastUDPSource4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ARPFaker9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK16UpstreamNotifier10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastUDPFlows8NO_LIMITE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10VectorTest10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10VectorTest10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10RandomSeed10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String17static_initializeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Counter5resetEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SimpleQueueD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SimpleQueueD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SimpleQueueD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8NameInfo5getdbEjPK7Elementib /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpIP6AddressOrPrefix /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SimpleQueue7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV15LookupIPRouteMP /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIN7IPTable5EntryEE5emptyEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z7cp_boolRK6StringPb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Burster9run_timerEP5Timer /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressE5eraseEPS0_S2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9StoreData9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15SpinlockAcquire10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13RadixIPLookup5Radix6changeEjjij /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TimedSource9run_timerEP5Timer /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13PerfCountUser /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN20HashMap_ArenaFactory9get_arenaEjPS_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI9IPAddressjE4findERKS0_RKj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ClickIno12true_prepareEP6Routerj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbE11findp_forceERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15RandomBitErrors13set_bit_errorEj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV15PushNullElement /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV15PullNullElement /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14BandwidthMeter19meters_read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV3Tee /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11StrideSched11set_ticketsEiiP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8Notifier10initializeEP6Router /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier20remove_unused_statesEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13RatedSplitter20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ARPQuerier4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK4Idle10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element5llrpcEjPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckIPHeader2D2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckIPHeader2C2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringE8pop_backEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8RFC2507d10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8RFC2507c10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPReassembler10next_chunkEP14WritablePacketPNS_9ChunkLinkE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV16DevirtualizeInfo /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TimedSource10read_paramEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router19check_push_and_pullEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5PaintD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5PaintC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDiE6insertERKS0_RKi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12StaticNameDB5queryERK6StringPvi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ComparePacketsD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ComparePacketsC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK23_HashMap_const_iteratorI6StringiE5valueEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12MarkIPHeader10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11HandlerCall5resetERPS_P7ElementRK6StringS6_iP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10CheckCRC32D2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12ScheduleInfo /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15CycleCountAccumC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11AddressInfoC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11AddressInfoC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11AdaptiveREDC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11AdaptiveREDC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11RatedSource8run_taskEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z20click_random_srandomv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10FromDevice10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler17static_initializeEPS_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbEaSERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9StoreData10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Router15chatter_channelERK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11RatedSource10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10PullSwitch10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7IPTable6lookupE9IPAddressRS0_Ri /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPFragmenter7optcopyEPK8click_ipPS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FastUDPSource9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN20HashMap_ArenaFactoryD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN20HashMap_ArenaFactoryD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN20HashMap_ArenaFactoryD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV6Script /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13RadixIPLookup /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7MSQueueD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7MSQueueD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7MSQueueD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10MixedQueueD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ClickIno6lookupEmRK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10FromDevice10take_stateEP7ElementP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10EtherEncapD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpReadHandlerCall /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringEC2ERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router17static_initializeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12RandomSource /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14IPAddrRewriter12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12FastUDPFlows /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10HashSwitchC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16BaseErrorHandlerD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16BaseErrorHandlerD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV10PacketTest /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ScheduleInfo9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11ThreadSchedD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11ThreadSchedD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11RatedSourceD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11RatedSourceD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11RatedSourceD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12RandomSample13configurationER6VectorI6StringE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15PushNullElementD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15PushNullElementD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15PullNullElementD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15PullNullElementD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12GetIPAddress9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SetUDPChecksumD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SetUDPChecksumC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SetTCPChecksumD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SetTCPChecksumC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11RatedSource7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12ErrorElement10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element9run_timerEP5Timer /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10CrapFilterD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZlsR11StringAccumPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RatedUnqueue8run_taskEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FullNoteQueueD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FullNoteQueueD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FullNoteQueueD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FullNoteQueueC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FullNoteQueueC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Unstrip9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressE3endEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10Suppressor9flow_codeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SortedIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14PerfCountAccum12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIN7IPTable5EntryEE4sizeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringE3endEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14LinearIPLookup10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16ICMPPingRewriter7MappingC2Eb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Align10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PullSwitchD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 __rtti_si /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z13cp_unspacevecPK6StringS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckUDPHeader12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV15BandwidthShaper /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriter10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetTimestamp9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11HandlerCall9call_readEP7ElementRK6StringP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11CiscyFilter10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11CheckLength10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjE7reserveEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14InfiniteSource10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12EtherAddressC1EPKh /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK16RoundRobinSwitch10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpByte /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSwitchD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSwitchD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSwitchD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSwitchC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSwitchC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK18IPAddrPairRewriter10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler14set_error_codeEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Element9port_flowEbiP9Bitvector /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Element17processing_vectorEPiS0_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8Truncate10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ShaperC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9PrioSched10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Master15register_routerEP6Router /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEE10push_frontERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z21cp_skip_comment_spacePKcS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Align10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14NotifierSignalpLERKS_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPFragmenter8fragmentEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RFC2507c8encode32EiiPcRi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEE5eraseEPS1_S3_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPRewriterD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ClickIno27calculate_handler_conflictsEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14DropBroadcasts10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK18IPAddrPairRewriter11get_mappingEiRK8IPFlowID /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11ErrorVeneer7nerrorsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEE8pop_backEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7IPPrint10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14FrontDropQueueD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler7messageEPKcz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13CheckIPHeader14static_cleanupEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6RouterD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15RandomBitErrorsC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10FromDevice17static_initializeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ARPQuerier9clear_mapEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ComparePackets9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV9TimedSink /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8MarkIPCE4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13SetPacketType10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPAddrPairRewriter22dump_nmappings_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 click_provide /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI6StringiE6bucketERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorI6StringE5emptyEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6SwitchC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3RED4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Master5pauseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14StaticIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV10CheckCRC32 /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13AlignmentInfo15configure_phaseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10SuppressorC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11ErrorVeneer13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14AverageCounter10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11ThreadSched22initial_home_thread_idEP4Taskb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPRewriter7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier8add_exprER6VectorIiEijj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9Bitvector5or_atERKS_i /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10Suppressor10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Element6masterEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbEC2ERKbP20HashMap_ArenaFactory /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8Notifier21upstream_empty_signalEP7ElementiP4TaskPS_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8Notifier20add_dependent_signalEP14NotifierSignal /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ARPFakerD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ARPFakerD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ARPFakerD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ARPFakerC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ARPFakerC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriter9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriter22dump_nmappings_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8IPFilter10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDPvE7resize0Ej /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 click_lfree /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Element8landmarkEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15CycleCountAccum4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14BandwidthMeter10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbE9set_arenaEP20HashMap_ArenaFactory /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SetTCPChecksum9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14LinearIPLookup11dump_routesEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13FastUDPSource10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Unqueue9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjEC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16VariableExpanderD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16VariableExpanderD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7IPEncap10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element23read_positional_handlerEPS_Pv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ARPPrint10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12StaticSwitch9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ScriptC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV18KernelErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7RIPSend10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FastUDPSource7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11EnsureEther4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7CounterD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7CounterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7CounterD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String6appendEPKci /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12RatedUnqueue /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringE5clearEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11StringAccum14append_numericEyib /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11StringAccum14append_numericExib /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilter9Primitive8set_typeEiP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK16DevirtualizeInfo10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiE4veltEPii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetIPAddress13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13RatedSplitter12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer8yelementERib /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI8IPFlowIDbE4sizeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8PaintTee13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer8Compound4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN19_GLOBAL__N_cp_errno10CpVaHelper14develop_valuesEPcP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13CheckIPHeader4dropENS_6ReasonEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSample10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Master12check_driverEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12IPInputCombo10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV4Idle /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8SortTest10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN23_HashMap_const_iteratorI8IPFlowIDbEC2EPK7HashMapIS0_bEb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN23_HashMap_const_iteratorI8IPFlowIDbEC1EPK7HashMapIS0_bEb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4Task15process_pendingEP12RouterThread /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Lexer8Compound9signatureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer18set_remaining_textERK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String12mutable_dataEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ActiveNotifier12add_listenerEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11DelayShaper11write_paramERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10PollDevice15configure_phaseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 click_logged_errh /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriter12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12StrideSwitch4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14StoreIPAddress /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV10PollDevice /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI8IPFlowIDbE5emptyEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Handler9call_readEP7ElementRK6StringbP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ClickIno10initializeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpUDPPort /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpTCPPort /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpHandlerCallPtrWrite /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15UnstripIPHeaderC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorI6StringE4at_uEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12PokeHandlers9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEEC1ERKS2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10BpfyFilter10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12CompareBlock19thresh_read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbEC2ERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Shaper12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PollDevice17static_initializeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK4IPRw7Pattern15can_accept_fromERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ICMPPingSourceD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriter11tcp_gc_hookEP5TimerPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIN7IPTable5EntryEE2atEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPReassembler10make_queueEP6PacketPP14WritablePacket /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14FrontDropQueue16live_reconfigureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler15default_handlerEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element20next_processing_codeERPKcP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13NotifierQueue4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPClassifier9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0xa6ad14ca proclikefs_put_super /d/click/click-1.6.0-27/linuxmodule/proclikefs EXPORT_SYMBOL -+0x00000000 _ZNK6Packet11user_anno_uEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Packet11user_anno_cEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10CheckPaintD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEE7reserveEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14CheckTCPHeader10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Suppressor3setEib /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SpinlockInfo9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ElementFilter11check_matchEP7ElementiNS_8PortTypeE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV8ToDevice /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbE5beginEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7PullTee9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPAddrPairRewriterD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 click_dmalloc_where /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler7warningEPKcz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ShaperD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7Handler10call_writeERK6StringP7ElementbP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEED1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEEC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8Unqueue210initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10UDPIPEncap9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPTableC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPTableC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 click_chatter /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11EnsureEther9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element20read_keyword_handlerEPS_Pv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEE6assignEiRKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilter9Primitive10set_srcdstEiP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12CompareBlock24fwd_weight_write_handlerERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z19skbmgr_recycle_skbsP7sk_buff /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16SetRandIPAddressD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16SetRandIPAddressD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16SetRandIPAddressD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13ScheduleLinux /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7RRSched7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13RadixIPLookup12lookup_routeE9IPAddressRS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14IPAddrRewriterD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14IPAddrRewriterC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z20cp_va_kparse_keywordRK6StringP7ElementP12ErrorHandlerz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ToHost17static_initializeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIjE5frontEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIiE5frontEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9SetIPDSCP9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer11next_lexemeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Router15unparse_classesER11StringAccumRK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8IPFilter9Primitive10unparse_opEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK16BaseErrorHandler9nwarningsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Print10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ClickIno5nlinkEm /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Shaper20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIjE4sizeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIiE4sizeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12StrideSwitch10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12RandomSwitch10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN12ARPResponder5EntryEE5eraseEPS1_S3_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8SortTestD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8SortTestD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8SortTestD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8SortTestC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8SortTestC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Strip10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14PerfCountAccumD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14PerfCountAccumC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbE5clearEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6SwitchD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11DelayShaperD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11DelayShaperD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11DelayShaperD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 click_add_element_type /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14InfiniteSource5flagsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11DelayShaper7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpTimestamp /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPRouteTable12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13CheckIPHeader9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13HashMap_ArenaD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13HashMap_ArenaD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13HashMap_ArenaC2Ej /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13HashMap_ArenaC1Ej /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11StringAccumD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK4IPRw7Pattern7unparseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV10HashSwitch /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV10CheckPaint /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Lexer17expand_connectionERKN6Router6HookupEbR6VectorIS1_E /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z11click_qsortPvjjPFiPKvS1_S_ES_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV20LandmarkErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8CPUQueue7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12SetIPAddress20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV7MSQueue /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ScheduleInfoD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ScheduleInfoD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ScheduleInfoD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ScheduleInfoC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ScheduleInfoC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router19store_local_handlerEiRK7Handler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11RatedSource10read_paramEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8IPFilter9Primitive9add_exprsEP10ClassifierR6VectorIiE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16ICMPPingRewriter12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12GetIPAddressD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12GetIPAddressD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12GetIPAddressD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12GetIPAddressC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12GetIPAddressC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8Unqueue28run_taskEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ScriptD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10MixedQueue4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element13notify_nportsEiiP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ARPQuerierC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12RandomSample /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckARPHeader12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ToDevice9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPAddrPairRewriter10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14SchedOrderTest /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11StrideSched10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14IPAddrRewriter /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8FromHost10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV10ARPQuerier /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV8RTCycles /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router18set_econfigurationEiRK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10Classifier18DominatorOptimizer17find_predecessorsEiR6VectorIiE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjE4at_uEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14SetUDPChecksum10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15CheckICMPHeaderD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN20HashMap_ArenaFactory14get_arena_funcEj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV11TCPRewriter /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetTimestampD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetTimestampD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetTimestampD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetTimestampC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SetTimestampC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPAddrPairRewriter9run_timerEP5Timer /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10BpfyFilterC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10UDPIPEncap20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ToHostD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjE4veltEPji /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriterC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriterC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4Task7cleanupEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11EnsureEther10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4Idle4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler14add_conversionERK6StringPFS0_iPPcE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIPvE7reserveEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8IPMirror10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15UnstripIPHeader13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18KernelErrorHandler8log_lineEPKcS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7IPEncap10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK16ICMPPingRewriter11get_mappingEbRK8IPFlowID /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10HashSwitchD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FastUDPSource12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Align8smactionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15RecycledSkbPool7recycleEP7sk_buff /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7RIPSend10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ActiveNotifierD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7GapRate8set_rateEjP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12SpinlockInfo /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPAddrPairRewriter4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5TimerC2EP7Element /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI6StringiE9find_pairERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV8SetCRC32 /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPRouteTable12ctrl_handlerERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7IPPrint10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Timer8set_hookEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11PaintSwitchD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11PaintSwitchD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11PaintSwitchD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ActiveNotifierC1EN8Notifier8SearchOpE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10EtherEncap4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13CheckIPHeader12reason_textsE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV21BandwidthRatedUnqueue /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12ErrorElement10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorI6StringE5beginEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN20StripToNetworkHeader13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14LinearIPLookupD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14LinearIPLookupC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer9TunnelEnd6expandEPKS_R6VectorIN6Router6HookupEE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPRouteTable13table_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8FromHost10new_deviceEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8FixIPSrc9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FastUDPSource10incr_portsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11TimedSource10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TimedSource10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Master14prepare_routerEP6Router /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14NotifierSignal6activeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13RatedSplitterD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13RatedSplitterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13RatedSplitterD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13RatedSplitterC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13RatedSplitterC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12PokeHandlers12PAUSE_MARKERE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11StringAccum11append_fillEii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9StoreDataD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9StoreDataD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9StoreDataD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9StoreDataC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9StoreDataC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9SetIPDSCP20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12StaticSwitch /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PullSwitch4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12SetIPAddress10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13IPReassembler10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ARPPrint13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SimpleQueue4yankIN33_GLOBAL__N__ZN13QueueYankTestC2Ev3FooEEEiT_R6VectorIP6PacketE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8NameInfo5queryEjPK7ElementRK6StringPvi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8DRRSched9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13DriverManager /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Burster10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ARPQuerier14send_query_forE9IPAddress /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12StaticSwitchD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12StaticSwitchD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12StaticSwitchD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12StaticSwitchC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12StaticSwitchC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI7IPRouteEaSERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Shaper13configurationER6VectorI6StringE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer6lerrorEPKcz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7IPEncap20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9IPAddress12unparse_maskEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV11AddressInfo /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiE11findp_forceERKS0_RKi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV9StoreData /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RFC2507dD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RFC2507dD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RFC2507dD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RFC2507dC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RFC2507dC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16UpstreamNotifierC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16UpstreamNotifierC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SchedOrderTestD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SchedOrderTestC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x9ed782d6 proclikefs_unregister_filesystem /d/click/click-1.6.0-27/linuxmodule/proclikefs EXPORT_SYMBOL -+0x00000000 _ZN19ContextErrorHandlerC1EP12ErrorHandlerRK6StringS4_S4_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV8DRRSched /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8Truncate13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPEncap9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK16ICMPPingRewriter7Mapping1sEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11NullElement10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV18IPRewriterPatterns /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN21LinuxModuleLexerExtraD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN21LinuxModuleLexerExtraD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEE9push_backERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10SuppressorD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13DiscardNoFree /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckTCPHeaderD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiE15find_pair_forceERKS0_RKi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16StaticPullSwitch4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12GetIPAddress /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11EnsureEtherC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11EnsureEtherC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8ARPFaker10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK20StripToNetworkHeader10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3Tee4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14SortedIPLookup /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13PerfCountInfo15configure_phaseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TimedSource9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13AlignmentInfo /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSwitch4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN19ContextErrorHandlerD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11ErrorVeneer11handle_textEN12ErrorHandler11SeriousnessERK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element8run_taskEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element12PULL_TO_PUSHE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router18check_hookup_rangeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10IPRewriter10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10UDPIPEncap10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13RadixIPLookup10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilter12parse_factorERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEbP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV10Classifier /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV9AnyDevice /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12PokeHandlersD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12PokeHandlersD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12PokeHandlersD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12PokeHandlersC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12PokeHandlersC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16DevirtualizeInfo9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router7handlerEPKS_i /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV8IPMapper /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8FromHost10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z13cp_seconds_asRK6StringiPj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14BandwidthMeter4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11PaintSwitch10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10FromDevice4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10EtherEncap8smactionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z9cp_real10RK6StringiiPjS2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK3RED20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ToHost10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN25VerboseFilterErrorHandlerD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN25VerboseFilterErrorHandlerD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ToHostSniffersD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ToHostSniffersC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15PushNullElement4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPRewriterPatternsD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPRewriterPatternsC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPClassifierD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPClassifierD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPClassifierD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPClassifierC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPClassifierC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer8Compound9signatureERK6StringPK6VectorIS1_Eiii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV8RFC2507d /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV8RFC2507c /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5PrintD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ClassifierD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ToDeviceD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ToDeviceD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ToDeviceD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ToDeviceC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ToDeviceC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK18IPAddrPairRewriter17IPAddrPairMapping7reverseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14ICMPPingSource10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Discard12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PacketTestD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SpinlockInfoD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SpinlockInfoD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SpinlockInfoD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SpinlockInfoC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SpinlockInfoC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7IPPrint8udp_lineER11StringAccumPK6Packeti /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7IPPrint8tcp_lineER11StringAccumPK6Packeti /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z7cp_timeRK6StringP9Timestamp /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15CheckICMPHeader12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11CheckPacket10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TimedSource12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14NotifierSignal17static_initializeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11SimpleQueue20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjE10initializeEP20HashMap_ArenaFactoryj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16RoundRobinSwitch4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11IPGWOptionsD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11IPGWOptionsD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11IPGWOptionsD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16BaseErrorHandler12reset_countsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z10cp_elementRK6StringP7ElementP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIiE2atEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11DelayShaper10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8CPUQueue10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z27cp_va_parse_remove_keywordsR6VectorI6StringEiP7ElementP12ErrorHandlerz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11DelayShaper9run_timerEP5Timer /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpUnsignedReal2 /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SchedOrderTest9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11QuitWatcherD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11QuitWatcherD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11QuitWatcherD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10CrapFilter10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7MSQueue4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8FromHost8run_taskEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN19_GLOBAL__N_cp_errno10CpVaHelper20finish_keyword_errorEPKcS2_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV14CheckUDPHeader /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8ARPPrint10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String13mutable_c_strEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14SortedIPLookup5checkEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckARPHeaderD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckARPHeaderC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12SetPerfCount /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastUDPFlows9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z11cp_spacevecRK6StringR6VectorIS_E /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5LexerD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5LexerC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16ICMPPingRewriter7Mapping10initializeERK8IPFlowIDS3_bPS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11DelayShaper10read_paramEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPPrint13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11AdaptiveRED10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPReassembler10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjE10find_forceERKS0_RKj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18RoundRobinIPMapperD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18RoundRobinIPMapperC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8ClickIno11name_searchERK6Stringiii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14InfiniteSource12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8FixIPSrcD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8FixIPSrcD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8FixIPSrcD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8FixIPSrcC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8FixIPSrcC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK20StripToNetworkHeader10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z16click_init_schedP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV11LinkUnqueue /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilter10parse_exprERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15CycleCountAccum10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10CheckPaint4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15BandwidthShaperC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSample12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13SetPacketType9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RFC2507c9make_fullEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FastUDPSourceD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FastUDPSourceD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FastUDPSourceD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FastUDPSourceC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FastUDPSourceC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler5errorEPKcz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z9cp_stringRK6StringPS_S2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ToDevice14static_cleanupEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer13yelementclassEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10LexerExtraD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11DirectEWMAXI19RateEWMAXParametersILj4ELj10EjiEE8update_nEjj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ConfParseTestD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ConfParseTestD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ConfParseTestD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ConfParseTestC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ConfParseTestC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Packet5cloneEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z12cp_eat_spaceR6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV8Truncate /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5StripD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5StripC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RouterThread6driverEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6NameDB7revfindEPKvi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEEaSERKS2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18RoundRobinIPMapper9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ICMPPingSource12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIPvEC2ERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18SourceIPHashMapperD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18SourceIPHashMapperC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV18RoundRobinIPMapper /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSource4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11NullElementD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11NullElementD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11NullElementD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8DRRSchedD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8DRRSchedD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8DRRSchedD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8DRRSchedC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8DRRSchedC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9CPUSwitch9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12StrideSwitch10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SimpleQueue4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String14garbage_stringEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8Notifier12add_listenerEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7IPEncap10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9ICMPError13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN25VerboseFilterErrorHandlerC2EP12ErrorHandleri /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN25VerboseFilterErrorHandlerC1EP12ErrorHandleri /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14DropBroadcastsD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14DropBroadcastsC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorI9IPAddressE3endEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ARPResponder13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SortedIPLookupD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7RIPSend10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10CheckCRC32C2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15SpinlockReleaseD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SimpleQueue10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPRouteTable14lookup_handlerEiR6StringP7ElementPK7HandlerP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPRouteTable11dump_routesEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14InfiniteSource12change_paramERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13CheckIPHeader12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14AverageCounter12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z12cp_ip_prefixRK6StringPhS2_bP7Element /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ARPQuerier12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIN6Router6HookupEE5emptyEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiE7resize0Ej /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEE4swapERS2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String11append_fillEii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18SourceIPHashMapper9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10MixedQueueC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10EtherEncapC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ARPQuerierD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ToHost9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV5Print /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN19VariableEnvironment9parent_ofEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7MSQueue10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Lexer18lexical_scoping_inEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV5Strip /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String4MemoC2Eii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11IPGWOptions10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11EtherMirror10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15UnstripIPHeader10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorI6StringE3endEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringEC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14ActiveNotifier9listenersER6VectorIP4TaskE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12ICMPRewriter10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV19ContextErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringED1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressE8pop_backEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15CycleCountAccumD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Paint18color_read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10BpfyFilterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TimedSourceC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TimedSourceC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV10FromDevice /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11CheckLength10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14StoreIPAddress10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ARPResponder7add_mapE9IPAddressS0_12EtherAddress /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringEaSERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router20store_global_handlerERK7Handler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13PerfCountUserD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13PerfCountUserD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13PerfCountUserD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13PerfCountUserC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13PerfCountUserC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14LinearIPLookup10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8IPFilter10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI7IPRouteE6resizeEiRKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11RatedSource4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PullSwitchC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPMapper15notify_rewriterEP4IPRwP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastUDPFlows5resetEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZlsR11StringAccum9IPAddress /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringE9pop_frontEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8FromHost5fl_txEP7sk_buffP10net_device /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV8SortTest /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14SetTCPChecksum10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9SetIPDSCPD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9SetIPDSCPD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9SetIPDSCPD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9SetIPDSCPC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9SetIPDSCPC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10PullSwitch10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11RatedSource10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV10LexerExtra /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer8Compound11expand_intoEPS_iR19VariableEnvironment /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRw7Mapping10initializeEiRK8IPFlowIDS3_itPS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ScheduleLinux10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14StaticIPLookupD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7DiscardC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7DiscardC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorI6StringE5frontEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12ARPResponder /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SimpleQueue9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14InfiniteSource10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15BandwidthShaper4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV18SourceIPHashMapper /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12IPRouteTable12lookup_routeE9IPAddressRS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11TCPRewriter10TCPMapping1sEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIN6Router6HookupEE4sizeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPRewriterC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15RandomBitErrors20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16BaseErrorHandler11count_errorEN12ErrorHandler11SeriousnessERK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14DropBroadcasts10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14ToHostSniffers10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjEixEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SetUDPChecksum13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14SetTCPChecksum13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEE3endEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastTCPFlows4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI8IPFlowIDbE16dynamic_resizingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12IPFragmenter10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9ICMPError10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpDesCblock /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI9IPAddressE10push_frontERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12IPClassifier /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12DelayUnqueue /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckUDPHeader12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK22BandwidthRatedSplitter10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Suppressor4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZThn60_N18RoundRobinIPMapperD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8MarkIPCE12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10FromDevice14static_cleanupEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer19remove_element_typeEiPi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPReassembler9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN19_GLOBAL__N_cp_errno10CpVaHelper15parse_argumentsEPKcP7ElementP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN19VariableEnvironment6expandERK6StringiiR11StringAccum /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjE9push_backERKj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3RED9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15RandomBitErrorsD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15RandomBitErrorsD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIN7IPTable5EntryEE4veltEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRw7PatternC2ERK9IPAddressiS3_ibbj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRw7PatternC1ERK9IPAddressiS3_ibbj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7RIPSend9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SimpleQueue12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPRewriterPatterns7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11HandlerCall9call_readERK6StringP7ElementP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z20cp_process_backslashPKcS0_R11StringAccum /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14BandwidthMeter10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV11SimpleQueue /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpKeyword /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Switch20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6String8hashcodeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8RFC2507c15make_compressedEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13DynamicNameDB5queryERK6StringPvi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11RatedSource9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ICMPPingSource10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18PrefixErrorHandlerC1EP12ErrorHandlerRK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjE4backEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier8add_exprER6VectorIiERKNS_4ExprE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Master17unregister_routerEP6Router /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Timer8set_hookEPFvPS_PvES1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV10Suppressor /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13SetCycleCount4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11SetAnnoByte10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router5unuseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16ICMPPingRewriter7Mapping9make_pairERK8IPFlowIDS3_PS0_S4_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpEtherAddress /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z12cp_ip_prefixRK6StringP9IPAddressS3_bP7Element /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12CompareBlock23rev_weight_read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17StaticThreadSched22initial_home_thread_idEP4Taskb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15SpinlockRelease9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8MarkIPCE4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK16SetRandIPAddress10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3RED16finish_configureEjjjjRK6StringP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12CompareBlock /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11QuitWatcher9run_timerEP5Timer /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15RandomBitErrors12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14SchedOrderTest10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13PerfCountInfo /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN4IPRw7Pattern14accept_mappingEPNS_7MappingE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14IPAddrRewriter10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14InfiniteSourceD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14InfiniteSourceC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14AverageCounter5resetEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK3RED10queue_sizeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12PokeHandlers /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV12FastTCPFlows /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12SetTimestamp10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10FromDeviceD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8Unqueue210class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12StaticSwitch4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15HostEtherFilterC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11AdaptiveRED4castEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjEC2ERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6StringC1Ey /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6StringC1Ex /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6StringC1Em /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6StringC1El /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6StringC1Ej /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6StringC1Ei /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FTPPortMapper13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10Classifier18DominatorOptimizer13calculate_domEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjE5clearEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11HandlerCall5resetERPS_RK6StringiP7ElementP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler6ldebugERK6StringPKcz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 click_public_packages /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11RatedSource12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11IPGWOptions13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastUDPFlowsD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastUDPFlowsD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastUDPFlowsD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastUDPFlowsC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12FastUDPFlowsC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z11cp_va_parseRK6StringP7ElementP12ErrorHandlerz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0xb2f734c6 proclikefs_read_super /d/click/click-1.6.0-27/linuxmodule/proclikefs EXPORT_SYMBOL -+0x00000000 _ZN5TimerC2EPFvPS_PvES1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSample9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringEC1EiRKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String4MemoD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14StaticIPLookup10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer8Compound7resolveEPS_iiiR6VectorI6StringEP12ErrorHandlerRKS3_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15CycleCountAccum12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckTCPHeader12read_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10ARPQuerier13write_handlerERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Unqueue12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PollDevice14static_cleanupEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10FromDevice7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEEixEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Script10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10CheckPaintC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15UnstripIPHeaderD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11TCPRewriter10TCPMapping18update_seqno_deltaEji /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7MSQueue10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13FTPPortMapper10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6NameDBD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13CheckIPHeaderD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13CheckIPHeaderD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13CheckIPHeaderD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13CheckIPHeaderC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13CheckIPHeaderC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Unqueue10read_paramEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Paint20can_live_reconfigureEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Paint12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer12ydeclarationERK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8IPFlowID7unparseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14AverageCounterD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14AverageCounterC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Counter13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13FastUDPSource8NO_LIMITE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK4IPRw7Mapping7unparseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7BursterD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7BursterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7BursterD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ScheduleLinux9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEE6resizeEiRKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6VectorIN6Router6HookupEE2atEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPReassembler7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10BpfyFilter10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI8IPFlowIDbE9find_pairERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI8IPFlowIDiE9find_pairERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer15skip_slash_starEPKc /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10Classifier4Expr7impliesERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK3RED10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPTable3delE9IPAddressS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14IPAddrRewriter13IPAddrMapping7reverseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z15cp_pop_spacevecR6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17_HashMap_iteratorI6StringiEC2EP7HashMapIS0_iEb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN17_HashMap_iteratorI6StringiEC1EP7HashMapIS0_iEb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK8IPFilter9Primitive12unparse_typeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpElement /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Packet19expensive_uniqueifyEiib /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15LookupIPRouteMP10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13DiscardNoFree10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpKeywords /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDPvE10initializeEP20HashMap_ArenaFactoryj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11HandlerCall10call_writeERK6StringP7ElementP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIPvE4swapERS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SimpleQueueC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SimpleQueueC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z23cp_unparse_millisecondsj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z23cp_unparse_microsecondsj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14ComparePackets4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Router5enameEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15RandomBitErrors9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PollDeviceD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11NullElement13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV15CheckICMPHeader /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15PushNullElement10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15PullNullElement10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpReal10 /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN19VariableEnvironmentC1EPS_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13ElementFilter /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router14add_module_refEP6module /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7UnstripC2Ej /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7UnstripC1Ej /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Switch13configurationER6VectorI6StringE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11DelayShaper4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z12cp_va_kparseRK6VectorI6StringEP7ElementP12ErrorHandlerz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String12oom_string_pE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN5Lexer11ElementTypeEE7reserveEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13NotifierQueue /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpConfirmKeywords /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ARPResponder13make_responseEPhS0_S0_S0_P6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12PokeHandlers11LOOP_MARKERE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV15HostEtherFilter /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7ElementD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7ElementD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7ElementD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZThn60_N18SourceIPHashMapperD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PollDevice7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11HandlerCall7unparseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11DelayShaper10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13DynamicNameDB7revfindEPKvi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPAddrPairRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10CheckCRC32D1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SetAnnoByteD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SetAnnoByteD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11SetAnnoByteD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10BpfyFilter4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10RandomSeedD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjE9copy_fromERKS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpTimeval /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9Timestamp7unparseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbE4swapERS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDiED1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDiEC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13RadixIPLookup5Radix10make_radixEii /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13NotifierQueue4pullEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element16live_reconfigureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15RandomBitErrors10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10MixedQueueD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15HostEtherFilter13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10EtherEncapD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ErrorHandler9OK_RESULTE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckUDPHeaderD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckUDPHeaderC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router18set_hotswap_routerEPS_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11RatedSourceC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11RatedSourceC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element30reconfigure_positional_handlerERK6StringPS_PvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9Bitvector13resize_to_maxEib /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14NotifierSignal7unparseEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14IPAddrRewriter4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element4PUSHE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z13cp_ip_addressRK6StringPhP7Element /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12StaticNameDB7revfindEPKvi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12IPInputCombo12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6ToHost10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK7HashMapI9IPAddressjE4sizeEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEEC2ERKS2_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router8activateEbP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12ICMPRewriter10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13ICMPPingEncap /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN21BandwidthRatedUnqueueD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN21BandwidthRatedUnqueueD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN21BandwidthRatedUnqueueD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN21BandwidthRatedUnqueueC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN21BandwidthRatedUnqueueC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8NameInfo8removedbEP6NameDB /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12ARPResponder16live_reconfigureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10PullSwitchD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14PerfCountAccum4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13DiscardNoFree10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14BandwidthMeterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14BandwidthMeterC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13StripIPHeader13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9ICMPError10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorI6StringE5frontEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Script8ExpanderD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN3RED10take_stateEP7ElementP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element9PORTS_1_1E /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element9PORTS_0_1E /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpIgnoreRest /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12SpinlockInfo7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7MSQueue4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16DevirtualizeInfoD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16DevirtualizeInfoD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN16DevirtualizeInfoD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14AverageCounter10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6String10find_rightEci /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15RandomBitErrors10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV13IPOutputCombo /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11DelayShaper9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK14CheckUDPHeader10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN21BandwidthRatedUnqueue8run_taskEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDiE6resizeEj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7UnqueueC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7UnqueueC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6ToHost4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Script12step_handlerEiR6StringP7ElementPK7HandlerP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK18IPRewriterPatterns10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPAddrPairRewriterD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18IPAddrPairRewriterC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 cpBandwidth /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIjE5eraseEPjS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Print10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13NotifierQueue9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEED2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN7IPTable5EntryEEC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10IPRewriterD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7IPPrint7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8DecIPTTL13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9CPUSwitchD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9CPUSwitchD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9CPUSwitchD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9CPUSwitchC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN9CPUSwitchC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8ToDevice12reset_countsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Strip10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14LinearIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z12cp_uncommentRK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12CompareBlock12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13RadixIPLookup10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN8IPFilter9Primitive20unparse_transp_protoEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV8CPUQueue /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11QuitWatcher10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Lexer13create_routerEP6Master /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13ICMPPingEncap13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12AnyDeviceMap6removeEP9AnyDeviceb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK13SetPacketType10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13IPOutputCombo9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String15oom_string_dataE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZTV8ARPPrint /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11TCPRewriter10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Print10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN18SilentErrorHandlerD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN10SuppressorC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11StringAccum18make_out_of_memoryEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK15SpinlockRelease10processingEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Lexer12element_nameEi /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK12IPFragmenter10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14CheckARPHeader4dropENS_6ReasonEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6VectorIN6Router6HookupEE5eraseEPS1_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK5Strip10port_countEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK6Script13find_variableERK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11RatedSource8NO_LIMITE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element17add_task_handlersEP4TaskRK6String /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK9TimedSink10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11LinkUnqueue8run_taskEP4Task /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSource11make_packetEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN15LookupIPRouteMPC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11DelayShaper12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI6StringiE3endEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13RadixIPLookup7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z16cp_unparse_real2ji /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router20change_handler_flagsEPK7ElementRK6Stringjj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK11PaintSwitch10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZNK10MixedQueue10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11LinkUnqueueD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11LinkUnqueueD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11LinkUnqueueD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13QueueYankTest10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6Router18make_hookup_gportsEv /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14MessageElementD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14MessageElementC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11LinkUnqueue7cleanupEN7Element12CleanupStageE /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z17cp_va_space_parseRK6StringP7ElementP12ErrorHandlerz /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11CheckLength4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI8IPFlowIDbE15find_pair_forceERKS0_RKb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN5Print13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z19cp_ethernet_addressRK6StringP12EtherAddressP7Element /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _Z8cp_quoteRK6Stringb /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14BandwidthMeter9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13AnyTaskDeviceD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13AnyTaskDeviceD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13AnyTaskDeviceC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN13AnyTaskDeviceC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjE6resizeEj /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7HashMapI9IPAddressjE6removeERKS0_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN6String11InitializerC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14StoreIPAddressD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN14StoreIPAddressC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSampleD2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSampleD1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSampleD0Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSampleC2Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN12RandomSampleC1Ev /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN11PaintSwitch9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -+0x00000000 _ZN7Element11set_handlerERK6StringiPFiiRS0_PS_PK7HandlerP12ErrorHandlerEPvSC_ /d/click/click-1.6.0-27/linuxmodule/click EXPORT_SYMBOL -diff -Nurb click-1.6.0/linuxmodule/errlog click-1.6.0-27/linuxmodule/errlog ---- click-1.6.0/linuxmodule/errlog 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/linuxmodule/errlog 2009-01-19 16:02:34.000000000 -0500 -@@ -0,0 +1,160 @@ -+In file included from /d/kernels/linux-2.6.27.10-click/include/linux/module.h:21, -+ from /d/kernels/linux-2.6.27.10-click/include/linux/textsearch.h:7, -+ from /d/kernels/linux-2.6.27.10-click/include/linux/skbuff.h:26, -+ from /d/click/click-1.6.0/linuxmodule/../include/click/glue.hh:26, -+ from /d/click/click-1.6.0/linuxmodule/../include/click/atomic.hh:5, -+ from /d/click/click-1.6.0/linuxmodule/../include/click/string.hh:8, -+ from /d/click/click-1.6.0/linuxmodule/../lib/string.cc:21: -+/d/kernels/linux-2.6.27.10-click/include/asm/module.h:70:2: error: #error unknown processor family -+In file included from /d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:25, -+ from /d/kernels/linux-2.6.27.10-click/include/linux/hrtimer.h:19, -+ from /d/kernels/linux-2.6.27.10-click/include/linux/skbuff.h:30, -+ from /d/click/click-1.6.0/linuxmodule/../include/click/glue.hh:26, -+ from /d/click/click-1.6.0/linuxmodule/../include/click/atomic.hh:5, -+ from /d/click/click-1.6.0/linuxmodule/../include/click/string.hh:8, -+ from /d/click/click-1.6.0/linuxmodule/../lib/string.cc:21: -+/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:39:3: error: #error Invalid value of HZ. -+/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if -+/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if -+/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if -+/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if -+/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if -+/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if -+/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if -+/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if -+/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if -+/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if -+/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if -+/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if -+/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if -+/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if -+/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if -+/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if -+/d/kernels/linux-2.6.27.10-click/include/linux/types.h:33: error: expected initializer before 'bool' -+/d/click/click-1.6.0/linuxmodule/../include/click/config-linuxmodule.h:117: error: 'operator new' takes type 'size_t' ('unsigned int') as first parameter -+/d/click/click-1.6.0/linuxmodule/../include/click/config-linuxmodule.h:118: error: 'operator new' takes type 'size_t' ('unsigned int') as first parameter -+/d/click/click-1.6.0/linuxmodule/../include/click/config-linuxmodule.h:121: error: 'operator new' takes type 'size_t' ('unsigned int') as first parameter -+/d/kernels/linux-2.6.27.10-click/include/asm/bitops.h: In function 'void set_bit(unsigned int, volatile long unsigned int*)': -+/d/kernels/linux-2.6.27.10-click/include/asm/bitops.h:60: error: pointer of type 'void *' used in arithmetic -+/d/kernels/linux-2.6.27.10-click/include/asm/bitops.h: In function 'void clear_bit(int, volatile long unsigned int*)': -+/d/kernels/linux-2.6.27.10-click/include/asm/bitops.h:97: error: pointer of type 'void *' used in arithmetic -+/d/kernels/linux-2.6.27.10-click/include/linux/ratelimit.h: In function 'int ratelimit()': -+/d/kernels/linux-2.6.27.10-click/include/linux/ratelimit.h:23: error: 'CONFIG_HZ' was not declared in this scope -+/d/kernels/linux-2.6.27.10-click/include/linux/kernel.h: At global scope: -+/d/kernels/linux-2.6.27.10-click/include/linux/kernel.h:216: error: expected unqualified-id before string constant -+/d/kernels/linux-2.6.27.10-click/include/asm/page.h: In function 'pte_t native_make_pte(pteval_t)': -+/d/kernels/linux-2.6.27.10-click/include/asm/page.h:141: error: expected primary-expression before ')' token -+/d/kernels/linux-2.6.27.10-click/include/asm/page.h:141: error: expected ';' before '{' token -+/d/kernels/linux-2.6.27.10-click/include/asm/page.h:141: error: expected primary-expression before '.' token -+/d/kernels/linux-2.6.27.10-click/include/asm/page.h:141: error: expected `;' before '}' token -+/d/kernels/linux-2.6.27.10-click/include/asm/processor.h: At global scope: -+/d/kernels/linux-2.6.27.10-click/include/asm/processor.h:112: error: 'CONFIG_X86_L1_CACHE_SHIFT' was not declared in this scope -+/d/kernels/linux-2.6.27.10-click/include/asm/processor.h:112: error: requested alignment is not a constant -+/d/kernels/linux-2.6.27.10-click/include/asm/processor.h: In function 'void load_cr3(pgd_t*)': -+/d/kernels/linux-2.6.27.10-click/include/asm/processor.h:184: error: 'CONFIG_PAGE_OFFSETUL' was not declared in this scope -+/d/kernels/linux-2.6.27.10-click/include/asm/processor.h: At global scope: -+/d/kernels/linux-2.6.27.10-click/include/asm/processor.h:233: error: 'CONFIG_X86_L1_CACHE_SHIFT' was not declared in this scope -+/d/kernels/linux-2.6.27.10-click/include/asm/processor.h:233: error: requested alignment is not a constant -+/d/kernels/linux-2.6.27.10-click/include/asm/processor.h:270: error: 'CONFIG_X86_L1_CACHE_SHIFT' was not declared in this scope -+/d/kernels/linux-2.6.27.10-click/include/asm/processor.h:270: error: requested alignment is not a constant -+/d/kernels/linux-2.6.27.10-click/include/asm/processor.h: In function 'void wbinvd_halt()': -+/d/kernels/linux-2.6.27.10-click/include/asm/processor.h:751: error: 'halt' was not declared in this scope -+/d/kernels/linux-2.6.27.10-click/include/asm/thread_info.h: In function 'thread_info* current_thread_info()': -+/d/kernels/linux-2.6.27.10-click/include/asm/thread_info.h:206: error: invalid conversion from 'void*' to 'thread_info*' -+/d/kernels/linux-2.6.27.10-click/include/linux/list.h: In function 'void list_del(list_head*)': -+/d/kernels/linux-2.6.27.10-click/include/linux/list.h:106: error: invalid conversion from 'void*' to 'list_head*' -+/d/kernels/linux-2.6.27.10-click/include/linux/list.h:107: error: invalid conversion from 'void*' to 'list_head*' -+/d/kernels/linux-2.6.27.10-click/include/linux/list.h: In function 'void hlist_del(hlist_node*)': -+/d/kernels/linux-2.6.27.10-click/include/linux/list.h:579: error: invalid conversion from 'void*' to 'hlist_node*' -+/d/kernels/linux-2.6.27.10-click/include/linux/list.h:580: error: invalid conversion from 'void*' to 'hlist_node**' -+/d/kernels/linux-2.6.27.10-click/include/linux/wait.h: In function 'int wait_on_bit(void*, int, int (*)(void*), unsigned int)': -+/d/kernels/linux-2.6.27.10-click/include/linux/wait.h:488: error: invalid conversion from 'void*' to 'const volatile long unsigned int*' -+/d/kernels/linux-2.6.27.10-click/include/linux/wait.h:488: error: initializing argument 2 of 'int constant_test_bit(int, const volatile long unsigned int*)' -+/d/kernels/linux-2.6.27.10-click/include/linux/wait.h:488: error: invalid conversion from 'void*' to 'const volatile long unsigned int*' -+/d/kernels/linux-2.6.27.10-click/include/linux/wait.h:488: error: initializing argument 2 of 'int variable_test_bit(int, const volatile long unsigned int*)' -+/d/kernels/linux-2.6.27.10-click/include/linux/wait.h: In function 'int wait_on_bit_lock(void*, int, int (*)(void*), unsigned int)': -+/d/kernels/linux-2.6.27.10-click/include/linux/wait.h:512: error: invalid conversion from 'void*' to 'volatile long unsigned int*' -+/d/kernels/linux-2.6.27.10-click/include/linux/wait.h:512: error: initializing argument 2 of 'int test_and_set_bit(int, volatile long unsigned int*)' -+/d/kernels/linux-2.6.27.10-click/include/linux/nodemask.h: In function 'int __first_node(const nodemask_t*)': -+/d/kernels/linux-2.6.27.10-click/include/linux/nodemask.h:233: error: 'find_first_bit' was not declared in this scope -+/d/kernels/linux-2.6.27.10-click/include/linux/nodemask.h: In function 'int __next_node(int, const nodemask_t*)': -+/d/kernels/linux-2.6.27.10-click/include/linux/nodemask.h:239: error: 'find_next_bit' was not declared in this scope -+/d/kernels/linux-2.6.27.10-click/include/linux/nodemask.h: In function 'int __first_unset_node(const nodemask_t*)': -+/d/kernels/linux-2.6.27.10-click/include/linux/nodemask.h:257: error: 'find_first_zero_bit' was not declared in this scope -+/d/kernels/linux-2.6.27.10-click/include/asm/vdso.h: At global scope: -+/d/kernels/linux-2.6.27.10-click/include/asm/vdso.h:36: error: variable or field '__kernel_sigreturn' declared void -+/d/kernels/linux-2.6.27.10-click/include/asm/vdso.h:37: error: variable or field '__kernel_rt_sigreturn' declared void -+/d/kernels/linux-2.6.27.10-click/include/asm/elf.h: In function 'void start_ia32_thread(pt_regs*, u32, u32)': -+/d/kernels/linux-2.6.27.10-click/include/asm/elf.h:153: error: 'load_gs_index' was not declared in this scope -+/d/kernels/linux-2.6.27.10-click/include/asm/elf.h: In function 'void elf_common_init(thread_struct*, pt_regs*, u16)': -+/d/kernels/linux-2.6.27.10-click/include/asm/elf.h:166: error: 'struct pt_regs' has no member named 'r8' -+/d/kernels/linux-2.6.27.10-click/include/asm/elf.h:166: error: 'struct pt_regs' has no member named 'r9' -+/d/kernels/linux-2.6.27.10-click/include/asm/elf.h:166: error: 'struct pt_regs' has no member named 'r10' -+/d/kernels/linux-2.6.27.10-click/include/asm/elf.h:166: error: 'struct pt_regs' has no member named 'r11' -+/d/kernels/linux-2.6.27.10-click/include/asm/elf.h:167: error: 'struct pt_regs' has no member named 'r12' -+/d/kernels/linux-2.6.27.10-click/include/asm/elf.h:167: error: 'struct pt_regs' has no member named 'r13' -+/d/kernels/linux-2.6.27.10-click/include/asm/elf.h:167: error: 'struct pt_regs' has no member named 'r14' -+/d/kernels/linux-2.6.27.10-click/include/asm/elf.h:167: error: 'struct pt_regs' has no member named 'r15' -+/d/kernels/linux-2.6.27.10-click/include/linux/textsearch.h: In function 'ts_config* alloc_ts_config(size_t, gfp_t)': -+/d/kernels/linux-2.6.27.10-click/include/linux/textsearch.h:165: error: invalid conversion from 'void*' to 'ts_config*' -+/d/kernels/linux-2.6.27.10-click/include/linux/textsearch.h:167: error: invalid conversion from 'void*' to 'ts_config*' -+/d/kernels/linux-2.6.27.10-click/include/linux/semaphore.h: In function 'void sema_init(semaphore*, int)': -+/d/kernels/linux-2.6.27.10-click/include/linux/semaphore.h:35: error: expected primary-expression before 'struct' -+/d/kernels/linux-2.6.27.10-click/include/linux/semaphore.h:35: error: expected `)' before 'struct' -+/d/kernels/linux-2.6.27.10-click/include/linux/dmaengine.h: In function 'void async_tx_ack(dma_async_tx_descriptor*)': -+/d/kernels/linux-2.6.27.10-click/include/linux/dmaengine.h:380: error: invalid conversion from 'int' to 'dma_ctrl_flags' -+/d/kernels/linux-2.6.27.10-click/include/linux/dmaengine.h: In function 'int __first_dma_cap(const dma_cap_mask_t*)': -+/d/kernels/linux-2.6.27.10-click/include/linux/dmaengine.h:391: error: 'find_first_bit' was not declared in this scope -+/d/kernels/linux-2.6.27.10-click/include/linux/dmaengine.h: In function 'int __next_dma_cap(int, const dma_cap_mask_t*)': -+/d/kernels/linux-2.6.27.10-click/include/linux/dmaengine.h:398: error: 'find_next_bit' was not declared in this scope -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h: In function 'ktime_t ktime_set(long int, long unsigned int)': -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:85: error: expected primary-expression before ')' token -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:85: error: expected ';' before '{' token -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:85: error: expected primary-expression before '.' token -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:85: error: expected `;' before '}' token -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:87: error: expected primary-expression before ')' token -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:87: error: expected ';' before '{' token -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:87: error: expected primary-expression before '.' token -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:87: error: expected `;' before '}' token -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h: In function 's64 ktime_us_delta(ktime_t, ktime_t)': -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:300: error: expected primary-expression before ')' token -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:300: error: expected `;' before '{' token -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:300: error: invalid use of void expression -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h: In function 'ktime_t ktime_add_us(ktime_t, u64)': -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:305: error: expected primary-expression before ')' token -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:305: error: expected `;' before '{' token -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:305: error: conversion from 'void' to non-scalar type 'ktime_t' requested -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h: In function 'ktime_t ktime_sub_us(ktime_t, u64)': -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:310: error: expected primary-expression before ')' token -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:310: error: expected `;' before '{' token -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:310: error: conversion from 'void' to non-scalar type 'ktime_t' requested -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h: In function 'ktime_t ns_to_ktime(u64)': -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:332: error: expected primary-expression before '.' token -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:333: error: expected primary-expression before ')' token -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:333: error: expected `;' before '{' token -+/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:333: error: conversion from 'void' to non-scalar type 'ktime_t' requested -+/d/kernels/linux-2.6.27.10-click/include/linux/skbuff.h: In function 'void skb_queue_head_init(sk_buff_head*)': -+/d/kernels/linux-2.6.27.10-click/include/linux/skbuff.h:659: error: expected primary-expression before ')' token -+/d/kernels/linux-2.6.27.10-click/include/linux/skbuff.h:659: error: expected `;' before '{' token -+/d/kernels/linux-2.6.27.10-click/include/linux/skbuff.h: In function 'ktime_t net_timedelta(ktime_t)': -+/d/kernels/linux-2.6.27.10-click/include/linux/skbuff.h:1548: error: expected primary-expression before ')' token -+/d/kernels/linux-2.6.27.10-click/include/linux/skbuff.h:1548: error: expected `;' before '{' token -+/d/kernels/linux-2.6.27.10-click/include/linux/skbuff.h:1548: error: conversion from 'void' to non-scalar type 'ktime_t' requested -+/d/kernels/linux-2.6.27.10-click/include/asm/hw_irq.h: At global scope: -+/d/kernels/linux-2.6.27.10-click/include/asm/hw_irq.h:87: error: expected unqualified-id before string constant -+/d/kernels/linux-2.6.27.10-click/include/asm/hw_irq.h:88: error: expected unqualified-id before string constant -+/d/kernels/linux-2.6.27.10-click/include/asm/hw_irq.h:89: error: expected unqualified-id before string constant -+/d/kernels/linux-2.6.27.10-click/include/asm/hw_irq.h:90: error: expected unqualified-id before string constant -+/d/kernels/linux-2.6.27.10-click/include/asm/hw_irq.h:91: error: expected unqualified-id before string constant -+/d/kernels/linux-2.6.27.10-click/include/asm/hw_irq.h:92: error: expected unqualified-id before string constant -+/d/kernels/linux-2.6.27.10-click/include/asm/hw_irq.h:93: error: expected unqualified-id before string constant -+/d/kernels/linux-2.6.27.10-click/include/asm/hw_irq.h:94: error: expected unqualified-id before string constant -+/d/click/click-1.6.0/linuxmodule/../include/click/atomic.hh: In member function 'atomic_uint32_t& atomic_uint32_t::operator|=(uint32_t)': -+/d/click/click-1.6.0/linuxmodule/../include/click/atomic.hh:159: error: 'local_irq_save' was not declared in this scope -+/d/click/click-1.6.0/linuxmodule/../include/click/atomic.hh:161: error: 'local_irq_restore' was not declared in this scope -+/d/click/click-1.6.0/linuxmodule/../include/click/atomic.hh: In member function 'atomic_uint32_t& atomic_uint32_t::operator&=(uint32_t)': -+/d/click/click-1.6.0/linuxmodule/../include/click/atomic.hh:181: error: 'local_irq_save' was not declared in this scope -+/d/click/click-1.6.0/linuxmodule/../include/click/atomic.hh:183: error: 'local_irq_restore' was not declared in this scope -+make[2]: *** [/d/click/click-1.6.0/linuxmodule/string.o] Error 1 -+make[1]: *** [_module_/d/click/click-1.6.0/linuxmodule] Error 2 -+make: *** [all] Error 2 -diff -Nurb click-1.6.0/linuxmodule/kernelversion.c click-1.6.0-27/linuxmodule/kernelversion.c ---- click-1.6.0/linuxmodule/kernelversion.c 2007-07-16 19:47:50.000000000 -0400 -+++ click-1.6.0-27/linuxmodule/kernelversion.c 2009-02-11 16:49:08.000000000 -0500 -@@ -26,6 +26,7 @@ - #include - #include - #include -+ - #include "moduleparm.h" - - #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 52) -diff -Nurb click-1.6.0/linuxmodule/kernelversion.c.orig click-1.6.0-27/linuxmodule/kernelversion.c.orig ---- click-1.6.0/linuxmodule/kernelversion.c.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/linuxmodule/kernelversion.c.orig 2007-07-16 19:47:50.000000000 -0400 -@@ -0,0 +1,91 @@ -+/* -+ * kernelversion.c -- make sure we get a Linux module kernel version variable -+ * Robert Morris, Eddie Kohler -+ * -+ * Copyright (c) 1999 Massachusetts Institute of Technology -+ * Copyright (c) 2005 Regents of the University of California -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, subject to the conditions -+ * listed in the Click LICENSE file. These conditions include: you must -+ * preserve this copyright notice, and you cannot mention the copyright -+ * holders in advertising related to the Software without their permission. -+ * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+ * notice is a summary of the Click LICENSE file; the license in that file is -+ * legally binding. -+ */ -+ -+/* -+ * Use C, because g++ seems to ignore the version declaration, which -+ * ends up looking like -+ * const char __module_kernel_version[] __attribute__((section(".modinfo"))) = -+ * "kernel_version=" "2.2.6" ; -+ */ -+ -+#include -+#include -+#include -+#include "moduleparm.h" -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 52) -+# define CLICK_INT_MODULE_PARAM(param) MODULE_PARM(param, "i") -+#else -+# define CLICK_INT_MODULE_PARAM(param) module_param(param, int, 0) -+#endif -+ -+static int accessible = 1; -+CLICK_INT_MODULE_PARAM(accessible); -+MODULE_PARM_DESC(accessible, "make /click world-readable [1]"); -+ -+static int uid = 0; -+static int gid = 0; -+CLICK_INT_MODULE_PARAM(uid); -+CLICK_INT_MODULE_PARAM(gid); -+MODULE_PARM_DESC(uid, "UID owning /click [0]"); -+MODULE_PARM_DESC(gid, "GID owning /click [0]"); -+ -+#if __MTCLICK__ -+static int threads = 1; -+CLICK_INT_MODULE_PARAM(threads); -+MODULE_PARM_DESC(threads, "number of Click threads per router [1]"); -+#endif -+ -+#ifdef MODULE_LICENSE -+MODULE_LICENSE("Dual BSD/GPL"); -+#endif -+ -+static int greedy = 0; -+CLICK_INT_MODULE_PARAM(greedy); -+MODULE_PARM_DESC(greedy, "Click takes a whole CPU [0]"); -+ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 21) -+static int cpu = -1; -+CLICK_INT_MODULE_PARAM(cpu); -+MODULE_PARM_DESC(cpu, "Click thread preferred CPU [-1=any]"); -+#endif -+ -+int -+click_parm(int which) -+{ -+ switch (which) { -+ case CLICKPARM_ACCESSIBLE: -+ return accessible; -+ case CLICKPARM_UID: -+ return uid; -+ case CLICKPARM_GID: -+ return gid; -+ case CLICKPARM_GREEDY: -+ return greedy; -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 21) -+ case CLICKPARM_CPU: -+ return cpu; -+#endif -+#if __MTCLICK__ -+ case CLICKPARM_THREADS: -+ return threads; -+#endif -+ default: -+ return 0; -+ } -+} -diff -Nurb click-1.6.0/linuxmodule/ksyms.c.orig click-1.6.0-27/linuxmodule/ksyms.c.orig ---- click-1.6.0/linuxmodule/ksyms.c.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/linuxmodule/ksyms.c.orig 2009-02-11 16:43:28.000000000 -0500 -@@ -0,0 +1,7403 @@ -+// Created by 'click-buildtool ksyms' on Wed Feb 11 16:43:28 EST 2009 -+#include -+#include -+#include -+extern char _ZN11AdaptiveRED10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11AdaptiveRED10initializeEP12ErrorHandler); -+extern char _ZN11AdaptiveRED16live_reconfigureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11AdaptiveRED16live_reconfigureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN11AdaptiveRED4castEPKc[]; -+EXPORT_SYMBOL(_ZN11AdaptiveRED4castEPKc); -+extern char _ZN11AdaptiveRED9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11AdaptiveRED9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN11AdaptiveRED9run_timerEP5Timer[]; -+EXPORT_SYMBOL(_ZN11AdaptiveRED9run_timerEP5Timer); -+extern char _ZN11AdaptiveREDC1Ev[]; -+EXPORT_SYMBOL(_ZN11AdaptiveREDC1Ev); -+extern char _ZN11AdaptiveREDC2Ev[]; -+EXPORT_SYMBOL(_ZN11AdaptiveREDC2Ev); -+extern char _ZN11AdaptiveREDD0Ev[]; -+EXPORT_SYMBOL(_ZN11AdaptiveREDD0Ev); -+extern char _ZN11AdaptiveREDD1Ev[]; -+EXPORT_SYMBOL(_ZN11AdaptiveREDD1Ev); -+extern char _ZN11AdaptiveREDD2Ev[]; -+EXPORT_SYMBOL(_ZN11AdaptiveREDD2Ev); -+extern char _ZNK11AdaptiveRED10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK11AdaptiveRED10class_nameEv); -+extern char _ZNK3RED10port_countEv[]; -+EXPORT_SYMBOL(_ZNK3RED10port_countEv); -+extern char _ZNK3RED10processingEv[]; -+EXPORT_SYMBOL(_ZNK3RED10processingEv); -+extern char _ZNK3RED20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK3RED20can_live_reconfigureEv); -+extern char _ZNK6String6lengthEv[]; -+EXPORT_SYMBOL(_ZNK6String6lengthEv); -+extern char _ZTV11AdaptiveRED[]; -+EXPORT_SYMBOL(_ZTV11AdaptiveRED); -+extern char _ZN11AddressInfo14query_ethernetE6StringPhP7Element[]; -+EXPORT_SYMBOL(_ZN11AddressInfo14query_ethernetE6StringPhP7Element); -+extern char _ZN11AddressInfo15query_ip_prefixE6StringPhS1_P7Element[]; -+EXPORT_SYMBOL(_ZN11AddressInfo15query_ip_prefixE6StringPhS1_P7Element); -+extern char _ZN11AddressInfo8query_ipE6StringPhP7Element[]; -+EXPORT_SYMBOL(_ZN11AddressInfo8query_ipE6StringPhP7Element); -+extern char _ZN11AddressInfo9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11AddressInfo9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN11AddressInfoC1Ev[]; -+EXPORT_SYMBOL(_ZN11AddressInfoC1Ev); -+extern char _ZN11AddressInfoC2Ev[]; -+EXPORT_SYMBOL(_ZN11AddressInfoC2Ev); -+extern char _ZN11AddressInfoD0Ev[]; -+EXPORT_SYMBOL(_ZN11AddressInfoD0Ev); -+extern char _ZN11AddressInfoD1Ev[]; -+EXPORT_SYMBOL(_ZN11AddressInfoD1Ev); -+extern char _ZN11AddressInfoD2Ev[]; -+EXPORT_SYMBOL(_ZN11AddressInfoD2Ev); -+extern char _ZN6VectorI6StringED1Ev[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringED1Ev); -+extern char _ZNK11AddressInfo10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK11AddressInfo10class_nameEv); -+extern char _ZNK11AddressInfo15configure_phaseEv[]; -+EXPORT_SYMBOL(_ZNK11AddressInfo15configure_phaseEv); -+extern char _ZTV11AddressInfo[]; -+EXPORT_SYMBOL(_ZTV11AddressInfo); -+extern char _ZN5Align4pullEi[]; -+EXPORT_SYMBOL(_ZN5Align4pullEi); -+extern char _ZN5Align4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN5Align4pushEiP6Packet); -+extern char _ZN5Align8smactionEP6Packet[]; -+EXPORT_SYMBOL(_ZN5Align8smactionEP6Packet); -+extern char _ZN5Align9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN5Align9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN5AlignC1Ev[]; -+EXPORT_SYMBOL(_ZN5AlignC1Ev); -+extern char _ZN5AlignC2Ev[]; -+EXPORT_SYMBOL(_ZN5AlignC2Ev); -+extern char _ZN5AlignD0Ev[]; -+EXPORT_SYMBOL(_ZN5AlignD0Ev); -+extern char _ZN5AlignD1Ev[]; -+EXPORT_SYMBOL(_ZN5AlignD1Ev); -+extern char _ZN5AlignD2Ev[]; -+EXPORT_SYMBOL(_ZN5AlignD2Ev); -+extern char _ZNK5Align10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK5Align10class_nameEv); -+extern char _ZNK5Align10port_countEv[]; -+EXPORT_SYMBOL(_ZNK5Align10port_countEv); -+extern char _ZNK5Align10processingEv[]; -+EXPORT_SYMBOL(_ZNK5Align10processingEv); -+extern char _ZTV5Align[]; -+EXPORT_SYMBOL(_ZTV5Align); -+extern char _ZN13AlignmentInfo5queryEP7ElementiRiS2_[]; -+EXPORT_SYMBOL(_ZN13AlignmentInfo5queryEP7ElementiRiS2_); -+extern char _ZN13AlignmentInfo9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13AlignmentInfo9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN13AlignmentInfoC1Ev[]; -+EXPORT_SYMBOL(_ZN13AlignmentInfoC1Ev); -+extern char _ZN13AlignmentInfoC2Ev[]; -+EXPORT_SYMBOL(_ZN13AlignmentInfoC2Ev); -+extern char _ZN13AlignmentInfoD0Ev[]; -+EXPORT_SYMBOL(_ZN13AlignmentInfoD0Ev); -+extern char _ZN13AlignmentInfoD1Ev[]; -+EXPORT_SYMBOL(_ZN13AlignmentInfoD1Ev); -+extern char _ZN13AlignmentInfoD2Ev[]; -+EXPORT_SYMBOL(_ZN13AlignmentInfoD2Ev); -+extern char _ZNK13AlignmentInfo10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK13AlignmentInfo10class_nameEv); -+extern char _ZNK13AlignmentInfo15configure_phaseEv[]; -+EXPORT_SYMBOL(_ZNK13AlignmentInfo15configure_phaseEv); -+extern char _ZNK13AlignmentInfo6query1EP7ElementiRiS2_[]; -+EXPORT_SYMBOL(_ZNK13AlignmentInfo6query1EP7ElementiRiS2_); -+extern char _ZTV13AlignmentInfo[]; -+EXPORT_SYMBOL(_ZTV13AlignmentInfo); -+extern char _Z24dev_get_by_ether_addressRK6StringP7Element[]; -+EXPORT_SYMBOL(_Z24dev_get_by_ether_addressRK6StringP7Element); -+extern char _ZN12AnyDeviceMap10initializeEv[]; -+EXPORT_SYMBOL(_ZN12AnyDeviceMap10initializeEv); -+extern char _ZN12AnyDeviceMap6insertEP9AnyDeviceb[]; -+EXPORT_SYMBOL(_ZN12AnyDeviceMap6insertEP9AnyDeviceb); -+extern char _ZN12AnyDeviceMap6removeEP9AnyDeviceb[]; -+EXPORT_SYMBOL(_ZN12AnyDeviceMap6removeEP9AnyDeviceb); -+extern char _ZN13AnyTaskDeviceC1Ev[]; -+EXPORT_SYMBOL(_ZN13AnyTaskDeviceC1Ev); -+extern char _ZN13AnyTaskDeviceC2Ev[]; -+EXPORT_SYMBOL(_ZN13AnyTaskDeviceC2Ev); -+extern char _ZN13AnyTaskDeviceD0Ev[]; -+EXPORT_SYMBOL(_ZN13AnyTaskDeviceD0Ev); -+extern char _ZN13AnyTaskDeviceD1Ev[]; -+EXPORT_SYMBOL(_ZN13AnyTaskDeviceD1Ev); -+extern char _ZN9AnyDevice10set_deviceEP10net_deviceP12AnyDeviceMapb[]; -+EXPORT_SYMBOL(_ZN9AnyDevice10set_deviceEP10net_deviceP12AnyDeviceMapb); -+extern char _ZN9AnyDevice11find_deviceEP12AnyDeviceMapP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN9AnyDevice11find_deviceEP12AnyDeviceMapP12ErrorHandler); -+extern char _ZN9AnyDevice12clear_deviceEP12AnyDeviceMap[]; -+EXPORT_SYMBOL(_ZN9AnyDevice12clear_deviceEP12AnyDeviceMap); -+extern char _ZN9AnyDeviceC1Ev[]; -+EXPORT_SYMBOL(_ZN9AnyDeviceC1Ev); -+extern char _ZN9AnyDeviceC2Ev[]; -+EXPORT_SYMBOL(_ZN9AnyDeviceC2Ev); -+extern char _ZN9AnyDeviceD0Ev[]; -+EXPORT_SYMBOL(_ZN9AnyDeviceD0Ev); -+extern char _ZN9AnyDeviceD1Ev[]; -+EXPORT_SYMBOL(_ZN9AnyDeviceD1Ev); -+extern char _ZN9AnyDeviceD2Ev[]; -+EXPORT_SYMBOL(_ZN9AnyDeviceD2Ev); -+extern char _ZNK12AnyDeviceMap10lookup_allEP10net_devicebR6VectorIP9AnyDeviceE[]; -+EXPORT_SYMBOL(_ZNK12AnyDeviceMap10lookup_allEP10net_devicebR6VectorIP9AnyDeviceE); -+extern char _ZNK12AnyDeviceMap14lookup_unknownEP10net_deviceP9AnyDevice[]; -+EXPORT_SYMBOL(_ZNK12AnyDeviceMap14lookup_unknownEP10net_deviceP9AnyDevice); -+extern char _ZTV13AnyTaskDevice[]; -+EXPORT_SYMBOL(_ZTV13AnyTaskDevice); -+extern char _ZTV9AnyDevice[]; -+EXPORT_SYMBOL(_ZTV9AnyDevice); -+extern char _ZN8ARPFaker10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8ARPFaker10initializeEP12ErrorHandler); -+extern char _ZN8ARPFaker13make_responseEPhS0_S0_S0_[]; -+EXPORT_SYMBOL(_ZN8ARPFaker13make_responseEPhS0_S0_S0_); -+extern char _ZN8ARPFaker9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8ARPFaker9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN8ARPFaker9run_timerEP5Timer[]; -+EXPORT_SYMBOL(_ZN8ARPFaker9run_timerEP5Timer); -+extern char _ZN8ARPFakerC1Ev[]; -+EXPORT_SYMBOL(_ZN8ARPFakerC1Ev); -+extern char _ZN8ARPFakerC2Ev[]; -+EXPORT_SYMBOL(_ZN8ARPFakerC2Ev); -+extern char _ZN8ARPFakerD0Ev[]; -+EXPORT_SYMBOL(_ZN8ARPFakerD0Ev); -+extern char _ZN8ARPFakerD1Ev[]; -+EXPORT_SYMBOL(_ZN8ARPFakerD1Ev); -+extern char _ZN8ARPFakerD2Ev[]; -+EXPORT_SYMBOL(_ZN8ARPFakerD2Ev); -+extern char _ZNK8ARPFaker10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK8ARPFaker10class_nameEv); -+extern char _ZNK8ARPFaker10port_countEv[]; -+EXPORT_SYMBOL(_ZNK8ARPFaker10port_countEv); -+extern char _ZNK8ARPFaker10processingEv[]; -+EXPORT_SYMBOL(_ZNK8ARPFaker10processingEv); -+extern char _ZTV8ARPFaker[]; -+EXPORT_SYMBOL(_ZTV8ARPFaker); -+extern char _ZN11StringAccumC1Ev[]; -+EXPORT_SYMBOL(_ZN11StringAccumC1Ev); -+extern char _ZN11StringAccumD1Ev[]; -+EXPORT_SYMBOL(_ZN11StringAccumD1Ev); -+extern char _ZN12EtherAddressC1EPKh[]; -+EXPORT_SYMBOL(_ZN12EtherAddressC1EPKh); -+extern char _ZN8ARPPrint10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8ARPPrint10initializeEP12ErrorHandler); -+extern char _ZN8ARPPrint13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN8ARPPrint13simple_actionEP6Packet); -+extern char _ZN8ARPPrint7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN8ARPPrint7cleanupEN7Element12CleanupStageE); -+extern char _ZN8ARPPrint9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8ARPPrint9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN8ARPPrintC1Ev[]; -+EXPORT_SYMBOL(_ZN8ARPPrintC1Ev); -+extern char _ZN8ARPPrintC2Ev[]; -+EXPORT_SYMBOL(_ZN8ARPPrintC2Ev); -+extern char _ZN8ARPPrintD0Ev[]; -+EXPORT_SYMBOL(_ZN8ARPPrintD0Ev); -+extern char _ZN8ARPPrintD1Ev[]; -+EXPORT_SYMBOL(_ZN8ARPPrintD1Ev); -+extern char _ZN8ARPPrintD2Ev[]; -+EXPORT_SYMBOL(_ZN8ARPPrintD2Ev); -+extern char _ZNK8ARPPrint10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK8ARPPrint10class_nameEv); -+extern char _ZNK8ARPPrint10port_countEv[]; -+EXPORT_SYMBOL(_ZNK8ARPPrint10port_countEv); -+extern char _ZNK8ARPPrint10processingEv[]; -+EXPORT_SYMBOL(_ZNK8ARPPrint10processingEv); -+extern char _ZTV8ARPPrint[]; -+EXPORT_SYMBOL(_ZTV8ARPPrint); -+extern char _ZN10ARPQuerier10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10ARPQuerier10initializeEP12ErrorHandler); -+extern char _ZN10ARPQuerier10read_statsEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN10ARPQuerier10read_statsEP7ElementPv); -+extern char _ZN10ARPQuerier10read_tableEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN10ARPQuerier10read_tableEP7ElementPv); -+extern char _ZN10ARPQuerier10take_stateEP7ElementP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10ARPQuerier10take_stateEP7ElementP12ErrorHandler); -+extern char _ZN10ARPQuerier11expire_hookEP5TimerPv[]; -+EXPORT_SYMBOL(_ZN10ARPQuerier11expire_hookEP5TimerPv); -+extern char _ZN10ARPQuerier12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN10ARPQuerier12add_handlersEv); -+extern char _ZN10ARPQuerier13write_handlerERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10ARPQuerier13write_handlerERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN10ARPQuerier14send_query_forE9IPAddress[]; -+EXPORT_SYMBOL(_ZN10ARPQuerier14send_query_forE9IPAddress); -+extern char _ZN10ARPQuerier15handle_responseEP6Packet[]; -+EXPORT_SYMBOL(_ZN10ARPQuerier15handle_responseEP6Packet); -+extern char _ZN10ARPQuerier16live_reconfigureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10ARPQuerier16live_reconfigureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN10ARPQuerier4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN10ARPQuerier4pushEiP6Packet); -+extern char _ZN10ARPQuerier7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN10ARPQuerier7cleanupEN7Element12CleanupStageE); -+extern char _ZN10ARPQuerier9clear_mapEv[]; -+EXPORT_SYMBOL(_ZN10ARPQuerier9clear_mapEv); -+extern char _ZN10ARPQuerier9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10ARPQuerier9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN10ARPQuerier9handle_ipEP6Packet[]; -+EXPORT_SYMBOL(_ZN10ARPQuerier9handle_ipEP6Packet); -+extern char _ZN10ARPQuerierC1Ev[]; -+EXPORT_SYMBOL(_ZN10ARPQuerierC1Ev); -+extern char _ZN10ARPQuerierC2Ev[]; -+EXPORT_SYMBOL(_ZN10ARPQuerierC2Ev); -+extern char _ZN10ARPQuerierD0Ev[]; -+EXPORT_SYMBOL(_ZN10ARPQuerierD0Ev); -+extern char _ZN10ARPQuerierD1Ev[]; -+EXPORT_SYMBOL(_ZN10ARPQuerierD1Ev); -+extern char _ZN10ARPQuerierD2Ev[]; -+EXPORT_SYMBOL(_ZN10ARPQuerierD2Ev); -+extern char _ZNK10ARPQuerier10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK10ARPQuerier10class_nameEv); -+extern char _ZNK10ARPQuerier10port_countEv[]; -+EXPORT_SYMBOL(_ZNK10ARPQuerier10port_countEv); -+extern char _ZNK10ARPQuerier10processingEv[]; -+EXPORT_SYMBOL(_ZNK10ARPQuerier10processingEv); -+extern char _ZNK10ARPQuerier20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK10ARPQuerier20can_live_reconfigureEv); -+extern char _ZNK10ARPQuerier9flow_codeEv[]; -+EXPORT_SYMBOL(_ZNK10ARPQuerier9flow_codeEv); -+extern char _ZTV10ARPQuerier[]; -+EXPORT_SYMBOL(_ZTV10ARPQuerier); -+extern char _ZN12ARPResponder12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN12ARPResponder12add_handlersEv); -+extern char _ZN12ARPResponder12read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN12ARPResponder12read_handlerEP7ElementPv); -+extern char _ZN12ARPResponder13make_responseEPhS0_S0_S0_P6Packet[]; -+EXPORT_SYMBOL(_ZN12ARPResponder13make_responseEPhS0_S0_S0_P6Packet); -+extern char _ZN12ARPResponder13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN12ARPResponder13simple_actionEP6Packet); -+extern char _ZN12ARPResponder16live_reconfigureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12ARPResponder16live_reconfigureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12ARPResponder7add_mapE9IPAddressS0_12EtherAddress[]; -+EXPORT_SYMBOL(_ZN12ARPResponder7add_mapE9IPAddressS0_12EtherAddress); -+extern char _ZN12ARPResponder9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12ARPResponder9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12ARPResponderC1Ev[]; -+EXPORT_SYMBOL(_ZN12ARPResponderC1Ev); -+extern char _ZN12ARPResponderC2Ev[]; -+EXPORT_SYMBOL(_ZN12ARPResponderC2Ev); -+extern char _ZN12ARPResponderD0Ev[]; -+EXPORT_SYMBOL(_ZN12ARPResponderD0Ev); -+extern char _ZN12ARPResponderD1Ev[]; -+EXPORT_SYMBOL(_ZN12ARPResponderD1Ev); -+extern char _ZN12ARPResponderD2Ev[]; -+EXPORT_SYMBOL(_ZN12ARPResponderD2Ev); -+extern char _ZN6VectorIN12ARPResponder5EntryEE5eraseEPS1_S3_[]; -+EXPORT_SYMBOL(_ZN6VectorIN12ARPResponder5EntryEE5eraseEPS1_S3_); -+extern char _ZN6VectorIN12ARPResponder5EntryEE7reserveEi[]; -+EXPORT_SYMBOL(_ZN6VectorIN12ARPResponder5EntryEE7reserveEi); -+extern char _ZN6VectorIN12ARPResponder5EntryEEC1ERKS2_[]; -+EXPORT_SYMBOL(_ZN6VectorIN12ARPResponder5EntryEEC1ERKS2_); -+extern char _ZN6VectorIN12ARPResponder5EntryEED1Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIN12ARPResponder5EntryEED1Ev); -+extern char _ZN6VectorIN12ARPResponder5EntryEEaSERKS2_[]; -+EXPORT_SYMBOL(_ZN6VectorIN12ARPResponder5EntryEEaSERKS2_); -+extern char _ZNK12ARPResponder10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12ARPResponder10class_nameEv); -+extern char _ZNK12ARPResponder10port_countEv[]; -+EXPORT_SYMBOL(_ZNK12ARPResponder10port_countEv); -+extern char _ZNK12ARPResponder10processingEv[]; -+EXPORT_SYMBOL(_ZNK12ARPResponder10processingEv); -+extern char _ZNK12ARPResponder20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK12ARPResponder20can_live_reconfigureEv); -+extern char _ZNK12ARPResponder6lookupE9IPAddressR12EtherAddress[]; -+EXPORT_SYMBOL(_ZNK12ARPResponder6lookupE9IPAddressR12EtherAddress); -+extern char _ZTV12ARPResponder[]; -+EXPORT_SYMBOL(_ZTV12ARPResponder); -+extern char _ZN14AverageCounter10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14AverageCounter10initializeEP12ErrorHandler); -+extern char _ZN14AverageCounter12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN14AverageCounter12add_handlersEv); -+extern char _ZN14AverageCounter13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN14AverageCounter13simple_actionEP6Packet); -+extern char _ZN14AverageCounter5resetEv[]; -+EXPORT_SYMBOL(_ZN14AverageCounter5resetEv); -+extern char _ZN14AverageCounter9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14AverageCounter9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN14AverageCounterC1Ev[]; -+EXPORT_SYMBOL(_ZN14AverageCounterC1Ev); -+extern char _ZN14AverageCounterC2Ev[]; -+EXPORT_SYMBOL(_ZN14AverageCounterC2Ev); -+extern char _ZN14AverageCounterD0Ev[]; -+EXPORT_SYMBOL(_ZN14AverageCounterD0Ev); -+extern char _ZN14AverageCounterD1Ev[]; -+EXPORT_SYMBOL(_ZN14AverageCounterD1Ev); -+extern char _ZN14AverageCounterD2Ev[]; -+EXPORT_SYMBOL(_ZN14AverageCounterD2Ev); -+extern char _ZNK14AverageCounter10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK14AverageCounter10class_nameEv); -+extern char _ZNK14AverageCounter10port_countEv[]; -+EXPORT_SYMBOL(_ZNK14AverageCounter10port_countEv); -+extern char _ZNK14AverageCounter10processingEv[]; -+EXPORT_SYMBOL(_ZNK14AverageCounter10processingEv); -+extern char _ZTV14AverageCounter[]; -+EXPORT_SYMBOL(_ZTV14AverageCounter); -+extern char _ZN11DirectEWMAXI19RateEWMAXParametersILj4ELj10EjiEE8update_nEjj[]; -+EXPORT_SYMBOL(_ZN11DirectEWMAXI19RateEWMAXParametersILj4ELj10EjiEE8update_nEjj); -+extern char _ZN14BandwidthMeter10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14BandwidthMeter10initializeEP12ErrorHandler); -+extern char _ZN14BandwidthMeter12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN14BandwidthMeter12add_handlersEv); -+extern char _ZN14BandwidthMeter17read_rate_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN14BandwidthMeter17read_rate_handlerEP7ElementPv); -+extern char _ZN14BandwidthMeter19meters_read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN14BandwidthMeter19meters_read_handlerEP7ElementPv); -+extern char _ZN14BandwidthMeter4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN14BandwidthMeter4pushEiP6Packet); -+extern char _ZN14BandwidthMeter9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14BandwidthMeter9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN14BandwidthMeterC1Ev[]; -+EXPORT_SYMBOL(_ZN14BandwidthMeterC1Ev); -+extern char _ZN14BandwidthMeterC2Ev[]; -+EXPORT_SYMBOL(_ZN14BandwidthMeterC2Ev); -+extern char _ZN14BandwidthMeterD0Ev[]; -+EXPORT_SYMBOL(_ZN14BandwidthMeterD0Ev); -+extern char _ZN14BandwidthMeterD1Ev[]; -+EXPORT_SYMBOL(_ZN14BandwidthMeterD1Ev); -+extern char _ZN14BandwidthMeterD2Ev[]; -+EXPORT_SYMBOL(_ZN14BandwidthMeterD2Ev); -+extern char _ZNK14BandwidthMeter10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK14BandwidthMeter10class_nameEv); -+extern char _ZNK14BandwidthMeter10port_countEv[]; -+EXPORT_SYMBOL(_ZNK14BandwidthMeter10port_countEv); -+extern char _ZNK14BandwidthMeter10processingEv[]; -+EXPORT_SYMBOL(_ZNK14BandwidthMeter10processingEv); -+extern char _ZTV14BandwidthMeter[]; -+EXPORT_SYMBOL(_ZTV14BandwidthMeter); -+extern char _ZN15BandwidthShaper4pullEi[]; -+EXPORT_SYMBOL(_ZN15BandwidthShaper4pullEi); -+extern char _ZN15BandwidthShaperC1Ev[]; -+EXPORT_SYMBOL(_ZN15BandwidthShaperC1Ev); -+extern char _ZN15BandwidthShaperC2Ev[]; -+EXPORT_SYMBOL(_ZN15BandwidthShaperC2Ev); -+extern char _ZN15BandwidthShaperD0Ev[]; -+EXPORT_SYMBOL(_ZN15BandwidthShaperD0Ev); -+extern char _ZN15BandwidthShaperD1Ev[]; -+EXPORT_SYMBOL(_ZN15BandwidthShaperD1Ev); -+extern char _ZN15BandwidthShaperD2Ev[]; -+EXPORT_SYMBOL(_ZN15BandwidthShaperD2Ev); -+extern char _ZNK15BandwidthShaper10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK15BandwidthShaper10class_nameEv); -+extern char _ZNK6Shaper10port_countEv[]; -+EXPORT_SYMBOL(_ZNK6Shaper10port_countEv); -+extern char _ZNK6Shaper10processingEv[]; -+EXPORT_SYMBOL(_ZNK6Shaper10processingEv); -+extern char _ZNK6Shaper20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK6Shaper20can_live_reconfigureEv); -+extern char _ZTV15BandwidthShaper[]; -+EXPORT_SYMBOL(_ZTV15BandwidthShaper); -+extern char _ZN13HashMap_Arena10hard_allocEv[]; -+EXPORT_SYMBOL(_ZN13HashMap_Arena10hard_allocEv); -+extern char _ZN13HashMap_ArenaC1Ej[]; -+EXPORT_SYMBOL(_ZN13HashMap_ArenaC1Ej); -+extern char _ZN13HashMap_ArenaC2Ej[]; -+EXPORT_SYMBOL(_ZN13HashMap_ArenaC2Ej); -+extern char _ZN13HashMap_ArenaD1Ev[]; -+EXPORT_SYMBOL(_ZN13HashMap_ArenaD1Ev); -+extern char _ZN13HashMap_ArenaD2Ev[]; -+EXPORT_SYMBOL(_ZN13HashMap_ArenaD2Ev); -+extern char _ZN20HashMap_ArenaFactory11the_factoryE[]; -+EXPORT_SYMBOL(_ZN20HashMap_ArenaFactory11the_factoryE); -+extern char _ZN20HashMap_ArenaFactory14get_arena_funcEj[]; -+EXPORT_SYMBOL(_ZN20HashMap_ArenaFactory14get_arena_funcEj); -+extern char _ZN20HashMap_ArenaFactory14static_cleanupEv[]; -+EXPORT_SYMBOL(_ZN20HashMap_ArenaFactory14static_cleanupEv); -+extern char _ZN20HashMap_ArenaFactory17static_initializeEv[]; -+EXPORT_SYMBOL(_ZN20HashMap_ArenaFactory17static_initializeEv); -+extern char _ZN20HashMap_ArenaFactory9get_arenaEjPS_[]; -+EXPORT_SYMBOL(_ZN20HashMap_ArenaFactory9get_arenaEjPS_); -+extern char _ZN20HashMap_ArenaFactoryC1Ev[]; -+EXPORT_SYMBOL(_ZN20HashMap_ArenaFactoryC1Ev); -+extern char _ZN20HashMap_ArenaFactoryC2Ev[]; -+EXPORT_SYMBOL(_ZN20HashMap_ArenaFactoryC2Ev); -+extern char _ZN20HashMap_ArenaFactoryD0Ev[]; -+EXPORT_SYMBOL(_ZN20HashMap_ArenaFactoryD0Ev); -+extern char _ZN20HashMap_ArenaFactoryD1Ev[]; -+EXPORT_SYMBOL(_ZN20HashMap_ArenaFactoryD1Ev); -+extern char _ZN20HashMap_ArenaFactoryD2Ev[]; -+EXPORT_SYMBOL(_ZN20HashMap_ArenaFactoryD2Ev); -+extern char _ZTV20HashMap_ArenaFactory[]; -+EXPORT_SYMBOL(_ZTV20HashMap_ArenaFactory); -+extern char _ZN9Bitvector10clear_lastEv[]; -+EXPORT_SYMBOL(_ZN9Bitvector10clear_lastEv); -+extern char _ZN9Bitvector13resize_to_maxEib[]; -+EXPORT_SYMBOL(_ZN9Bitvector13resize_to_maxEib); -+extern char _ZN9Bitvector18or_with_differenceERKS_RS_[]; -+EXPORT_SYMBOL(_ZN9Bitvector18or_with_differenceERKS_RS_); -+extern char _ZN9Bitvector23finish_copy_constructorERKS_[]; -+EXPORT_SYMBOL(_ZN9Bitvector23finish_copy_constructorERKS_); -+extern char _ZN9Bitvector5clearEv[]; -+EXPORT_SYMBOL(_ZN9Bitvector5clearEv); -+extern char _ZN9Bitvector5or_atERKS_i[]; -+EXPORT_SYMBOL(_ZN9Bitvector5or_atERKS_i); -+extern char _ZN9Bitvector6assignEib[]; -+EXPORT_SYMBOL(_ZN9Bitvector6assignEib); -+extern char _ZN9Bitvector6negateEv[]; -+EXPORT_SYMBOL(_ZN9Bitvector6negateEv); -+extern char _ZN9BitvectoraNERKS_[]; -+EXPORT_SYMBOL(_ZN9BitvectoraNERKS_); -+extern char _ZN9BitvectoraSERKS_[]; -+EXPORT_SYMBOL(_ZN9BitvectoraSERKS_); -+extern char _ZN9BitvectoreOERKS_[]; -+EXPORT_SYMBOL(_ZN9BitvectoreOERKS_); -+extern char _ZN9BitvectoroRERKS_[]; -+EXPORT_SYMBOL(_ZN9BitvectoroRERKS_); -+extern char _ZNK9Bitvector20nonzero_intersectionERKS_[]; -+EXPORT_SYMBOL(_ZNK9Bitvector20nonzero_intersectionERKS_); -+extern char _ZNK9Bitvector4zeroEv[]; -+EXPORT_SYMBOL(_ZNK9Bitvector4zeroEv); -+extern char _ZN7Burster10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7Burster10initializeEP12ErrorHandler); -+extern char _ZN7Burster9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7Burster9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN7Burster9run_timerEP5Timer[]; -+EXPORT_SYMBOL(_ZN7Burster9run_timerEP5Timer); -+extern char _ZN7BursterC1Ev[]; -+EXPORT_SYMBOL(_ZN7BursterC1Ev); -+extern char _ZN7BursterC2Ev[]; -+EXPORT_SYMBOL(_ZN7BursterC2Ev); -+extern char _ZN7BursterD0Ev[]; -+EXPORT_SYMBOL(_ZN7BursterD0Ev); -+extern char _ZN7BursterD1Ev[]; -+EXPORT_SYMBOL(_ZN7BursterD1Ev); -+extern char _ZN7BursterD2Ev[]; -+EXPORT_SYMBOL(_ZN7BursterD2Ev); -+extern char _ZNK7Burster10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK7Burster10class_nameEv); -+extern char _ZNK7Burster10port_countEv[]; -+EXPORT_SYMBOL(_ZNK7Burster10port_countEv); -+extern char _ZNK7Burster10processingEv[]; -+EXPORT_SYMBOL(_ZNK7Burster10processingEv); -+extern char _ZTV7Burster[]; -+EXPORT_SYMBOL(_ZTV7Burster); -+extern char _ZN22BandwidthRatedSplitter4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN22BandwidthRatedSplitter4pushEiP6Packet); -+extern char _ZN22BandwidthRatedSplitterC1Ev[]; -+EXPORT_SYMBOL(_ZN22BandwidthRatedSplitterC1Ev); -+extern char _ZN22BandwidthRatedSplitterC2Ev[]; -+EXPORT_SYMBOL(_ZN22BandwidthRatedSplitterC2Ev); -+extern char _ZN22BandwidthRatedSplitterD0Ev[]; -+EXPORT_SYMBOL(_ZN22BandwidthRatedSplitterD0Ev); -+extern char _ZN22BandwidthRatedSplitterD1Ev[]; -+EXPORT_SYMBOL(_ZN22BandwidthRatedSplitterD1Ev); -+extern char _ZN22BandwidthRatedSplitterD2Ev[]; -+EXPORT_SYMBOL(_ZN22BandwidthRatedSplitterD2Ev); -+extern char _ZNK13RatedSplitter10port_countEv[]; -+EXPORT_SYMBOL(_ZNK13RatedSplitter10port_countEv); -+extern char _ZNK13RatedSplitter10processingEv[]; -+EXPORT_SYMBOL(_ZNK13RatedSplitter10processingEv); -+extern char _ZNK13RatedSplitter20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK13RatedSplitter20can_live_reconfigureEv); -+extern char _ZNK22BandwidthRatedSplitter10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK22BandwidthRatedSplitter10class_nameEv); -+extern char _ZTV22BandwidthRatedSplitter[]; -+EXPORT_SYMBOL(_ZTV22BandwidthRatedSplitter); -+extern char _ZN21BandwidthRatedUnqueue8run_taskEP4Task[]; -+EXPORT_SYMBOL(_ZN21BandwidthRatedUnqueue8run_taskEP4Task); -+extern char _ZN21BandwidthRatedUnqueueC1Ev[]; -+EXPORT_SYMBOL(_ZN21BandwidthRatedUnqueueC1Ev); -+extern char _ZN21BandwidthRatedUnqueueC2Ev[]; -+EXPORT_SYMBOL(_ZN21BandwidthRatedUnqueueC2Ev); -+extern char _ZN21BandwidthRatedUnqueueD0Ev[]; -+EXPORT_SYMBOL(_ZN21BandwidthRatedUnqueueD0Ev); -+extern char _ZN21BandwidthRatedUnqueueD1Ev[]; -+EXPORT_SYMBOL(_ZN21BandwidthRatedUnqueueD1Ev); -+extern char _ZN21BandwidthRatedUnqueueD2Ev[]; -+EXPORT_SYMBOL(_ZN21BandwidthRatedUnqueueD2Ev); -+extern char _ZNK12RatedUnqueue10port_countEv[]; -+EXPORT_SYMBOL(_ZNK12RatedUnqueue10port_countEv); -+extern char _ZNK12RatedUnqueue10processingEv[]; -+EXPORT_SYMBOL(_ZNK12RatedUnqueue10processingEv); -+extern char _ZNK12RatedUnqueue20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK12RatedUnqueue20can_live_reconfigureEv); -+extern char _ZNK14NotifierSignal6activeEv[]; -+EXPORT_SYMBOL(_ZNK14NotifierSignal6activeEv); -+extern char _ZNK21BandwidthRatedUnqueue10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK21BandwidthRatedUnqueue10class_nameEv); -+extern char _ZTV21BandwidthRatedUnqueue[]; -+EXPORT_SYMBOL(_ZTV21BandwidthRatedUnqueue); -+extern char _ZN14CheckARPHeader12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN14CheckARPHeader12add_handlersEv); -+extern char _ZN14CheckARPHeader12read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN14CheckARPHeader12read_handlerEP7ElementPv); -+extern char _ZN14CheckARPHeader12reason_textsE[]; -+EXPORT_SYMBOL(_ZN14CheckARPHeader12reason_textsE); -+extern char _ZN14CheckARPHeader13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN14CheckARPHeader13simple_actionEP6Packet); -+extern char _ZN14CheckARPHeader4dropENS_6ReasonEP6Packet[]; -+EXPORT_SYMBOL(_ZN14CheckARPHeader4dropENS_6ReasonEP6Packet); -+extern char _ZN14CheckARPHeader9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14CheckARPHeader9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN14CheckARPHeaderC1Ev[]; -+EXPORT_SYMBOL(_ZN14CheckARPHeaderC1Ev); -+extern char _ZN14CheckARPHeaderC2Ev[]; -+EXPORT_SYMBOL(_ZN14CheckARPHeaderC2Ev); -+extern char _ZN14CheckARPHeaderD0Ev[]; -+EXPORT_SYMBOL(_ZN14CheckARPHeaderD0Ev); -+extern char _ZN14CheckARPHeaderD1Ev[]; -+EXPORT_SYMBOL(_ZN14CheckARPHeaderD1Ev); -+extern char _ZN14CheckARPHeaderD2Ev[]; -+EXPORT_SYMBOL(_ZN14CheckARPHeaderD2Ev); -+extern char _ZNK14CheckARPHeader10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK14CheckARPHeader10class_nameEv); -+extern char _ZNK14CheckARPHeader10port_countEv[]; -+EXPORT_SYMBOL(_ZNK14CheckARPHeader10port_countEv); -+extern char _ZNK14CheckARPHeader10processingEv[]; -+EXPORT_SYMBOL(_ZNK14CheckARPHeader10processingEv); -+extern char _ZTV14CheckARPHeader[]; -+EXPORT_SYMBOL(_ZTV14CheckARPHeader); -+extern char _ZN10CheckCRC3213simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN10CheckCRC3213simple_actionEP6Packet); -+extern char _ZN10CheckCRC32C1Ev[]; -+EXPORT_SYMBOL(_ZN10CheckCRC32C1Ev); -+extern char _ZN10CheckCRC32C2Ev[]; -+EXPORT_SYMBOL(_ZN10CheckCRC32C2Ev); -+extern char _ZN10CheckCRC32D0Ev[]; -+EXPORT_SYMBOL(_ZN10CheckCRC32D0Ev); -+extern char _ZN10CheckCRC32D1Ev[]; -+EXPORT_SYMBOL(_ZN10CheckCRC32D1Ev); -+extern char _ZN10CheckCRC32D2Ev[]; -+EXPORT_SYMBOL(_ZN10CheckCRC32D2Ev); -+extern char _ZNK10CheckCRC3210class_nameEv[]; -+EXPORT_SYMBOL(_ZNK10CheckCRC3210class_nameEv); -+extern char _ZNK10CheckCRC3210port_countEv[]; -+EXPORT_SYMBOL(_ZNK10CheckCRC3210port_countEv); -+extern char _ZNK10CheckCRC3210processingEv[]; -+EXPORT_SYMBOL(_ZNK10CheckCRC3210processingEv); -+extern char _ZTV10CheckCRC32[]; -+EXPORT_SYMBOL(_ZTV10CheckCRC32); -+extern char _ZN15CheckICMPHeader12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN15CheckICMPHeader12add_handlersEv); -+extern char _ZN15CheckICMPHeader12read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN15CheckICMPHeader12read_handlerEP7ElementPv); -+extern char _ZN15CheckICMPHeader12reason_textsE[]; -+EXPORT_SYMBOL(_ZN15CheckICMPHeader12reason_textsE); -+extern char _ZN15CheckICMPHeader13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN15CheckICMPHeader13simple_actionEP6Packet); -+extern char _ZN15CheckICMPHeader4dropENS_6ReasonEP6Packet[]; -+EXPORT_SYMBOL(_ZN15CheckICMPHeader4dropENS_6ReasonEP6Packet); -+extern char _ZN15CheckICMPHeader9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN15CheckICMPHeader9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN15CheckICMPHeaderC1Ev[]; -+EXPORT_SYMBOL(_ZN15CheckICMPHeaderC1Ev); -+extern char _ZN15CheckICMPHeaderC2Ev[]; -+EXPORT_SYMBOL(_ZN15CheckICMPHeaderC2Ev); -+extern char _ZN15CheckICMPHeaderD0Ev[]; -+EXPORT_SYMBOL(_ZN15CheckICMPHeaderD0Ev); -+extern char _ZN15CheckICMPHeaderD1Ev[]; -+EXPORT_SYMBOL(_ZN15CheckICMPHeaderD1Ev); -+extern char _ZN15CheckICMPHeaderD2Ev[]; -+EXPORT_SYMBOL(_ZN15CheckICMPHeaderD2Ev); -+extern char _ZNK15CheckICMPHeader10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK15CheckICMPHeader10class_nameEv); -+extern char _ZNK15CheckICMPHeader10port_countEv[]; -+EXPORT_SYMBOL(_ZNK15CheckICMPHeader10port_countEv); -+extern char _ZNK15CheckICMPHeader10processingEv[]; -+EXPORT_SYMBOL(_ZNK15CheckICMPHeader10processingEv); -+extern char _ZTV15CheckICMPHeader[]; -+EXPORT_SYMBOL(_ZTV15CheckICMPHeader); -+extern char _ZN13CheckIPHeader12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN13CheckIPHeader12add_handlersEv); -+extern char _ZN13CheckIPHeader12read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN13CheckIPHeader12read_handlerEP7ElementPv); -+extern char _ZN13CheckIPHeader12reason_textsE[]; -+EXPORT_SYMBOL(_ZN13CheckIPHeader12reason_textsE); -+extern char _ZN13CheckIPHeader13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN13CheckIPHeader13simple_actionEP6Packet); -+extern char _ZN13CheckIPHeader14static_cleanupEv[]; -+EXPORT_SYMBOL(_ZN13CheckIPHeader14static_cleanupEv); -+extern char _ZN13CheckIPHeader17static_initializeEv[]; -+EXPORT_SYMBOL(_ZN13CheckIPHeader17static_initializeEv); -+extern char _ZN13CheckIPHeader4dropENS_6ReasonEP6Packet[]; -+EXPORT_SYMBOL(_ZN13CheckIPHeader4dropENS_6ReasonEP6Packet); -+extern char _ZN13CheckIPHeader9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13CheckIPHeader9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN13CheckIPHeaderC1Ev[]; -+EXPORT_SYMBOL(_ZN13CheckIPHeaderC1Ev); -+extern char _ZN13CheckIPHeaderC2Ev[]; -+EXPORT_SYMBOL(_ZN13CheckIPHeaderC2Ev); -+extern char _ZN13CheckIPHeaderD0Ev[]; -+EXPORT_SYMBOL(_ZN13CheckIPHeaderD0Ev); -+extern char _ZN13CheckIPHeaderD1Ev[]; -+EXPORT_SYMBOL(_ZN13CheckIPHeaderD1Ev); -+extern char _ZN13CheckIPHeaderD2Ev[]; -+EXPORT_SYMBOL(_ZN13CheckIPHeaderD2Ev); -+extern char _ZNK13CheckIPHeader10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK13CheckIPHeader10class_nameEv); -+extern char _ZNK13CheckIPHeader10port_countEv[]; -+EXPORT_SYMBOL(_ZNK13CheckIPHeader10port_countEv); -+extern char _ZNK13CheckIPHeader10processingEv[]; -+EXPORT_SYMBOL(_ZNK13CheckIPHeader10processingEv); -+extern char _ZNK13CheckIPHeader5flagsEv[]; -+EXPORT_SYMBOL(_ZNK13CheckIPHeader5flagsEv); -+extern char _ZTV13CheckIPHeader[]; -+EXPORT_SYMBOL(_ZTV13CheckIPHeader); -+extern char _ZN14CheckIPHeader2C1Ev[]; -+EXPORT_SYMBOL(_ZN14CheckIPHeader2C1Ev); -+extern char _ZN14CheckIPHeader2C2Ev[]; -+EXPORT_SYMBOL(_ZN14CheckIPHeader2C2Ev); -+extern char _ZN14CheckIPHeader2D0Ev[]; -+EXPORT_SYMBOL(_ZN14CheckIPHeader2D0Ev); -+extern char _ZN14CheckIPHeader2D1Ev[]; -+EXPORT_SYMBOL(_ZN14CheckIPHeader2D1Ev); -+extern char _ZN14CheckIPHeader2D2Ev[]; -+EXPORT_SYMBOL(_ZN14CheckIPHeader2D2Ev); -+extern char _ZNK14CheckIPHeader210class_nameEv[]; -+EXPORT_SYMBOL(_ZNK14CheckIPHeader210class_nameEv); -+extern char _ZTV14CheckIPHeader2[]; -+EXPORT_SYMBOL(_ZTV14CheckIPHeader2); -+extern char _ZN11CheckLength4pullEi[]; -+EXPORT_SYMBOL(_ZN11CheckLength4pullEi); -+extern char _ZN11CheckLength4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN11CheckLength4pushEiP6Packet); -+extern char _ZN11CheckLength9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11CheckLength9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN11CheckLengthC1Ev[]; -+EXPORT_SYMBOL(_ZN11CheckLengthC1Ev); -+extern char _ZN11CheckLengthC2Ev[]; -+EXPORT_SYMBOL(_ZN11CheckLengthC2Ev); -+extern char _ZN11CheckLengthD0Ev[]; -+EXPORT_SYMBOL(_ZN11CheckLengthD0Ev); -+extern char _ZN11CheckLengthD1Ev[]; -+EXPORT_SYMBOL(_ZN11CheckLengthD1Ev); -+extern char _ZN11CheckLengthD2Ev[]; -+EXPORT_SYMBOL(_ZN11CheckLengthD2Ev); -+extern char _ZNK11CheckLength10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK11CheckLength10class_nameEv); -+extern char _ZNK11CheckLength10port_countEv[]; -+EXPORT_SYMBOL(_ZNK11CheckLength10port_countEv); -+extern char _ZNK11CheckLength10processingEv[]; -+EXPORT_SYMBOL(_ZNK11CheckLength10processingEv); -+extern char _ZTV11CheckLength[]; -+EXPORT_SYMBOL(_ZTV11CheckLength); -+extern char _ZN10CheckPaint4pullEi[]; -+EXPORT_SYMBOL(_ZN10CheckPaint4pullEi); -+extern char _ZN10CheckPaint4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN10CheckPaint4pushEiP6Packet); -+extern char _ZN10CheckPaint9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10CheckPaint9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN10CheckPaintC1Ev[]; -+EXPORT_SYMBOL(_ZN10CheckPaintC1Ev); -+extern char _ZN10CheckPaintC2Ev[]; -+EXPORT_SYMBOL(_ZN10CheckPaintC2Ev); -+extern char _ZN10CheckPaintD0Ev[]; -+EXPORT_SYMBOL(_ZN10CheckPaintD0Ev); -+extern char _ZN10CheckPaintD1Ev[]; -+EXPORT_SYMBOL(_ZN10CheckPaintD1Ev); -+extern char _ZN10CheckPaintD2Ev[]; -+EXPORT_SYMBOL(_ZN10CheckPaintD2Ev); -+extern char _ZNK10CheckPaint10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK10CheckPaint10class_nameEv); -+extern char _ZNK10CheckPaint10port_countEv[]; -+EXPORT_SYMBOL(_ZNK10CheckPaint10port_countEv); -+extern char _ZNK10CheckPaint10processingEv[]; -+EXPORT_SYMBOL(_ZNK10CheckPaint10processingEv); -+extern char _ZTV10CheckPaint[]; -+EXPORT_SYMBOL(_ZTV10CheckPaint); -+extern char _ZN14CheckTCPHeader12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN14CheckTCPHeader12add_handlersEv); -+extern char _ZN14CheckTCPHeader12read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN14CheckTCPHeader12read_handlerEP7ElementPv); -+extern char _ZN14CheckTCPHeader12reason_textsE[]; -+EXPORT_SYMBOL(_ZN14CheckTCPHeader12reason_textsE); -+extern char _ZN14CheckTCPHeader13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN14CheckTCPHeader13simple_actionEP6Packet); -+extern char _ZN14CheckTCPHeader4dropENS_6ReasonEP6Packet[]; -+EXPORT_SYMBOL(_ZN14CheckTCPHeader4dropENS_6ReasonEP6Packet); -+extern char _ZN14CheckTCPHeader9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14CheckTCPHeader9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN14CheckTCPHeaderC1Ev[]; -+EXPORT_SYMBOL(_ZN14CheckTCPHeaderC1Ev); -+extern char _ZN14CheckTCPHeaderC2Ev[]; -+EXPORT_SYMBOL(_ZN14CheckTCPHeaderC2Ev); -+extern char _ZN14CheckTCPHeaderD0Ev[]; -+EXPORT_SYMBOL(_ZN14CheckTCPHeaderD0Ev); -+extern char _ZN14CheckTCPHeaderD1Ev[]; -+EXPORT_SYMBOL(_ZN14CheckTCPHeaderD1Ev); -+extern char _ZN14CheckTCPHeaderD2Ev[]; -+EXPORT_SYMBOL(_ZN14CheckTCPHeaderD2Ev); -+extern char _ZNK14CheckTCPHeader10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK14CheckTCPHeader10class_nameEv); -+extern char _ZNK14CheckTCPHeader10port_countEv[]; -+EXPORT_SYMBOL(_ZNK14CheckTCPHeader10port_countEv); -+extern char _ZNK14CheckTCPHeader10processingEv[]; -+EXPORT_SYMBOL(_ZNK14CheckTCPHeader10processingEv); -+extern char _ZTV14CheckTCPHeader[]; -+EXPORT_SYMBOL(_ZTV14CheckTCPHeader); -+extern char _ZN14CheckUDPHeader12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN14CheckUDPHeader12add_handlersEv); -+extern char _ZN14CheckUDPHeader12read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN14CheckUDPHeader12read_handlerEP7ElementPv); -+extern char _ZN14CheckUDPHeader12reason_textsE[]; -+EXPORT_SYMBOL(_ZN14CheckUDPHeader12reason_textsE); -+extern char _ZN14CheckUDPHeader13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN14CheckUDPHeader13simple_actionEP6Packet); -+extern char _ZN14CheckUDPHeader4dropENS_6ReasonEP6Packet[]; -+EXPORT_SYMBOL(_ZN14CheckUDPHeader4dropENS_6ReasonEP6Packet); -+extern char _ZN14CheckUDPHeader9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14CheckUDPHeader9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN14CheckUDPHeaderC1Ev[]; -+EXPORT_SYMBOL(_ZN14CheckUDPHeaderC1Ev); -+extern char _ZN14CheckUDPHeaderC2Ev[]; -+EXPORT_SYMBOL(_ZN14CheckUDPHeaderC2Ev); -+extern char _ZN14CheckUDPHeaderD0Ev[]; -+EXPORT_SYMBOL(_ZN14CheckUDPHeaderD0Ev); -+extern char _ZN14CheckUDPHeaderD1Ev[]; -+EXPORT_SYMBOL(_ZN14CheckUDPHeaderD1Ev); -+extern char _ZN14CheckUDPHeaderD2Ev[]; -+EXPORT_SYMBOL(_ZN14CheckUDPHeaderD2Ev); -+extern char _ZNK14CheckUDPHeader10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK14CheckUDPHeader10class_nameEv); -+extern char _ZNK14CheckUDPHeader10port_countEv[]; -+EXPORT_SYMBOL(_ZNK14CheckUDPHeader10port_countEv); -+extern char _ZNK14CheckUDPHeader10processingEv[]; -+EXPORT_SYMBOL(_ZNK14CheckUDPHeader10processingEv); -+extern char _ZTV14CheckUDPHeader[]; -+EXPORT_SYMBOL(_ZTV14CheckUDPHeader); -+extern char _ZN10Classifier12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN10Classifier12add_handlersEv); -+extern char _ZN10Classifier14optimize_exprsEP12ErrorHandleri[]; -+EXPORT_SYMBOL(_ZN10Classifier14optimize_exprsEP12ErrorHandleri); -+extern char _ZN10Classifier14program_stringEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN10Classifier14program_stringEP7ElementPv); -+extern char _ZN10Classifier17init_expr_subtreeER6VectorIiE[]; -+EXPORT_SYMBOL(_ZN10Classifier17init_expr_subtreeER6VectorIiE); -+extern char _ZN10Classifier18DominatorOptimizer12shift_branchEi[]; -+EXPORT_SYMBOL(_ZN10Classifier18DominatorOptimizer12shift_branchEi); -+extern char _ZN10Classifier18DominatorOptimizer13calculate_domEi[]; -+EXPORT_SYMBOL(_ZN10Classifier18DominatorOptimizer13calculate_domEi); -+extern char _ZN10Classifier18DominatorOptimizer15intersect_listsERK6VectorIiES4_S4_iiRS2_[]; -+EXPORT_SYMBOL(_ZN10Classifier18DominatorOptimizer15intersect_listsERK6VectorIiES4_S4_iiRS2_); -+extern char _ZN10Classifier18DominatorOptimizer16dom_shift_branchEiiiiP6VectorIiE[]; -+EXPORT_SYMBOL(_ZN10Classifier18DominatorOptimizer16dom_shift_branchEiiiiP6VectorIiE); -+extern char _ZN10Classifier18DominatorOptimizer26last_common_state_in_listsERK6VectorIiES4_S4_[]; -+EXPORT_SYMBOL(_ZN10Classifier18DominatorOptimizer26last_common_state_in_listsERK6VectorIiES4_S4_); -+extern char _ZN10Classifier18DominatorOptimizer3runEi[]; -+EXPORT_SYMBOL(_ZN10Classifier18DominatorOptimizer3runEi); -+extern char _ZN10Classifier18DominatorOptimizerC1EPS_[]; -+EXPORT_SYMBOL(_ZN10Classifier18DominatorOptimizerC1EPS_); -+extern char _ZN10Classifier18DominatorOptimizerC2EPS_[]; -+EXPORT_SYMBOL(_ZN10Classifier18DominatorOptimizerC2EPS_); -+extern char _ZN10Classifier18start_expr_subtreeER6VectorIiE[]; -+EXPORT_SYMBOL(_ZN10Classifier18start_expr_subtreeER6VectorIiE); -+extern char _ZN10Classifier19finish_expr_subtreeER6VectorIiENS_8CombinerEii[]; -+EXPORT_SYMBOL(_ZN10Classifier19finish_expr_subtreeER6VectorIiENS_8CombinerEii); -+extern char _ZN10Classifier19length_checked_pushEP6Packet[]; -+EXPORT_SYMBOL(_ZN10Classifier19length_checked_pushEP6Packet); -+extern char _ZN10Classifier19negate_expr_subtreeER6VectorIiE[]; -+EXPORT_SYMBOL(_ZN10Classifier19negate_expr_subtreeER6VectorIiE); -+extern char _ZN10Classifier20remove_unused_statesEv[]; -+EXPORT_SYMBOL(_ZN10Classifier20remove_unused_statesEv); -+extern char _ZN10Classifier21bubble_sort_and_exprsEi[]; -+EXPORT_SYMBOL(_ZN10Classifier21bubble_sort_and_exprsEi); -+extern char _ZN10Classifier21redirect_expr_subtreeEiiii[]; -+EXPORT_SYMBOL(_ZN10Classifier21redirect_expr_subtreeEiiii); -+extern char _ZN10Classifier25combine_compatible_statesEv[]; -+EXPORT_SYMBOL(_ZN10Classifier25combine_compatible_statesEv); -+extern char _ZN10Classifier4Expr4flipEv[]; -+EXPORT_SYMBOL(_ZN10Classifier4Expr4flipEv); -+extern char _ZN10Classifier4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN10Classifier4pushEiP6Packet); -+extern char _ZN10Classifier8add_exprER6VectorIiERKNS_4ExprE[]; -+EXPORT_SYMBOL(_ZN10Classifier8add_exprER6VectorIiERKNS_4ExprE); -+extern char _ZN10Classifier8add_exprER6VectorIiEijj[]; -+EXPORT_SYMBOL(_ZN10Classifier8add_exprER6VectorIiEijj); -+extern char _ZN10Classifier9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10Classifier9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN10ClassifierC1Ev[]; -+EXPORT_SYMBOL(_ZN10ClassifierC1Ev); -+extern char _ZN10ClassifierC2Ev[]; -+EXPORT_SYMBOL(_ZN10ClassifierC2Ev); -+extern char _ZN10ClassifierD0Ev[]; -+EXPORT_SYMBOL(_ZN10ClassifierD0Ev); -+extern char _ZN10ClassifierD1Ev[]; -+EXPORT_SYMBOL(_ZN10ClassifierD1Ev); -+extern char _ZN10ClassifierD2Ev[]; -+EXPORT_SYMBOL(_ZN10ClassifierD2Ev); -+extern char _ZN6VectorIN10Classifier4ExprEE5eraseEPS1_S3_[]; -+EXPORT_SYMBOL(_ZN6VectorIN10Classifier4ExprEE5eraseEPS1_S3_); -+extern char _ZN6VectorIN10Classifier4ExprEE7reserveEi[]; -+EXPORT_SYMBOL(_ZN6VectorIN10Classifier4ExprEE7reserveEi); -+extern char _ZN6VectorIN10Classifier4ExprEED1Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIN10Classifier4ExprEED1Ev); -+extern char _ZN6VectorIiE6assignEiRKi[]; -+EXPORT_SYMBOL(_ZN6VectorIiE6assignEiRKi); -+extern char _ZN6VectorIiE6resizeEiRKi[]; -+EXPORT_SYMBOL(_ZN6VectorIiE6resizeEiRKi); -+extern char _ZN6VectorIiE7reserveEi[]; -+EXPORT_SYMBOL(_ZN6VectorIiE7reserveEi); -+extern char _ZN6VectorIiEC1ERKS0_[]; -+EXPORT_SYMBOL(_ZN6VectorIiEC1ERKS0_); -+extern char _ZN6VectorIiED1Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIiED1Ev); -+extern char _ZN6VectorIiEaSERKS0_[]; -+EXPORT_SYMBOL(_ZN6VectorIiEaSERKS0_); -+extern char _ZNK10Classifier10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK10Classifier10class_nameEv); -+extern char _ZNK10Classifier10port_countEv[]; -+EXPORT_SYMBOL(_ZNK10Classifier10port_countEv); -+extern char _ZNK10Classifier10processingEv[]; -+EXPORT_SYMBOL(_ZNK10Classifier10processingEv); -+extern char _ZNK10Classifier16count_inbranchesER6VectorIiE[]; -+EXPORT_SYMBOL(_ZNK10Classifier16count_inbranchesER6VectorIiE); -+extern char _ZNK10Classifier18DominatorOptimizer17find_predecessorsEiR6VectorIiE[]; -+EXPORT_SYMBOL(_ZNK10Classifier18DominatorOptimizer17find_predecessorsEiR6VectorIiE); -+extern char _ZNK10Classifier4Expr10compatibleERKS0_[]; -+EXPORT_SYMBOL(_ZNK10Classifier4Expr10compatibleERKS0_); -+extern char _ZNK10Classifier4Expr11implies_notERKS0_[]; -+EXPORT_SYMBOL(_ZNK10Classifier4Expr11implies_notERKS0_); -+extern char _ZNK10Classifier4Expr11not_impliesERKS0_[]; -+EXPORT_SYMBOL(_ZNK10Classifier4Expr11not_impliesERKS0_); -+extern char _ZNK10Classifier4Expr15not_implies_notERKS0_[]; -+EXPORT_SYMBOL(_ZNK10Classifier4Expr15not_implies_notERKS0_); -+extern char _ZNK10Classifier4Expr1sEv[]; -+EXPORT_SYMBOL(_ZNK10Classifier4Expr1sEv); -+extern char _ZNK10Classifier4Expr7impliesERKS0_[]; -+EXPORT_SYMBOL(_ZNK10Classifier4Expr7impliesERKS0_); -+extern char _ZNK10Classifier4Expr9flippableEv[]; -+EXPORT_SYMBOL(_ZNK10Classifier4Expr9flippableEv); -+extern char _ZNK10Classifier5flagsEv[]; -+EXPORT_SYMBOL(_ZNK10Classifier5flagsEv); -+extern char _ZTV10Classifier[]; -+EXPORT_SYMBOL(_ZTV10Classifier); -+extern char _ZlsR11StringAccumRKN10Classifier4ExprE[]; -+EXPORT_SYMBOL(_ZlsR11StringAccumRKN10Classifier4ExprE); -+extern char _Z12init_clickfsv[]; -+EXPORT_SYMBOL(_Z12init_clickfsv); -+extern char _Z15cleanup_clickfsv[]; -+EXPORT_SYMBOL(_Z15cleanup_clickfsv); -+extern char _Z25click_new_file_operationsv[]; -+EXPORT_SYMBOL(_Z25click_new_file_operationsv); -+extern char _ZN12CompareBlock12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN12CompareBlock12add_handlersEv); -+extern char _ZN12CompareBlock19thresh_read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN12CompareBlock19thresh_read_handlerEP7ElementPv); -+extern char _ZN12CompareBlock20thresh_write_handlerERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12CompareBlock20thresh_write_handlerERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN12CompareBlock23fwd_weight_read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN12CompareBlock23fwd_weight_read_handlerEP7ElementPv); -+extern char _ZN12CompareBlock23rev_weight_read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN12CompareBlock23rev_weight_read_handlerEP7ElementPv); -+extern char _ZN12CompareBlock24fwd_weight_write_handlerERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12CompareBlock24fwd_weight_write_handlerERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN12CompareBlock24rev_weight_write_handlerERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12CompareBlock24rev_weight_write_handlerERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN12CompareBlock4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN12CompareBlock4pushEiP6Packet); -+extern char _ZN12CompareBlock9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12CompareBlock9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12CompareBlockC1Ev[]; -+EXPORT_SYMBOL(_ZN12CompareBlockC1Ev); -+extern char _ZN12CompareBlockC2Ev[]; -+EXPORT_SYMBOL(_ZN12CompareBlockC2Ev); -+extern char _ZN12CompareBlockD0Ev[]; -+EXPORT_SYMBOL(_ZN12CompareBlockD0Ev); -+extern char _ZN12CompareBlockD1Ev[]; -+EXPORT_SYMBOL(_ZN12CompareBlockD1Ev); -+extern char _ZN12CompareBlockD2Ev[]; -+EXPORT_SYMBOL(_ZN12CompareBlockD2Ev); -+extern char _ZNK12CompareBlock10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12CompareBlock10class_nameEv); -+extern char _ZNK12CompareBlock10port_countEv[]; -+EXPORT_SYMBOL(_ZNK12CompareBlock10port_countEv); -+extern char _ZNK12CompareBlock10processingEv[]; -+EXPORT_SYMBOL(_ZNK12CompareBlock10processingEv); -+extern char _ZTV12CompareBlock[]; -+EXPORT_SYMBOL(_ZTV12CompareBlock); -+extern char _Z17click_init_configv[]; -+EXPORT_SYMBOL(_Z17click_init_configv); -+extern char _Z20click_cleanup_configv[]; -+EXPORT_SYMBOL(_Z20click_cleanup_configv); -+extern char _ZN21LinuxModuleLexerExtra7requireE6StringP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN21LinuxModuleLexerExtra7requireE6StringP12ErrorHandler); -+extern char _ZN21LinuxModuleLexerExtraD0Ev[]; -+EXPORT_SYMBOL(_ZN21LinuxModuleLexerExtraD0Ev); -+extern char _ZN21LinuxModuleLexerExtraD1Ev[]; -+EXPORT_SYMBOL(_ZN21LinuxModuleLexerExtraD1Ev); -+extern char _ZTV21LinuxModuleLexerExtra[]; -+EXPORT_SYMBOL(_ZTV21LinuxModuleLexerExtra); -+extern char click_add_element_type[]; -+EXPORT_SYMBOL(click_add_element_type); -+extern char click_config_generation[]; -+EXPORT_SYMBOL(click_config_generation); -+extern char click_remove_element_type[]; -+EXPORT_SYMBOL(click_remove_element_type); -+extern char _Z10cp_elementRK6StringP6RouterP12ErrorHandler[]; -+EXPORT_SYMBOL(_Z10cp_elementRK6StringP6RouterP12ErrorHandler); -+extern char _Z10cp_elementRK6StringP7ElementP12ErrorHandler[]; -+EXPORT_SYMBOL(_Z10cp_elementRK6StringP7ElementP12ErrorHandler); -+extern char _Z10cp_handlerRK6StringiPP7ElementPPK7HandlerS3_P12ErrorHandler[]; -+EXPORT_SYMBOL(_Z10cp_handlerRK6StringiPP7ElementPPK7HandlerS3_P12ErrorHandler); -+extern char _Z10cp_integerPKcS0_iPi[]; -+EXPORT_SYMBOL(_Z10cp_integerPKcS0_iPi); -+extern char _Z10cp_integerPKcS0_iPj[]; -+EXPORT_SYMBOL(_Z10cp_integerPKcS0_iPj); -+extern char _Z10cp_integerPKcS0_iPx[]; -+EXPORT_SYMBOL(_Z10cp_integerPKcS0_iPx); -+extern char _Z10cp_integerPKcS0_iPy[]; -+EXPORT_SYMBOL(_Z10cp_integerPKcS0_iPy); -+extern char _Z10cp_integerRK6StringiPi[]; -+EXPORT_SYMBOL(_Z10cp_integerRK6StringiPi); -+extern char _Z10cp_integerRK6StringiPj[]; -+EXPORT_SYMBOL(_Z10cp_integerRK6StringiPj); -+extern char _Z10cp_integerRK6StringiPx[]; -+EXPORT_SYMBOL(_Z10cp_integerRK6StringiPx); -+extern char _Z10cp_integerRK6StringiPy[]; -+EXPORT_SYMBOL(_Z10cp_integerRK6StringiPy); -+extern char _Z10cp_is_wordRK6String[]; -+EXPORT_SYMBOL(_Z10cp_is_wordRK6String); -+extern char _Z10cp_keywordRK6StringPS_S2_[]; -+EXPORT_SYMBOL(_Z10cp_keywordRK6StringPS_S2_); -+extern char _Z10cp_unquoteRK6String[]; -+EXPORT_SYMBOL(_Z10cp_unquoteRK6String); -+extern char _Z11cp_spacevecRK6StringR6VectorIS_E[]; -+EXPORT_SYMBOL(_Z11cp_spacevecRK6StringR6VectorIS_E); -+extern char _Z11cp_unargvecRK6VectorI6StringE[]; -+EXPORT_SYMBOL(_Z11cp_unargvecRK6VectorI6StringE); -+extern char _Z11cp_va_parseRK6StringP7ElementP12ErrorHandlerz[]; -+EXPORT_SYMBOL(_Z11cp_va_parseRK6StringP7ElementP12ErrorHandlerz); -+extern char _Z11cp_va_parseRK6VectorI6StringEP7ElementP12ErrorHandlerz[]; -+EXPORT_SYMBOL(_Z11cp_va_parseRK6VectorI6StringEP7ElementP12ErrorHandlerz); -+extern char _Z12cp_bandwidthRK6StringPj[]; -+EXPORT_SYMBOL(_Z12cp_bandwidthRK6StringPj); -+extern char _Z12cp_eat_spaceR6String[]; -+EXPORT_SYMBOL(_Z12cp_eat_spaceR6String); -+extern char _Z12cp_ip_prefixRK6StringP9IPAddressS3_P7Element[]; -+EXPORT_SYMBOL(_Z12cp_ip_prefixRK6StringP9IPAddressS3_P7Element); -+extern char _Z12cp_ip_prefixRK6StringP9IPAddressS3_bP7Element[]; -+EXPORT_SYMBOL(_Z12cp_ip_prefixRK6StringP9IPAddressS3_bP7Element); -+extern char _Z12cp_ip_prefixRK6StringPhS2_P7Element[]; -+EXPORT_SYMBOL(_Z12cp_ip_prefixRK6StringPhS2_P7Element); -+extern char _Z12cp_ip_prefixRK6StringPhS2_bP7Element[]; -+EXPORT_SYMBOL(_Z12cp_ip_prefixRK6StringPhS2_bP7Element); -+extern char _Z12cp_uncommentRK6String[]; -+EXPORT_SYMBOL(_Z12cp_uncommentRK6String); -+extern char _Z12cp_va_kparseRK6StringP7ElementP12ErrorHandlerz[]; -+EXPORT_SYMBOL(_Z12cp_va_kparseRK6StringP7ElementP12ErrorHandlerz); -+extern char _Z12cp_va_kparseRK6VectorI6StringEP7ElementP12ErrorHandlerz[]; -+EXPORT_SYMBOL(_Z12cp_va_kparseRK6VectorI6StringEP7ElementP12ErrorHandlerz); -+extern char _Z13cp_ip_addressRK6StringP9IPAddressP7Element[]; -+EXPORT_SYMBOL(_Z13cp_ip_addressRK6StringP9IPAddressP7Element); -+extern char _Z13cp_ip_addressRK6StringPhP7Element[]; -+EXPORT_SYMBOL(_Z13cp_ip_addressRK6StringPhP7Element); -+extern char _Z13cp_seconds_asRK6StringiPj[]; -+EXPORT_SYMBOL(_Z13cp_seconds_asRK6StringiPj); -+extern char _Z13cp_skip_spacePKcS0_[]; -+EXPORT_SYMBOL(_Z13cp_skip_spacePKcS0_); -+extern char _Z13cp_unspacevecPK6StringS1_[]; -+EXPORT_SYMBOL(_Z13cp_unspacevecPK6StringS1_); -+extern char _Z14cp_is_click_idRK6String[]; -+EXPORT_SYMBOL(_Z14cp_is_click_idRK6String); -+extern char _Z14cp_tcpudp_portRK6StringiPtP7Element[]; -+EXPORT_SYMBOL(_Z14cp_tcpudp_portRK6StringiPtP7Element); -+extern char _Z15cp_handler_nameRK6StringPP7ElementPS_S3_P12ErrorHandler[]; -+EXPORT_SYMBOL(_Z15cp_handler_nameRK6StringPP7ElementPS_S3_P12ErrorHandler); -+extern char _Z15cp_pop_spacevecR6String[]; -+EXPORT_SYMBOL(_Z15cp_pop_spacevecR6String); -+extern char _Z15cp_unparse_boolb[]; -+EXPORT_SYMBOL(_Z15cp_unparse_boolb); -+extern char _Z16cp_unparse_real2ii[]; -+EXPORT_SYMBOL(_Z16cp_unparse_real2ii); -+extern char _Z16cp_unparse_real2ji[]; -+EXPORT_SYMBOL(_Z16cp_unparse_real2ji); -+extern char _Z16cp_unparse_real2xi[]; -+EXPORT_SYMBOL(_Z16cp_unparse_real2xi); -+extern char _Z16cp_unparse_real2yi[]; -+EXPORT_SYMBOL(_Z16cp_unparse_real2yi); -+extern char _Z17cp_unparse_real10ii[]; -+EXPORT_SYMBOL(_Z17cp_unparse_real10ii); -+extern char _Z17cp_unparse_real10ji[]; -+EXPORT_SYMBOL(_Z17cp_unparse_real10ji); -+extern char _Z17cp_va_space_parseRK6StringP7ElementP12ErrorHandlerz[]; -+EXPORT_SYMBOL(_Z17cp_va_space_parseRK6StringP7ElementP12ErrorHandlerz); -+extern char _Z18cp_ip_address_listRK6StringP6VectorI9IPAddressEP7Element[]; -+EXPORT_SYMBOL(_Z18cp_ip_address_listRK6StringP6VectorI9IPAddressEP7Element); -+extern char _Z18cp_va_space_kparseRK6StringP7ElementP12ErrorHandlerz[]; -+EXPORT_SYMBOL(_Z18cp_va_space_kparseRK6StringP7ElementP12ErrorHandlerz); -+extern char _Z19cp_assign_argumentsRK6VectorI6StringEPKS0_S5_PS1_[]; -+EXPORT_SYMBOL(_Z19cp_assign_argumentsRK6VectorI6StringEPKS0_S5_PS1_); -+extern char _Z19cp_ethernet_addressRK6StringP12EtherAddressP7Element[]; -+EXPORT_SYMBOL(_Z19cp_ethernet_addressRK6StringP12EtherAddressP7Element); -+extern char _Z19cp_ethernet_addressRK6StringPhP7Element[]; -+EXPORT_SYMBOL(_Z19cp_ethernet_addressRK6StringPhP7Element); -+extern char _Z19cp_register_argtypePKcS0_iPFvP8cp_valueRK6StringP12ErrorHandlerS0_P7ElementEPFvS2_S9_EPv[]; -+EXPORT_SYMBOL(_Z19cp_register_argtypePKcS0_iPFvP8cp_valueRK6StringP12ErrorHandlerS0_P7ElementEPFvS2_S9_EPv); -+extern char _Z19cp_seconds_as_microRK6StringPj[]; -+EXPORT_SYMBOL(_Z19cp_seconds_as_microRK6StringPj); -+extern char _Z19cp_seconds_as_milliRK6StringPj[]; -+EXPORT_SYMBOL(_Z19cp_seconds_as_milliRK6StringPj); -+extern char _Z19cp_unparse_intervalRK7timeval[]; -+EXPORT_SYMBOL(_Z19cp_unparse_intervalRK7timeval); -+extern char _Z19cp_unparse_intervalRK9Timestamp[]; -+EXPORT_SYMBOL(_Z19cp_unparse_intervalRK9Timestamp); -+extern char _Z19cp_va_parse_keywordRK6StringP7ElementP12ErrorHandlerz[]; -+EXPORT_SYMBOL(_Z19cp_va_parse_keywordRK6StringP7ElementP12ErrorHandlerz); -+extern char _Z20cp_process_backslashPKcS0_R11StringAccum[]; -+EXPORT_SYMBOL(_Z20cp_process_backslashPKcS0_R11StringAccum); -+extern char _Z20cp_unparse_bandwidthj[]; -+EXPORT_SYMBOL(_Z20cp_unparse_bandwidthj); -+extern char _Z20cp_va_kparse_keywordRK6StringP7ElementP12ErrorHandlerz[]; -+EXPORT_SYMBOL(_Z20cp_va_kparse_keywordRK6StringP7ElementP12ErrorHandlerz); -+extern char _Z20cp_va_static_cleanupv[]; -+EXPORT_SYMBOL(_Z20cp_va_static_cleanupv); -+extern char _Z21cp_skip_comment_spacePKcS0_[]; -+EXPORT_SYMBOL(_Z21cp_skip_comment_spacePKcS0_); -+extern char _Z21cp_unregister_argtypePKc[]; -+EXPORT_SYMBOL(_Z21cp_unregister_argtypePKc); -+extern char _Z23cp_unparse_microsecondsj[]; -+EXPORT_SYMBOL(_Z23cp_unparse_microsecondsj); -+extern char _Z23cp_unparse_millisecondsj[]; -+EXPORT_SYMBOL(_Z23cp_unparse_millisecondsj); -+extern char _Z23cp_va_static_initializev[]; -+EXPORT_SYMBOL(_Z23cp_va_static_initializev); -+extern char _Z27cp_va_parse_remove_keywordsR6VectorI6StringEiP7ElementP12ErrorHandlerz[]; -+EXPORT_SYMBOL(_Z27cp_va_parse_remove_keywordsR6VectorI6StringEiP7ElementP12ErrorHandlerz); -+extern char _Z28cp_extend_stringlist_argtypePKcz[]; -+EXPORT_SYMBOL(_Z28cp_extend_stringlist_argtypePKcz); -+extern char _Z28cp_va_kparse_remove_keywordsR6VectorI6StringEP7ElementP12ErrorHandlerz[]; -+EXPORT_SYMBOL(_Z28cp_va_kparse_remove_keywordsR6VectorI6StringEP7ElementP12ErrorHandlerz); -+extern char _Z30cp_register_stringlist_argtypePKcS0_i[]; -+EXPORT_SYMBOL(_Z30cp_register_stringlist_argtypePKcS0_i); -+extern char _Z7cp_boolRK6StringPb[]; -+EXPORT_SYMBOL(_Z7cp_boolRK6StringPb); -+extern char _Z7cp_timeRK6StringP7timeval[]; -+EXPORT_SYMBOL(_Z7cp_timeRK6StringP7timeval); -+extern char _Z7cp_timeRK6StringP9Timestamp[]; -+EXPORT_SYMBOL(_Z7cp_timeRK6StringP9Timestamp); -+extern char _Z7cp_wordRK6StringPS_S2_[]; -+EXPORT_SYMBOL(_Z7cp_wordRK6StringPS_S2_); -+extern char _Z8cp_quoteRK6Stringb[]; -+EXPORT_SYMBOL(_Z8cp_quoteRK6Stringb); -+extern char _Z8cp_real2RK6StringiPi[]; -+EXPORT_SYMBOL(_Z8cp_real2RK6StringiPi); -+extern char _Z8cp_real2RK6StringiPj[]; -+EXPORT_SYMBOL(_Z8cp_real2RK6StringiPj); -+extern char _Z9cp_argvecRK6StringR6VectorIS_E[]; -+EXPORT_SYMBOL(_Z9cp_argvecRK6StringR6VectorIS_E); -+extern char _Z9cp_real10RK6StringiPi[]; -+EXPORT_SYMBOL(_Z9cp_real10RK6StringiPi); -+extern char _Z9cp_real10RK6StringiPj[]; -+EXPORT_SYMBOL(_Z9cp_real10RK6StringiPj); -+extern char _Z9cp_real10RK6StringiPjS2_[]; -+EXPORT_SYMBOL(_Z9cp_real10RK6StringiPjS2_); -+extern char _Z9cp_real10RK6StringiiPj[]; -+EXPORT_SYMBOL(_Z9cp_real10RK6StringiiPj); -+extern char _Z9cp_real10RK6StringiiPjS2_[]; -+EXPORT_SYMBOL(_Z9cp_real10RK6StringiiPjS2_); -+extern char _Z9cp_stringRK6StringPS_S2_[]; -+EXPORT_SYMBOL(_Z9cp_stringRK6StringPS_S2_); -+extern char _ZN19_GLOBAL__N_cp_errno10CpVaHelper14develop_valuesEPcP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN19_GLOBAL__N_cp_errno10CpVaHelper14develop_valuesEPcP12ErrorHandler); -+extern char _ZN19_GLOBAL__N_cp_errno10CpVaHelper15develop_kvaluesEPcP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN19_GLOBAL__N_cp_errno10CpVaHelper15develop_kvaluesEPcP12ErrorHandler); -+extern char _ZN19_GLOBAL__N_cp_errno10CpVaHelper15parse_argumentsEPKcP7ElementP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN19_GLOBAL__N_cp_errno10CpVaHelper15parse_argumentsEPKcP7ElementP12ErrorHandler); -+extern char _ZN19_GLOBAL__N_cp_errno10CpVaHelper16assign_argumentsERK6VectorI6StringEPKcP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN19_GLOBAL__N_cp_errno10CpVaHelper16assign_argumentsERK6VectorI6StringEPKcP12ErrorHandler); -+extern char _ZN19_GLOBAL__N_cp_errno10CpVaHelper17add_keyword_errorER11StringAccumiRK6StringPKci[]; -+EXPORT_SYMBOL(_ZN19_GLOBAL__N_cp_errno10CpVaHelper17add_keyword_errorER11StringAccumiRK6StringPKci); -+extern char _ZN19_GLOBAL__N_cp_errno10CpVaHelper20finish_keyword_errorEPKcS2_P12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN19_GLOBAL__N_cp_errno10CpVaHelper20finish_keyword_errorEPKcS2_P12ErrorHandler); -+extern char _ZN19_GLOBAL__N_cp_errno10CpVaHelper23assign_keyword_argumentERK6String[]; -+EXPORT_SYMBOL(_ZN19_GLOBAL__N_cp_errno10CpVaHelper23assign_keyword_argumentERK6String); -+extern char _ZN19_GLOBAL__N_cp_errno10CpVaHelperC1EP8cp_valueib[]; -+EXPORT_SYMBOL(_ZN19_GLOBAL__N_cp_errno10CpVaHelperC1EP8cp_valueib); -+extern char _ZN19_GLOBAL__N_cp_errno10CpVaHelperC2EP8cp_valueib[]; -+EXPORT_SYMBOL(_ZN19_GLOBAL__N_cp_errno10CpVaHelperC2EP8cp_valueib); -+extern char cpArgument[]; -+EXPORT_SYMBOL(cpArgument); -+extern char cpArguments[]; -+EXPORT_SYMBOL(cpArguments); -+extern char cpBandwidth[]; -+EXPORT_SYMBOL(cpBandwidth); -+extern char cpBool[]; -+EXPORT_SYMBOL(cpBool); -+extern char cpByte[]; -+EXPORT_SYMBOL(cpByte); -+extern char cpConfirmKeywords[]; -+EXPORT_SYMBOL(cpConfirmKeywords); -+extern char cpDesCblock[]; -+EXPORT_SYMBOL(cpDesCblock); -+extern char cpElement[]; -+EXPORT_SYMBOL(cpElement); -+extern char cpEnd[]; -+EXPORT_SYMBOL(cpEnd); -+extern char cpEtherAddress[]; -+EXPORT_SYMBOL(cpEtherAddress); -+extern char cpEthernetAddress[]; -+EXPORT_SYMBOL(cpEthernetAddress); -+extern char cpFilename[]; -+EXPORT_SYMBOL(cpFilename); -+extern char cpHandlerCallPtrRead[]; -+EXPORT_SYMBOL(cpHandlerCallPtrRead); -+extern char cpHandlerCallPtrWrite[]; -+EXPORT_SYMBOL(cpHandlerCallPtrWrite); -+extern char cpHandlerCallRead[]; -+EXPORT_SYMBOL(cpHandlerCallRead); -+extern char cpHandlerCallWrite[]; -+EXPORT_SYMBOL(cpHandlerCallWrite); -+extern char cpHandlerName[]; -+EXPORT_SYMBOL(cpHandlerName); -+extern char cpIP6Address[]; -+EXPORT_SYMBOL(cpIP6Address); -+extern char cpIP6AddressOrPrefix[]; -+EXPORT_SYMBOL(cpIP6AddressOrPrefix); -+extern char cpIP6Prefix[]; -+EXPORT_SYMBOL(cpIP6Prefix); -+extern char cpIPAddress[]; -+EXPORT_SYMBOL(cpIPAddress); -+extern char cpIPAddressList[]; -+EXPORT_SYMBOL(cpIPAddressList); -+extern char cpIPAddressOrPrefix[]; -+EXPORT_SYMBOL(cpIPAddressOrPrefix); -+extern char cpIPPrefix[]; -+EXPORT_SYMBOL(cpIPPrefix); -+extern char cpIgnore[]; -+EXPORT_SYMBOL(cpIgnore); -+extern char cpIgnoreRest[]; -+EXPORT_SYMBOL(cpIgnoreRest); -+extern char cpInteger[]; -+EXPORT_SYMBOL(cpInteger); -+extern char cpInteger64[]; -+EXPORT_SYMBOL(cpInteger64); -+extern char cpInterval[]; -+EXPORT_SYMBOL(cpInterval); -+extern char cpKeyword[]; -+EXPORT_SYMBOL(cpKeyword); -+extern char cpKeywords[]; -+EXPORT_SYMBOL(cpKeywords); -+extern char cpMandatoryKeywords[]; -+EXPORT_SYMBOL(cpMandatoryKeywords); -+extern char cpNamedInteger[]; -+EXPORT_SYMBOL(cpNamedInteger); -+extern char cpOptional[]; -+EXPORT_SYMBOL(cpOptional); -+extern char cpReadHandlerCall[]; -+EXPORT_SYMBOL(cpReadHandlerCall); -+extern char cpReal10[]; -+EXPORT_SYMBOL(cpReal10); -+extern char cpSeconds[]; -+EXPORT_SYMBOL(cpSeconds); -+extern char cpSecondsAsMicro[]; -+EXPORT_SYMBOL(cpSecondsAsMicro); -+extern char cpSecondsAsMilli[]; -+EXPORT_SYMBOL(cpSecondsAsMilli); -+extern char cpShort[]; -+EXPORT_SYMBOL(cpShort); -+extern char cpString[]; -+EXPORT_SYMBOL(cpString); -+extern char cpTCPPort[]; -+EXPORT_SYMBOL(cpTCPPort); -+extern char cpTimestamp[]; -+EXPORT_SYMBOL(cpTimestamp); -+extern char cpTimeval[]; -+EXPORT_SYMBOL(cpTimeval); -+extern char cpUDPPort[]; -+EXPORT_SYMBOL(cpUDPPort); -+extern char cpUnsigned[]; -+EXPORT_SYMBOL(cpUnsigned); -+extern char cpUnsigned64[]; -+EXPORT_SYMBOL(cpUnsigned64); -+extern char cpUnsignedReal10[]; -+EXPORT_SYMBOL(cpUnsignedReal10); -+extern char cpUnsignedReal2[]; -+EXPORT_SYMBOL(cpUnsignedReal2); -+extern char cpUnsignedShort[]; -+EXPORT_SYMBOL(cpUnsignedShort); -+extern char cpWord[]; -+EXPORT_SYMBOL(cpWord); -+extern char cpWriteHandlerCall[]; -+EXPORT_SYMBOL(cpWriteHandlerCall); -+extern char cp_errno[]; -+EXPORT_SYMBOL(cp_errno); -+extern char _ZN7Counter10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7Counter10initializeEP12ErrorHandler); -+extern char _ZN7Counter12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN7Counter12add_handlersEv); -+extern char _ZN7Counter12read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN7Counter12read_handlerEP7ElementPv); -+extern char _ZN7Counter13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN7Counter13simple_actionEP6Packet); -+extern char _ZN7Counter13write_handlerERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7Counter13write_handlerERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN7Counter5llrpcEjPv[]; -+EXPORT_SYMBOL(_ZN7Counter5llrpcEjPv); -+extern char _ZN7Counter5resetEv[]; -+EXPORT_SYMBOL(_ZN7Counter5resetEv); -+extern char _ZN7Counter9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7Counter9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN7CounterC1Ev[]; -+EXPORT_SYMBOL(_ZN7CounterC1Ev); -+extern char _ZN7CounterC2Ev[]; -+EXPORT_SYMBOL(_ZN7CounterC2Ev); -+extern char _ZN7CounterD0Ev[]; -+EXPORT_SYMBOL(_ZN7CounterD0Ev); -+extern char _ZN7CounterD1Ev[]; -+EXPORT_SYMBOL(_ZN7CounterD1Ev); -+extern char _ZN7CounterD2Ev[]; -+EXPORT_SYMBOL(_ZN7CounterD2Ev); -+extern char _ZNK7Counter10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK7Counter10class_nameEv); -+extern char _ZNK7Counter10port_countEv[]; -+EXPORT_SYMBOL(_ZNK7Counter10port_countEv); -+extern char _ZNK7Counter10processingEv[]; -+EXPORT_SYMBOL(_ZNK7Counter10processingEv); -+extern char _ZTV7Counter[]; -+EXPORT_SYMBOL(_ZTV7Counter); -+extern char _ZN8CPUQueue10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8CPUQueue10initializeEP12ErrorHandler); -+extern char _ZN8CPUQueue12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN8CPUQueue12add_handlersEv); -+extern char _ZN8CPUQueue12read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN8CPUQueue12read_handlerEP7ElementPv); -+extern char _ZN8CPUQueue4pullEi[]; -+EXPORT_SYMBOL(_ZN8CPUQueue4pullEi); -+extern char _ZN8CPUQueue4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN8CPUQueue4pushEiP6Packet); -+extern char _ZN8CPUQueue7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN8CPUQueue7cleanupEN7Element12CleanupStageE); -+extern char _ZN8CPUQueue9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8CPUQueue9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN8CPUQueueC1Ev[]; -+EXPORT_SYMBOL(_ZN8CPUQueueC1Ev); -+extern char _ZN8CPUQueueC2Ev[]; -+EXPORT_SYMBOL(_ZN8CPUQueueC2Ev); -+extern char _ZN8CPUQueueD0Ev[]; -+EXPORT_SYMBOL(_ZN8CPUQueueD0Ev); -+extern char _ZN8CPUQueueD1Ev[]; -+EXPORT_SYMBOL(_ZN8CPUQueueD1Ev); -+extern char _ZN8CPUQueueD2Ev[]; -+EXPORT_SYMBOL(_ZN8CPUQueueD2Ev); -+extern char _ZNK8CPUQueue10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK8CPUQueue10class_nameEv); -+extern char _ZNK8CPUQueue10port_countEv[]; -+EXPORT_SYMBOL(_ZNK8CPUQueue10port_countEv); -+extern char _ZNK8CPUQueue10processingEv[]; -+EXPORT_SYMBOL(_ZNK8CPUQueue10processingEv); -+extern char _ZTV8CPUQueue[]; -+EXPORT_SYMBOL(_ZTV8CPUQueue); -+extern char _ZN9CPUSwitch4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN9CPUSwitch4pushEiP6Packet); -+extern char _ZN9CPUSwitch9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN9CPUSwitch9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN9CPUSwitchC1Ev[]; -+EXPORT_SYMBOL(_ZN9CPUSwitchC1Ev); -+extern char _ZN9CPUSwitchC2Ev[]; -+EXPORT_SYMBOL(_ZN9CPUSwitchC2Ev); -+extern char _ZN9CPUSwitchD0Ev[]; -+EXPORT_SYMBOL(_ZN9CPUSwitchD0Ev); -+extern char _ZN9CPUSwitchD1Ev[]; -+EXPORT_SYMBOL(_ZN9CPUSwitchD1Ev); -+extern char _ZN9CPUSwitchD2Ev[]; -+EXPORT_SYMBOL(_ZN9CPUSwitchD2Ev); -+extern char _ZNK9CPUSwitch10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK9CPUSwitch10class_nameEv); -+extern char _ZNK9CPUSwitch10port_countEv[]; -+EXPORT_SYMBOL(_ZNK9CPUSwitch10port_countEv); -+extern char _ZNK9CPUSwitch10processingEv[]; -+EXPORT_SYMBOL(_ZNK9CPUSwitch10processingEv); -+extern char _ZTV9CPUSwitch[]; -+EXPORT_SYMBOL(_ZTV9CPUSwitch); -+extern char _ZN10CrapFilter4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN10CrapFilter4pushEiP6Packet); -+extern char _ZN10CrapFilterC1Ev[]; -+EXPORT_SYMBOL(_ZN10CrapFilterC1Ev); -+extern char _ZN10CrapFilterC2Ev[]; -+EXPORT_SYMBOL(_ZN10CrapFilterC2Ev); -+extern char _ZN10CrapFilterD0Ev[]; -+EXPORT_SYMBOL(_ZN10CrapFilterD0Ev); -+extern char _ZN10CrapFilterD1Ev[]; -+EXPORT_SYMBOL(_ZN10CrapFilterD1Ev); -+extern char _ZN10CrapFilterD2Ev[]; -+EXPORT_SYMBOL(_ZN10CrapFilterD2Ev); -+extern char _ZNK10CrapFilter10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK10CrapFilter10class_nameEv); -+extern char _ZNK10CrapFilter10port_countEv[]; -+EXPORT_SYMBOL(_ZNK10CrapFilter10port_countEv); -+extern char _ZNK10CrapFilter10processingEv[]; -+EXPORT_SYMBOL(_ZNK10CrapFilter10processingEv); -+extern char _ZTV10CrapFilter[]; -+EXPORT_SYMBOL(_ZTV10CrapFilter); -+extern char _ZN11CiscyFilter10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11CiscyFilter10initializeEP12ErrorHandler); -+extern char _ZN11CiscyFilter4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN11CiscyFilter4pushEiP6Packet); -+extern char _ZN11CiscyFilterC1Ev[]; -+EXPORT_SYMBOL(_ZN11CiscyFilterC1Ev); -+extern char _ZN11CiscyFilterC2Ev[]; -+EXPORT_SYMBOL(_ZN11CiscyFilterC2Ev); -+extern char _ZN11CiscyFilterD0Ev[]; -+EXPORT_SYMBOL(_ZN11CiscyFilterD0Ev); -+extern char _ZN11CiscyFilterD1Ev[]; -+EXPORT_SYMBOL(_ZN11CiscyFilterD1Ev); -+extern char _ZN11CiscyFilterD2Ev[]; -+EXPORT_SYMBOL(_ZN11CiscyFilterD2Ev); -+extern char _ZN6VectorIN11CiscyFilter4InsnEE7reserveEi[]; -+EXPORT_SYMBOL(_ZN6VectorIN11CiscyFilter4InsnEE7reserveEi); -+extern char _ZN6VectorIN11CiscyFilter4InsnEED1Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIN11CiscyFilter4InsnEED1Ev); -+extern char _ZNK11CiscyFilter10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK11CiscyFilter10class_nameEv); -+extern char _ZNK11CiscyFilter10port_countEv[]; -+EXPORT_SYMBOL(_ZNK11CiscyFilter10port_countEv); -+extern char _ZNK11CiscyFilter10processingEv[]; -+EXPORT_SYMBOL(_ZNK11CiscyFilter10processingEv); -+extern char _ZTV11CiscyFilter[]; -+EXPORT_SYMBOL(_ZTV11CiscyFilter); -+extern char _ZN10BpfyFilter10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10BpfyFilter10initializeEP12ErrorHandler); -+extern char _ZN10BpfyFilter4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN10BpfyFilter4pushEiP6Packet); -+extern char _ZN10BpfyFilterC1Ev[]; -+EXPORT_SYMBOL(_ZN10BpfyFilterC1Ev); -+extern char _ZN10BpfyFilterC2Ev[]; -+EXPORT_SYMBOL(_ZN10BpfyFilterC2Ev); -+extern char _ZN10BpfyFilterD0Ev[]; -+EXPORT_SYMBOL(_ZN10BpfyFilterD0Ev); -+extern char _ZN10BpfyFilterD1Ev[]; -+EXPORT_SYMBOL(_ZN10BpfyFilterD1Ev); -+extern char _ZN10BpfyFilterD2Ev[]; -+EXPORT_SYMBOL(_ZN10BpfyFilterD2Ev); -+extern char _ZN6VectorIN10BpfyFilter4InsnEE7reserveEi[]; -+EXPORT_SYMBOL(_ZN6VectorIN10BpfyFilter4InsnEE7reserveEi); -+extern char _ZN6VectorIN10BpfyFilter4InsnEED1Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIN10BpfyFilter4InsnEED1Ev); -+extern char _ZNK10BpfyFilter10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK10BpfyFilter10class_nameEv); -+extern char _ZNK10BpfyFilter10port_countEv[]; -+EXPORT_SYMBOL(_ZNK10BpfyFilter10port_countEv); -+extern char _ZNK10BpfyFilter10processingEv[]; -+EXPORT_SYMBOL(_ZNK10BpfyFilter10processingEv); -+extern char _ZTV10BpfyFilter[]; -+EXPORT_SYMBOL(_ZTV10BpfyFilter); -+extern char update_crc[]; -+EXPORT_SYMBOL(update_crc); -+extern char _ZN15CycleCountAccum12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN15CycleCountAccum12add_handlersEv); -+extern char _ZN15CycleCountAccum12read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN15CycleCountAccum12read_handlerEP7ElementPv); -+extern char _ZN15CycleCountAccum13reset_handlerERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN15CycleCountAccum13reset_handlerERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN15CycleCountAccum4pullEi[]; -+EXPORT_SYMBOL(_ZN15CycleCountAccum4pullEi); -+extern char _ZN15CycleCountAccum4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN15CycleCountAccum4pushEiP6Packet); -+extern char _ZN15CycleCountAccumC1Ev[]; -+EXPORT_SYMBOL(_ZN15CycleCountAccumC1Ev); -+extern char _ZN15CycleCountAccumC2Ev[]; -+EXPORT_SYMBOL(_ZN15CycleCountAccumC2Ev); -+extern char _ZN15CycleCountAccumD0Ev[]; -+EXPORT_SYMBOL(_ZN15CycleCountAccumD0Ev); -+extern char _ZN15CycleCountAccumD1Ev[]; -+EXPORT_SYMBOL(_ZN15CycleCountAccumD1Ev); -+extern char _ZN15CycleCountAccumD2Ev[]; -+EXPORT_SYMBOL(_ZN15CycleCountAccumD2Ev); -+extern char _ZNK15CycleCountAccum10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK15CycleCountAccum10class_nameEv); -+extern char _ZNK15CycleCountAccum10port_countEv[]; -+EXPORT_SYMBOL(_ZNK15CycleCountAccum10port_countEv); -+extern char _ZNK15CycleCountAccum10processingEv[]; -+EXPORT_SYMBOL(_ZNK15CycleCountAccum10processingEv); -+extern char _ZTV15CycleCountAccum[]; -+EXPORT_SYMBOL(_ZTV15CycleCountAccum); -+extern char _ZN8DecIPTTL12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN8DecIPTTL12add_handlersEv); -+extern char _ZN8DecIPTTL13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN8DecIPTTL13simple_actionEP6Packet); -+extern char _ZN8DecIPTTL7drop_itEP6Packet[]; -+EXPORT_SYMBOL(_ZN8DecIPTTL7drop_itEP6Packet); -+extern char _ZN8DecIPTTLC1Ev[]; -+EXPORT_SYMBOL(_ZN8DecIPTTLC1Ev); -+extern char _ZN8DecIPTTLC2Ev[]; -+EXPORT_SYMBOL(_ZN8DecIPTTLC2Ev); -+extern char _ZN8DecIPTTLD0Ev[]; -+EXPORT_SYMBOL(_ZN8DecIPTTLD0Ev); -+extern char _ZN8DecIPTTLD1Ev[]; -+EXPORT_SYMBOL(_ZN8DecIPTTLD1Ev); -+extern char _ZN8DecIPTTLD2Ev[]; -+EXPORT_SYMBOL(_ZN8DecIPTTLD2Ev); -+extern char _ZNK8DecIPTTL10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK8DecIPTTL10class_nameEv); -+extern char _ZNK8DecIPTTL10port_countEv[]; -+EXPORT_SYMBOL(_ZNK8DecIPTTL10port_countEv); -+extern char _ZNK8DecIPTTL10processingEv[]; -+EXPORT_SYMBOL(_ZNK8DecIPTTL10processingEv); -+extern char _ZTV8DecIPTTL[]; -+EXPORT_SYMBOL(_ZTV8DecIPTTL); -+extern char _ZN11DelayShaper10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11DelayShaper10initializeEP12ErrorHandler); -+extern char _ZN11DelayShaper10read_paramEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN11DelayShaper10read_paramEP7ElementPv); -+extern char _ZN11DelayShaper11write_paramERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11DelayShaper11write_paramERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN11DelayShaper12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN11DelayShaper12add_handlersEv); -+extern char _ZN11DelayShaper4castEPKc[]; -+EXPORT_SYMBOL(_ZN11DelayShaper4castEPKc); -+extern char _ZN11DelayShaper4pullEi[]; -+EXPORT_SYMBOL(_ZN11DelayShaper4pullEi); -+extern char _ZN11DelayShaper7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN11DelayShaper7cleanupEN7Element12CleanupStageE); -+extern char _ZN11DelayShaper9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11DelayShaper9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN11DelayShaper9run_timerEP5Timer[]; -+EXPORT_SYMBOL(_ZN11DelayShaper9run_timerEP5Timer); -+extern char _ZN11DelayShaperC1Ev[]; -+EXPORT_SYMBOL(_ZN11DelayShaperC1Ev); -+extern char _ZN11DelayShaperC2Ev[]; -+EXPORT_SYMBOL(_ZN11DelayShaperC2Ev); -+extern char _ZN11DelayShaperD0Ev[]; -+EXPORT_SYMBOL(_ZN11DelayShaperD0Ev); -+extern char _ZN11DelayShaperD1Ev[]; -+EXPORT_SYMBOL(_ZN11DelayShaperD1Ev); -+extern char _ZN11DelayShaperD2Ev[]; -+EXPORT_SYMBOL(_ZN11DelayShaperD2Ev); -+extern char _ZNK11DelayShaper10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK11DelayShaper10class_nameEv); -+extern char _ZNK11DelayShaper10port_countEv[]; -+EXPORT_SYMBOL(_ZNK11DelayShaper10port_countEv); -+extern char _ZNK11DelayShaper10processingEv[]; -+EXPORT_SYMBOL(_ZNK11DelayShaper10processingEv); -+extern char _ZNK9Timestamp3secEv[]; -+EXPORT_SYMBOL(_ZNK9Timestamp3secEv); -+extern char _ZTV11DelayShaper[]; -+EXPORT_SYMBOL(_ZTV11DelayShaper); -+extern char _ZThn60_N11DelayShaperD0Ev[]; -+EXPORT_SYMBOL(_ZThn60_N11DelayShaperD0Ev); -+extern char _ZThn60_N11DelayShaperD1Ev[]; -+EXPORT_SYMBOL(_ZThn60_N11DelayShaperD1Ev); -+extern char _ZN12DelayUnqueue10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12DelayUnqueue10initializeEP12ErrorHandler); -+extern char _ZN12DelayUnqueue10read_paramEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN12DelayUnqueue10read_paramEP7ElementPv); -+extern char _ZN12DelayUnqueue12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN12DelayUnqueue12add_handlersEv); -+extern char _ZN12DelayUnqueue7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN12DelayUnqueue7cleanupEN7Element12CleanupStageE); -+extern char _ZN12DelayUnqueue8run_taskEP4Task[]; -+EXPORT_SYMBOL(_ZN12DelayUnqueue8run_taskEP4Task); -+extern char _ZN12DelayUnqueue9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12DelayUnqueue9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12DelayUnqueueC1Ev[]; -+EXPORT_SYMBOL(_ZN12DelayUnqueueC1Ev); -+extern char _ZN12DelayUnqueueC2Ev[]; -+EXPORT_SYMBOL(_ZN12DelayUnqueueC2Ev); -+extern char _ZN12DelayUnqueueD0Ev[]; -+EXPORT_SYMBOL(_ZN12DelayUnqueueD0Ev); -+extern char _ZN12DelayUnqueueD1Ev[]; -+EXPORT_SYMBOL(_ZN12DelayUnqueueD1Ev); -+extern char _ZN12DelayUnqueueD2Ev[]; -+EXPORT_SYMBOL(_ZN12DelayUnqueueD2Ev); -+extern char _ZNK12DelayUnqueue10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12DelayUnqueue10class_nameEv); -+extern char _ZNK12DelayUnqueue10port_countEv[]; -+EXPORT_SYMBOL(_ZNK12DelayUnqueue10port_countEv); -+extern char _ZNK12DelayUnqueue10processingEv[]; -+EXPORT_SYMBOL(_ZNK12DelayUnqueue10processingEv); -+extern char _ZTV12DelayUnqueue[]; -+EXPORT_SYMBOL(_ZTV12DelayUnqueue); -+extern char _ZN16DevirtualizeInfo9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN16DevirtualizeInfo9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN16DevirtualizeInfoC1Ev[]; -+EXPORT_SYMBOL(_ZN16DevirtualizeInfoC1Ev); -+extern char _ZN16DevirtualizeInfoC2Ev[]; -+EXPORT_SYMBOL(_ZN16DevirtualizeInfoC2Ev); -+extern char _ZN16DevirtualizeInfoD0Ev[]; -+EXPORT_SYMBOL(_ZN16DevirtualizeInfoD0Ev); -+extern char _ZN16DevirtualizeInfoD1Ev[]; -+EXPORT_SYMBOL(_ZN16DevirtualizeInfoD1Ev); -+extern char _ZN16DevirtualizeInfoD2Ev[]; -+EXPORT_SYMBOL(_ZN16DevirtualizeInfoD2Ev); -+extern char _ZNK16DevirtualizeInfo10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK16DevirtualizeInfo10class_nameEv); -+extern char _ZTV16DevirtualizeInfo[]; -+EXPORT_SYMBOL(_ZTV16DevirtualizeInfo); -+extern char _ZN7Discard10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7Discard10initializeEP12ErrorHandler); -+extern char _ZN7Discard12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN7Discard12add_handlersEv); -+extern char _ZN7Discard12read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN7Discard12read_handlerEP7ElementPv); -+extern char _ZN7Discard13write_handlerERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7Discard13write_handlerERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN7Discard4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN7Discard4pushEiP6Packet); -+extern char _ZN7Discard8run_taskEP4Task[]; -+EXPORT_SYMBOL(_ZN7Discard8run_taskEP4Task); -+extern char _ZN7DiscardC1Ev[]; -+EXPORT_SYMBOL(_ZN7DiscardC1Ev); -+extern char _ZN7DiscardC2Ev[]; -+EXPORT_SYMBOL(_ZN7DiscardC2Ev); -+extern char _ZN7DiscardD0Ev[]; -+EXPORT_SYMBOL(_ZN7DiscardD0Ev); -+extern char _ZN7DiscardD1Ev[]; -+EXPORT_SYMBOL(_ZN7DiscardD1Ev); -+extern char _ZN7DiscardD2Ev[]; -+EXPORT_SYMBOL(_ZN7DiscardD2Ev); -+extern char _ZNK7Discard10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK7Discard10class_nameEv); -+extern char _ZNK7Discard10port_countEv[]; -+EXPORT_SYMBOL(_ZNK7Discard10port_countEv); -+extern char _ZNK7Discard10processingEv[]; -+EXPORT_SYMBOL(_ZNK7Discard10processingEv); -+extern char _ZTV7Discard[]; -+EXPORT_SYMBOL(_ZTV7Discard); -+extern char _ZN13DiscardNoFree10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13DiscardNoFree10initializeEP12ErrorHandler); -+extern char _ZN13DiscardNoFree12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN13DiscardNoFree12add_handlersEv); -+extern char _ZN13DiscardNoFree4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN13DiscardNoFree4pushEiP6Packet); -+extern char _ZN13DiscardNoFree8run_taskEP4Task[]; -+EXPORT_SYMBOL(_ZN13DiscardNoFree8run_taskEP4Task); -+extern char _ZN13DiscardNoFreeC1Ev[]; -+EXPORT_SYMBOL(_ZN13DiscardNoFreeC1Ev); -+extern char _ZN13DiscardNoFreeC2Ev[]; -+EXPORT_SYMBOL(_ZN13DiscardNoFreeC2Ev); -+extern char _ZN13DiscardNoFreeD0Ev[]; -+EXPORT_SYMBOL(_ZN13DiscardNoFreeD0Ev); -+extern char _ZN13DiscardNoFreeD1Ev[]; -+EXPORT_SYMBOL(_ZN13DiscardNoFreeD1Ev); -+extern char _ZN13DiscardNoFreeD2Ev[]; -+EXPORT_SYMBOL(_ZN13DiscardNoFreeD2Ev); -+extern char _ZNK13DiscardNoFree10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK13DiscardNoFree10class_nameEv); -+extern char _ZNK13DiscardNoFree10port_countEv[]; -+EXPORT_SYMBOL(_ZNK13DiscardNoFree10port_countEv); -+extern char _ZNK13DiscardNoFree10processingEv[]; -+EXPORT_SYMBOL(_ZNK13DiscardNoFree10processingEv); -+extern char _ZTV13DiscardNoFree[]; -+EXPORT_SYMBOL(_ZTV13DiscardNoFree); -+extern char click_cleanup_packages[]; -+EXPORT_SYMBOL(click_cleanup_packages); -+extern char click_has_provision[]; -+EXPORT_SYMBOL(click_has_provision); -+extern char click_provide[]; -+EXPORT_SYMBOL(click_provide); -+extern char click_public_packages[]; -+EXPORT_SYMBOL(click_public_packages); -+extern char click_unprovide[]; -+EXPORT_SYMBOL(click_unprovide); -+extern char _ZN13DriverManagerC1Ev[]; -+EXPORT_SYMBOL(_ZN13DriverManagerC1Ev); -+extern char _ZN13DriverManagerC2Ev[]; -+EXPORT_SYMBOL(_ZN13DriverManagerC2Ev); -+extern char _ZN13DriverManagerD0Ev[]; -+EXPORT_SYMBOL(_ZN13DriverManagerD0Ev); -+extern char _ZN13DriverManagerD1Ev[]; -+EXPORT_SYMBOL(_ZN13DriverManagerD1Ev); -+extern char _ZNK13DriverManager10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK13DriverManager10class_nameEv); -+extern char _ZTV13DriverManager[]; -+EXPORT_SYMBOL(_ZTV13DriverManager); -+extern char _ZN14DropBroadcasts12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN14DropBroadcasts12add_handlersEv); -+extern char _ZN14DropBroadcasts13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN14DropBroadcasts13simple_actionEP6Packet); -+extern char _ZN14DropBroadcasts7drop_itEP6Packet[]; -+EXPORT_SYMBOL(_ZN14DropBroadcasts7drop_itEP6Packet); -+extern char _ZN14DropBroadcastsC1Ev[]; -+EXPORT_SYMBOL(_ZN14DropBroadcastsC1Ev); -+extern char _ZN14DropBroadcastsC2Ev[]; -+EXPORT_SYMBOL(_ZN14DropBroadcastsC2Ev); -+extern char _ZN14DropBroadcastsD0Ev[]; -+EXPORT_SYMBOL(_ZN14DropBroadcastsD0Ev); -+extern char _ZN14DropBroadcastsD1Ev[]; -+EXPORT_SYMBOL(_ZN14DropBroadcastsD1Ev); -+extern char _ZN14DropBroadcastsD2Ev[]; -+EXPORT_SYMBOL(_ZN14DropBroadcastsD2Ev); -+extern char _ZNK14DropBroadcasts10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK14DropBroadcasts10class_nameEv); -+extern char _ZNK14DropBroadcasts10port_countEv[]; -+EXPORT_SYMBOL(_ZNK14DropBroadcasts10port_countEv); -+extern char _ZNK14DropBroadcasts10processingEv[]; -+EXPORT_SYMBOL(_ZNK14DropBroadcasts10processingEv); -+extern char _ZTV14DropBroadcasts[]; -+EXPORT_SYMBOL(_ZTV14DropBroadcasts); -+extern char _ZN8DRRSched10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8DRRSched10initializeEP12ErrorHandler); -+extern char _ZN8DRRSched4castEPKc[]; -+EXPORT_SYMBOL(_ZN8DRRSched4castEPKc); -+extern char _ZN8DRRSched4pullEi[]; -+EXPORT_SYMBOL(_ZN8DRRSched4pullEi); -+extern char _ZN8DRRSched7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN8DRRSched7cleanupEN7Element12CleanupStageE); -+extern char _ZN8DRRSched9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8DRRSched9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN8DRRSchedC1Ev[]; -+EXPORT_SYMBOL(_ZN8DRRSchedC1Ev); -+extern char _ZN8DRRSchedC2Ev[]; -+EXPORT_SYMBOL(_ZN8DRRSchedC2Ev); -+extern char _ZN8DRRSchedD0Ev[]; -+EXPORT_SYMBOL(_ZN8DRRSchedD0Ev); -+extern char _ZN8DRRSchedD1Ev[]; -+EXPORT_SYMBOL(_ZN8DRRSchedD1Ev); -+extern char _ZN8DRRSchedD2Ev[]; -+EXPORT_SYMBOL(_ZN8DRRSchedD2Ev); -+extern char _ZNK8DRRSched10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK8DRRSched10class_nameEv); -+extern char _ZNK8DRRSched10port_countEv[]; -+EXPORT_SYMBOL(_ZNK8DRRSched10port_countEv); -+extern char _ZNK8DRRSched10processingEv[]; -+EXPORT_SYMBOL(_ZNK8DRRSched10processingEv); -+extern char _ZTV8DRRSched[]; -+EXPORT_SYMBOL(_ZTV8DRRSched); -+extern char _ZN17DynamicUDPIPEncap13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN17DynamicUDPIPEncap13simple_actionEP6Packet); -+extern char _ZN17DynamicUDPIPEncap9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN17DynamicUDPIPEncap9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN17DynamicUDPIPEncapC1Ev[]; -+EXPORT_SYMBOL(_ZN17DynamicUDPIPEncapC1Ev); -+extern char _ZN17DynamicUDPIPEncapC2Ev[]; -+EXPORT_SYMBOL(_ZN17DynamicUDPIPEncapC2Ev); -+extern char _ZN17DynamicUDPIPEncapD0Ev[]; -+EXPORT_SYMBOL(_ZN17DynamicUDPIPEncapD0Ev); -+extern char _ZN17DynamicUDPIPEncapD1Ev[]; -+EXPORT_SYMBOL(_ZN17DynamicUDPIPEncapD1Ev); -+extern char _ZN17DynamicUDPIPEncapD2Ev[]; -+EXPORT_SYMBOL(_ZN17DynamicUDPIPEncapD2Ev); -+extern char _ZNK17DynamicUDPIPEncap10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK17DynamicUDPIPEncap10class_nameEv); -+extern char _ZNK17DynamicUDPIPEncap10port_countEv[]; -+EXPORT_SYMBOL(_ZNK17DynamicUDPIPEncap10port_countEv); -+extern char _ZNK17DynamicUDPIPEncap10processingEv[]; -+EXPORT_SYMBOL(_ZNK17DynamicUDPIPEncap10processingEv); -+extern char _ZNK17DynamicUDPIPEncap5flagsEv[]; -+EXPORT_SYMBOL(_ZNK17DynamicUDPIPEncap5flagsEv); -+extern char _ZTV17DynamicUDPIPEncap[]; -+EXPORT_SYMBOL(_ZTV17DynamicUDPIPEncap); -+extern char _ZN7Element10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7Element10initializeEP12ErrorHandler); -+extern char _ZN7Element10set_nportsEii[]; -+EXPORT_SYMBOL(_ZN7Element10set_nportsEii); -+extern char _ZN7Element10take_stateEPS_P12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7Element10take_stateEPS_P12ErrorHandler); -+extern char _ZN7Element11local_llrpcEjPv[]; -+EXPORT_SYMBOL(_ZN7Element11local_llrpcEjPv); -+extern char _ZN7Element11set_handlerERK6StringiPFiiRS0_PS_PK7HandlerP12ErrorHandlerEPvSC_[]; -+EXPORT_SYMBOL(_ZN7Element11set_handlerERK6StringiPFiiRS0_PS_PK7HandlerP12ErrorHandlerEPvSC_); -+extern char _ZN7Element12PULL_TO_PUSHE[]; -+EXPORT_SYMBOL(_ZN7Element12PULL_TO_PUSHE); -+extern char _ZN7Element12PUSH_TO_PULLE[]; -+EXPORT_SYMBOL(_ZN7Element12PUSH_TO_PULLE); -+extern char _ZN7Element12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN7Element12add_handlersEv); -+extern char _ZN7Element12connect_portEbiPS_i[]; -+EXPORT_SYMBOL(_ZN7Element12connect_portEbiPS_i); -+extern char _ZN7Element13COMPLETE_FLOWE[]; -+EXPORT_SYMBOL(_ZN7Element13COMPLETE_FLOWE); -+extern char _ZN7Element13notify_nportsEiiP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7Element13notify_nportsEiiP12ErrorHandler); -+extern char _ZN7Element13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN7Element13simple_actionEP6Packet); -+extern char _ZN7Element16add_read_handlerERK6StringPFS0_PS_PvES4_[]; -+EXPORT_SYMBOL(_ZN7Element16add_read_handlerERK6StringPFS0_PS_PvES4_); -+extern char _ZN7Element16initialize_portsEPKiS1_[]; -+EXPORT_SYMBOL(_ZN7Element16initialize_portsEPKiS1_); -+extern char _ZN7Element16live_reconfigureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7Element16live_reconfigureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN7Element17add_task_handlersEP4TaskRK6String[]; -+EXPORT_SYMBOL(_ZN7Element17add_task_handlersEP4TaskRK6String); -+extern char _ZN7Element17add_write_handlerERK6StringPFiS2_PS_PvP12ErrorHandlerES4_[]; -+EXPORT_SYMBOL(_ZN7Element17add_write_handlerERK6StringPFiS2_PS_PvP12ErrorHandlerES4_); -+extern char _ZN7Element17set_handler_flagsERK6Stringi[]; -+EXPORT_SYMBOL(_ZN7Element17set_handler_flagsERK6Stringi); -+extern char _ZN7Element19nelements_allocatedE[]; -+EXPORT_SYMBOL(_ZN7Element19nelements_allocatedE); -+extern char _ZN7Element20add_default_handlersEb[]; -+EXPORT_SYMBOL(_ZN7Element20add_default_handlersEb); -+extern char _ZN7Element20next_processing_codeERPKcP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7Element20next_processing_codeERPKcP12ErrorHandler); -+extern char _ZN7Element20read_keyword_handlerEPS_Pv[]; -+EXPORT_SYMBOL(_ZN7Element20read_keyword_handlerEPS_Pv); -+extern char _ZN7Element23read_positional_handlerEPS_Pv[]; -+EXPORT_SYMBOL(_ZN7Element23read_positional_handlerEPS_Pv); -+extern char _ZN7Element27reconfigure_keyword_handlerERK6StringPS_PvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7Element27reconfigure_keyword_handlerERK6StringPS_PvP12ErrorHandler); -+extern char _ZN7Element30reconfigure_positional_handlerERK6StringPS_PvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7Element30reconfigure_positional_handlerERK6StringPS_PvP12ErrorHandler); -+extern char _ZN7Element4PULLE[]; -+EXPORT_SYMBOL(_ZN7Element4PULLE); -+extern char _ZN7Element4PUSHE[]; -+EXPORT_SYMBOL(_ZN7Element4PUSHE); -+extern char _ZN7Element4castEPKc[]; -+EXPORT_SYMBOL(_ZN7Element4castEPKc); -+extern char _ZN7Element4pullEi[]; -+EXPORT_SYMBOL(_ZN7Element4pullEi); -+extern char _ZN7Element4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN7Element4pushEiP6Packet); -+extern char _ZN7Element5llrpcEjPv[]; -+EXPORT_SYMBOL(_ZN7Element5llrpcEjPv); -+extern char _ZN7Element7cleanupENS_12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN7Element7cleanupENS_12CleanupStageE); -+extern char _ZN7Element8AGNOSTICE[]; -+EXPORT_SYMBOL(_ZN7Element8AGNOSTICE); -+extern char _ZN7Element8run_taskEP4Task[]; -+EXPORT_SYMBOL(_ZN7Element8run_taskEP4Task); -+extern char _ZN7Element8run_taskEv[]; -+EXPORT_SYMBOL(_ZN7Element8run_taskEv); -+extern char _ZN7Element9PORTS_0_0E[]; -+EXPORT_SYMBOL(_ZN7Element9PORTS_0_0E); -+extern char _ZN7Element9PORTS_0_1E[]; -+EXPORT_SYMBOL(_ZN7Element9PORTS_0_1E); -+extern char _ZN7Element9PORTS_1_0E[]; -+EXPORT_SYMBOL(_ZN7Element9PORTS_1_0E); -+extern char _ZN7Element9PORTS_1_1E[]; -+EXPORT_SYMBOL(_ZN7Element9PORTS_1_1E); -+extern char _ZN7Element9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7Element9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN7Element9run_timerEP5Timer[]; -+EXPORT_SYMBOL(_ZN7Element9run_timerEP5Timer); -+extern char _ZN7Element9run_timerEv[]; -+EXPORT_SYMBOL(_ZN7Element9run_timerEv); -+extern char _ZN7ElementC1Ev[]; -+EXPORT_SYMBOL(_ZN7ElementC1Ev); -+extern char _ZN7ElementC2Ev[]; -+EXPORT_SYMBOL(_ZN7ElementC2Ev); -+extern char _ZN7ElementD0Ev[]; -+EXPORT_SYMBOL(_ZN7ElementD0Ev); -+extern char _ZN7ElementD1Ev[]; -+EXPORT_SYMBOL(_ZN7ElementD1Ev); -+extern char _ZN7ElementD2Ev[]; -+EXPORT_SYMBOL(_ZN7ElementD2Ev); -+extern char _ZNK7Element10port_countEv[]; -+EXPORT_SYMBOL(_ZNK7Element10port_countEv); -+extern char _ZNK7Element10processingEv[]; -+EXPORT_SYMBOL(_ZNK7Element10processingEv); -+extern char _ZNK7Element11declarationEv[]; -+EXPORT_SYMBOL(_ZNK7Element11declarationEv); -+extern char _ZNK7Element13configurationER6VectorI6StringE[]; -+EXPORT_SYMBOL(_ZNK7Element13configurationER6VectorI6StringE); -+extern char _ZNK7Element13configurationEv[]; -+EXPORT_SYMBOL(_ZNK7Element13configurationEv); -+extern char _ZNK7Element15configure_phaseEv[]; -+EXPORT_SYMBOL(_ZNK7Element15configure_phaseEv); -+extern char _ZNK7Element15hotswap_elementEv[]; -+EXPORT_SYMBOL(_ZNK7Element15hotswap_elementEv); -+extern char _ZNK7Element17processing_vectorEPiS0_P12ErrorHandler[]; -+EXPORT_SYMBOL(_ZNK7Element17processing_vectorEPiS0_P12ErrorHandler); -+extern char _ZNK7Element20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK7Element20can_live_reconfigureEv); -+extern char _ZNK7Element2idEv[]; -+EXPORT_SYMBOL(_ZNK7Element2idEv); -+extern char _ZNK7Element4nameEv[]; -+EXPORT_SYMBOL(_ZNK7Element4nameEv); -+extern char _ZNK7Element5flagsEv[]; -+EXPORT_SYMBOL(_ZNK7Element5flagsEv); -+extern char _ZNK7Element6masterEv[]; -+EXPORT_SYMBOL(_ZNK7Element6masterEv); -+extern char _ZNK7Element8landmarkEv[]; -+EXPORT_SYMBOL(_ZNK7Element8landmarkEv); -+extern char _ZNK7Element9flow_codeEv[]; -+EXPORT_SYMBOL(_ZNK7Element9flow_codeEv); -+extern char _ZNK7Element9port_flowEbiP9Bitvector[]; -+EXPORT_SYMBOL(_ZNK7Element9port_flowEbiP9Bitvector); -+extern char _ZTV7Element[]; -+EXPORT_SYMBOL(_ZTV7Element); -+extern char _ZN13ElementFilter11check_matchEP7ElementiNS_8PortTypeE[]; -+EXPORT_SYMBOL(_ZN13ElementFilter11check_matchEP7ElementiNS_8PortTypeE); -+extern char _ZN13ElementFilter6filterER6VectorIP7ElementE[]; -+EXPORT_SYMBOL(_ZN13ElementFilter6filterER6VectorIP7ElementE); -+extern char _ZN13ElementFilterD0Ev[]; -+EXPORT_SYMBOL(_ZN13ElementFilterD0Ev); -+extern char _ZN13ElementFilterD1Ev[]; -+EXPORT_SYMBOL(_ZN13ElementFilterD1Ev); -+extern char _ZN17CastElementFilter11check_matchEP7ElementiN13ElementFilter8PortTypeE[]; -+EXPORT_SYMBOL(_ZN17CastElementFilter11check_matchEP7ElementiN13ElementFilter8PortTypeE); -+extern char _ZN17CastElementFilterC1ERK6String[]; -+EXPORT_SYMBOL(_ZN17CastElementFilterC1ERK6String); -+extern char _ZN17CastElementFilterC2ERK6String[]; -+EXPORT_SYMBOL(_ZN17CastElementFilterC2ERK6String); -+extern char _ZN17CastElementFilterD0Ev[]; -+EXPORT_SYMBOL(_ZN17CastElementFilterD0Ev); -+extern char _ZN17CastElementFilterD1Ev[]; -+EXPORT_SYMBOL(_ZN17CastElementFilterD1Ev); -+extern char _ZTV13ElementFilter[]; -+EXPORT_SYMBOL(_ZTV13ElementFilter); -+extern char _ZTV17CastElementFilter[]; -+EXPORT_SYMBOL(_ZTV17CastElementFilter); -+extern char _ZN11EnsureEther4pullEi[]; -+EXPORT_SYMBOL(_ZN11EnsureEther4pullEi); -+extern char _ZN11EnsureEther4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN11EnsureEther4pushEiP6Packet); -+extern char _ZN11EnsureEther8smactionEP6Packet[]; -+EXPORT_SYMBOL(_ZN11EnsureEther8smactionEP6Packet); -+extern char _ZN11EnsureEther9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11EnsureEther9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN11EnsureEtherC1Ev[]; -+EXPORT_SYMBOL(_ZN11EnsureEtherC1Ev); -+extern char _ZN11EnsureEtherC2Ev[]; -+EXPORT_SYMBOL(_ZN11EnsureEtherC2Ev); -+extern char _ZN11EnsureEtherD0Ev[]; -+EXPORT_SYMBOL(_ZN11EnsureEtherD0Ev); -+extern char _ZN11EnsureEtherD1Ev[]; -+EXPORT_SYMBOL(_ZN11EnsureEtherD1Ev); -+extern char _ZN11EnsureEtherD2Ev[]; -+EXPORT_SYMBOL(_ZN11EnsureEtherD2Ev); -+extern char _ZNK11EnsureEther10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK11EnsureEther10class_nameEv); -+extern char _ZNK11EnsureEther10port_countEv[]; -+EXPORT_SYMBOL(_ZNK11EnsureEther10port_countEv); -+extern char _ZNK11EnsureEther10processingEv[]; -+EXPORT_SYMBOL(_ZNK11EnsureEther10processingEv); -+extern char _ZTV11EnsureEther[]; -+EXPORT_SYMBOL(_ZTV11EnsureEther); -+extern char _ZN11ErrorVeneer11count_errorEN12ErrorHandler11SeriousnessERK6String[]; -+EXPORT_SYMBOL(_ZN11ErrorVeneer11count_errorEN12ErrorHandler11SeriousnessERK6String); -+extern char _ZN11ErrorVeneer11handle_textEN12ErrorHandler11SeriousnessERK6String[]; -+EXPORT_SYMBOL(_ZN11ErrorVeneer11handle_textEN12ErrorHandler11SeriousnessERK6String); -+extern char _ZN11ErrorVeneer12reset_countsEv[]; -+EXPORT_SYMBOL(_ZN11ErrorVeneer12reset_countsEv); -+extern char _ZN11ErrorVeneer13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_[]; -+EXPORT_SYMBOL(_ZN11ErrorVeneer13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_); -+extern char _ZN11ErrorVeneer9make_textEN12ErrorHandler11SeriousnessEPKcPc[]; -+EXPORT_SYMBOL(_ZN11ErrorVeneer9make_textEN12ErrorHandler11SeriousnessEPKcPc); -+extern char _ZN11ErrorVeneerD0Ev[]; -+EXPORT_SYMBOL(_ZN11ErrorVeneerD0Ev); -+extern char _ZN11ErrorVeneerD1Ev[]; -+EXPORT_SYMBOL(_ZN11ErrorVeneerD1Ev); -+extern char _ZN12ErrorHandler11verror_textENS_11SeriousnessERK6StringS3_[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler11verror_textENS_11SeriousnessERK6StringS3_); -+extern char _ZN12ErrorHandler12ERROR_RESULTE[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler12ERROR_RESULTE); -+extern char _ZN12ErrorHandler13decorate_textENS_11SeriousnessERK6StringS3_[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler13decorate_textENS_11SeriousnessERK6StringS3_); -+extern char _ZN12ErrorHandler13prepend_linesERK6StringS2_[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler13prepend_linesERK6StringS2_); -+extern char _ZN12ErrorHandler14add_conversionERK6StringPFS0_iPPcE[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler14add_conversionERK6StringPFS0_iPPcE); -+extern char _ZN12ErrorHandler14set_error_codeEi[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler14set_error_codeEi); -+extern char _ZN12ErrorHandler14silent_handlerEv[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler14silent_handlerEv); -+extern char _ZN12ErrorHandler14static_cleanupEv[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler14static_cleanupEv); -+extern char _ZN12ErrorHandler15default_handlerEv[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler15default_handlerEv); -+extern char _ZN12ErrorHandler17remove_conversionEPNS_10ConversionE[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler17remove_conversionEPNS_10ConversionE); -+extern char _ZN12ErrorHandler17static_initializeEPS_[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler17static_initializeEPS_); -+extern char _ZN12ErrorHandler19has_default_handlerEv[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler19has_default_handlerEv); -+extern char _ZN12ErrorHandler19set_default_handlerEPS_[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler19set_default_handlerEPS_); -+extern char _ZN12ErrorHandler5debugEPKcz[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler5debugEPKcz); -+extern char _ZN12ErrorHandler5errorEPKcz[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler5errorEPKcz); -+extern char _ZN12ErrorHandler5fatalEPKcz[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler5fatalEPKcz); -+extern char _ZN12ErrorHandler6ldebugERK6StringPKcz[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler6ldebugERK6StringPKcz); -+extern char _ZN12ErrorHandler6lerrorERK6StringPKcz[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler6lerrorERK6StringPKcz); -+extern char _ZN12ErrorHandler6lfatalERK6StringPKcz[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler6lfatalERK6StringPKcz); -+extern char _ZN12ErrorHandler6verrorENS_11SeriousnessERK6StringPKcPc[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler6verrorENS_11SeriousnessERK6StringPKcPc); -+extern char _ZN12ErrorHandler7messageEPKcz[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler7messageEPKcz); -+extern char _ZN12ErrorHandler7warningEPKcz[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler7warningEPKcz); -+extern char _ZN12ErrorHandler8lmessageERK6StringPKcz[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler8lmessageERK6StringPKcz); -+extern char _ZN12ErrorHandler8lwarningERK6StringPKcz[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler8lwarningERK6StringPKcz); -+extern char _ZN12ErrorHandler9OK_RESULTE[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler9OK_RESULTE); -+extern char _ZN12ErrorHandler9make_textENS_11SeriousnessEPKcPc[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler9make_textENS_11SeriousnessEPKcPc); -+extern char _ZN12ErrorHandler9make_textENS_11SeriousnessEPKcz[]; -+EXPORT_SYMBOL(_ZN12ErrorHandler9make_textENS_11SeriousnessEPKcz); -+extern char _ZN12ErrorHandlerD0Ev[]; -+EXPORT_SYMBOL(_ZN12ErrorHandlerD0Ev); -+extern char _ZN12ErrorHandlerD1Ev[]; -+EXPORT_SYMBOL(_ZN12ErrorHandlerD1Ev); -+extern char _ZN16BaseErrorHandler11count_errorEN12ErrorHandler11SeriousnessERK6String[]; -+EXPORT_SYMBOL(_ZN16BaseErrorHandler11count_errorEN12ErrorHandler11SeriousnessERK6String); -+extern char _ZN16BaseErrorHandler12reset_countsEv[]; -+EXPORT_SYMBOL(_ZN16BaseErrorHandler12reset_countsEv); -+extern char _ZN16BaseErrorHandlerD0Ev[]; -+EXPORT_SYMBOL(_ZN16BaseErrorHandlerD0Ev); -+extern char _ZN16BaseErrorHandlerD1Ev[]; -+EXPORT_SYMBOL(_ZN16BaseErrorHandlerD1Ev); -+extern char _ZN18PrefixErrorHandler13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_[]; -+EXPORT_SYMBOL(_ZN18PrefixErrorHandler13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_); -+extern char _ZN18PrefixErrorHandlerC1EP12ErrorHandlerRK6String[]; -+EXPORT_SYMBOL(_ZN18PrefixErrorHandlerC1EP12ErrorHandlerRK6String); -+extern char _ZN18PrefixErrorHandlerC2EP12ErrorHandlerRK6String[]; -+EXPORT_SYMBOL(_ZN18PrefixErrorHandlerC2EP12ErrorHandlerRK6String); -+extern char _ZN18PrefixErrorHandlerD0Ev[]; -+EXPORT_SYMBOL(_ZN18PrefixErrorHandlerD0Ev); -+extern char _ZN18PrefixErrorHandlerD1Ev[]; -+EXPORT_SYMBOL(_ZN18PrefixErrorHandlerD1Ev); -+extern char _ZN18SilentErrorHandler11handle_textEN12ErrorHandler11SeriousnessERK6String[]; -+EXPORT_SYMBOL(_ZN18SilentErrorHandler11handle_textEN12ErrorHandler11SeriousnessERK6String); -+extern char _ZN18SilentErrorHandlerD0Ev[]; -+EXPORT_SYMBOL(_ZN18SilentErrorHandlerD0Ev); -+extern char _ZN18SilentErrorHandlerD1Ev[]; -+EXPORT_SYMBOL(_ZN18SilentErrorHandlerD1Ev); -+extern char _ZN19ContextErrorHandler13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_[]; -+EXPORT_SYMBOL(_ZN19ContextErrorHandler13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_); -+extern char _ZN19ContextErrorHandlerC1EP12ErrorHandlerRK6StringS4_S4_[]; -+EXPORT_SYMBOL(_ZN19ContextErrorHandlerC1EP12ErrorHandlerRK6StringS4_S4_); -+extern char _ZN19ContextErrorHandlerC2EP12ErrorHandlerRK6StringS4_S4_[]; -+EXPORT_SYMBOL(_ZN19ContextErrorHandlerC2EP12ErrorHandlerRK6StringS4_S4_); -+extern char _ZN19ContextErrorHandlerD0Ev[]; -+EXPORT_SYMBOL(_ZN19ContextErrorHandlerD0Ev); -+extern char _ZN19ContextErrorHandlerD1Ev[]; -+EXPORT_SYMBOL(_ZN19ContextErrorHandlerD1Ev); -+extern char _ZN20LandmarkErrorHandler13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_[]; -+EXPORT_SYMBOL(_ZN20LandmarkErrorHandler13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_); -+extern char _ZN20LandmarkErrorHandlerC1EP12ErrorHandlerRK6String[]; -+EXPORT_SYMBOL(_ZN20LandmarkErrorHandlerC1EP12ErrorHandlerRK6String); -+extern char _ZN20LandmarkErrorHandlerC2EP12ErrorHandlerRK6String[]; -+EXPORT_SYMBOL(_ZN20LandmarkErrorHandlerC2EP12ErrorHandlerRK6String); -+extern char _ZN20LandmarkErrorHandlerD0Ev[]; -+EXPORT_SYMBOL(_ZN20LandmarkErrorHandlerD0Ev); -+extern char _ZN20LandmarkErrorHandlerD1Ev[]; -+EXPORT_SYMBOL(_ZN20LandmarkErrorHandlerD1Ev); -+extern char _ZN25VerboseFilterErrorHandler11handle_textEN12ErrorHandler11SeriousnessERK6String[]; -+EXPORT_SYMBOL(_ZN25VerboseFilterErrorHandler11handle_textEN12ErrorHandler11SeriousnessERK6String); -+extern char _ZN25VerboseFilterErrorHandlerC1EP12ErrorHandleri[]; -+EXPORT_SYMBOL(_ZN25VerboseFilterErrorHandlerC1EP12ErrorHandleri); -+extern char _ZN25VerboseFilterErrorHandlerC2EP12ErrorHandleri[]; -+EXPORT_SYMBOL(_ZN25VerboseFilterErrorHandlerC2EP12ErrorHandleri); -+extern char _ZN25VerboseFilterErrorHandlerD0Ev[]; -+EXPORT_SYMBOL(_ZN25VerboseFilterErrorHandlerD0Ev); -+extern char _ZN25VerboseFilterErrorHandlerD1Ev[]; -+EXPORT_SYMBOL(_ZN25VerboseFilterErrorHandlerD1Ev); -+extern char _ZNK11ErrorVeneer7nerrorsEv[]; -+EXPORT_SYMBOL(_ZNK11ErrorVeneer7nerrorsEv); -+extern char _ZNK11ErrorVeneer9nwarningsEv[]; -+EXPORT_SYMBOL(_ZNK11ErrorVeneer9nwarningsEv); -+extern char _ZNK12ErrorHandler13min_verbosityEv[]; -+EXPORT_SYMBOL(_ZNK12ErrorHandler13min_verbosityEv); -+extern char _ZNK16BaseErrorHandler7nerrorsEv[]; -+EXPORT_SYMBOL(_ZNK16BaseErrorHandler7nerrorsEv); -+extern char _ZNK16BaseErrorHandler9nwarningsEv[]; -+EXPORT_SYMBOL(_ZNK16BaseErrorHandler9nwarningsEv); -+extern char _ZNK25VerboseFilterErrorHandler13min_verbosityEv[]; -+EXPORT_SYMBOL(_ZNK25VerboseFilterErrorHandler13min_verbosityEv); -+extern char _ZTV11ErrorVeneer[]; -+EXPORT_SYMBOL(_ZTV11ErrorVeneer); -+extern char _ZTV12ErrorHandler[]; -+EXPORT_SYMBOL(_ZTV12ErrorHandler); -+extern char _ZTV16BaseErrorHandler[]; -+EXPORT_SYMBOL(_ZTV16BaseErrorHandler); -+extern char _ZTV18PrefixErrorHandler[]; -+EXPORT_SYMBOL(_ZTV18PrefixErrorHandler); -+extern char _ZTV18SilentErrorHandler[]; -+EXPORT_SYMBOL(_ZTV18SilentErrorHandler); -+extern char _ZTV19ContextErrorHandler[]; -+EXPORT_SYMBOL(_ZTV19ContextErrorHandler); -+extern char _ZTV20LandmarkErrorHandler[]; -+EXPORT_SYMBOL(_ZTV20LandmarkErrorHandler); -+extern char _ZTV25VerboseFilterErrorHandler[]; -+EXPORT_SYMBOL(_ZTV25VerboseFilterErrorHandler); -+extern char _ZN12ErrorElement10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12ErrorElement10initializeEP12ErrorHandler); -+extern char _ZN12ErrorElement9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12ErrorElement9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12ErrorElementC1Ev[]; -+EXPORT_SYMBOL(_ZN12ErrorElementC1Ev); -+extern char _ZN12ErrorElementC2Ev[]; -+EXPORT_SYMBOL(_ZN12ErrorElementC2Ev); -+extern char _ZN12ErrorElementD0Ev[]; -+EXPORT_SYMBOL(_ZN12ErrorElementD0Ev); -+extern char _ZN12ErrorElementD1Ev[]; -+EXPORT_SYMBOL(_ZN12ErrorElementD1Ev); -+extern char _ZN12ErrorElementD2Ev[]; -+EXPORT_SYMBOL(_ZN12ErrorElementD2Ev); -+extern char _ZNK12ErrorElement10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12ErrorElement10class_nameEv); -+extern char _ZNK12ErrorElement10port_countEv[]; -+EXPORT_SYMBOL(_ZNK12ErrorElement10port_countEv); -+extern char _ZNK12ErrorElement10processingEv[]; -+EXPORT_SYMBOL(_ZNK12ErrorElement10processingEv); -+extern char _ZNK12ErrorElement9flow_codeEv[]; -+EXPORT_SYMBOL(_ZNK12ErrorElement9flow_codeEv); -+extern char _ZTV12ErrorElement[]; -+EXPORT_SYMBOL(_ZTV12ErrorElement); -+extern char _ZNK12EtherAddress7unparseEv[]; -+EXPORT_SYMBOL(_ZNK12EtherAddress7unparseEv); -+extern char _ZlsR11StringAccumRK12EtherAddress[]; -+EXPORT_SYMBOL(_ZlsR11StringAccumRK12EtherAddress); -+extern char _ZN10EtherEncap12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN10EtherEncap12add_handlersEv); -+extern char _ZN10EtherEncap12read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN10EtherEncap12read_handlerEP7ElementPv); -+extern char _ZN10EtherEncap4pullEi[]; -+EXPORT_SYMBOL(_ZN10EtherEncap4pullEi); -+extern char _ZN10EtherEncap4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN10EtherEncap4pushEiP6Packet); -+extern char _ZN10EtherEncap8smactionEP6Packet[]; -+EXPORT_SYMBOL(_ZN10EtherEncap8smactionEP6Packet); -+extern char _ZN10EtherEncap9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10EtherEncap9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN10EtherEncapC1Ev[]; -+EXPORT_SYMBOL(_ZN10EtherEncapC1Ev); -+extern char _ZN10EtherEncapC2Ev[]; -+EXPORT_SYMBOL(_ZN10EtherEncapC2Ev); -+extern char _ZN10EtherEncapD0Ev[]; -+EXPORT_SYMBOL(_ZN10EtherEncapD0Ev); -+extern char _ZN10EtherEncapD1Ev[]; -+EXPORT_SYMBOL(_ZN10EtherEncapD1Ev); -+extern char _ZN10EtherEncapD2Ev[]; -+EXPORT_SYMBOL(_ZN10EtherEncapD2Ev); -+extern char _ZNK10EtherEncap10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK10EtherEncap10class_nameEv); -+extern char _ZNK10EtherEncap10port_countEv[]; -+EXPORT_SYMBOL(_ZNK10EtherEncap10port_countEv); -+extern char _ZNK10EtherEncap10processingEv[]; -+EXPORT_SYMBOL(_ZNK10EtherEncap10processingEv); -+extern char _ZNK10EtherEncap20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK10EtherEncap20can_live_reconfigureEv); -+extern char _ZTV10EtherEncap[]; -+EXPORT_SYMBOL(_ZTV10EtherEncap); -+extern char _ZN11EtherMirror13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN11EtherMirror13simple_actionEP6Packet); -+extern char _ZN11EtherMirrorC1Ev[]; -+EXPORT_SYMBOL(_ZN11EtherMirrorC1Ev); -+extern char _ZN11EtherMirrorC2Ev[]; -+EXPORT_SYMBOL(_ZN11EtherMirrorC2Ev); -+extern char _ZN11EtherMirrorD0Ev[]; -+EXPORT_SYMBOL(_ZN11EtherMirrorD0Ev); -+extern char _ZN11EtherMirrorD1Ev[]; -+EXPORT_SYMBOL(_ZN11EtherMirrorD1Ev); -+extern char _ZN11EtherMirrorD2Ev[]; -+EXPORT_SYMBOL(_ZN11EtherMirrorD2Ev); -+extern char _ZNK11EtherMirror10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK11EtherMirror10class_nameEv); -+extern char _ZNK11EtherMirror10port_countEv[]; -+EXPORT_SYMBOL(_ZNK11EtherMirror10port_countEv); -+extern char _ZTV11EtherMirror[]; -+EXPORT_SYMBOL(_ZTV11EtherMirror); -+extern char _ZN12FastTCPFlows10get_packetEv[]; -+EXPORT_SYMBOL(_ZN12FastTCPFlows10get_packetEv); -+extern char _ZN12FastTCPFlows10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12FastTCPFlows10initializeEP12ErrorHandler); -+extern char _ZN12FastTCPFlows12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN12FastTCPFlows12add_handlersEv); -+extern char _ZN12FastTCPFlows12change_portsEi[]; -+EXPORT_SYMBOL(_ZN12FastTCPFlows12change_portsEi); -+extern char _ZN12FastTCPFlows4pullEi[]; -+EXPORT_SYMBOL(_ZN12FastTCPFlows4pullEi); -+extern char _ZN12FastTCPFlows5resetEv[]; -+EXPORT_SYMBOL(_ZN12FastTCPFlows5resetEv); -+extern char _ZN12FastTCPFlows7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN12FastTCPFlows7cleanupEN7Element12CleanupStageE); -+extern char _ZN12FastTCPFlows8NO_LIMITE[]; -+EXPORT_SYMBOL(_ZN12FastTCPFlows8NO_LIMITE); -+extern char _ZN12FastTCPFlows9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12FastTCPFlows9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12FastTCPFlowsC1Ev[]; -+EXPORT_SYMBOL(_ZN12FastTCPFlowsC1Ev); -+extern char _ZN12FastTCPFlowsC2Ev[]; -+EXPORT_SYMBOL(_ZN12FastTCPFlowsC2Ev); -+extern char _ZN12FastTCPFlowsD0Ev[]; -+EXPORT_SYMBOL(_ZN12FastTCPFlowsD0Ev); -+extern char _ZN12FastTCPFlowsD1Ev[]; -+EXPORT_SYMBOL(_ZN12FastTCPFlowsD1Ev); -+extern char _ZN12FastTCPFlowsD2Ev[]; -+EXPORT_SYMBOL(_ZN12FastTCPFlowsD2Ev); -+extern char _ZNK12FastTCPFlows10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12FastTCPFlows10class_nameEv); -+extern char _ZNK12FastTCPFlows10port_countEv[]; -+EXPORT_SYMBOL(_ZNK12FastTCPFlows10port_countEv); -+extern char _ZNK12FastTCPFlows10processingEv[]; -+EXPORT_SYMBOL(_ZNK12FastTCPFlows10processingEv); -+extern char _ZTV12FastTCPFlows[]; -+EXPORT_SYMBOL(_ZTV12FastTCPFlows); -+extern char _ZN12FastUDPFlows10get_packetEv[]; -+EXPORT_SYMBOL(_ZN12FastUDPFlows10get_packetEv); -+extern char _ZN12FastUDPFlows10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12FastUDPFlows10initializeEP12ErrorHandler); -+extern char _ZN12FastUDPFlows12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN12FastUDPFlows12add_handlersEv); -+extern char _ZN12FastUDPFlows12change_portsEi[]; -+EXPORT_SYMBOL(_ZN12FastUDPFlows12change_portsEi); -+extern char _ZN12FastUDPFlows4pullEi[]; -+EXPORT_SYMBOL(_ZN12FastUDPFlows4pullEi); -+extern char _ZN12FastUDPFlows5resetEv[]; -+EXPORT_SYMBOL(_ZN12FastUDPFlows5resetEv); -+extern char _ZN12FastUDPFlows7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN12FastUDPFlows7cleanupEN7Element12CleanupStageE); -+extern char _ZN12FastUDPFlows8NO_LIMITE[]; -+EXPORT_SYMBOL(_ZN12FastUDPFlows8NO_LIMITE); -+extern char _ZN12FastUDPFlows9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12FastUDPFlows9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12FastUDPFlowsC1Ev[]; -+EXPORT_SYMBOL(_ZN12FastUDPFlowsC1Ev); -+extern char _ZN12FastUDPFlowsC2Ev[]; -+EXPORT_SYMBOL(_ZN12FastUDPFlowsC2Ev); -+extern char _ZN12FastUDPFlowsD0Ev[]; -+EXPORT_SYMBOL(_ZN12FastUDPFlowsD0Ev); -+extern char _ZN12FastUDPFlowsD1Ev[]; -+EXPORT_SYMBOL(_ZN12FastUDPFlowsD1Ev); -+extern char _ZN12FastUDPFlowsD2Ev[]; -+EXPORT_SYMBOL(_ZN12FastUDPFlowsD2Ev); -+extern char _ZNK12FastUDPFlows10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12FastUDPFlows10class_nameEv); -+extern char _ZNK12FastUDPFlows10port_countEv[]; -+EXPORT_SYMBOL(_ZNK12FastUDPFlows10port_countEv); -+extern char _ZNK12FastUDPFlows10processingEv[]; -+EXPORT_SYMBOL(_ZNK12FastUDPFlows10processingEv); -+extern char _ZTV12FastUDPFlows[]; -+EXPORT_SYMBOL(_ZTV12FastUDPFlows); -+extern char _ZN13FastUDPSource10incr_portsEv[]; -+EXPORT_SYMBOL(_ZN13FastUDPSource10incr_portsEv); -+extern char _ZN13FastUDPSource10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13FastUDPSource10initializeEP12ErrorHandler); -+extern char _ZN13FastUDPSource12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN13FastUDPSource12add_handlersEv); -+extern char _ZN13FastUDPSource4pullEi[]; -+EXPORT_SYMBOL(_ZN13FastUDPSource4pullEi); -+extern char _ZN13FastUDPSource5resetEv[]; -+EXPORT_SYMBOL(_ZN13FastUDPSource5resetEv); -+extern char _ZN13FastUDPSource7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN13FastUDPSource7cleanupEN7Element12CleanupStageE); -+extern char _ZN13FastUDPSource8NO_LIMITE[]; -+EXPORT_SYMBOL(_ZN13FastUDPSource8NO_LIMITE); -+extern char _ZN13FastUDPSource9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13FastUDPSource9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN13FastUDPSourceC1Ev[]; -+EXPORT_SYMBOL(_ZN13FastUDPSourceC1Ev); -+extern char _ZN13FastUDPSourceC2Ev[]; -+EXPORT_SYMBOL(_ZN13FastUDPSourceC2Ev); -+extern char _ZN13FastUDPSourceD0Ev[]; -+EXPORT_SYMBOL(_ZN13FastUDPSourceD0Ev); -+extern char _ZN13FastUDPSourceD1Ev[]; -+EXPORT_SYMBOL(_ZN13FastUDPSourceD1Ev); -+extern char _ZN13FastUDPSourceD2Ev[]; -+EXPORT_SYMBOL(_ZN13FastUDPSourceD2Ev); -+extern char _ZNK13FastUDPSource10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK13FastUDPSource10class_nameEv); -+extern char _ZNK13FastUDPSource10port_countEv[]; -+EXPORT_SYMBOL(_ZNK13FastUDPSource10port_countEv); -+extern char _ZNK13FastUDPSource10processingEv[]; -+EXPORT_SYMBOL(_ZNK13FastUDPSource10processingEv); -+extern char _ZTV13FastUDPSource[]; -+EXPORT_SYMBOL(_ZTV13FastUDPSource); -+extern char _ZN8FixIPSrc13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN8FixIPSrc13simple_actionEP6Packet); -+extern char _ZN8FixIPSrc6fix_itEP6Packet[]; -+EXPORT_SYMBOL(_ZN8FixIPSrc6fix_itEP6Packet); -+extern char _ZN8FixIPSrc9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8FixIPSrc9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN8FixIPSrcC1Ev[]; -+EXPORT_SYMBOL(_ZN8FixIPSrcC1Ev); -+extern char _ZN8FixIPSrcC2Ev[]; -+EXPORT_SYMBOL(_ZN8FixIPSrcC2Ev); -+extern char _ZN8FixIPSrcD0Ev[]; -+EXPORT_SYMBOL(_ZN8FixIPSrcD0Ev); -+extern char _ZN8FixIPSrcD1Ev[]; -+EXPORT_SYMBOL(_ZN8FixIPSrcD1Ev); -+extern char _ZN8FixIPSrcD2Ev[]; -+EXPORT_SYMBOL(_ZN8FixIPSrcD2Ev); -+extern char _ZNK8FixIPSrc10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK8FixIPSrc10class_nameEv); -+extern char _ZNK8FixIPSrc10port_countEv[]; -+EXPORT_SYMBOL(_ZNK8FixIPSrc10port_countEv); -+extern char _ZNK8FixIPSrc10processingEv[]; -+EXPORT_SYMBOL(_ZNK8FixIPSrc10processingEv); -+extern char _ZTV8FixIPSrc[]; -+EXPORT_SYMBOL(_ZTV8FixIPSrc); -+extern char _ZN10FromDevice10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10FromDevice10initializeEP12ErrorHandler); -+extern char _ZN10FromDevice10take_stateEP7ElementP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10FromDevice10take_stateEP7ElementP12ErrorHandler); -+extern char _ZN10FromDevice12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN10FromDevice12add_handlersEv); -+extern char _ZN10FromDevice12reset_countsEv[]; -+EXPORT_SYMBOL(_ZN10FromDevice12reset_countsEv); -+extern char _ZN10FromDevice14static_cleanupEv[]; -+EXPORT_SYMBOL(_ZN10FromDevice14static_cleanupEv); -+extern char _ZN10FromDevice17static_initializeEv[]; -+EXPORT_SYMBOL(_ZN10FromDevice17static_initializeEv); -+extern char _ZN10FromDevice4castEPKc[]; -+EXPORT_SYMBOL(_ZN10FromDevice4castEPKc); -+extern char _ZN10FromDevice7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN10FromDevice7cleanupEN7Element12CleanupStageE); -+extern char _ZN10FromDevice7got_skbEP7sk_buff[]; -+EXPORT_SYMBOL(_ZN10FromDevice7got_skbEP7sk_buff); -+extern char _ZN10FromDevice8run_taskEP4Task[]; -+EXPORT_SYMBOL(_ZN10FromDevice8run_taskEP4Task); -+extern char _ZN10FromDevice9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10FromDevice9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN10FromDeviceC1Ev[]; -+EXPORT_SYMBOL(_ZN10FromDeviceC1Ev); -+extern char _ZN10FromDeviceC2Ev[]; -+EXPORT_SYMBOL(_ZN10FromDeviceC2Ev); -+extern char _ZN10FromDeviceD0Ev[]; -+EXPORT_SYMBOL(_ZN10FromDeviceD0Ev); -+extern char _ZN10FromDeviceD1Ev[]; -+EXPORT_SYMBOL(_ZN10FromDeviceD1Ev); -+extern char _ZN10FromDeviceD2Ev[]; -+EXPORT_SYMBOL(_ZN10FromDeviceD2Ev); -+extern char _ZNK10FromDevice10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK10FromDevice10class_nameEv); -+extern char _ZNK10FromDevice10port_countEv[]; -+EXPORT_SYMBOL(_ZNK10FromDevice10port_countEv); -+extern char _ZNK10FromDevice10processingEv[]; -+EXPORT_SYMBOL(_ZNK10FromDevice10processingEv); -+extern char _ZTV10FromDevice[]; -+EXPORT_SYMBOL(_ZTV10FromDevice); -+extern char _ZN8FromHost10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8FromHost10initializeEP12ErrorHandler); -+extern char _ZN8FromHost10new_deviceEPKc[]; -+EXPORT_SYMBOL(_ZN8FromHost10new_deviceEPKc); -+extern char _ZN8FromHost17static_initializeEv[]; -+EXPORT_SYMBOL(_ZN8FromHost17static_initializeEv); -+extern char _ZN8FromHost20set_device_addressesEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8FromHost20set_device_addressesEP12ErrorHandler); -+extern char _ZN8FromHost5fl_txEP7sk_buffP10net_device[]; -+EXPORT_SYMBOL(_ZN8FromHost5fl_txEP7sk_buffP10net_device); -+extern char _ZN8FromHost7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN8FromHost7cleanupEN7Element12CleanupStageE); -+extern char _ZN8FromHost8run_taskEP4Task[]; -+EXPORT_SYMBOL(_ZN8FromHost8run_taskEP4Task); -+extern char _ZN8FromHost9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8FromHost9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN8FromHostC1Ev[]; -+EXPORT_SYMBOL(_ZN8FromHostC1Ev); -+extern char _ZN8FromHostC2Ev[]; -+EXPORT_SYMBOL(_ZN8FromHostC2Ev); -+extern char _ZN8FromHostD0Ev[]; -+EXPORT_SYMBOL(_ZN8FromHostD0Ev); -+extern char _ZN8FromHostD1Ev[]; -+EXPORT_SYMBOL(_ZN8FromHostD1Ev); -+extern char _ZN8FromHostD2Ev[]; -+EXPORT_SYMBOL(_ZN8FromHostD2Ev); -+extern char _ZNK8FromHost10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK8FromHost10class_nameEv); -+extern char _ZNK8FromHost10port_countEv[]; -+EXPORT_SYMBOL(_ZNK8FromHost10port_countEv); -+extern char _ZNK8FromHost10processingEv[]; -+EXPORT_SYMBOL(_ZNK8FromHost10processingEv); -+extern char _ZNK8FromHost15configure_phaseEv[]; -+EXPORT_SYMBOL(_ZNK8FromHost15configure_phaseEv); -+extern char _ZTV8FromHost[]; -+EXPORT_SYMBOL(_ZTV8FromHost); -+extern char _ZN14FrontDropQueue10take_stateEP7ElementP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14FrontDropQueue10take_stateEP7ElementP12ErrorHandler); -+extern char _ZN14FrontDropQueue16live_reconfigureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14FrontDropQueue16live_reconfigureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN14FrontDropQueue4castEPKc[]; -+EXPORT_SYMBOL(_ZN14FrontDropQueue4castEPKc); -+extern char _ZN14FrontDropQueue4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN14FrontDropQueue4pushEiP6Packet); -+extern char _ZN14FrontDropQueueC1Ev[]; -+EXPORT_SYMBOL(_ZN14FrontDropQueueC1Ev); -+extern char _ZN14FrontDropQueueC2Ev[]; -+EXPORT_SYMBOL(_ZN14FrontDropQueueC2Ev); -+extern char _ZN14FrontDropQueueD0Ev[]; -+EXPORT_SYMBOL(_ZN14FrontDropQueueD0Ev); -+extern char _ZN14FrontDropQueueD1Ev[]; -+EXPORT_SYMBOL(_ZN14FrontDropQueueD1Ev); -+extern char _ZN14FrontDropQueueD2Ev[]; -+EXPORT_SYMBOL(_ZN14FrontDropQueueD2Ev); -+extern char _ZNK11SimpleQueue10port_countEv[]; -+EXPORT_SYMBOL(_ZNK11SimpleQueue10port_countEv); -+extern char _ZNK11SimpleQueue10processingEv[]; -+EXPORT_SYMBOL(_ZNK11SimpleQueue10processingEv); -+extern char _ZNK11SimpleQueue20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK11SimpleQueue20can_live_reconfigureEv); -+extern char _ZNK14FrontDropQueue10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK14FrontDropQueue10class_nameEv); -+extern char _ZTV14FrontDropQueue[]; -+EXPORT_SYMBOL(_ZTV14FrontDropQueue); -+extern char _ZN13FTPPortMapper10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13FTPPortMapper10initializeEP12ErrorHandler); -+extern char _ZN13FTPPortMapper13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN13FTPPortMapper13simple_actionEP6Packet); -+extern char _ZN13FTPPortMapper7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN13FTPPortMapper7cleanupEN7Element12CleanupStageE); -+extern char _ZN13FTPPortMapper9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13FTPPortMapper9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN13FTPPortMapperC1Ev[]; -+EXPORT_SYMBOL(_ZN13FTPPortMapperC1Ev); -+extern char _ZN13FTPPortMapperC2Ev[]; -+EXPORT_SYMBOL(_ZN13FTPPortMapperC2Ev); -+extern char _ZN13FTPPortMapperD0Ev[]; -+EXPORT_SYMBOL(_ZN13FTPPortMapperD0Ev); -+extern char _ZN13FTPPortMapperD1Ev[]; -+EXPORT_SYMBOL(_ZN13FTPPortMapperD1Ev); -+extern char _ZN13FTPPortMapperD2Ev[]; -+EXPORT_SYMBOL(_ZN13FTPPortMapperD2Ev); -+extern char _ZNK13FTPPortMapper10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK13FTPPortMapper10class_nameEv); -+extern char _ZNK13FTPPortMapper10port_countEv[]; -+EXPORT_SYMBOL(_ZNK13FTPPortMapper10port_countEv); -+extern char _ZTV13FTPPortMapper[]; -+EXPORT_SYMBOL(_ZTV13FTPPortMapper); -+extern char _ZN13FullNoteQueue4castEPKc[]; -+EXPORT_SYMBOL(_ZN13FullNoteQueue4castEPKc); -+extern char _ZN13FullNoteQueue4pullEi[]; -+EXPORT_SYMBOL(_ZN13FullNoteQueue4pullEi); -+extern char _ZN13FullNoteQueue4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN13FullNoteQueue4pushEiP6Packet); -+extern char _ZN13FullNoteQueue9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13FullNoteQueue9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN13FullNoteQueueC1Ev[]; -+EXPORT_SYMBOL(_ZN13FullNoteQueueC1Ev); -+extern char _ZN13FullNoteQueueC2Ev[]; -+EXPORT_SYMBOL(_ZN13FullNoteQueueC2Ev); -+extern char _ZN13FullNoteQueueD0Ev[]; -+EXPORT_SYMBOL(_ZN13FullNoteQueueD0Ev); -+extern char _ZN13FullNoteQueueD1Ev[]; -+EXPORT_SYMBOL(_ZN13FullNoteQueueD1Ev); -+extern char _ZN13FullNoteQueueD2Ev[]; -+EXPORT_SYMBOL(_ZN13FullNoteQueueD2Ev); -+extern char _ZNK13FullNoteQueue10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK13FullNoteQueue10class_nameEv); -+extern char _ZTV13FullNoteQueue[]; -+EXPORT_SYMBOL(_ZTV13FullNoteQueue); -+extern char _ZN7GapRate8set_rateEjP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7GapRate8set_rateEjP12ErrorHandler); -+extern char _ZN12GetIPAddress13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN12GetIPAddress13simple_actionEP6Packet); -+extern char _ZN12GetIPAddress9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12GetIPAddress9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12GetIPAddressC1Ev[]; -+EXPORT_SYMBOL(_ZN12GetIPAddressC1Ev); -+extern char _ZN12GetIPAddressC2Ev[]; -+EXPORT_SYMBOL(_ZN12GetIPAddressC2Ev); -+extern char _ZN12GetIPAddressD0Ev[]; -+EXPORT_SYMBOL(_ZN12GetIPAddressD0Ev); -+extern char _ZN12GetIPAddressD1Ev[]; -+EXPORT_SYMBOL(_ZN12GetIPAddressD1Ev); -+extern char _ZN12GetIPAddressD2Ev[]; -+EXPORT_SYMBOL(_ZN12GetIPAddressD2Ev); -+extern char _ZNK12GetIPAddress10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12GetIPAddress10class_nameEv); -+extern char _ZNK12GetIPAddress10port_countEv[]; -+EXPORT_SYMBOL(_ZNK12GetIPAddress10port_countEv); -+extern char _ZNK12GetIPAddress10processingEv[]; -+EXPORT_SYMBOL(_ZNK12GetIPAddress10processingEv); -+extern char _ZTV12GetIPAddress[]; -+EXPORT_SYMBOL(_ZTV12GetIPAddress); -+extern char _Z11click_qsortPvjjPFiPKvS1_E[]; -+EXPORT_SYMBOL(_Z11click_qsortPvjjPFiPKvS1_E); -+extern char _Z11click_qsortPvjjPFiPKvS1_S_ES_[]; -+EXPORT_SYMBOL(_Z11click_qsortPvjjPFiPKvS1_S_ES_); -+extern char _Z20click_random_srandomv[]; -+EXPORT_SYMBOL(_Z20click_random_srandomv); -+extern char _Z21click_dmalloc_cleanupv[]; -+EXPORT_SYMBOL(_Z21click_dmalloc_cleanupv); -+extern char _Z24click_check_header_sizesv[]; -+EXPORT_SYMBOL(_Z24click_check_header_sizesv); -+extern char _ZdaPv[]; -+EXPORT_SYMBOL(_ZdaPv); -+extern char _ZdlPv[]; -+EXPORT_SYMBOL(_ZdlPv); -+extern char _Znaj[]; -+EXPORT_SYMBOL(_Znaj); -+extern char _Znwj[]; -+EXPORT_SYMBOL(_Znwj); -+extern char __assert_fail[]; -+EXPORT_SYMBOL(__assert_fail); -+extern char __cxa_pure_virtual[]; -+EXPORT_SYMBOL(__cxa_pure_virtual); -+extern char __rtti_si[]; -+EXPORT_SYMBOL(__rtti_si); -+extern char __rtti_user[]; -+EXPORT_SYMBOL(__rtti_user); -+extern char click_chatter[]; -+EXPORT_SYMBOL(click_chatter); -+extern char click_dmalloc_curnew[]; -+EXPORT_SYMBOL(click_dmalloc_curnew); -+extern char click_dmalloc_totalnew[]; -+EXPORT_SYMBOL(click_dmalloc_totalnew); -+extern char click_dmalloc_where[]; -+EXPORT_SYMBOL(click_dmalloc_where); -+extern char click_lalloc[]; -+EXPORT_SYMBOL(click_lalloc); -+extern char click_lfree[]; -+EXPORT_SYMBOL(click_lfree); -+extern char click_random_seed[]; -+EXPORT_SYMBOL(click_random_seed); -+extern char srandom[]; -+EXPORT_SYMBOL(srandom); -+extern char strtol[]; -+EXPORT_SYMBOL(strtol); -+extern char _ZN11HandlerCall10call_writeEP7ElementRK6StringS4_P12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11HandlerCall10call_writeEP7ElementRK6StringS4_P12ErrorHandler); -+extern char _ZN11HandlerCall10call_writeERK6StringP7ElementP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11HandlerCall10call_writeERK6StringP7ElementP12ErrorHandler); -+extern char _ZN11HandlerCall10call_writeERK6StringS2_P7ElementP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11HandlerCall10call_writeERK6StringS2_P7ElementP12ErrorHandler); -+extern char _ZN11HandlerCall10initializeEiP7ElementP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11HandlerCall10initializeEiP7ElementP12ErrorHandler); -+extern char _ZN11HandlerCall5resetERPS_P7ElementRK6StringS6_iP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11HandlerCall5resetERPS_P7ElementRK6StringS6_iP12ErrorHandler); -+extern char _ZN11HandlerCall5resetERPS_RK6StringiP7ElementP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11HandlerCall5resetERPS_RK6StringiP7ElementP12ErrorHandler); -+extern char _ZN11HandlerCall6assignEP7ElementRK6StringS4_iP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11HandlerCall6assignEP7ElementRK6StringS4_iP12ErrorHandler); -+extern char _ZN11HandlerCall9call_readEP7ElementRK6StringP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11HandlerCall9call_readEP7ElementRK6StringP12ErrorHandler); -+extern char _ZN11HandlerCall9call_readERK6StringP7ElementP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11HandlerCall9call_readERK6StringP7ElementP12ErrorHandler); -+extern char _ZNK11HandlerCall7unparseEv[]; -+EXPORT_SYMBOL(_ZNK11HandlerCall7unparseEv); -+extern char _ZN10HashSwitch4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN10HashSwitch4pushEiP6Packet); -+extern char _ZN10HashSwitch9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10HashSwitch9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN10HashSwitchC1Ev[]; -+EXPORT_SYMBOL(_ZN10HashSwitchC1Ev); -+extern char _ZN10HashSwitchC2Ev[]; -+EXPORT_SYMBOL(_ZN10HashSwitchC2Ev); -+extern char _ZN10HashSwitchD0Ev[]; -+EXPORT_SYMBOL(_ZN10HashSwitchD0Ev); -+extern char _ZN10HashSwitchD1Ev[]; -+EXPORT_SYMBOL(_ZN10HashSwitchD1Ev); -+extern char _ZN10HashSwitchD2Ev[]; -+EXPORT_SYMBOL(_ZN10HashSwitchD2Ev); -+extern char _ZNK10HashSwitch10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK10HashSwitch10class_nameEv); -+extern char _ZNK10HashSwitch10port_countEv[]; -+EXPORT_SYMBOL(_ZNK10HashSwitch10port_countEv); -+extern char _ZNK10HashSwitch10processingEv[]; -+EXPORT_SYMBOL(_ZNK10HashSwitch10processingEv); -+extern char _ZTV10HashSwitch[]; -+EXPORT_SYMBOL(_ZTV10HashSwitch); -+extern char _ZN15HostEtherFilter13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN15HostEtherFilter13simple_actionEP6Packet); -+extern char _ZN15HostEtherFilter9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN15HostEtherFilter9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN15HostEtherFilterC1Ev[]; -+EXPORT_SYMBOL(_ZN15HostEtherFilterC1Ev); -+extern char _ZN15HostEtherFilterC2Ev[]; -+EXPORT_SYMBOL(_ZN15HostEtherFilterC2Ev); -+extern char _ZN15HostEtherFilterD0Ev[]; -+EXPORT_SYMBOL(_ZN15HostEtherFilterD0Ev); -+extern char _ZN15HostEtherFilterD1Ev[]; -+EXPORT_SYMBOL(_ZN15HostEtherFilterD1Ev); -+extern char _ZN15HostEtherFilterD2Ev[]; -+EXPORT_SYMBOL(_ZN15HostEtherFilterD2Ev); -+extern char _ZNK15HostEtherFilter10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK15HostEtherFilter10class_nameEv); -+extern char _ZNK15HostEtherFilter10port_countEv[]; -+EXPORT_SYMBOL(_ZNK15HostEtherFilter10port_countEv); -+extern char _ZNK15HostEtherFilter10processingEv[]; -+EXPORT_SYMBOL(_ZNK15HostEtherFilter10processingEv); -+extern char _ZTV15HostEtherFilter[]; -+EXPORT_SYMBOL(_ZTV15HostEtherFilter); -+extern char _ZN9ICMPError13is_error_typeEi[]; -+EXPORT_SYMBOL(_ZN9ICMPError13is_error_typeEi); -+extern char _ZN9ICMPError13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN9ICMPError13simple_actionEP6Packet); -+extern char _ZN9ICMPError18valid_source_routeEPK8click_ip[]; -+EXPORT_SYMBOL(_ZN9ICMPError18valid_source_routeEPK8click_ip); -+extern char _ZN9ICMPError9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN9ICMPError9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN9ICMPErrorC1Ev[]; -+EXPORT_SYMBOL(_ZN9ICMPErrorC1Ev); -+extern char _ZN9ICMPErrorC2Ev[]; -+EXPORT_SYMBOL(_ZN9ICMPErrorC2Ev); -+extern char _ZN9ICMPErrorD0Ev[]; -+EXPORT_SYMBOL(_ZN9ICMPErrorD0Ev); -+extern char _ZN9ICMPErrorD1Ev[]; -+EXPORT_SYMBOL(_ZN9ICMPErrorD1Ev); -+extern char _ZN9ICMPErrorD2Ev[]; -+EXPORT_SYMBOL(_ZN9ICMPErrorD2Ev); -+extern char _ZNK9ICMPError10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK9ICMPError10class_nameEv); -+extern char _ZNK9ICMPError10port_countEv[]; -+EXPORT_SYMBOL(_ZNK9ICMPError10port_countEv); -+extern char _ZNK9ICMPError10processingEv[]; -+EXPORT_SYMBOL(_ZNK9ICMPError10processingEv); -+extern char _ZNK9ICMPError12valid_sourceE7in_addr[]; -+EXPORT_SYMBOL(_ZNK9ICMPError12valid_sourceE7in_addr); -+extern char _ZNK9ICMPError7unicastE7in_addr[]; -+EXPORT_SYMBOL(_ZNK9ICMPError7unicastE7in_addr); -+extern char _ZTV9ICMPError[]; -+EXPORT_SYMBOL(_ZTV9ICMPError); -+extern char _ZN13ICMPPingEncap12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN13ICMPPingEncap12add_handlersEv); -+extern char _ZN13ICMPPingEncap12read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN13ICMPPingEncap12read_handlerEP7ElementPv); -+extern char _ZN13ICMPPingEncap13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN13ICMPPingEncap13simple_actionEP6Packet); -+extern char _ZN13ICMPPingEncap13write_handlerERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13ICMPPingEncap13write_handlerERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN13ICMPPingEncap9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13ICMPPingEncap9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN13ICMPPingEncapC1Ev[]; -+EXPORT_SYMBOL(_ZN13ICMPPingEncapC1Ev); -+extern char _ZN13ICMPPingEncapC2Ev[]; -+EXPORT_SYMBOL(_ZN13ICMPPingEncapC2Ev); -+extern char _ZN13ICMPPingEncapD0Ev[]; -+EXPORT_SYMBOL(_ZN13ICMPPingEncapD0Ev); -+extern char _ZN13ICMPPingEncapD1Ev[]; -+EXPORT_SYMBOL(_ZN13ICMPPingEncapD1Ev); -+extern char _ZN13ICMPPingEncapD2Ev[]; -+EXPORT_SYMBOL(_ZN13ICMPPingEncapD2Ev); -+extern char _ZNK13ICMPPingEncap10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK13ICMPPingEncap10class_nameEv); -+extern char _ZNK13ICMPPingEncap10port_countEv[]; -+EXPORT_SYMBOL(_ZNK13ICMPPingEncap10port_countEv); -+extern char _ZNK13ICMPPingEncap10processingEv[]; -+EXPORT_SYMBOL(_ZNK13ICMPPingEncap10processingEv); -+extern char _ZNK13ICMPPingEncap5flagsEv[]; -+EXPORT_SYMBOL(_ZNK13ICMPPingEncap5flagsEv); -+extern char _ZTV13ICMPPingEncap[]; -+EXPORT_SYMBOL(_ZTV13ICMPPingEncap); -+extern char _ZN17ICMPPingResponder13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN17ICMPPingResponder13simple_actionEP6Packet); -+extern char _ZN17ICMPPingResponderC1Ev[]; -+EXPORT_SYMBOL(_ZN17ICMPPingResponderC1Ev); -+extern char _ZN17ICMPPingResponderC2Ev[]; -+EXPORT_SYMBOL(_ZN17ICMPPingResponderC2Ev); -+extern char _ZN17ICMPPingResponderD0Ev[]; -+EXPORT_SYMBOL(_ZN17ICMPPingResponderD0Ev); -+extern char _ZN17ICMPPingResponderD1Ev[]; -+EXPORT_SYMBOL(_ZN17ICMPPingResponderD1Ev); -+extern char _ZN17ICMPPingResponderD2Ev[]; -+EXPORT_SYMBOL(_ZN17ICMPPingResponderD2Ev); -+extern char _ZNK17ICMPPingResponder10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK17ICMPPingResponder10class_nameEv); -+extern char _ZNK17ICMPPingResponder10port_countEv[]; -+EXPORT_SYMBOL(_ZNK17ICMPPingResponder10port_countEv); -+extern char _ZNK17ICMPPingResponder10processingEv[]; -+EXPORT_SYMBOL(_ZNK17ICMPPingResponder10processingEv); -+extern char _ZTV17ICMPPingResponder[]; -+EXPORT_SYMBOL(_ZTV17ICMPPingResponder); -+extern char _ZN16ICMPPingRewriter10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN16ICMPPingRewriter10initializeEP12ErrorHandler); -+extern char _ZN16ICMPPingRewriter12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN16ICMPPingRewriter12add_handlersEv); -+extern char _ZN16ICMPPingRewriter13apply_patternERK8IPFlowID[]; -+EXPORT_SYMBOL(_ZN16ICMPPingRewriter13apply_patternERK8IPFlowID); -+extern char _ZN16ICMPPingRewriter21dump_mappings_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN16ICMPPingRewriter21dump_mappings_handlerEP7ElementPv); -+extern char _ZN16ICMPPingRewriter4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN16ICMPPingRewriter4pushEiP6Packet); -+extern char _ZN16ICMPPingRewriter7Mapping10initializeERK8IPFlowIDS3_bPS0_[]; -+EXPORT_SYMBOL(_ZN16ICMPPingRewriter7Mapping10initializeERK8IPFlowIDS3_bPS0_); -+extern char _ZN16ICMPPingRewriter7Mapping5applyEP14WritablePacket[]; -+EXPORT_SYMBOL(_ZN16ICMPPingRewriter7Mapping5applyEP14WritablePacket); -+extern char _ZN16ICMPPingRewriter7Mapping9make_pairERK8IPFlowIDS3_PS0_S4_[]; -+EXPORT_SYMBOL(_ZN16ICMPPingRewriter7Mapping9make_pairERK8IPFlowIDS3_PS0_S4_); -+extern char _ZN16ICMPPingRewriter7MappingC1Eb[]; -+EXPORT_SYMBOL(_ZN16ICMPPingRewriter7MappingC1Eb); -+extern char _ZN16ICMPPingRewriter7MappingC2Eb[]; -+EXPORT_SYMBOL(_ZN16ICMPPingRewriter7MappingC2Eb); -+extern char _ZN16ICMPPingRewriter7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN16ICMPPingRewriter7cleanupEN7Element12CleanupStageE); -+extern char _ZN16ICMPPingRewriter9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN16ICMPPingRewriter9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN16ICMPPingRewriter9run_timerEP5Timer[]; -+EXPORT_SYMBOL(_ZN16ICMPPingRewriter9run_timerEP5Timer); -+extern char _ZN16ICMPPingRewriterC1Ev[]; -+EXPORT_SYMBOL(_ZN16ICMPPingRewriterC1Ev); -+extern char _ZN16ICMPPingRewriterC2Ev[]; -+EXPORT_SYMBOL(_ZN16ICMPPingRewriterC2Ev); -+extern char _ZN16ICMPPingRewriterD0Ev[]; -+EXPORT_SYMBOL(_ZN16ICMPPingRewriterD0Ev); -+extern char _ZN16ICMPPingRewriterD1Ev[]; -+EXPORT_SYMBOL(_ZN16ICMPPingRewriterD1Ev); -+extern char _ZN16ICMPPingRewriterD2Ev[]; -+EXPORT_SYMBOL(_ZN16ICMPPingRewriterD2Ev); -+extern char _ZN23_HashMap_const_iteratorI8IPFlowIDPvEC1EPK7HashMapIS0_S1_Eb[]; -+EXPORT_SYMBOL(_ZN23_HashMap_const_iteratorI8IPFlowIDPvEC1EPK7HashMapIS0_S1_Eb); -+extern char _ZN23_HashMap_const_iteratorI8IPFlowIDPvEppEi[]; -+EXPORT_SYMBOL(_ZN23_HashMap_const_iteratorI8IPFlowIDPvEppEi); -+extern char _ZN7HashMapI8IPFlowIDPvE10initializeEP20HashMap_ArenaFactoryj[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDPvE10initializeEP20HashMap_ArenaFactoryj); -+extern char _ZN7HashMapI8IPFlowIDPvE20set_dynamic_resizingEb[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDPvE20set_dynamic_resizingEb); -+extern char _ZN7HashMapI8IPFlowIDPvE5clearEv[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDPvE5clearEv); -+extern char _ZN7HashMapI8IPFlowIDPvE6insertERKS0_S1_[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDPvE6insertERKS0_S1_); -+extern char _ZN7HashMapI8IPFlowIDPvE6removeERKS0_[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDPvE6removeERKS0_); -+extern char _ZN7HashMapI8IPFlowIDPvE6resizeEj[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDPvE6resizeEj); -+extern char _ZN7HashMapI8IPFlowIDPvE7resize0Ej[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDPvE7resize0Ej); -+extern char _ZN7HashMapI8IPFlowIDPvE9set_arenaEP20HashMap_ArenaFactory[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDPvE9set_arenaEP20HashMap_ArenaFactory); -+extern char _ZN7HashMapI8IPFlowIDPvEC2ES1_P20HashMap_ArenaFactory[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDPvEC2ES1_P20HashMap_ArenaFactory); -+extern char _ZN7HashMapI8IPFlowIDPvED2Ev[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDPvED2Ev); -+extern char _ZNK16ICMPPingRewriter10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK16ICMPPingRewriter10class_nameEv); -+extern char _ZNK16ICMPPingRewriter10port_countEv[]; -+EXPORT_SYMBOL(_ZNK16ICMPPingRewriter10port_countEv); -+extern char _ZNK16ICMPPingRewriter10processingEv[]; -+EXPORT_SYMBOL(_ZNK16ICMPPingRewriter10processingEv); -+extern char _ZNK16ICMPPingRewriter11get_mappingEbRK8IPFlowID[]; -+EXPORT_SYMBOL(_ZNK16ICMPPingRewriter11get_mappingEbRK8IPFlowID); -+extern char _ZNK16ICMPPingRewriter7Mapping1sEv[]; -+EXPORT_SYMBOL(_ZNK16ICMPPingRewriter7Mapping1sEv); -+extern char _ZNK7HashMapI8IPFlowIDPvE9find_pairERKS0_[]; -+EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDPvE9find_pairERKS0_); -+extern char _ZTV16ICMPPingRewriter[]; -+EXPORT_SYMBOL(_ZTV16ICMPPingRewriter); -+extern char _ZN12ICMPRewriter13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN12ICMPRewriter13simple_actionEP6Packet); -+extern char _ZN12ICMPRewriter14rewrite_packetEP14WritablePacketP8click_ipP9click_udpRK8IPFlowIDPN4IPRw7MappingE[]; -+EXPORT_SYMBOL(_ZN12ICMPRewriter14rewrite_packetEP14WritablePacketP8click_ipP9click_udpRK8IPFlowIDPN4IPRw7MappingE); -+extern char _ZN12ICMPRewriter19rewrite_ping_packetEP14WritablePacketP8click_ipP20click_icmp_sequencedRK8IPFlowIDPN16ICMPPingRewriter7MappingE[]; -+EXPORT_SYMBOL(_ZN12ICMPRewriter19rewrite_ping_packetEP14WritablePacketP8click_ipP20click_icmp_sequencedRK8IPFlowIDPN16ICMPPingRewriter7MappingE); -+extern char _ZN12ICMPRewriter9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12ICMPRewriter9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12ICMPRewriterC1Ev[]; -+EXPORT_SYMBOL(_ZN12ICMPRewriterC1Ev); -+extern char _ZN12ICMPRewriterC2Ev[]; -+EXPORT_SYMBOL(_ZN12ICMPRewriterC2Ev); -+extern char _ZN12ICMPRewriterD0Ev[]; -+EXPORT_SYMBOL(_ZN12ICMPRewriterD0Ev); -+extern char _ZN12ICMPRewriterD1Ev[]; -+EXPORT_SYMBOL(_ZN12ICMPRewriterD1Ev); -+extern char _ZN12ICMPRewriterD2Ev[]; -+EXPORT_SYMBOL(_ZN12ICMPRewriterD2Ev); -+extern char _ZNK12ICMPRewriter10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12ICMPRewriter10class_nameEv); -+extern char _ZNK12ICMPRewriter10port_countEv[]; -+EXPORT_SYMBOL(_ZNK12ICMPRewriter10port_countEv); -+extern char _ZNK12ICMPRewriter10processingEv[]; -+EXPORT_SYMBOL(_ZNK12ICMPRewriter10processingEv); -+extern char _ZTV12ICMPRewriter[]; -+EXPORT_SYMBOL(_ZTV12ICMPRewriter); -+extern char _ZN14ICMPPingSource10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14ICMPPingSource10initializeEP12ErrorHandler); -+extern char _ZN14ICMPPingSource11make_packetEv[]; -+EXPORT_SYMBOL(_ZN14ICMPPingSource11make_packetEv); -+extern char _ZN14ICMPPingSource12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN14ICMPPingSource12add_handlersEv); -+extern char _ZN14ICMPPingSource12read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN14ICMPPingSource12read_handlerEP7ElementPv); -+extern char _ZN14ICMPPingSource13write_handlerERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14ICMPPingSource13write_handlerERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN14ICMPPingSource4pullEi[]; -+EXPORT_SYMBOL(_ZN14ICMPPingSource4pullEi); -+extern char _ZN14ICMPPingSource4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN14ICMPPingSource4pushEiP6Packet); -+extern char _ZN14ICMPPingSource7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN14ICMPPingSource7cleanupEN7Element12CleanupStageE); -+extern char _ZN14ICMPPingSource9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14ICMPPingSource9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN14ICMPPingSource9run_timerEP5Timer[]; -+EXPORT_SYMBOL(_ZN14ICMPPingSource9run_timerEP5Timer); -+extern char _ZN14ICMPPingSourceC1Ev[]; -+EXPORT_SYMBOL(_ZN14ICMPPingSourceC1Ev); -+extern char _ZN14ICMPPingSourceC2Ev[]; -+EXPORT_SYMBOL(_ZN14ICMPPingSourceC2Ev); -+extern char _ZN14ICMPPingSourceD0Ev[]; -+EXPORT_SYMBOL(_ZN14ICMPPingSourceD0Ev); -+extern char _ZN14ICMPPingSourceD1Ev[]; -+EXPORT_SYMBOL(_ZN14ICMPPingSourceD1Ev); -+extern char _ZN14ICMPPingSourceD2Ev[]; -+EXPORT_SYMBOL(_ZN14ICMPPingSourceD2Ev); -+extern char _ZNK14ICMPPingSource10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK14ICMPPingSource10class_nameEv); -+extern char _ZNK14ICMPPingSource10port_countEv[]; -+EXPORT_SYMBOL(_ZNK14ICMPPingSource10port_countEv); -+extern char _ZNK14ICMPPingSource10processingEv[]; -+EXPORT_SYMBOL(_ZNK14ICMPPingSource10processingEv); -+extern char _ZTV14ICMPPingSource[]; -+EXPORT_SYMBOL(_ZTV14ICMPPingSource); -+extern char _ZN4Idle4castEPKc[]; -+EXPORT_SYMBOL(_ZN4Idle4castEPKc); -+extern char _ZN4Idle4pullEi[]; -+EXPORT_SYMBOL(_ZN4Idle4pullEi); -+extern char _ZN4Idle4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN4Idle4pushEiP6Packet); -+extern char _ZN4IdleC1Ev[]; -+EXPORT_SYMBOL(_ZN4IdleC1Ev); -+extern char _ZN4IdleC2Ev[]; -+EXPORT_SYMBOL(_ZN4IdleC2Ev); -+extern char _ZN4IdleD0Ev[]; -+EXPORT_SYMBOL(_ZN4IdleD0Ev); -+extern char _ZN4IdleD1Ev[]; -+EXPORT_SYMBOL(_ZN4IdleD1Ev); -+extern char _ZN4IdleD2Ev[]; -+EXPORT_SYMBOL(_ZN4IdleD2Ev); -+extern char _ZNK4Idle10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK4Idle10class_nameEv); -+extern char _ZNK4Idle10port_countEv[]; -+EXPORT_SYMBOL(_ZNK4Idle10port_countEv); -+extern char _ZNK4Idle10processingEv[]; -+EXPORT_SYMBOL(_ZNK4Idle10processingEv); -+extern char _ZNK4Idle5flagsEv[]; -+EXPORT_SYMBOL(_ZNK4Idle5flagsEv); -+extern char _ZNK4Idle9flow_codeEv[]; -+EXPORT_SYMBOL(_ZNK4Idle9flow_codeEv); -+extern char _ZTV4Idle[]; -+EXPORT_SYMBOL(_ZTV4Idle); -+extern char click_in_cksum_pseudohdr_hard[]; -+EXPORT_SYMBOL(click_in_cksum_pseudohdr_hard); -+extern char _ZN14InfiniteSource10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14InfiniteSource10initializeEP12ErrorHandler); -+extern char _ZN14InfiniteSource10read_paramEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN14InfiniteSource10read_paramEP7ElementPv); -+extern char _ZN14InfiniteSource12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN14InfiniteSource12add_handlersEv); -+extern char _ZN14InfiniteSource12change_paramERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14InfiniteSource12change_paramERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN14InfiniteSource12setup_packetEv[]; -+EXPORT_SYMBOL(_ZN14InfiniteSource12setup_packetEv); -+extern char _ZN14InfiniteSource4castEPKc[]; -+EXPORT_SYMBOL(_ZN14InfiniteSource4castEPKc); -+extern char _ZN14InfiniteSource4pullEi[]; -+EXPORT_SYMBOL(_ZN14InfiniteSource4pullEi); -+extern char _ZN14InfiniteSource7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN14InfiniteSource7cleanupEN7Element12CleanupStageE); -+extern char _ZN14InfiniteSource8run_taskEP4Task[]; -+EXPORT_SYMBOL(_ZN14InfiniteSource8run_taskEP4Task); -+extern char _ZN14InfiniteSource9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14InfiniteSource9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN14InfiniteSourceC1Ev[]; -+EXPORT_SYMBOL(_ZN14InfiniteSourceC1Ev); -+extern char _ZN14InfiniteSourceC2Ev[]; -+EXPORT_SYMBOL(_ZN14InfiniteSourceC2Ev); -+extern char _ZN14InfiniteSourceD0Ev[]; -+EXPORT_SYMBOL(_ZN14InfiniteSourceD0Ev); -+extern char _ZN14InfiniteSourceD1Ev[]; -+EXPORT_SYMBOL(_ZN14InfiniteSourceD1Ev); -+extern char _ZN14InfiniteSourceD2Ev[]; -+EXPORT_SYMBOL(_ZN14InfiniteSourceD2Ev); -+extern char _ZNK14InfiniteSource10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK14InfiniteSource10class_nameEv); -+extern char _ZNK14InfiniteSource10port_countEv[]; -+EXPORT_SYMBOL(_ZNK14InfiniteSource10port_countEv); -+extern char _ZNK14InfiniteSource10processingEv[]; -+EXPORT_SYMBOL(_ZNK14InfiniteSource10processingEv); -+extern char _ZNK14InfiniteSource20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK14InfiniteSource20can_live_reconfigureEv); -+extern char _ZNK14InfiniteSource5flagsEv[]; -+EXPORT_SYMBOL(_ZNK14InfiniteSource5flagsEv); -+extern char _ZTV14InfiniteSource[]; -+EXPORT_SYMBOL(_ZTV14InfiniteSource); -+extern char _ZThn60_N14InfiniteSourceD0Ev[]; -+EXPORT_SYMBOL(_ZThn60_N14InfiniteSourceD0Ev); -+extern char _ZThn60_N14InfiniteSourceD1Ev[]; -+EXPORT_SYMBOL(_ZThn60_N14InfiniteSourceD1Ev); -+extern char _ZN8ClickIno10initializeEv[]; -+EXPORT_SYMBOL(_ZN8ClickIno10initializeEv); -+extern char _ZN8ClickIno12true_prepareEP6Routerj[]; -+EXPORT_SYMBOL(_ZN8ClickIno12true_prepareEP6Routerj); -+extern char _ZN8ClickIno27calculate_handler_conflictsEi[]; -+EXPORT_SYMBOL(_ZN8ClickIno27calculate_handler_conflictsEi); -+extern char _ZN8ClickIno4growEi[]; -+EXPORT_SYMBOL(_ZN8ClickIno4growEi); -+extern char _ZN8ClickIno5nlinkEm[]; -+EXPORT_SYMBOL(_ZN8ClickIno5nlinkEm); -+extern char _ZN8ClickIno6lookupEmRK6String[]; -+EXPORT_SYMBOL(_ZN8ClickIno6lookupEmRK6String); -+extern char _ZN8ClickIno7cleanupEv[]; -+EXPORT_SYMBOL(_ZN8ClickIno7cleanupEv); -+extern char _ZN8ClickIno7readdirEmRjPFbPKcimijPvES3_[]; -+EXPORT_SYMBOL(_ZN8ClickIno7readdirEmRjPFbPKcimijPvES3_); -+extern char _ZNK8ClickIno11name_searchERK6Stringiii[]; -+EXPORT_SYMBOL(_ZNK8ClickIno11name_searchERK6Stringiii); -+extern char _Z8int_sqrtj[]; -+EXPORT_SYMBOL(_Z8int_sqrtj); -+extern char _ZN9IPAddress11make_prefixEi[]; -+EXPORT_SYMBOL(_ZN9IPAddress11make_prefixEi); -+extern char _ZN9IPAddressC1EPKh[]; -+EXPORT_SYMBOL(_ZN9IPAddressC1EPKh); -+extern char _ZN9IPAddressC1ERK6String[]; -+EXPORT_SYMBOL(_ZN9IPAddressC1ERK6String); -+extern char _ZN9IPAddressC2EPKh[]; -+EXPORT_SYMBOL(_ZN9IPAddressC2EPKh); -+extern char _ZN9IPAddressC2ERK6String[]; -+EXPORT_SYMBOL(_ZN9IPAddressC2ERK6String); -+extern char _ZNK9IPAddress12unparse_maskEv[]; -+EXPORT_SYMBOL(_ZNK9IPAddress12unparse_maskEv); -+extern char _ZNK9IPAddress17unparse_with_maskES_[]; -+EXPORT_SYMBOL(_ZNK9IPAddress17unparse_with_maskES_); -+extern char _ZNK9IPAddress18mask_to_prefix_lenEv[]; -+EXPORT_SYMBOL(_ZNK9IPAddress18mask_to_prefix_lenEv); -+extern char _ZNK9IPAddress7unparseEv[]; -+EXPORT_SYMBOL(_ZNK9IPAddress7unparseEv); -+extern char _ZlsR11StringAccum9IPAddress[]; -+EXPORT_SYMBOL(_ZlsR11StringAccum9IPAddress); -+extern char _ZN18IPAddrPairRewriter10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN18IPAddrPairRewriter10initializeEP12ErrorHandler); -+extern char _ZN18IPAddrPairRewriter12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN18IPAddrPairRewriter12add_handlersEv); -+extern char _ZN18IPAddrPairRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii[]; -+EXPORT_SYMBOL(_ZN18IPAddrPairRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii); -+extern char _ZN18IPAddrPairRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN18IPAddrPairRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler); -+extern char _ZN18IPAddrPairRewriter17IPAddrPairMapping5applyEP14WritablePacket[]; -+EXPORT_SYMBOL(_ZN18IPAddrPairRewriter17IPAddrPairMapping5applyEP14WritablePacket); -+extern char _ZN18IPAddrPairRewriter21dump_mappings_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN18IPAddrPairRewriter21dump_mappings_handlerEP7ElementPv); -+extern char _ZN18IPAddrPairRewriter21dump_patterns_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN18IPAddrPairRewriter21dump_patterns_handlerEP7ElementPv); -+extern char _ZN18IPAddrPairRewriter22dump_nmappings_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN18IPAddrPairRewriter22dump_nmappings_handlerEP7ElementPv); -+extern char _ZN18IPAddrPairRewriter4castEPKc[]; -+EXPORT_SYMBOL(_ZN18IPAddrPairRewriter4castEPKc); -+extern char _ZN18IPAddrPairRewriter4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN18IPAddrPairRewriter4pushEiP6Packet); -+extern char _ZN18IPAddrPairRewriter7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN18IPAddrPairRewriter7cleanupEN7Element12CleanupStageE); -+extern char _ZN18IPAddrPairRewriter9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN18IPAddrPairRewriter9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN18IPAddrPairRewriter9run_timerEP5Timer[]; -+EXPORT_SYMBOL(_ZN18IPAddrPairRewriter9run_timerEP5Timer); -+extern char _ZN18IPAddrPairRewriterC1Ev[]; -+EXPORT_SYMBOL(_ZN18IPAddrPairRewriterC1Ev); -+extern char _ZN18IPAddrPairRewriterC2Ev[]; -+EXPORT_SYMBOL(_ZN18IPAddrPairRewriterC2Ev); -+extern char _ZN18IPAddrPairRewriterD0Ev[]; -+EXPORT_SYMBOL(_ZN18IPAddrPairRewriterD0Ev); -+extern char _ZN18IPAddrPairRewriterD1Ev[]; -+EXPORT_SYMBOL(_ZN18IPAddrPairRewriterD1Ev); -+extern char _ZN18IPAddrPairRewriterD2Ev[]; -+EXPORT_SYMBOL(_ZN18IPAddrPairRewriterD2Ev); -+extern char _ZN6VectorIN4IPRw9InputSpecEE5eraseEPS1_S3_[]; -+EXPORT_SYMBOL(_ZN6VectorIN4IPRw9InputSpecEE5eraseEPS1_S3_); -+extern char _ZN6VectorIN4IPRw9InputSpecEE7reserveEi[]; -+EXPORT_SYMBOL(_ZN6VectorIN4IPRw9InputSpecEE7reserveEi); -+extern char _ZN6VectorIN4IPRw9InputSpecEED1Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIN4IPRw9InputSpecEED1Ev); -+extern char _ZNK18IPAddrPairRewriter10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK18IPAddrPairRewriter10class_nameEv); -+extern char _ZNK18IPAddrPairRewriter10port_countEv[]; -+EXPORT_SYMBOL(_ZNK18IPAddrPairRewriter10port_countEv); -+extern char _ZNK18IPAddrPairRewriter10processingEv[]; -+EXPORT_SYMBOL(_ZNK18IPAddrPairRewriter10processingEv); -+extern char _ZNK18IPAddrPairRewriter11get_mappingEiRK8IPFlowID[]; -+EXPORT_SYMBOL(_ZNK18IPAddrPairRewriter11get_mappingEiRK8IPFlowID); -+extern char _ZNK18IPAddrPairRewriter17IPAddrPairMapping7reverseEv[]; -+EXPORT_SYMBOL(_ZNK18IPAddrPairRewriter17IPAddrPairMapping7reverseEv); -+extern char _ZNK18IPAddrPairRewriter17IPAddrPairMapping7unparseEv[]; -+EXPORT_SYMBOL(_ZNK18IPAddrPairRewriter17IPAddrPairMapping7unparseEv); -+extern char _ZNK4IPRw15configure_phaseEv[]; -+EXPORT_SYMBOL(_ZNK4IPRw15configure_phaseEv); -+extern char _ZTV18IPAddrPairRewriter[]; -+EXPORT_SYMBOL(_ZTV18IPAddrPairRewriter); -+extern char _ZN14IPAddrRewriter10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14IPAddrRewriter10initializeEP12ErrorHandler); -+extern char _ZN14IPAddrRewriter12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN14IPAddrRewriter12add_handlersEv); -+extern char _ZN14IPAddrRewriter13IPAddrMapping5applyEP14WritablePacket[]; -+EXPORT_SYMBOL(_ZN14IPAddrRewriter13IPAddrMapping5applyEP14WritablePacket); -+extern char _ZN14IPAddrRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii[]; -+EXPORT_SYMBOL(_ZN14IPAddrRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii); -+extern char _ZN14IPAddrRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14IPAddrRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler); -+extern char _ZN14IPAddrRewriter21dump_mappings_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN14IPAddrRewriter21dump_mappings_handlerEP7ElementPv); -+extern char _ZN14IPAddrRewriter21dump_patterns_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN14IPAddrRewriter21dump_patterns_handlerEP7ElementPv); -+extern char _ZN14IPAddrRewriter22dump_nmappings_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN14IPAddrRewriter22dump_nmappings_handlerEP7ElementPv); -+extern char _ZN14IPAddrRewriter4castEPKc[]; -+EXPORT_SYMBOL(_ZN14IPAddrRewriter4castEPKc); -+extern char _ZN14IPAddrRewriter4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN14IPAddrRewriter4pushEiP6Packet); -+extern char _ZN14IPAddrRewriter7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN14IPAddrRewriter7cleanupEN7Element12CleanupStageE); -+extern char _ZN14IPAddrRewriter9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14IPAddrRewriter9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN14IPAddrRewriter9run_timerEP5Timer[]; -+EXPORT_SYMBOL(_ZN14IPAddrRewriter9run_timerEP5Timer); -+extern char _ZN14IPAddrRewriterC1Ev[]; -+EXPORT_SYMBOL(_ZN14IPAddrRewriterC1Ev); -+extern char _ZN14IPAddrRewriterC2Ev[]; -+EXPORT_SYMBOL(_ZN14IPAddrRewriterC2Ev); -+extern char _ZN14IPAddrRewriterD0Ev[]; -+EXPORT_SYMBOL(_ZN14IPAddrRewriterD0Ev); -+extern char _ZN14IPAddrRewriterD1Ev[]; -+EXPORT_SYMBOL(_ZN14IPAddrRewriterD1Ev); -+extern char _ZN14IPAddrRewriterD2Ev[]; -+EXPORT_SYMBOL(_ZN14IPAddrRewriterD2Ev); -+extern char _ZNK14IPAddrRewriter10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK14IPAddrRewriter10class_nameEv); -+extern char _ZNK14IPAddrRewriter10port_countEv[]; -+EXPORT_SYMBOL(_ZNK14IPAddrRewriter10port_countEv); -+extern char _ZNK14IPAddrRewriter10processingEv[]; -+EXPORT_SYMBOL(_ZNK14IPAddrRewriter10processingEv); -+extern char _ZNK14IPAddrRewriter11get_mappingEiRK8IPFlowID[]; -+EXPORT_SYMBOL(_ZNK14IPAddrRewriter11get_mappingEiRK8IPFlowID); -+extern char _ZNK14IPAddrRewriter13IPAddrMapping7reverseEv[]; -+EXPORT_SYMBOL(_ZNK14IPAddrRewriter13IPAddrMapping7reverseEv); -+extern char _ZNK14IPAddrRewriter13IPAddrMapping7unparseEv[]; -+EXPORT_SYMBOL(_ZNK14IPAddrRewriter13IPAddrMapping7unparseEv); -+extern char _ZTV14IPAddrRewriter[]; -+EXPORT_SYMBOL(_ZTV14IPAddrRewriter); -+extern char _ZN12IPClassifier9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12IPClassifier9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12IPClassifierC1Ev[]; -+EXPORT_SYMBOL(_ZN12IPClassifierC1Ev); -+extern char _ZN12IPClassifierC2Ev[]; -+EXPORT_SYMBOL(_ZN12IPClassifierC2Ev); -+extern char _ZN12IPClassifierD0Ev[]; -+EXPORT_SYMBOL(_ZN12IPClassifierD0Ev); -+extern char _ZN12IPClassifierD1Ev[]; -+EXPORT_SYMBOL(_ZN12IPClassifierD1Ev); -+extern char _ZN12IPClassifierD2Ev[]; -+EXPORT_SYMBOL(_ZN12IPClassifierD2Ev); -+extern char _ZNK12IPClassifier10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12IPClassifier10class_nameEv); -+extern char _ZNK12IPClassifier10processingEv[]; -+EXPORT_SYMBOL(_ZNK12IPClassifier10processingEv); -+extern char _ZNK8IPFilter10port_countEv[]; -+EXPORT_SYMBOL(_ZNK8IPFilter10port_countEv); -+extern char _ZNK8IPFilter5flagsEv[]; -+EXPORT_SYMBOL(_ZNK8IPFilter5flagsEv); -+extern char _ZTV12IPClassifier[]; -+EXPORT_SYMBOL(_ZTV12IPClassifier); -+extern char _ZN7IPEncap10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7IPEncap10initializeEP12ErrorHandler); -+extern char _ZN7IPEncap12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN7IPEncap12add_handlersEv); -+extern char _ZN7IPEncap12read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN7IPEncap12read_handlerEP7ElementPv); -+extern char _ZN7IPEncap13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN7IPEncap13simple_actionEP6Packet); -+extern char _ZN7IPEncap9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7IPEncap9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN7IPEncapC1Ev[]; -+EXPORT_SYMBOL(_ZN7IPEncapC1Ev); -+extern char _ZN7IPEncapC2Ev[]; -+EXPORT_SYMBOL(_ZN7IPEncapC2Ev); -+extern char _ZN7IPEncapD0Ev[]; -+EXPORT_SYMBOL(_ZN7IPEncapD0Ev); -+extern char _ZN7IPEncapD1Ev[]; -+EXPORT_SYMBOL(_ZN7IPEncapD1Ev); -+extern char _ZN7IPEncapD2Ev[]; -+EXPORT_SYMBOL(_ZN7IPEncapD2Ev); -+extern char _ZNK7IPEncap10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK7IPEncap10class_nameEv); -+extern char _ZNK7IPEncap10port_countEv[]; -+EXPORT_SYMBOL(_ZNK7IPEncap10port_countEv); -+extern char _ZNK7IPEncap10processingEv[]; -+EXPORT_SYMBOL(_ZNK7IPEncap10processingEv); -+extern char _ZNK7IPEncap20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK7IPEncap20can_live_reconfigureEv); -+extern char _ZTV7IPEncap[]; -+EXPORT_SYMBOL(_ZTV7IPEncap); -+extern char _Z8cp_scanfPKcS0_S0_z[]; -+EXPORT_SYMBOL(_Z8cp_scanfPKcS0_S0_z); -+extern char _ZN11IPFieldInfo14static_cleanupEv[]; -+EXPORT_SYMBOL(_ZN11IPFieldInfo14static_cleanupEv); -+extern char _ZN11IPFieldInfo17static_initializeEv[]; -+EXPORT_SYMBOL(_ZN11IPFieldInfo17static_initializeEv); -+extern char _ZN7IPField5parseEPKcS1_iPS_P12ErrorHandlerP7Element[]; -+EXPORT_SYMBOL(_ZN7IPField5parseEPKcS1_iPS_P12ErrorHandlerP7Element); -+extern char _ZN7IPField7unparseEP7Elementb[]; -+EXPORT_SYMBOL(_ZN7IPField7unparseEP7Elementb); -+extern char _ZN7IPFieldC1Eiii[]; -+EXPORT_SYMBOL(_ZN7IPFieldC1Eiii); -+extern char _ZN7IPFieldC2Eiii[]; -+EXPORT_SYMBOL(_ZN7IPFieldC2Eiii); -+extern char _ZN8IPFilter10parse_exprERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8IPFilter10parse_exprERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEP12ErrorHandler); -+extern char _ZN8IPFilter10parse_termERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8IPFilter10parse_termERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEP12ErrorHandler); -+extern char _ZN8IPFilter12parse_factorERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEbP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8IPFilter12parse_factorERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEbP12ErrorHandler); -+extern char _ZN8IPFilter12parse_orexprERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8IPFilter12parse_orexprERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEP12ErrorHandler); -+extern char _ZN8IPFilter14static_cleanupEv[]; -+EXPORT_SYMBOL(_ZN8IPFilter14static_cleanupEv); -+extern char _ZN8IPFilter17static_initializeEv[]; -+EXPORT_SYMBOL(_ZN8IPFilter17static_initializeEv); -+extern char _ZN8IPFilter19length_checked_pushEP6Packet[]; -+EXPORT_SYMBOL(_ZN8IPFilter19length_checked_pushEP6Packet); -+extern char _ZN8IPFilter4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN8IPFilter4pushEiP6Packet); -+extern char _ZN8IPFilter9Primitive10set_srcdstEiP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8IPFilter9Primitive10set_srcdstEiP12ErrorHandler); -+extern char _ZN8IPFilter9Primitive12unparse_typeEii[]; -+EXPORT_SYMBOL(_ZN8IPFilter9Primitive12unparse_typeEii); -+extern char _ZN8IPFilter9Primitive13simple_negateEv[]; -+EXPORT_SYMBOL(_ZN8IPFilter9Primitive13simple_negateEv); -+extern char _ZN8IPFilter9Primitive16set_transp_protoEiP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8IPFilter9Primitive16set_transp_protoEiP12ErrorHandler); -+extern char _ZN8IPFilter9Primitive20unparse_transp_protoEi[]; -+EXPORT_SYMBOL(_ZN8IPFilter9Primitive20unparse_transp_protoEi); -+extern char _ZN8IPFilter9Primitive5checkERKS0_jP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8IPFilter9Primitive5checkERKS0_jP12ErrorHandler); -+extern char _ZN8IPFilter9Primitive5clearEv[]; -+EXPORT_SYMBOL(_ZN8IPFilter9Primitive5clearEv); -+extern char _ZN8IPFilter9Primitive8set_maskEjijP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8IPFilter9Primitive8set_maskEjijP12ErrorHandler); -+extern char _ZN8IPFilter9Primitive8set_typeEiP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8IPFilter9Primitive8set_typeEiP12ErrorHandler); -+extern char _ZN8IPFilter9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8IPFilter9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN8IPFilterC1Ev[]; -+EXPORT_SYMBOL(_ZN8IPFilterC1Ev); -+extern char _ZN8IPFilterC2Ev[]; -+EXPORT_SYMBOL(_ZN8IPFilterC2Ev); -+extern char _ZN8IPFilterD0Ev[]; -+EXPORT_SYMBOL(_ZN8IPFilterD0Ev); -+extern char _ZN8IPFilterD1Ev[]; -+EXPORT_SYMBOL(_ZN8IPFilterD1Ev); -+extern char _ZN8IPFilterD2Ev[]; -+EXPORT_SYMBOL(_ZN8IPFilterD2Ev); -+extern char _ZNK11StringAccum8capacityEv[]; -+EXPORT_SYMBOL(_ZNK11StringAccum8capacityEv); -+extern char _ZNK8IPFilter10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK8IPFilter10class_nameEv); -+extern char _ZNK8IPFilter10processingEv[]; -+EXPORT_SYMBOL(_ZNK8IPFilter10processingEv); -+extern char _ZNK8IPFilter6lookupE6StringiiRjP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZNK8IPFilter6lookupE6StringiiRjP12ErrorHandler); -+extern char _ZNK8IPFilter9Primitive10unparse_opEv[]; -+EXPORT_SYMBOL(_ZNK8IPFilter9Primitive10unparse_opEv); -+extern char _ZNK8IPFilter9Primitive12unparse_typeEv[]; -+EXPORT_SYMBOL(_ZNK8IPFilter9Primitive12unparse_typeEv); -+extern char _ZNK8IPFilter9Primitive20add_comparison_exprsEP10ClassifierR6VectorIiEiibb[]; -+EXPORT_SYMBOL(_ZNK8IPFilter9Primitive20add_comparison_exprsEP10ClassifierR6VectorIiEiibb); -+extern char _ZNK8IPFilter9Primitive9add_exprsEP10ClassifierR6VectorIiE[]; -+EXPORT_SYMBOL(_ZNK8IPFilter9Primitive9add_exprsEP10ClassifierR6VectorIiE); -+extern char _ZTV8IPFilter[]; -+EXPORT_SYMBOL(_ZTV8IPFilter); -+extern char _ZN8IPFlowIDC1EPK6Packet[]; -+EXPORT_SYMBOL(_ZN8IPFlowIDC1EPK6Packet); -+extern char _ZN8IPFlowIDC1EPK8click_ip[]; -+EXPORT_SYMBOL(_ZN8IPFlowIDC1EPK8click_ip); -+extern char _ZN8IPFlowIDC2EPK6Packet[]; -+EXPORT_SYMBOL(_ZN8IPFlowIDC2EPK6Packet); -+extern char _ZN8IPFlowIDC2EPK8click_ip[]; -+EXPORT_SYMBOL(_ZN8IPFlowIDC2EPK8click_ip); -+extern char _ZNK8IPFlowID7unparseEv[]; -+EXPORT_SYMBOL(_ZNK8IPFlowID7unparseEv); -+extern char _ZlsR11StringAccumRK8IPFlowID[]; -+EXPORT_SYMBOL(_ZlsR11StringAccumRK8IPFlowID); -+extern char _ZN12IPFragmenter12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN12IPFragmenter12add_handlersEv); -+extern char _ZN12IPFragmenter4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN12IPFragmenter4pushEiP6Packet); -+extern char _ZN12IPFragmenter7optcopyEPK8click_ipPS0_[]; -+EXPORT_SYMBOL(_ZN12IPFragmenter7optcopyEPK8click_ipPS0_); -+extern char _ZN12IPFragmenter8fragmentEP6Packet[]; -+EXPORT_SYMBOL(_ZN12IPFragmenter8fragmentEP6Packet); -+extern char _ZN12IPFragmenter9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12IPFragmenter9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12IPFragmenterC1Ev[]; -+EXPORT_SYMBOL(_ZN12IPFragmenterC1Ev); -+extern char _ZN12IPFragmenterC2Ev[]; -+EXPORT_SYMBOL(_ZN12IPFragmenterC2Ev); -+extern char _ZN12IPFragmenterD0Ev[]; -+EXPORT_SYMBOL(_ZN12IPFragmenterD0Ev); -+extern char _ZN12IPFragmenterD1Ev[]; -+EXPORT_SYMBOL(_ZN12IPFragmenterD1Ev); -+extern char _ZN12IPFragmenterD2Ev[]; -+EXPORT_SYMBOL(_ZN12IPFragmenterD2Ev); -+extern char _ZNK12IPFragmenter10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12IPFragmenter10class_nameEv); -+extern char _ZNK12IPFragmenter10port_countEv[]; -+EXPORT_SYMBOL(_ZNK12IPFragmenter10port_countEv); -+extern char _ZNK12IPFragmenter10processingEv[]; -+EXPORT_SYMBOL(_ZNK12IPFragmenter10processingEv); -+extern char _ZTV12IPFragmenter[]; -+EXPORT_SYMBOL(_ZTV12IPFragmenter); -+extern char _ZN11IPGWOptions12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN11IPGWOptions12add_handlersEv); -+extern char _ZN11IPGWOptions13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN11IPGWOptions13simple_actionEP6Packet); -+extern char _ZN11IPGWOptions14handle_optionsEP6Packet[]; -+EXPORT_SYMBOL(_ZN11IPGWOptions14handle_optionsEP6Packet); -+extern char _ZN11IPGWOptions9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11IPGWOptions9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN11IPGWOptionsC1Ev[]; -+EXPORT_SYMBOL(_ZN11IPGWOptionsC1Ev); -+extern char _ZN11IPGWOptionsC2Ev[]; -+EXPORT_SYMBOL(_ZN11IPGWOptionsC2Ev); -+extern char _ZN11IPGWOptionsD0Ev[]; -+EXPORT_SYMBOL(_ZN11IPGWOptionsD0Ev); -+extern char _ZN11IPGWOptionsD1Ev[]; -+EXPORT_SYMBOL(_ZN11IPGWOptionsD1Ev); -+extern char _ZN11IPGWOptionsD2Ev[]; -+EXPORT_SYMBOL(_ZN11IPGWOptionsD2Ev); -+extern char _ZNK11IPGWOptions10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK11IPGWOptions10class_nameEv); -+extern char _ZNK11IPGWOptions10port_countEv[]; -+EXPORT_SYMBOL(_ZNK11IPGWOptions10port_countEv); -+extern char _ZNK11IPGWOptions10processingEv[]; -+EXPORT_SYMBOL(_ZNK11IPGWOptions10processingEv); -+extern char _ZTV11IPGWOptions[]; -+EXPORT_SYMBOL(_ZTV11IPGWOptions); -+extern char _ZN12IPInputCombo12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN12IPInputCombo12add_handlersEv); -+extern char _ZN12IPInputCombo4pullEi[]; -+EXPORT_SYMBOL(_ZN12IPInputCombo4pullEi); -+extern char _ZN12IPInputCombo4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN12IPInputCombo4pushEiP6Packet); -+extern char _ZN12IPInputCombo9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12IPInputCombo9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12IPInputComboC1Ev[]; -+EXPORT_SYMBOL(_ZN12IPInputComboC1Ev); -+extern char _ZN12IPInputComboC2Ev[]; -+EXPORT_SYMBOL(_ZN12IPInputComboC2Ev); -+extern char _ZN12IPInputComboD0Ev[]; -+EXPORT_SYMBOL(_ZN12IPInputComboD0Ev); -+extern char _ZN12IPInputComboD1Ev[]; -+EXPORT_SYMBOL(_ZN12IPInputComboD1Ev); -+extern char _ZN12IPInputComboD2Ev[]; -+EXPORT_SYMBOL(_ZN12IPInputComboD2Ev); -+extern char _ZNK12IPInputCombo10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12IPInputCombo10class_nameEv); -+extern char _ZNK12IPInputCombo10port_countEv[]; -+EXPORT_SYMBOL(_ZNK12IPInputCombo10port_countEv); -+extern char _ZNK12IPInputCombo10processingEv[]; -+EXPORT_SYMBOL(_ZNK12IPInputCombo10processingEv); -+extern char _ZNK12IPInputCombo5flagsEv[]; -+EXPORT_SYMBOL(_ZNK12IPInputCombo5flagsEv); -+extern char _ZTV12IPInputCombo[]; -+EXPORT_SYMBOL(_ZTV12IPInputCombo); -+extern char _ZN8IPMirror13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN8IPMirror13simple_actionEP6Packet); -+extern char _ZN8IPMirrorC1Ev[]; -+EXPORT_SYMBOL(_ZN8IPMirrorC1Ev); -+extern char _ZN8IPMirrorC2Ev[]; -+EXPORT_SYMBOL(_ZN8IPMirrorC2Ev); -+extern char _ZN8IPMirrorD0Ev[]; -+EXPORT_SYMBOL(_ZN8IPMirrorD0Ev); -+extern char _ZN8IPMirrorD1Ev[]; -+EXPORT_SYMBOL(_ZN8IPMirrorD1Ev); -+extern char _ZN8IPMirrorD2Ev[]; -+EXPORT_SYMBOL(_ZN8IPMirrorD2Ev); -+extern char _ZNK8IPMirror10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK8IPMirror10class_nameEv); -+extern char _ZNK8IPMirror10port_countEv[]; -+EXPORT_SYMBOL(_ZNK8IPMirror10port_countEv); -+extern char _ZNK8IPMirror10processingEv[]; -+EXPORT_SYMBOL(_ZNK8IPMirror10processingEv); -+extern char _ZTV8IPMirror[]; -+EXPORT_SYMBOL(_ZTV8IPMirror); -+extern char _ZN10IPNameInfo14static_cleanupEv[]; -+EXPORT_SYMBOL(_ZN10IPNameInfo14static_cleanupEv); -+extern char _ZN10IPNameInfo17static_initializeEv[]; -+EXPORT_SYMBOL(_ZN10IPNameInfo17static_initializeEv); -+extern char _ZN13IPOutputCombo4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN13IPOutputCombo4pushEiP6Packet); -+extern char _ZN13IPOutputCombo9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13IPOutputCombo9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN13IPOutputComboC1Ev[]; -+EXPORT_SYMBOL(_ZN13IPOutputComboC1Ev); -+extern char _ZN13IPOutputComboC2Ev[]; -+EXPORT_SYMBOL(_ZN13IPOutputComboC2Ev); -+extern char _ZN13IPOutputComboD0Ev[]; -+EXPORT_SYMBOL(_ZN13IPOutputComboD0Ev); -+extern char _ZN13IPOutputComboD1Ev[]; -+EXPORT_SYMBOL(_ZN13IPOutputComboD1Ev); -+extern char _ZN13IPOutputComboD2Ev[]; -+EXPORT_SYMBOL(_ZN13IPOutputComboD2Ev); -+extern char _ZNK13IPOutputCombo10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK13IPOutputCombo10class_nameEv); -+extern char _ZNK13IPOutputCombo10port_countEv[]; -+EXPORT_SYMBOL(_ZNK13IPOutputCombo10port_countEv); -+extern char _ZNK13IPOutputCombo10processingEv[]; -+EXPORT_SYMBOL(_ZNK13IPOutputCombo10processingEv); -+extern char _ZTV13IPOutputCombo[]; -+EXPORT_SYMBOL(_ZTV13IPOutputCombo); -+extern char _ZN7IPPrint10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7IPPrint10initializeEP12ErrorHandler); -+extern char _ZN7IPPrint13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN7IPPrint13simple_actionEP6Packet); -+extern char _ZN7IPPrint7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN7IPPrint7cleanupEN7Element12CleanupStageE); -+extern char _ZN7IPPrint9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7IPPrint9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN7IPPrintC1Ev[]; -+EXPORT_SYMBOL(_ZN7IPPrintC1Ev); -+extern char _ZN7IPPrintC2Ev[]; -+EXPORT_SYMBOL(_ZN7IPPrintC2Ev); -+extern char _ZN7IPPrintD0Ev[]; -+EXPORT_SYMBOL(_ZN7IPPrintD0Ev); -+extern char _ZN7IPPrintD1Ev[]; -+EXPORT_SYMBOL(_ZN7IPPrintD1Ev); -+extern char _ZN7IPPrintD2Ev[]; -+EXPORT_SYMBOL(_ZN7IPPrintD2Ev); -+extern char _ZNK6Packet11user_anno_cEi[]; -+EXPORT_SYMBOL(_ZNK6Packet11user_anno_cEi); -+extern char _ZNK6Packet11user_anno_uEi[]; -+EXPORT_SYMBOL(_ZNK6Packet11user_anno_uEi); -+extern char _ZNK7IPPrint10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK7IPPrint10class_nameEv); -+extern char _ZNK7IPPrint10port_countEv[]; -+EXPORT_SYMBOL(_ZNK7IPPrint10port_countEv); -+extern char _ZNK7IPPrint10processingEv[]; -+EXPORT_SYMBOL(_ZNK7IPPrint10processingEv); -+extern char _ZNK7IPPrint8tcp_lineER11StringAccumPK6Packeti[]; -+EXPORT_SYMBOL(_ZNK7IPPrint8tcp_lineER11StringAccumPK6Packeti); -+extern char _ZNK7IPPrint8udp_lineER11StringAccumPK6Packeti[]; -+EXPORT_SYMBOL(_ZNK7IPPrint8udp_lineER11StringAccumPK6Packeti); -+extern char _ZNK7IPPrint9icmp_lineER11StringAccumPK6Packeti[]; -+EXPORT_SYMBOL(_ZNK7IPPrint9icmp_lineER11StringAccumPK6Packeti); -+extern char _ZTV7IPPrint[]; -+EXPORT_SYMBOL(_ZTV7IPPrint); -+extern char _ZN13IPReassembler10find_queueEP6PacketPPP14WritablePacket[]; -+EXPORT_SYMBOL(_ZN13IPReassembler10find_queueEP6PacketPPP14WritablePacket); -+extern char _ZN13IPReassembler10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13IPReassembler10initializeEP12ErrorHandler); -+extern char _ZN13IPReassembler10make_queueEP6PacketPP14WritablePacket[]; -+EXPORT_SYMBOL(_ZN13IPReassembler10make_queueEP6PacketPP14WritablePacket); -+extern char _ZN13IPReassembler10next_chunkEP14WritablePacketPNS_9ChunkLinkE[]; -+EXPORT_SYMBOL(_ZN13IPReassembler10next_chunkEP14WritablePacketPNS_9ChunkLinkE); -+extern char _ZN13IPReassembler11check_errorEP12ErrorHandleriPK6PacketPKcz[]; -+EXPORT_SYMBOL(_ZN13IPReassembler11check_errorEP12ErrorHandleriPK6PacketPKcz); -+extern char _ZN13IPReassembler13reap_overfullEi[]; -+EXPORT_SYMBOL(_ZN13IPReassembler13reap_overfullEi); -+extern char _ZN13IPReassembler13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN13IPReassembler13simple_actionEP6Packet); -+extern char _ZN13IPReassembler17emit_whole_packetEP14WritablePacketPS1_P6Packet[]; -+EXPORT_SYMBOL(_ZN13IPReassembler17emit_whole_packetEP14WritablePacketPS1_P6Packet); -+extern char _ZN13IPReassembler4reapEi[]; -+EXPORT_SYMBOL(_ZN13IPReassembler4reapEi); -+extern char _ZN13IPReassembler5checkEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13IPReassembler5checkEP12ErrorHandler); -+extern char _ZN13IPReassembler7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN13IPReassembler7cleanupEN7Element12CleanupStageE); -+extern char _ZN13IPReassembler9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13IPReassembler9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN13IPReassemblerC1Ev[]; -+EXPORT_SYMBOL(_ZN13IPReassemblerC1Ev); -+extern char _ZN13IPReassemblerC2Ev[]; -+EXPORT_SYMBOL(_ZN13IPReassemblerC2Ev); -+extern char _ZN13IPReassemblerD0Ev[]; -+EXPORT_SYMBOL(_ZN13IPReassemblerD0Ev); -+extern char _ZN13IPReassemblerD1Ev[]; -+EXPORT_SYMBOL(_ZN13IPReassemblerD1Ev); -+extern char _ZN13IPReassemblerD2Ev[]; -+EXPORT_SYMBOL(_ZN13IPReassemblerD2Ev); -+extern char _ZNK13IPReassembler10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK13IPReassembler10class_nameEv); -+extern char _ZNK13IPReassembler10port_countEv[]; -+EXPORT_SYMBOL(_ZNK13IPReassembler10port_countEv); -+extern char _ZNK13IPReassembler10processingEv[]; -+EXPORT_SYMBOL(_ZNK13IPReassembler10processingEv); -+extern char _ZTV13IPReassembler[]; -+EXPORT_SYMBOL(_ZTV13IPReassembler); -+extern char _ZN10IPRewriter10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10IPRewriter10initializeEP12ErrorHandler); -+extern char _ZN10IPRewriter10take_stateEP7ElementP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10IPRewriter10take_stateEP7ElementP12ErrorHandler); -+extern char _ZN10IPRewriter11tcp_gc_hookEP5TimerPv[]; -+EXPORT_SYMBOL(_ZN10IPRewriter11tcp_gc_hookEP5TimerPv); -+extern char _ZN10IPRewriter11udp_gc_hookEP5TimerPv[]; -+EXPORT_SYMBOL(_ZN10IPRewriter11udp_gc_hookEP5TimerPv); -+extern char _ZN10IPRewriter12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN10IPRewriter12add_handlersEv); -+extern char _ZN10IPRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii[]; -+EXPORT_SYMBOL(_ZN10IPRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii); -+extern char _ZN10IPRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10IPRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler); -+extern char _ZN10IPRewriter16tcp_done_gc_hookEP5TimerPv[]; -+EXPORT_SYMBOL(_ZN10IPRewriter16tcp_done_gc_hookEP5TimerPv); -+extern char _ZN10IPRewriter21dump_mappings_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN10IPRewriter21dump_mappings_handlerEP7ElementPv); -+extern char _ZN10IPRewriter21dump_patterns_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN10IPRewriter21dump_patterns_handlerEP7ElementPv); -+extern char _ZN10IPRewriter22dump_nmappings_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN10IPRewriter22dump_nmappings_handlerEP7ElementPv); -+extern char _ZN10IPRewriter30dump_tcp_done_mappings_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN10IPRewriter30dump_tcp_done_mappings_handlerEP7ElementPv); -+extern char _ZN10IPRewriter4castEPKc[]; -+EXPORT_SYMBOL(_ZN10IPRewriter4castEPKc); -+extern char _ZN10IPRewriter4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN10IPRewriter4pushEiP6Packet); -+extern char _ZN10IPRewriter5llrpcEjPv[]; -+EXPORT_SYMBOL(_ZN10IPRewriter5llrpcEjPv); -+extern char _ZN10IPRewriter7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN10IPRewriter7cleanupEN7Element12CleanupStageE); -+extern char _ZN10IPRewriter9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10IPRewriter9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN10IPRewriterC1Ev[]; -+EXPORT_SYMBOL(_ZN10IPRewriterC1Ev); -+extern char _ZN10IPRewriterC2Ev[]; -+EXPORT_SYMBOL(_ZN10IPRewriterC2Ev); -+extern char _ZN10IPRewriterD0Ev[]; -+EXPORT_SYMBOL(_ZN10IPRewriterD0Ev); -+extern char _ZN10IPRewriterD1Ev[]; -+EXPORT_SYMBOL(_ZN10IPRewriterD1Ev); -+extern char _ZN10IPRewriterD2Ev[]; -+EXPORT_SYMBOL(_ZN10IPRewriterD2Ev); -+extern char _ZN7HashMapI8IPFlowIDPvE4swapERS2_[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDPvE4swapERS2_); -+extern char _ZNK10IPRewriter10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK10IPRewriter10class_nameEv); -+extern char _ZNK10IPRewriter10port_countEv[]; -+EXPORT_SYMBOL(_ZNK10IPRewriter10port_countEv); -+extern char _ZNK10IPRewriter10processingEv[]; -+EXPORT_SYMBOL(_ZNK10IPRewriter10processingEv); -+extern char _ZNK10IPRewriter11get_mappingEiRK8IPFlowID[]; -+EXPORT_SYMBOL(_ZNK10IPRewriter11get_mappingEiRK8IPFlowID); -+extern char _ZTV10IPRewriter[]; -+EXPORT_SYMBOL(_ZTV10IPRewriter); -+extern char _Z11cp_ip_route6StringP7IPRoutebP7Element[]; -+EXPORT_SYMBOL(_Z11cp_ip_route6StringP7IPRoutebP7Element); -+extern char _ZN12IPRouteTable11dump_routesEv[]; -+EXPORT_SYMBOL(_ZN12IPRouteTable11dump_routesEv); -+extern char _ZN12IPRouteTable11run_commandEiRK6StringP6VectorI7IPRouteEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12IPRouteTable11run_commandEiRK6StringP6VectorI7IPRouteEP12ErrorHandler); -+extern char _ZN12IPRouteTable12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN12IPRouteTable12add_handlersEv); -+extern char _ZN12IPRouteTable12ctrl_handlerERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12IPRouteTable12ctrl_handlerERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN12IPRouteTable12remove_routeERK7IPRoutePS0_P12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12IPRouteTable12remove_routeERK7IPRoutePS0_P12ErrorHandler); -+extern char _ZN12IPRouteTable13table_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN12IPRouteTable13table_handlerEP7ElementPv); -+extern char _ZN12IPRouteTable14lookup_handlerEiR6StringP7ElementPK7HandlerP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12IPRouteTable14lookup_handlerEiR6StringP7ElementPK7HandlerP12ErrorHandler); -+extern char _ZN12IPRouteTable17add_route_handlerERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12IPRouteTable17add_route_handlerERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN12IPRouteTable20remove_route_handlerERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12IPRouteTable20remove_route_handlerERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN12IPRouteTable4castEPKc[]; -+EXPORT_SYMBOL(_ZN12IPRouteTable4castEPKc); -+extern char _ZN12IPRouteTable4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN12IPRouteTable4pushEiP6Packet); -+extern char _ZN12IPRouteTable9add_routeERK7IPRoutebPS0_P12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12IPRouteTable9add_routeERK7IPRoutebPS0_P12ErrorHandler); -+extern char _ZN12IPRouteTable9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12IPRouteTable9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12IPRouteTableD0Ev[]; -+EXPORT_SYMBOL(_ZN12IPRouteTableD0Ev); -+extern char _ZN12IPRouteTableD1Ev[]; -+EXPORT_SYMBOL(_ZN12IPRouteTableD1Ev); -+extern char _ZNK12IPRouteTable12lookup_routeE9IPAddressRS0_[]; -+EXPORT_SYMBOL(_ZNK12IPRouteTable12lookup_routeE9IPAddressRS0_); -+extern char _ZNK7IPRoute7unparseER11StringAccumb[]; -+EXPORT_SYMBOL(_ZNK7IPRoute7unparseER11StringAccumb); -+extern char _ZNK7IPRoute7unparseEv[]; -+EXPORT_SYMBOL(_ZNK7IPRoute7unparseEv); -+extern char _ZTV12IPRouteTable[]; -+EXPORT_SYMBOL(_ZTV12IPRouteTable); -+extern char _ZN4IPRw14notify_patternEPNS_7PatternEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN4IPRw14notify_patternEPNS_7PatternEP12ErrorHandler); -+extern char _ZN4IPRw14take_state_mapER7HashMapI8IPFlowIDPNS_7MappingEEPS3_S6_RK6VectorIPNS_7PatternEESC_[]; -+EXPORT_SYMBOL(_ZN4IPRw14take_state_mapER7HashMapI8IPFlowIDPNS_7MappingEEPS3_S6_RK6VectorIPNS_7PatternEESC_); -+extern char _ZN4IPRw16parse_input_specERK6StringRNS_9InputSpecES0_P12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN4IPRw16parse_input_specERK6StringRNS_9InputSpecES0_P12ErrorHandler); -+extern char _ZN4IPRw22clean_map_free_trackedER7HashMapI8IPFlowIDPNS_7MappingEERS3_S6_j[]; -+EXPORT_SYMBOL(_ZN4IPRw22clean_map_free_trackedER7HashMapI8IPFlowIDPNS_7MappingEERS3_S6_j); -+extern char _ZN4IPRw27incr_clean_map_free_trackedER7HashMapI8IPFlowIDPNS_7MappingEERS3_S6_j[]; -+EXPORT_SYMBOL(_ZN4IPRw27incr_clean_map_free_trackedER7HashMapI8IPFlowIDPNS_7MappingEERS3_S6_j); -+extern char _ZN4IPRw7Mapping10initializeEiRK8IPFlowIDS3_itPS0_[]; -+EXPORT_SYMBOL(_ZN4IPRw7Mapping10initializeEiRK8IPFlowIDS3_itPS0_); -+extern char _ZN4IPRw7Mapping5applyEP14WritablePacket[]; -+EXPORT_SYMBOL(_ZN4IPRw7Mapping5applyEP14WritablePacket); -+extern char _ZN4IPRw7Mapping9make_pairEiRK8IPFlowIDS3_iiPS0_S4_[]; -+EXPORT_SYMBOL(_ZN4IPRw7Mapping9make_pairEiRK8IPFlowIDS3_iiPS0_S4_); -+extern char _ZN4IPRw7MappingC1Eb[]; -+EXPORT_SYMBOL(_ZN4IPRw7MappingC1Eb); -+extern char _ZN4IPRw7MappingC2Eb[]; -+EXPORT_SYMBOL(_ZN4IPRw7MappingC2Eb); -+extern char _ZN4IPRw7Pattern10parse_naptER6VectorI6StringEPPS0_P7ElementP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN4IPRw7Pattern10parse_naptER6VectorI6StringEPPS0_P7ElementP12ErrorHandler); -+extern char _ZN4IPRw7Pattern14accept_mappingEPNS_7MappingE[]; -+EXPORT_SYMBOL(_ZN4IPRw7Pattern14accept_mappingEPNS_7MappingE); -+extern char _ZN4IPRw7Pattern14create_mappingEiRK8IPFlowIDiiPNS_7MappingES5_RK7HashMapIS1_S5_E[]; -+EXPORT_SYMBOL(_ZN4IPRw7Pattern14create_mappingEiRK8IPFlowIDiiPNS_7MappingES5_RK7HashMapIS1_S5_E); -+extern char _ZN4IPRw7Pattern16parse_with_portsERK6StringPPS0_PiS6_P7ElementP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN4IPRw7Pattern16parse_with_portsERK6StringPPS0_PiS6_P7ElementP12ErrorHandler); -+extern char _ZN4IPRw7Pattern5parseERK6StringPPS0_P7ElementP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN4IPRw7Pattern5parseERK6StringPPS0_P7ElementP12ErrorHandler); -+extern char _ZN4IPRw7Pattern9parse_natER6VectorI6StringEPPS0_P7ElementP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN4IPRw7Pattern9parse_natER6VectorI6StringEPPS0_P7ElementP12ErrorHandler); -+extern char _ZN4IPRw7PatternC1ERK9IPAddressiS3_ibbj[]; -+EXPORT_SYMBOL(_ZN4IPRw7PatternC1ERK9IPAddressiS3_ibbj); -+extern char _ZN4IPRw7PatternC2ERK9IPAddressiS3_ibbj[]; -+EXPORT_SYMBOL(_ZN4IPRw7PatternC2ERK9IPAddressiS3_ibbj); -+extern char _ZN4IPRw9clean_mapER7HashMapI8IPFlowIDPNS_7MappingEEj[]; -+EXPORT_SYMBOL(_ZN4IPRw9clean_mapER7HashMapI8IPFlowIDPNS_7MappingEEj); -+extern char _ZN4IPRw9clear_mapER7HashMapI8IPFlowIDPNS_7MappingEE[]; -+EXPORT_SYMBOL(_ZN4IPRw9clear_mapER7HashMapI8IPFlowIDPNS_7MappingEE); -+extern char _ZN4IPRwC1Ev[]; -+EXPORT_SYMBOL(_ZN4IPRwC1Ev); -+extern char _ZN4IPRwC2Ev[]; -+EXPORT_SYMBOL(_ZN4IPRwC2Ev); -+extern char _ZN4IPRwD0Ev[]; -+EXPORT_SYMBOL(_ZN4IPRwD0Ev); -+extern char _ZN4IPRwD1Ev[]; -+EXPORT_SYMBOL(_ZN4IPRwD1Ev); -+extern char _ZN4IPRwD2Ev[]; -+EXPORT_SYMBOL(_ZN4IPRwD2Ev); -+extern char _ZN6VectorI6StringE6resizeEiRKS0_[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringE6resizeEiRKS0_); -+extern char _ZN6VectorI6StringE7reserveEi[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringE7reserveEi); -+extern char _ZN8IPMapper15notify_rewriterEP4IPRwP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8IPMapper15notify_rewriterEP4IPRwP12ErrorHandler); -+extern char _ZN8IPMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet[]; -+EXPORT_SYMBOL(_ZN8IPMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet); -+extern char _ZN8IPMapperD0Ev[]; -+EXPORT_SYMBOL(_ZN8IPMapperD0Ev); -+extern char _ZN8IPMapperD1Ev[]; -+EXPORT_SYMBOL(_ZN8IPMapperD1Ev); -+extern char _ZNK4IPRw7Mapping7unparseEv[]; -+EXPORT_SYMBOL(_ZNK4IPRw7Mapping7unparseEv); -+extern char _ZNK4IPRw7Pattern15can_accept_fromERKS0_[]; -+EXPORT_SYMBOL(_ZNK4IPRw7Pattern15can_accept_fromERKS0_); -+extern char _ZNK4IPRw7Pattern7unparseEv[]; -+EXPORT_SYMBOL(_ZNK4IPRw7Pattern7unparseEv); -+extern char _ZTV4IPRw[]; -+EXPORT_SYMBOL(_ZTV4IPRw); -+extern char _ZTV8IPMapper[]; -+EXPORT_SYMBOL(_ZTV8IPMapper); -+extern char _ZN18IPRewriterPatterns4findEP7ElementRK6StringP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN18IPRewriterPatterns4findEP7ElementRK6StringP12ErrorHandler); -+extern char _ZN18IPRewriterPatterns7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN18IPRewriterPatterns7cleanupEN7Element12CleanupStageE); -+extern char _ZN18IPRewriterPatterns9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN18IPRewriterPatterns9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN18IPRewriterPatternsC1Ev[]; -+EXPORT_SYMBOL(_ZN18IPRewriterPatternsC1Ev); -+extern char _ZN18IPRewriterPatternsC2Ev[]; -+EXPORT_SYMBOL(_ZN18IPRewriterPatternsC2Ev); -+extern char _ZN18IPRewriterPatternsD0Ev[]; -+EXPORT_SYMBOL(_ZN18IPRewriterPatternsD0Ev); -+extern char _ZN18IPRewriterPatternsD1Ev[]; -+EXPORT_SYMBOL(_ZN18IPRewriterPatternsD1Ev); -+extern char _ZN18IPRewriterPatternsD2Ev[]; -+EXPORT_SYMBOL(_ZN18IPRewriterPatternsD2Ev); -+extern char _ZNK18IPRewriterPatterns10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK18IPRewriterPatterns10class_nameEv); -+extern char _ZNK18IPRewriterPatterns15configure_phaseEv[]; -+EXPORT_SYMBOL(_ZNK18IPRewriterPatterns15configure_phaseEv); -+extern char _ZTV18IPRewriterPatterns[]; -+EXPORT_SYMBOL(_ZTV18IPRewriterPatterns); -+extern char _ZN6VectorIN7IPTable5EntryEE10push_frontERKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE10push_frontERKS1_); -+extern char _ZN6VectorIN7IPTable5EntryEE2atEi[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE2atEi); -+extern char _ZN6VectorIN7IPTable5EntryEE3endEv[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE3endEv); -+extern char _ZN6VectorIN7IPTable5EntryEE4at_uEi[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE4at_uEi); -+extern char _ZN6VectorIN7IPTable5EntryEE4backEv[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE4backEv); -+extern char _ZN6VectorIN7IPTable5EntryEE4swapERS2_[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE4swapERS2_); -+extern char _ZN6VectorIN7IPTable5EntryEE4veltEPS1_i[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE4veltEPS1_i); -+extern char _ZN6VectorIN7IPTable5EntryEE5beginEv[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE5beginEv); -+extern char _ZN6VectorIN7IPTable5EntryEE5clearEv[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE5clearEv); -+extern char _ZN6VectorIN7IPTable5EntryEE5eraseEPS1_[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE5eraseEPS1_); -+extern char _ZN6VectorIN7IPTable5EntryEE5eraseEPS1_S3_[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE5eraseEPS1_S3_); -+extern char _ZN6VectorIN7IPTable5EntryEE5frontEv[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE5frontEv); -+extern char _ZN6VectorIN7IPTable5EntryEE6assignEiRKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE6assignEiRKS1_); -+extern char _ZN6VectorIN7IPTable5EntryEE6insertEPS1_RKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE6insertEPS1_RKS1_); -+extern char _ZN6VectorIN7IPTable5EntryEE6resizeEiRKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE6resizeEiRKS1_); -+extern char _ZN6VectorIN7IPTable5EntryEE7reserveEi[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE7reserveEi); -+extern char _ZN6VectorIN7IPTable5EntryEE8pop_backEv[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE8pop_backEv); -+extern char _ZN6VectorIN7IPTable5EntryEE9pop_frontEv[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE9pop_frontEv); -+extern char _ZN6VectorIN7IPTable5EntryEE9push_backERKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE9push_backERKS1_); -+extern char _ZN6VectorIN7IPTable5EntryEEC1ERKS2_[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEEC1ERKS2_); -+extern char _ZN6VectorIN7IPTable5EntryEEC1EiRKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEEC1EiRKS1_); -+extern char _ZN6VectorIN7IPTable5EntryEEC1Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEEC1Ev); -+extern char _ZN6VectorIN7IPTable5EntryEEC2ERKS2_[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEEC2ERKS2_); -+extern char _ZN6VectorIN7IPTable5EntryEEC2EiRKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEEC2EiRKS1_); -+extern char _ZN6VectorIN7IPTable5EntryEEC2Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEEC2Ev); -+extern char _ZN6VectorIN7IPTable5EntryEED1Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEED1Ev); -+extern char _ZN6VectorIN7IPTable5EntryEED2Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEED2Ev); -+extern char _ZN6VectorIN7IPTable5EntryEEaSERKS2_[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEEaSERKS2_); -+extern char _ZN6VectorIN7IPTable5EntryEEixEi[]; -+EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEEixEi); -+extern char _ZN7IPTable3addE9IPAddressS0_S0_i[]; -+EXPORT_SYMBOL(_ZN7IPTable3addE9IPAddressS0_S0_i); -+extern char _ZN7IPTable3delE9IPAddressS0_[]; -+EXPORT_SYMBOL(_ZN7IPTable3delE9IPAddressS0_); -+extern char _ZN7IPTableC1Ev[]; -+EXPORT_SYMBOL(_ZN7IPTableC1Ev); -+extern char _ZN7IPTableC2Ev[]; -+EXPORT_SYMBOL(_ZN7IPTableC2Ev); -+extern char _ZN7IPTableD1Ev[]; -+EXPORT_SYMBOL(_ZN7IPTableD1Ev); -+extern char _ZN7IPTableD2Ev[]; -+EXPORT_SYMBOL(_ZN7IPTableD2Ev); -+extern char _ZNK6VectorIN7IPTable5EntryEE2atEi[]; -+EXPORT_SYMBOL(_ZNK6VectorIN7IPTable5EntryEE2atEi); -+extern char _ZNK6VectorIN7IPTable5EntryEE3endEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIN7IPTable5EntryEE3endEv); -+extern char _ZNK6VectorIN7IPTable5EntryEE4at_uEi[]; -+EXPORT_SYMBOL(_ZNK6VectorIN7IPTable5EntryEE4at_uEi); -+extern char _ZNK6VectorIN7IPTable5EntryEE4backEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIN7IPTable5EntryEE4backEv); -+extern char _ZNK6VectorIN7IPTable5EntryEE4sizeEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIN7IPTable5EntryEE4sizeEv); -+extern char _ZNK6VectorIN7IPTable5EntryEE4veltEi[]; -+EXPORT_SYMBOL(_ZNK6VectorIN7IPTable5EntryEE4veltEi); -+extern char _ZNK6VectorIN7IPTable5EntryEE5beginEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIN7IPTable5EntryEE5beginEv); -+extern char _ZNK6VectorIN7IPTable5EntryEE5emptyEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIN7IPTable5EntryEE5emptyEv); -+extern char _ZNK6VectorIN7IPTable5EntryEE5frontEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIN7IPTable5EntryEE5frontEv); -+extern char _ZNK6VectorIN7IPTable5EntryEE8capacityEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIN7IPTable5EntryEE8capacityEv); -+extern char _ZNK6VectorIN7IPTable5EntryEEixEi[]; -+EXPORT_SYMBOL(_ZNK6VectorIN7IPTable5EntryEEixEi); -+extern char _ZNK7IPTable6lookupE9IPAddressRS0_Ri[]; -+EXPORT_SYMBOL(_ZNK7IPTable6lookupE9IPAddressRS0_Ri); -+extern char _ZN10LexerExtra7requireE6StringP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10LexerExtra7requireE6StringP12ErrorHandler); -+extern char _ZN10LexerExtraD0Ev[]; -+EXPORT_SYMBOL(_ZN10LexerExtraD0Ev); -+extern char _ZN10LexerExtraD1Ev[]; -+EXPORT_SYMBOL(_ZN10LexerExtraD1Ev); -+extern char _ZN16VariableExpanderD0Ev[]; -+EXPORT_SYMBOL(_ZN16VariableExpanderD0Ev); -+extern char _ZN16VariableExpanderD1Ev[]; -+EXPORT_SYMBOL(_ZN16VariableExpanderD1Ev); -+extern char _ZN5Lexer10add_tunnelE6StringS0_[]; -+EXPORT_SYMBOL(_ZN5Lexer10add_tunnelE6StringS0_); -+extern char _ZN5Lexer10lex_configEv[]; -+EXPORT_SYMBOL(_ZN5Lexer10lex_configEv); -+extern char _ZN5Lexer10skip_quoteEPKcc[]; -+EXPORT_SYMBOL(_ZN5Lexer10skip_quoteEPKcc); -+extern char _ZN5Lexer10ystatementEb[]; -+EXPORT_SYMBOL(_ZN5Lexer10ystatementEb); -+extern char _ZN5Lexer11begin_parseERK6StringS2_P10LexerExtraP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN5Lexer11begin_parseERK6StringS2_P10LexerExtraP12ErrorHandler); -+extern char _ZN5Lexer11get_elementE6StringiRKS0_S2_[]; -+EXPORT_SYMBOL(_ZN5Lexer11get_elementE6StringiRKS0_S2_); -+extern char _ZN5Lexer11next_lexemeEv[]; -+EXPORT_SYMBOL(_ZN5Lexer11next_lexemeEv); -+extern char _ZN5Lexer11yconnectionEv[]; -+EXPORT_SYMBOL(_ZN5Lexer11yconnectionEv); -+extern char _ZN5Lexer12ydeclarationERK6String[]; -+EXPORT_SYMBOL(_ZN5Lexer12ydeclarationERK6String); -+extern char _ZN5Lexer13create_routerEP6Master[]; -+EXPORT_SYMBOL(_ZN5Lexer13create_routerEP6Master); -+extern char _ZN5Lexer13lexeme_stringEi[]; -+EXPORT_SYMBOL(_ZN5Lexer13lexeme_stringEi); -+extern char _ZN5Lexer13yelementclassEv[]; -+EXPORT_SYMBOL(_ZN5Lexer13yelementclassEv); -+extern char _ZN5Lexer15skip_slash_starEPKc[]; -+EXPORT_SYMBOL(_ZN5Lexer15skip_slash_starEPKc); -+extern char _ZN5Lexer16add_element_typeERK6StringPFP7ElementmEmP6moduleb[]; -+EXPORT_SYMBOL(_ZN5Lexer16add_element_typeERK6StringPFP7ElementmEmP6moduleb); -+extern char _ZN5Lexer18force_element_typeE6String[]; -+EXPORT_SYMBOL(_ZN5Lexer18force_element_typeE6String); -+extern char _ZN5Lexer18set_remaining_textERK6String[]; -+EXPORT_SYMBOL(_ZN5Lexer18set_remaining_textERK6String); -+extern char _ZN5Lexer19lexical_scoping_outEi[]; -+EXPORT_SYMBOL(_ZN5Lexer19lexical_scoping_outEi); -+extern char _ZN5Lexer19remove_element_typeEiPi[]; -+EXPORT_SYMBOL(_ZN5Lexer19remove_element_typeEiPi); -+extern char _ZN5Lexer19ycompound_argumentsEPNS_8CompoundE[]; -+EXPORT_SYMBOL(_ZN5Lexer19ycompound_argumentsEPNS_8CompoundE); -+extern char _ZN5Lexer20skip_backslash_angleEPKc[]; -+EXPORT_SYMBOL(_ZN5Lexer20skip_backslash_angleEPKc); -+extern char _ZN5Lexer22add_router_connectionsEiRK6VectorIiEP6Router[]; -+EXPORT_SYMBOL(_ZN5Lexer22add_router_connectionsEiRK6VectorIiEP6Router); -+extern char _ZN5Lexer22process_line_directiveEPKc[]; -+EXPORT_SYMBOL(_ZN5Lexer22process_line_directiveEPKc); -+extern char _ZN5Lexer23expand_compound_elementEiR19VariableEnvironment[]; -+EXPORT_SYMBOL(_ZN5Lexer23expand_compound_elementEiR19VariableEnvironment); -+extern char _ZN5Lexer24deanonymize_element_nameERK6Stringi[]; -+EXPORT_SYMBOL(_ZN5Lexer24deanonymize_element_nameERK6Stringi); -+extern char _ZN5Lexer3lexEv[]; -+EXPORT_SYMBOL(_ZN5Lexer3lexEv); -+extern char _ZN5Lexer4yvarEv[]; -+EXPORT_SYMBOL(_ZN5Lexer4yvarEv); -+extern char _ZN5Lexer5unlexERK6Lexeme[]; -+EXPORT_SYMBOL(_ZN5Lexer5unlexERK6Lexeme); -+extern char _ZN5Lexer5yportERi[]; -+EXPORT_SYMBOL(_ZN5Lexer5yportERi); -+extern char _ZN5Lexer6expectEib[]; -+EXPORT_SYMBOL(_ZN5Lexer6expectEib); -+extern char _ZN5Lexer6lerrorEPKcz[]; -+EXPORT_SYMBOL(_ZN5Lexer6lerrorEPKcz); -+extern char _ZN5Lexer7connectEiiii[]; -+EXPORT_SYMBOL(_ZN5Lexer7connectEiiii); -+extern char _ZN5Lexer7ytunnelEv[]; -+EXPORT_SYMBOL(_ZN5Lexer7ytunnelEv); -+extern char _ZN5Lexer8Compound11expand_intoEPS_iR19VariableEnvironment[]; -+EXPORT_SYMBOL(_ZN5Lexer8Compound11expand_intoEPS_iR19VariableEnvironment); -+extern char _ZN5Lexer8Compound20printable_name_c_strEv[]; -+EXPORT_SYMBOL(_ZN5Lexer8Compound20printable_name_c_strEv); -+extern char _ZN5Lexer8Compound4castEPKc[]; -+EXPORT_SYMBOL(_ZN5Lexer8Compound4castEPKc); -+extern char _ZN5Lexer8Compound6finishEPS_P12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN5Lexer8Compound6finishEPS_P12ErrorHandler); -+extern char _ZN5Lexer8Compound7resolveEPS_iiiR6VectorI6StringEP12ErrorHandlerRKS3_[]; -+EXPORT_SYMBOL(_ZN5Lexer8Compound7resolveEPS_iiiR6VectorI6StringEP12ErrorHandlerRKS3_); -+extern char _ZN5Lexer8Compound9signatureERK6StringPK6VectorIS1_Eiii[]; -+EXPORT_SYMBOL(_ZN5Lexer8Compound9signatureERK6StringPK6VectorIS1_Eiii); -+extern char _ZN5Lexer8CompoundC1ERK6StringS3_P19VariableEnvironment[]; -+EXPORT_SYMBOL(_ZN5Lexer8CompoundC1ERK6StringS3_P19VariableEnvironment); -+extern char _ZN5Lexer8CompoundC2ERK6StringS3_P19VariableEnvironment[]; -+EXPORT_SYMBOL(_ZN5Lexer8CompoundC2ERK6StringS3_P19VariableEnvironment); -+extern char _ZN5Lexer8CompoundD0Ev[]; -+EXPORT_SYMBOL(_ZN5Lexer8CompoundD0Ev); -+extern char _ZN5Lexer8CompoundD1Ev[]; -+EXPORT_SYMBOL(_ZN5Lexer8CompoundD1Ev); -+extern char _ZN5Lexer8yelementERib[]; -+EXPORT_SYMBOL(_ZN5Lexer8yelementERib); -+extern char _ZN5Lexer8yrequireEv[]; -+EXPORT_SYMBOL(_ZN5Lexer8yrequireEv); -+extern char _ZN5Lexer9TunnelEnd4findERKN6Router6HookupE[]; -+EXPORT_SYMBOL(_ZN5Lexer9TunnelEnd4findERKN6Router6HookupE); -+extern char _ZN5Lexer9TunnelEnd6expandEPKS_R6VectorIN6Router6HookupEE[]; -+EXPORT_SYMBOL(_ZN5Lexer9TunnelEnd6expandEPKS_R6VectorIN6Router6HookupEE); -+extern char _ZN5Lexer9TunnelEndC1ERKN6Router6HookupEbPS0_[]; -+EXPORT_SYMBOL(_ZN5Lexer9TunnelEndC1ERKN6Router6HookupEbPS0_); -+extern char _ZN5Lexer9TunnelEndC2ERKN6Router6HookupEbPS0_[]; -+EXPORT_SYMBOL(_ZN5Lexer9TunnelEndC2ERKN6Router6HookupEbPS0_); -+extern char _ZN5Lexer9end_parseEi[]; -+EXPORT_SYMBOL(_ZN5Lexer9end_parseEi); -+extern char _ZN5Lexer9skip_lineEPKc[]; -+EXPORT_SYMBOL(_ZN5Lexer9skip_lineEPKc); -+extern char _ZN5Lexer9ycompoundE6String[]; -+EXPORT_SYMBOL(_ZN5Lexer9ycompoundE6String); -+extern char _ZN5LexerC1Ev[]; -+EXPORT_SYMBOL(_ZN5LexerC1Ev); -+extern char _ZN5LexerC2Ev[]; -+EXPORT_SYMBOL(_ZN5LexerC2Ev); -+extern char _ZN5LexerD0Ev[]; -+EXPORT_SYMBOL(_ZN5LexerD0Ev); -+extern char _ZN5LexerD1Ev[]; -+EXPORT_SYMBOL(_ZN5LexerD1Ev); -+extern char _ZN5LexerD2Ev[]; -+EXPORT_SYMBOL(_ZN5LexerD2Ev); -+extern char _ZN6VectorI6StringE5eraseEPS0_S2_[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringE5eraseEPS0_S2_); -+extern char _ZN6VectorIN5Lexer11ElementTypeEE7reserveEi[]; -+EXPORT_SYMBOL(_ZN6VectorIN5Lexer11ElementTypeEE7reserveEi); -+extern char _ZN6VectorIN5Lexer11ElementTypeEED1Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIN5Lexer11ElementTypeEED1Ev); -+extern char _ZN6VectorIN6Router6HookupEE7reserveEi[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE7reserveEi); -+extern char _ZN6VectorIN6Router6HookupEED1Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEED1Ev); -+extern char _ZNK5Lexer12element_nameEi[]; -+EXPORT_SYMBOL(_ZNK5Lexer12element_nameEi); -+extern char _ZNK5Lexer12element_typeERK6String[]; -+EXPORT_SYMBOL(_ZNK5Lexer12element_typeERK6String); -+extern char _ZNK5Lexer14remaining_textEv[]; -+EXPORT_SYMBOL(_ZNK5Lexer14remaining_textEv); -+extern char _ZNK5Lexer16element_landmarkEi[]; -+EXPORT_SYMBOL(_ZNK5Lexer16element_landmarkEi); -+extern char _ZNK5Lexer16find_connectionsERKN6Router6HookupEbR6VectorIS1_E[]; -+EXPORT_SYMBOL(_ZNK5Lexer16find_connectionsERKN6Router6HookupEbR6VectorIS1_E); -+extern char _ZNK5Lexer17anon_element_nameERK6String[]; -+EXPORT_SYMBOL(_ZNK5Lexer17anon_element_nameERK6String); -+extern char _ZNK5Lexer17expand_connectionERKN6Router6HookupEbR6VectorIS1_E[]; -+EXPORT_SYMBOL(_ZNK5Lexer17expand_connectionERKN6Router6HookupEbR6VectorIS1_E); -+extern char _ZNK5Lexer18element_type_namesER6VectorI6StringE[]; -+EXPORT_SYMBOL(_ZNK5Lexer18element_type_namesER6VectorI6StringE); -+extern char _ZNK5Lexer18lexical_scoping_inEv[]; -+EXPORT_SYMBOL(_ZNK5Lexer18lexical_scoping_inEv); -+extern char _ZNK5Lexer8Compound10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK5Lexer8Compound10class_nameEv); -+extern char _ZNK5Lexer8Compound9signatureEv[]; -+EXPORT_SYMBOL(_ZNK5Lexer8Compound9signatureEv); -+extern char _ZNK5Lexer8landmarkEv[]; -+EXPORT_SYMBOL(_ZNK5Lexer8landmarkEv); -+extern char _ZTV10LexerExtra[]; -+EXPORT_SYMBOL(_ZTV10LexerExtra); -+extern char _ZTV16VariableExpander[]; -+EXPORT_SYMBOL(_ZTV16VariableExpander); -+extern char _ZTV5Lexer[]; -+EXPORT_SYMBOL(_ZTV5Lexer); -+extern char _ZTVN5Lexer8CompoundE[]; -+EXPORT_SYMBOL(_ZTVN5Lexer8CompoundE); -+extern char _ZN14LinearIPLookup10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14LinearIPLookup10initializeEP12ErrorHandler); -+extern char _ZN14LinearIPLookup11dump_routesEv[]; -+EXPORT_SYMBOL(_ZN14LinearIPLookup11dump_routesEv); -+extern char _ZN14LinearIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14LinearIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler); -+extern char _ZN14LinearIPLookup4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN14LinearIPLookup4pushEiP6Packet); -+extern char _ZN14LinearIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14LinearIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler); -+extern char _ZN14LinearIPLookupC1Ev[]; -+EXPORT_SYMBOL(_ZN14LinearIPLookupC1Ev); -+extern char _ZN14LinearIPLookupC2Ev[]; -+EXPORT_SYMBOL(_ZN14LinearIPLookupC2Ev); -+extern char _ZN14LinearIPLookupD0Ev[]; -+EXPORT_SYMBOL(_ZN14LinearIPLookupD0Ev); -+extern char _ZN14LinearIPLookupD1Ev[]; -+EXPORT_SYMBOL(_ZN14LinearIPLookupD1Ev); -+extern char _ZN14LinearIPLookupD2Ev[]; -+EXPORT_SYMBOL(_ZN14LinearIPLookupD2Ev); -+extern char _ZN6VectorI7IPRouteE7reserveEi[]; -+EXPORT_SYMBOL(_ZN6VectorI7IPRouteE7reserveEi); -+extern char _ZN6VectorI7IPRouteED1Ev[]; -+EXPORT_SYMBOL(_ZN6VectorI7IPRouteED1Ev); -+extern char _ZNK14LinearIPLookup10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK14LinearIPLookup10class_nameEv); -+extern char _ZNK14LinearIPLookup10port_countEv[]; -+EXPORT_SYMBOL(_ZNK14LinearIPLookup10port_countEv); -+extern char _ZNK14LinearIPLookup10processingEv[]; -+EXPORT_SYMBOL(_ZNK14LinearIPLookup10processingEv); -+extern char _ZNK14LinearIPLookup12lookup_entryE9IPAddress[]; -+EXPORT_SYMBOL(_ZNK14LinearIPLookup12lookup_entryE9IPAddress); -+extern char _ZNK14LinearIPLookup12lookup_routeE9IPAddressRS0_[]; -+EXPORT_SYMBOL(_ZNK14LinearIPLookup12lookup_routeE9IPAddressRS0_); -+extern char _ZNK14LinearIPLookup5checkEv[]; -+EXPORT_SYMBOL(_ZNK14LinearIPLookup5checkEv); -+extern char _ZTV14LinearIPLookup[]; -+EXPORT_SYMBOL(_ZTV14LinearIPLookup); -+extern char _ZN11LinkUnqueue10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11LinkUnqueue10initializeEP12ErrorHandler); -+extern char _ZN11LinkUnqueue10read_paramEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN11LinkUnqueue10read_paramEP7ElementPv); -+extern char _ZN11LinkUnqueue12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN11LinkUnqueue12add_handlersEv); -+extern char _ZN11LinkUnqueue13write_handlerERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11LinkUnqueue13write_handlerERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN11LinkUnqueue4castEPKc[]; -+EXPORT_SYMBOL(_ZN11LinkUnqueue4castEPKc); -+extern char _ZN11LinkUnqueue7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN11LinkUnqueue7cleanupEN7Element12CleanupStageE); -+extern char _ZN11LinkUnqueue8run_taskEP4Task[]; -+EXPORT_SYMBOL(_ZN11LinkUnqueue8run_taskEP4Task); -+extern char _ZN11LinkUnqueue9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11LinkUnqueue9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN11LinkUnqueueC1Ev[]; -+EXPORT_SYMBOL(_ZN11LinkUnqueueC1Ev); -+extern char _ZN11LinkUnqueueC2Ev[]; -+EXPORT_SYMBOL(_ZN11LinkUnqueueC2Ev); -+extern char _ZN11LinkUnqueueD0Ev[]; -+EXPORT_SYMBOL(_ZN11LinkUnqueueD0Ev); -+extern char _ZN11LinkUnqueueD1Ev[]; -+EXPORT_SYMBOL(_ZN11LinkUnqueueD1Ev); -+extern char _ZN11LinkUnqueueD2Ev[]; -+EXPORT_SYMBOL(_ZN11LinkUnqueueD2Ev); -+extern char _ZNK11LinkUnqueue10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK11LinkUnqueue10class_nameEv); -+extern char _ZNK11LinkUnqueue10port_countEv[]; -+EXPORT_SYMBOL(_ZNK11LinkUnqueue10port_countEv); -+extern char _ZNK11LinkUnqueue10processingEv[]; -+EXPORT_SYMBOL(_ZNK11LinkUnqueue10processingEv); -+extern char _ZNK11LinkUnqueue18delay_by_bandwidthEP6PacketRK9Timestamp[]; -+EXPORT_SYMBOL(_ZNK11LinkUnqueue18delay_by_bandwidthEP6PacketRK9Timestamp); -+extern char _ZTV11LinkUnqueue[]; -+EXPORT_SYMBOL(_ZTV11LinkUnqueue); -+extern char _ZN14StaticIPLookup12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN14StaticIPLookup12add_handlersEv); -+extern char _ZN14StaticIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14StaticIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler); -+extern char _ZN14StaticIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14StaticIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler); -+extern char _ZN14StaticIPLookupC1Ev[]; -+EXPORT_SYMBOL(_ZN14StaticIPLookupC1Ev); -+extern char _ZN14StaticIPLookupC2Ev[]; -+EXPORT_SYMBOL(_ZN14StaticIPLookupC2Ev); -+extern char _ZN14StaticIPLookupD0Ev[]; -+EXPORT_SYMBOL(_ZN14StaticIPLookupD0Ev); -+extern char _ZN14StaticIPLookupD1Ev[]; -+EXPORT_SYMBOL(_ZN14StaticIPLookupD1Ev); -+extern char _ZN14StaticIPLookupD2Ev[]; -+EXPORT_SYMBOL(_ZN14StaticIPLookupD2Ev); -+extern char _ZNK14StaticIPLookup10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK14StaticIPLookup10class_nameEv); -+extern char _ZTV14StaticIPLookup[]; -+EXPORT_SYMBOL(_ZTV14StaticIPLookup); -+extern char _ZN15LookupIPRouteMP10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN15LookupIPRouteMP10initializeEP12ErrorHandler); -+extern char _ZN15LookupIPRouteMP4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN15LookupIPRouteMP4pushEiP6Packet); -+extern char _ZN15LookupIPRouteMP9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN15LookupIPRouteMP9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN15LookupIPRouteMPC1Ev[]; -+EXPORT_SYMBOL(_ZN15LookupIPRouteMPC1Ev); -+extern char _ZN15LookupIPRouteMPC2Ev[]; -+EXPORT_SYMBOL(_ZN15LookupIPRouteMPC2Ev); -+extern char _ZN15LookupIPRouteMPD0Ev[]; -+EXPORT_SYMBOL(_ZN15LookupIPRouteMPD0Ev); -+extern char _ZN15LookupIPRouteMPD1Ev[]; -+EXPORT_SYMBOL(_ZN15LookupIPRouteMPD1Ev); -+extern char _ZN15LookupIPRouteMPD2Ev[]; -+EXPORT_SYMBOL(_ZN15LookupIPRouteMPD2Ev); -+extern char _ZNK15LookupIPRouteMP10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK15LookupIPRouteMP10class_nameEv); -+extern char _ZNK15LookupIPRouteMP10port_countEv[]; -+EXPORT_SYMBOL(_ZNK15LookupIPRouteMP10port_countEv); -+extern char _ZNK15LookupIPRouteMP10processingEv[]; -+EXPORT_SYMBOL(_ZNK15LookupIPRouteMP10processingEv); -+extern char _ZTV15LookupIPRouteMP[]; -+EXPORT_SYMBOL(_ZTV15LookupIPRouteMP); -+extern char _ZN8MarkIPCE10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8MarkIPCE10initializeEP12ErrorHandler); -+extern char _ZN8MarkIPCE12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN8MarkIPCE12add_handlersEv); -+extern char _ZN8MarkIPCE12read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN8MarkIPCE12read_handlerEP7ElementPv); -+extern char _ZN8MarkIPCE4pullEi[]; -+EXPORT_SYMBOL(_ZN8MarkIPCE4pullEi); -+extern char _ZN8MarkIPCE4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN8MarkIPCE4pushEiP6Packet); -+extern char _ZN8MarkIPCEC1Ev[]; -+EXPORT_SYMBOL(_ZN8MarkIPCEC1Ev); -+extern char _ZN8MarkIPCEC2Ev[]; -+EXPORT_SYMBOL(_ZN8MarkIPCEC2Ev); -+extern char _ZN8MarkIPCED0Ev[]; -+EXPORT_SYMBOL(_ZN8MarkIPCED0Ev); -+extern char _ZN8MarkIPCED1Ev[]; -+EXPORT_SYMBOL(_ZN8MarkIPCED1Ev); -+extern char _ZN8MarkIPCED2Ev[]; -+EXPORT_SYMBOL(_ZN8MarkIPCED2Ev); -+extern char _ZNK8MarkIPCE10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK8MarkIPCE10class_nameEv); -+extern char _ZNK8MarkIPCE10port_countEv[]; -+EXPORT_SYMBOL(_ZNK8MarkIPCE10port_countEv); -+extern char _ZNK8MarkIPCE10processingEv[]; -+EXPORT_SYMBOL(_ZNK8MarkIPCE10processingEv); -+extern char _ZTV8MarkIPCE[]; -+EXPORT_SYMBOL(_ZTV8MarkIPCE); -+extern char _ZN12MarkIPHeader13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN12MarkIPHeader13simple_actionEP6Packet); -+extern char _ZN12MarkIPHeader9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12MarkIPHeader9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12MarkIPHeaderC1Ev[]; -+EXPORT_SYMBOL(_ZN12MarkIPHeaderC1Ev); -+extern char _ZN12MarkIPHeaderC2Ev[]; -+EXPORT_SYMBOL(_ZN12MarkIPHeaderC2Ev); -+extern char _ZN12MarkIPHeaderD0Ev[]; -+EXPORT_SYMBOL(_ZN12MarkIPHeaderD0Ev); -+extern char _ZN12MarkIPHeaderD1Ev[]; -+EXPORT_SYMBOL(_ZN12MarkIPHeaderD1Ev); -+extern char _ZN12MarkIPHeaderD2Ev[]; -+EXPORT_SYMBOL(_ZN12MarkIPHeaderD2Ev); -+extern char _ZNK12MarkIPHeader10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12MarkIPHeader10class_nameEv); -+extern char _ZNK12MarkIPHeader10port_countEv[]; -+EXPORT_SYMBOL(_ZNK12MarkIPHeader10port_countEv); -+extern char _ZTV12MarkIPHeader[]; -+EXPORT_SYMBOL(_ZTV12MarkIPHeader); -+extern char _ZN6Master10run_routerEP6Routerb[]; -+EXPORT_SYMBOL(_ZN6Master10run_routerEP6Routerb); -+extern char _ZN6Master10run_timersEv[]; -+EXPORT_SYMBOL(_ZN6Master10run_timersEv); -+extern char _ZN6Master11kill_routerEP6Router[]; -+EXPORT_SYMBOL(_ZN6Master11kill_routerEP6Router); -+extern char _ZN6Master12check_driverEv[]; -+EXPORT_SYMBOL(_ZN6Master12check_driverEv); -+extern char _ZN6Master14prepare_routerEP6Router[]; -+EXPORT_SYMBOL(_ZN6Master14prepare_routerEP6Router); -+extern char _ZN6Master15process_pendingEP12RouterThread[]; -+EXPORT_SYMBOL(_ZN6Master15process_pendingEP12RouterThread); -+extern char _ZN6Master15register_routerEP6Router[]; -+EXPORT_SYMBOL(_ZN6Master15register_routerEP6Router); -+extern char _ZN6Master17unregister_routerEP6Router[]; -+EXPORT_SYMBOL(_ZN6Master17unregister_routerEP6Router); -+extern char _ZN6Master20timer_reheapify_fromEiP5Timerb[]; -+EXPORT_SYMBOL(_ZN6Master20timer_reheapify_fromEiP5Timerb); -+extern char _ZN6Master3useEv[]; -+EXPORT_SYMBOL(_ZN6Master3useEv); -+extern char _ZN6Master5pauseEv[]; -+EXPORT_SYMBOL(_ZN6Master5pauseEv); -+extern char _ZN6Master5unuseEv[]; -+EXPORT_SYMBOL(_ZN6Master5unuseEv); -+extern char _ZN6MasterC1Ei[]; -+EXPORT_SYMBOL(_ZN6MasterC1Ei); -+extern char _ZN6MasterC2Ei[]; -+EXPORT_SYMBOL(_ZN6MasterC2Ei); -+extern char _ZN6MasterD1Ev[]; -+EXPORT_SYMBOL(_ZN6MasterD1Ev); -+extern char _ZN6MasterD2Ev[]; -+EXPORT_SYMBOL(_ZN6MasterD2Ev); -+extern char _ZN14MessageElement9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14MessageElement9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN14MessageElementC1Ev[]; -+EXPORT_SYMBOL(_ZN14MessageElementC1Ev); -+extern char _ZN14MessageElementC2Ev[]; -+EXPORT_SYMBOL(_ZN14MessageElementC2Ev); -+extern char _ZN14MessageElementD0Ev[]; -+EXPORT_SYMBOL(_ZN14MessageElementD0Ev); -+extern char _ZN14MessageElementD1Ev[]; -+EXPORT_SYMBOL(_ZN14MessageElementD1Ev); -+extern char _ZN14MessageElementD2Ev[]; -+EXPORT_SYMBOL(_ZN14MessageElementD2Ev); -+extern char _ZNK14MessageElement10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK14MessageElement10class_nameEv); -+extern char _ZTV14MessageElement[]; -+EXPORT_SYMBOL(_ZTV14MessageElement); -+extern char _ZN5Meter4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN5Meter4pushEiP6Packet); -+extern char _ZN5MeterC1Ev[]; -+EXPORT_SYMBOL(_ZN5MeterC1Ev); -+extern char _ZN5MeterC2Ev[]; -+EXPORT_SYMBOL(_ZN5MeterC2Ev); -+extern char _ZN5MeterD0Ev[]; -+EXPORT_SYMBOL(_ZN5MeterD0Ev); -+extern char _ZN5MeterD1Ev[]; -+EXPORT_SYMBOL(_ZN5MeterD1Ev); -+extern char _ZN5MeterD2Ev[]; -+EXPORT_SYMBOL(_ZN5MeterD2Ev); -+extern char _ZNK5Meter10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK5Meter10class_nameEv); -+extern char _ZTV5Meter[]; -+EXPORT_SYMBOL(_ZTV5Meter); -+extern char _ZN10MixedQueue4castEPKc[]; -+EXPORT_SYMBOL(_ZN10MixedQueue4castEPKc); -+extern char _ZN10MixedQueue4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN10MixedQueue4pushEiP6Packet); -+extern char _ZN10MixedQueueC1Ev[]; -+EXPORT_SYMBOL(_ZN10MixedQueueC1Ev); -+extern char _ZN10MixedQueueC2Ev[]; -+EXPORT_SYMBOL(_ZN10MixedQueueC2Ev); -+extern char _ZN10MixedQueueD0Ev[]; -+EXPORT_SYMBOL(_ZN10MixedQueueD0Ev); -+extern char _ZN10MixedQueueD1Ev[]; -+EXPORT_SYMBOL(_ZN10MixedQueueD1Ev); -+extern char _ZN10MixedQueueD2Ev[]; -+EXPORT_SYMBOL(_ZN10MixedQueueD2Ev); -+extern char _ZNK10MixedQueue10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK10MixedQueue10class_nameEv); -+extern char _ZNK10MixedQueue10port_countEv[]; -+EXPORT_SYMBOL(_ZNK10MixedQueue10port_countEv); -+extern char _ZTV10MixedQueue[]; -+EXPORT_SYMBOL(_ZTV10MixedQueue); -+extern char _Z21click_clear_error_logv[]; -+EXPORT_SYMBOL(_Z21click_clear_error_logv); -+extern char _ZN18KernelErrorHandler11handle_textEN12ErrorHandler11SeriousnessERK6String[]; -+EXPORT_SYMBOL(_ZN18KernelErrorHandler11handle_textEN12ErrorHandler11SeriousnessERK6String); -+extern char _ZN18KernelErrorHandler8log_lineEPKcS1_[]; -+EXPORT_SYMBOL(_ZN18KernelErrorHandler8log_lineEPKcS1_); -+extern char _ZN18KernelErrorHandlerD0Ev[]; -+EXPORT_SYMBOL(_ZN18KernelErrorHandlerD0Ev); -+extern char _ZN18KernelErrorHandlerD1Ev[]; -+EXPORT_SYMBOL(_ZN18KernelErrorHandlerD1Ev); -+extern char _ZTV18KernelErrorHandler[]; -+EXPORT_SYMBOL(_ZTV18KernelErrorHandler); -+EXPORT_SYMBOL(click_assert_failed); -+extern char click_fsmode[]; -+EXPORT_SYMBOL(click_fsmode); -+extern char click_logged_errh[]; -+EXPORT_SYMBOL(click_logged_errh); -+extern char click_master[]; -+EXPORT_SYMBOL(click_master); -+extern char click_router[]; -+EXPORT_SYMBOL(click_router); -+extern char _ZN7MSQueue10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7MSQueue10initializeEP12ErrorHandler); -+extern char _ZN7MSQueue12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN7MSQueue12add_handlersEv); -+extern char _ZN7MSQueue12read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN7MSQueue12read_handlerEP7ElementPv); -+extern char _ZN7MSQueue4castEPKc[]; -+EXPORT_SYMBOL(_ZN7MSQueue4castEPKc); -+extern char _ZN7MSQueue4pullEi[]; -+EXPORT_SYMBOL(_ZN7MSQueue4pullEi); -+extern char _ZN7MSQueue4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN7MSQueue4pushEiP6Packet); -+extern char _ZN7MSQueue7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN7MSQueue7cleanupEN7Element12CleanupStageE); -+extern char _ZN7MSQueue9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7MSQueue9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN7MSQueueC1Ev[]; -+EXPORT_SYMBOL(_ZN7MSQueueC1Ev); -+extern char _ZN7MSQueueC2Ev[]; -+EXPORT_SYMBOL(_ZN7MSQueueC2Ev); -+extern char _ZN7MSQueueD0Ev[]; -+EXPORT_SYMBOL(_ZN7MSQueueD0Ev); -+extern char _ZN7MSQueueD1Ev[]; -+EXPORT_SYMBOL(_ZN7MSQueueD1Ev); -+extern char _ZN7MSQueueD2Ev[]; -+EXPORT_SYMBOL(_ZN7MSQueueD2Ev); -+extern char _ZNK7MSQueue10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK7MSQueue10class_nameEv); -+extern char _ZNK7MSQueue10port_countEv[]; -+EXPORT_SYMBOL(_ZNK7MSQueue10port_countEv); -+extern char _ZNK7MSQueue10processingEv[]; -+EXPORT_SYMBOL(_ZNK7MSQueue10processingEv); -+extern char _ZTV7MSQueue[]; -+EXPORT_SYMBOL(_ZTV7MSQueue); -+extern char _ZN12StaticNameDB5queryERK6StringPvi[]; -+EXPORT_SYMBOL(_ZN12StaticNameDB5queryERK6StringPvi); -+extern char _ZN12StaticNameDB7revfindEPKvi[]; -+EXPORT_SYMBOL(_ZN12StaticNameDB7revfindEPKvi); -+extern char _ZN12StaticNameDBD0Ev[]; -+EXPORT_SYMBOL(_ZN12StaticNameDBD0Ev); -+extern char _ZN12StaticNameDBD1Ev[]; -+EXPORT_SYMBOL(_ZN12StaticNameDBD1Ev); -+extern char _ZN13DynamicNameDB4findERK6Stringb[]; -+EXPORT_SYMBOL(_ZN13DynamicNameDB4findERK6Stringb); -+extern char _ZN13DynamicNameDB4sortEv[]; -+EXPORT_SYMBOL(_ZN13DynamicNameDB4sortEv); -+extern char _ZN13DynamicNameDB5queryERK6StringPvi[]; -+EXPORT_SYMBOL(_ZN13DynamicNameDB5queryERK6StringPvi); -+extern char _ZN13DynamicNameDB6defineERK6StringPKvi[]; -+EXPORT_SYMBOL(_ZN13DynamicNameDB6defineERK6StringPKvi); -+extern char _ZN13DynamicNameDB7revfindEPKvi[]; -+EXPORT_SYMBOL(_ZN13DynamicNameDB7revfindEPKvi); -+extern char _ZN13DynamicNameDBD0Ev[]; -+EXPORT_SYMBOL(_ZN13DynamicNameDBD0Ev); -+extern char _ZN13DynamicNameDBD1Ev[]; -+EXPORT_SYMBOL(_ZN13DynamicNameDBD1Ev); -+extern char _ZN6NameDB6defineERK6StringPKvi[]; -+EXPORT_SYMBOL(_ZN6NameDB6defineERK6StringPKvi); -+extern char _ZN6NameDB7revfindEPKvi[]; -+EXPORT_SYMBOL(_ZN6NameDB7revfindEPKvi); -+extern char _ZN6NameDBD0Ev[]; -+EXPORT_SYMBOL(_ZN6NameDBD0Ev); -+extern char _ZN6NameDBD1Ev[]; -+EXPORT_SYMBOL(_ZN6NameDBD1Ev); -+extern char _ZN8NameInfo14static_cleanupEv[]; -+EXPORT_SYMBOL(_ZN8NameInfo14static_cleanupEv); -+extern char _ZN8NameInfo17static_initializeEv[]; -+EXPORT_SYMBOL(_ZN8NameInfo17static_initializeEv); -+extern char _ZN8NameInfo5getdbEjPK7Elementib[]; -+EXPORT_SYMBOL(_ZN8NameInfo5getdbEjPK7Elementib); -+extern char _ZN8NameInfo5queryEjPK7ElementRK6StringPvi[]; -+EXPORT_SYMBOL(_ZN8NameInfo5queryEjPK7ElementRK6StringPvi); -+extern char _ZN8NameInfo6namedbEjiRK6StringP6NameDB[]; -+EXPORT_SYMBOL(_ZN8NameInfo6namedbEjiRK6StringP6NameDB); -+extern char _ZN8NameInfo8removedbEP6NameDB[]; -+EXPORT_SYMBOL(_ZN8NameInfo8removedbEP6NameDB); -+extern char _ZN8NameInfo8revqueryEjPK7ElementPKvi[]; -+EXPORT_SYMBOL(_ZN8NameInfo8revqueryEjPK7ElementPKvi); -+extern char _ZN8NameInfo9installdbEP6NameDBPK7Element[]; -+EXPORT_SYMBOL(_ZN8NameInfo9installdbEP6NameDBPK7Element); -+extern char _ZN8NameInfo9query_intEjPK7ElementRK6StringPi[]; -+EXPORT_SYMBOL(_ZN8NameInfo9query_intEjPK7ElementRK6StringPi); -+extern char _ZN8NameInfo9query_intEjPK7ElementRK6StringPj[]; -+EXPORT_SYMBOL(_ZN8NameInfo9query_intEjPK7ElementRK6StringPj); -+extern char _ZN8NameInfoC1Ev[]; -+EXPORT_SYMBOL(_ZN8NameInfoC1Ev); -+extern char _ZN8NameInfoC2Ev[]; -+EXPORT_SYMBOL(_ZN8NameInfoC2Ev); -+extern char _ZN8NameInfoD1Ev[]; -+EXPORT_SYMBOL(_ZN8NameInfoD1Ev); -+extern char _ZN8NameInfoD2Ev[]; -+EXPORT_SYMBOL(_ZN8NameInfoD2Ev); -+extern char _ZTV12StaticNameDB[]; -+EXPORT_SYMBOL(_ZTV12StaticNameDB); -+extern char _ZTV13DynamicNameDB[]; -+EXPORT_SYMBOL(_ZTV13DynamicNameDB); -+extern char _ZTV6NameDB[]; -+EXPORT_SYMBOL(_ZTV6NameDB); -+extern char _ZN14ActiveNotifier12add_listenerEP4Task[]; -+EXPORT_SYMBOL(_ZN14ActiveNotifier12add_listenerEP4Task); -+extern char _ZN14ActiveNotifier15listener_changeEPvib[]; -+EXPORT_SYMBOL(_ZN14ActiveNotifier15listener_changeEPvib); -+extern char _ZN14ActiveNotifier15remove_listenerEP4Task[]; -+EXPORT_SYMBOL(_ZN14ActiveNotifier15remove_listenerEP4Task); -+extern char _ZN14ActiveNotifier20add_dependent_signalEP14NotifierSignal[]; -+EXPORT_SYMBOL(_ZN14ActiveNotifier20add_dependent_signalEP14NotifierSignal); -+extern char _ZN14ActiveNotifierC1EN8Notifier8SearchOpE[]; -+EXPORT_SYMBOL(_ZN14ActiveNotifierC1EN8Notifier8SearchOpE); -+extern char _ZN14ActiveNotifierC2EN8Notifier8SearchOpE[]; -+EXPORT_SYMBOL(_ZN14ActiveNotifierC2EN8Notifier8SearchOpE); -+extern char _ZN14ActiveNotifierD0Ev[]; -+EXPORT_SYMBOL(_ZN14ActiveNotifierD0Ev); -+extern char _ZN14ActiveNotifierD1Ev[]; -+EXPORT_SYMBOL(_ZN14ActiveNotifierD1Ev); -+extern char _ZN14ActiveNotifierD2Ev[]; -+EXPORT_SYMBOL(_ZN14ActiveNotifierD2Ev); -+extern char _ZN14NotifierSignal12static_valueE[]; -+EXPORT_SYMBOL(_ZN14NotifierSignal12static_valueE); -+extern char _ZN14NotifierSignal17static_initializeEv[]; -+EXPORT_SYMBOL(_ZN14NotifierSignal17static_initializeEv); -+extern char _ZN14NotifierSignalpLERKS_[]; -+EXPORT_SYMBOL(_ZN14NotifierSignalpLERKS_); -+extern char _ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilter11check_matchEP7ElementiN13ElementFilter8PortTypeE[]; -+EXPORT_SYMBOL(_ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilter11check_matchEP7ElementiN13ElementFilter8PortTypeE); -+extern char _ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterC1EPKc[]; -+EXPORT_SYMBOL(_ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterC1EPKc); -+extern char _ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterC2EPKc[]; -+EXPORT_SYMBOL(_ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterC2EPKc); -+extern char _ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterD0Ev[]; -+EXPORT_SYMBOL(_ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterD0Ev); -+extern char _ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterD1Ev[]; -+EXPORT_SYMBOL(_ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterD1Ev); -+extern char _ZN8Notifier10initializeEP6Router[]; -+EXPORT_SYMBOL(_ZN8Notifier10initializeEP6Router); -+extern char _ZN8Notifier12add_listenerEP4Task[]; -+EXPORT_SYMBOL(_ZN8Notifier12add_listenerEP4Task); -+extern char _ZN8Notifier13FULL_NOTIFIERE[]; -+EXPORT_SYMBOL(_ZN8Notifier13FULL_NOTIFIERE); -+extern char _ZN8Notifier14EMPTY_NOTIFIERE[]; -+EXPORT_SYMBOL(_ZN8Notifier14EMPTY_NOTIFIERE); -+extern char _ZN8Notifier15remove_listenerEP4Task[]; -+EXPORT_SYMBOL(_ZN8Notifier15remove_listenerEP4Task); -+extern char _ZN8Notifier20add_dependent_signalEP14NotifierSignal[]; -+EXPORT_SYMBOL(_ZN8Notifier20add_dependent_signalEP14NotifierSignal); -+extern char _ZN8Notifier21upstream_empty_signalEP7ElementiP4TaskPS_[]; -+EXPORT_SYMBOL(_ZN8Notifier21upstream_empty_signalEP7ElementiP4TaskPS_); -+extern char _ZN8Notifier22downstream_full_signalEP7ElementiP4TaskPS_[]; -+EXPORT_SYMBOL(_ZN8Notifier22downstream_full_signalEP7ElementiP4TaskPS_); -+extern char _ZN8NotifierD0Ev[]; -+EXPORT_SYMBOL(_ZN8NotifierD0Ev); -+extern char _ZN8NotifierD1Ev[]; -+EXPORT_SYMBOL(_ZN8NotifierD1Ev); -+extern char _ZN8NotifierD2Ev[]; -+EXPORT_SYMBOL(_ZN8NotifierD2Ev); -+extern char _ZNK14ActiveNotifier9listenersER6VectorIP4TaskE[]; -+EXPORT_SYMBOL(_ZNK14ActiveNotifier9listenersER6VectorIP4TaskE); -+extern char _ZNK14NotifierSignal7unparseEv[]; -+EXPORT_SYMBOL(_ZNK14NotifierSignal7unparseEv); -+extern char _ZTV14ActiveNotifier[]; -+EXPORT_SYMBOL(_ZTV14ActiveNotifier); -+extern char _ZTV8Notifier[]; -+EXPORT_SYMBOL(_ZTV8Notifier); -+extern char _ZTVN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterE[]; -+EXPORT_SYMBOL(_ZTVN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterE); -+extern char _ZN13NotifierQueue4castEPKc[]; -+EXPORT_SYMBOL(_ZN13NotifierQueue4castEPKc); -+extern char _ZN13NotifierQueue4pullEi[]; -+EXPORT_SYMBOL(_ZN13NotifierQueue4pullEi); -+extern char _ZN13NotifierQueue4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN13NotifierQueue4pushEiP6Packet); -+extern char _ZN13NotifierQueue9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13NotifierQueue9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN13NotifierQueueC1Ev[]; -+EXPORT_SYMBOL(_ZN13NotifierQueueC1Ev); -+extern char _ZN13NotifierQueueC2Ev[]; -+EXPORT_SYMBOL(_ZN13NotifierQueueC2Ev); -+extern char _ZN13NotifierQueueD0Ev[]; -+EXPORT_SYMBOL(_ZN13NotifierQueueD0Ev); -+extern char _ZN13NotifierQueueD1Ev[]; -+EXPORT_SYMBOL(_ZN13NotifierQueueD1Ev); -+extern char _ZN13NotifierQueueD2Ev[]; -+EXPORT_SYMBOL(_ZN13NotifierQueueD2Ev); -+extern char _ZNK13NotifierQueue10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK13NotifierQueue10class_nameEv); -+extern char _ZTV13NotifierQueue[]; -+EXPORT_SYMBOL(_ZTV13NotifierQueue); -+extern char _ZN11NullElement13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN11NullElement13simple_actionEP6Packet); -+extern char _ZN11NullElementC1Ev[]; -+EXPORT_SYMBOL(_ZN11NullElementC1Ev); -+extern char _ZN11NullElementC2Ev[]; -+EXPORT_SYMBOL(_ZN11NullElementC2Ev); -+extern char _ZN11NullElementD0Ev[]; -+EXPORT_SYMBOL(_ZN11NullElementD0Ev); -+extern char _ZN11NullElementD1Ev[]; -+EXPORT_SYMBOL(_ZN11NullElementD1Ev); -+extern char _ZN11NullElementD2Ev[]; -+EXPORT_SYMBOL(_ZN11NullElementD2Ev); -+extern char _ZN15PullNullElement4pullEi[]; -+EXPORT_SYMBOL(_ZN15PullNullElement4pullEi); -+extern char _ZN15PullNullElementC1Ev[]; -+EXPORT_SYMBOL(_ZN15PullNullElementC1Ev); -+extern char _ZN15PullNullElementC2Ev[]; -+EXPORT_SYMBOL(_ZN15PullNullElementC2Ev); -+extern char _ZN15PullNullElementD0Ev[]; -+EXPORT_SYMBOL(_ZN15PullNullElementD0Ev); -+extern char _ZN15PullNullElementD1Ev[]; -+EXPORT_SYMBOL(_ZN15PullNullElementD1Ev); -+extern char _ZN15PullNullElementD2Ev[]; -+EXPORT_SYMBOL(_ZN15PullNullElementD2Ev); -+extern char _ZN15PushNullElement4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN15PushNullElement4pushEiP6Packet); -+extern char _ZN15PushNullElementC1Ev[]; -+EXPORT_SYMBOL(_ZN15PushNullElementC1Ev); -+extern char _ZN15PushNullElementC2Ev[]; -+EXPORT_SYMBOL(_ZN15PushNullElementC2Ev); -+extern char _ZN15PushNullElementD0Ev[]; -+EXPORT_SYMBOL(_ZN15PushNullElementD0Ev); -+extern char _ZN15PushNullElementD1Ev[]; -+EXPORT_SYMBOL(_ZN15PushNullElementD1Ev); -+extern char _ZN15PushNullElementD2Ev[]; -+EXPORT_SYMBOL(_ZN15PushNullElementD2Ev); -+extern char _ZNK11NullElement10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK11NullElement10class_nameEv); -+extern char _ZNK11NullElement10port_countEv[]; -+EXPORT_SYMBOL(_ZNK11NullElement10port_countEv); -+extern char _ZNK11NullElement10processingEv[]; -+EXPORT_SYMBOL(_ZNK11NullElement10processingEv); -+extern char _ZNK15PullNullElement10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK15PullNullElement10class_nameEv); -+extern char _ZNK15PullNullElement10port_countEv[]; -+EXPORT_SYMBOL(_ZNK15PullNullElement10port_countEv); -+extern char _ZNK15PullNullElement10processingEv[]; -+EXPORT_SYMBOL(_ZNK15PullNullElement10processingEv); -+extern char _ZNK15PushNullElement10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK15PushNullElement10class_nameEv); -+extern char _ZNK15PushNullElement10port_countEv[]; -+EXPORT_SYMBOL(_ZNK15PushNullElement10port_countEv); -+extern char _ZNK15PushNullElement10processingEv[]; -+EXPORT_SYMBOL(_ZNK15PushNullElement10processingEv); -+extern char _ZTV11NullElement[]; -+EXPORT_SYMBOL(_ZTV11NullElement); -+extern char _ZTV15PullNullElement[]; -+EXPORT_SYMBOL(_ZTV15PullNullElement); -+extern char _ZTV15PushNullElement[]; -+EXPORT_SYMBOL(_ZTV15PushNullElement); -+extern char _ZN6Packet10shift_dataEib[]; -+EXPORT_SYMBOL(_ZN6Packet10shift_dataEib); -+extern char _ZN6Packet13expensive_putEj[]; -+EXPORT_SYMBOL(_ZN6Packet13expensive_putEj); -+extern char _ZN6Packet14expensive_pushEj[]; -+EXPORT_SYMBOL(_ZN6Packet14expensive_pushEj); -+extern char _ZN6Packet19expensive_uniqueifyEiib[]; -+EXPORT_SYMBOL(_ZN6Packet19expensive_uniqueifyEiib); -+extern char _ZN6Packet4makeEjPKhjj[]; -+EXPORT_SYMBOL(_ZN6Packet4makeEjPKhjj); -+extern char _ZN6Packet5cloneEv[]; -+EXPORT_SYMBOL(_ZN6Packet5cloneEv); -+extern char _ZN6PacketC1Ev[]; -+EXPORT_SYMBOL(_ZN6PacketC1Ev); -+extern char _ZN6PacketC2Ev[]; -+EXPORT_SYMBOL(_ZN6PacketC2Ev); -+extern char _ZN6PacketD1Ev[]; -+EXPORT_SYMBOL(_ZN6PacketD1Ev); -+extern char _ZN6PacketD2Ev[]; -+EXPORT_SYMBOL(_ZN6PacketD2Ev); -+extern char _ZN5Paint12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN5Paint12add_handlersEv); -+extern char _ZN5Paint13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN5Paint13simple_actionEP6Packet); -+extern char _ZN5Paint18color_read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN5Paint18color_read_handlerEP7ElementPv); -+extern char _ZN5Paint9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN5Paint9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN5PaintC1Ev[]; -+EXPORT_SYMBOL(_ZN5PaintC1Ev); -+extern char _ZN5PaintC2Ev[]; -+EXPORT_SYMBOL(_ZN5PaintC2Ev); -+extern char _ZN5PaintD0Ev[]; -+EXPORT_SYMBOL(_ZN5PaintD0Ev); -+extern char _ZN5PaintD1Ev[]; -+EXPORT_SYMBOL(_ZN5PaintD1Ev); -+extern char _ZN5PaintD2Ev[]; -+EXPORT_SYMBOL(_ZN5PaintD2Ev); -+extern char _ZNK5Paint10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK5Paint10class_nameEv); -+extern char _ZNK5Paint10port_countEv[]; -+EXPORT_SYMBOL(_ZNK5Paint10port_countEv); -+extern char _ZNK5Paint10processingEv[]; -+EXPORT_SYMBOL(_ZNK5Paint10processingEv); -+extern char _ZNK5Paint20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK5Paint20can_live_reconfigureEv); -+extern char _ZTV5Paint[]; -+EXPORT_SYMBOL(_ZTV5Paint); -+extern char _ZN11PaintSwitch4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN11PaintSwitch4pushEiP6Packet); -+extern char _ZN11PaintSwitch9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11PaintSwitch9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN11PaintSwitchC1Ev[]; -+EXPORT_SYMBOL(_ZN11PaintSwitchC1Ev); -+extern char _ZN11PaintSwitchC2Ev[]; -+EXPORT_SYMBOL(_ZN11PaintSwitchC2Ev); -+extern char _ZN11PaintSwitchD0Ev[]; -+EXPORT_SYMBOL(_ZN11PaintSwitchD0Ev); -+extern char _ZN11PaintSwitchD1Ev[]; -+EXPORT_SYMBOL(_ZN11PaintSwitchD1Ev); -+extern char _ZN11PaintSwitchD2Ev[]; -+EXPORT_SYMBOL(_ZN11PaintSwitchD2Ev); -+extern char _ZNK11PaintSwitch10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK11PaintSwitch10class_nameEv); -+extern char _ZNK11PaintSwitch10port_countEv[]; -+EXPORT_SYMBOL(_ZNK11PaintSwitch10port_countEv); -+extern char _ZNK11PaintSwitch10processingEv[]; -+EXPORT_SYMBOL(_ZNK11PaintSwitch10processingEv); -+extern char _ZNK11PaintSwitch13configurationER6VectorI6StringE[]; -+EXPORT_SYMBOL(_ZNK11PaintSwitch13configurationER6VectorI6StringE); -+extern char _ZNK11PaintSwitch20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK11PaintSwitch20can_live_reconfigureEv); -+extern char _ZTV11PaintSwitch[]; -+EXPORT_SYMBOL(_ZTV11PaintSwitch); -+extern char _ZN8PaintTee13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN8PaintTee13simple_actionEP6Packet); -+extern char _ZN8PaintTee9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8PaintTee9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN8PaintTeeC1Ev[]; -+EXPORT_SYMBOL(_ZN8PaintTeeC1Ev); -+extern char _ZN8PaintTeeC2Ev[]; -+EXPORT_SYMBOL(_ZN8PaintTeeC2Ev); -+extern char _ZN8PaintTeeD0Ev[]; -+EXPORT_SYMBOL(_ZN8PaintTeeD0Ev); -+extern char _ZN8PaintTeeD1Ev[]; -+EXPORT_SYMBOL(_ZN8PaintTeeD1Ev); -+extern char _ZN8PaintTeeD2Ev[]; -+EXPORT_SYMBOL(_ZN8PaintTeeD2Ev); -+extern char _ZNK8PaintTee10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK8PaintTee10class_nameEv); -+extern char _ZNK8PaintTee10port_countEv[]; -+EXPORT_SYMBOL(_ZNK8PaintTee10port_countEv); -+extern char _ZNK8PaintTee10processingEv[]; -+EXPORT_SYMBOL(_ZNK8PaintTee10processingEv); -+extern char _ZTV8PaintTee[]; -+EXPORT_SYMBOL(_ZTV8PaintTee); -+extern char _ZN14PerfCountAccum10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14PerfCountAccum10initializeEP12ErrorHandler); -+extern char _ZN14PerfCountAccum12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN14PerfCountAccum12add_handlersEv); -+extern char _ZN14PerfCountAccum12read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN14PerfCountAccum12read_handlerEP7ElementPv); -+extern char _ZN14PerfCountAccum13reset_handlerERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14PerfCountAccum13reset_handlerERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN14PerfCountAccum4castEPKc[]; -+EXPORT_SYMBOL(_ZN14PerfCountAccum4castEPKc); -+extern char _ZN14PerfCountAccum4pullEi[]; -+EXPORT_SYMBOL(_ZN14PerfCountAccum4pullEi); -+extern char _ZN14PerfCountAccum4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN14PerfCountAccum4pushEiP6Packet); -+extern char _ZN14PerfCountAccum9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14PerfCountAccum9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN14PerfCountAccumC1Ev[]; -+EXPORT_SYMBOL(_ZN14PerfCountAccumC1Ev); -+extern char _ZN14PerfCountAccumC2Ev[]; -+EXPORT_SYMBOL(_ZN14PerfCountAccumC2Ev); -+extern char _ZN14PerfCountAccumD0Ev[]; -+EXPORT_SYMBOL(_ZN14PerfCountAccumD0Ev); -+extern char _ZN14PerfCountAccumD1Ev[]; -+EXPORT_SYMBOL(_ZN14PerfCountAccumD1Ev); -+extern char _ZN14PerfCountAccumD2Ev[]; -+EXPORT_SYMBOL(_ZN14PerfCountAccumD2Ev); -+extern char _ZNK14PerfCountAccum10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK14PerfCountAccum10class_nameEv); -+extern char _ZNK14PerfCountAccum10port_countEv[]; -+EXPORT_SYMBOL(_ZNK14PerfCountAccum10port_countEv); -+extern char _ZNK14PerfCountAccum10processingEv[]; -+EXPORT_SYMBOL(_ZNK14PerfCountAccum10processingEv); -+extern char _ZTV14PerfCountAccum[]; -+EXPORT_SYMBOL(_ZTV14PerfCountAccum); -+extern char _ZN13PerfCountInfo4castEPKc[]; -+EXPORT_SYMBOL(_ZN13PerfCountInfo4castEPKc); -+extern char _ZN13PerfCountInfo9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13PerfCountInfo9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN13PerfCountInfoC1Ev[]; -+EXPORT_SYMBOL(_ZN13PerfCountInfoC1Ev); -+extern char _ZN13PerfCountInfoC2Ev[]; -+EXPORT_SYMBOL(_ZN13PerfCountInfoC2Ev); -+extern char _ZN13PerfCountInfoD0Ev[]; -+EXPORT_SYMBOL(_ZN13PerfCountInfoD0Ev); -+extern char _ZN13PerfCountInfoD1Ev[]; -+EXPORT_SYMBOL(_ZN13PerfCountInfoD1Ev); -+extern char _ZN13PerfCountInfoD2Ev[]; -+EXPORT_SYMBOL(_ZN13PerfCountInfoD2Ev); -+extern char _ZNK13PerfCountInfo10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK13PerfCountInfo10class_nameEv); -+extern char _ZNK13PerfCountInfo15configure_phaseEv[]; -+EXPORT_SYMBOL(_ZNK13PerfCountInfo15configure_phaseEv); -+extern char _ZTV13PerfCountInfo[]; -+EXPORT_SYMBOL(_ZTV13PerfCountInfo); -+extern char _ZN13PerfCountUser10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13PerfCountUser10initializeEP12ErrorHandler); -+extern char _ZN13PerfCountUser7prepareERK6StringP12ErrorHandleri[]; -+EXPORT_SYMBOL(_ZN13PerfCountUser7prepareERK6StringP12ErrorHandleri); -+extern char _ZN13PerfCountUserC1Ev[]; -+EXPORT_SYMBOL(_ZN13PerfCountUserC1Ev); -+extern char _ZN13PerfCountUserC2Ev[]; -+EXPORT_SYMBOL(_ZN13PerfCountUserC2Ev); -+extern char _ZN13PerfCountUserD0Ev[]; -+EXPORT_SYMBOL(_ZN13PerfCountUserD0Ev); -+extern char _ZN13PerfCountUserD1Ev[]; -+EXPORT_SYMBOL(_ZN13PerfCountUserD1Ev); -+extern char _ZN13PerfCountUserD2Ev[]; -+EXPORT_SYMBOL(_ZN13PerfCountUserD2Ev); -+extern char _ZTV13PerfCountUser[]; -+EXPORT_SYMBOL(_ZTV13PerfCountUser); -+extern char _ZN12PokeHandlers10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12PokeHandlers10initializeEP12ErrorHandler); -+extern char _ZN12PokeHandlers10read_paramEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN12PokeHandlers10read_paramEP7ElementPv); -+extern char _ZN12PokeHandlers10timer_hookEP5TimerPv[]; -+EXPORT_SYMBOL(_ZN12PokeHandlers10timer_hookEP5TimerPv); -+extern char _ZN12PokeHandlers11LOOP_MARKERE[]; -+EXPORT_SYMBOL(_ZN12PokeHandlers11LOOP_MARKERE); -+extern char _ZN12PokeHandlers11STOP_MARKERE[]; -+EXPORT_SYMBOL(_ZN12PokeHandlers11STOP_MARKERE); -+extern char _ZN12PokeHandlers11write_paramERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12PokeHandlers11write_paramERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN12PokeHandlers12PAUSE_MARKERE[]; -+EXPORT_SYMBOL(_ZN12PokeHandlers12PAUSE_MARKERE); -+extern char _ZN12PokeHandlers12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN12PokeHandlers12add_handlersEv); -+extern char _ZN12PokeHandlers3addEP7ElementRK6StringS4_i[]; -+EXPORT_SYMBOL(_ZN12PokeHandlers3addEP7ElementRK6StringS4_i); -+extern char _ZN12PokeHandlers7unpauseEv[]; -+EXPORT_SYMBOL(_ZN12PokeHandlers7unpauseEv); -+extern char _ZN12PokeHandlers9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12PokeHandlers9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12PokeHandlersC1Ev[]; -+EXPORT_SYMBOL(_ZN12PokeHandlersC1Ev); -+extern char _ZN12PokeHandlersC2Ev[]; -+EXPORT_SYMBOL(_ZN12PokeHandlersC2Ev); -+extern char _ZN12PokeHandlersD0Ev[]; -+EXPORT_SYMBOL(_ZN12PokeHandlersD0Ev); -+extern char _ZN12PokeHandlersD1Ev[]; -+EXPORT_SYMBOL(_ZN12PokeHandlersD1Ev); -+extern char _ZN12PokeHandlersD2Ev[]; -+EXPORT_SYMBOL(_ZN12PokeHandlersD2Ev); -+extern char _ZNK12PokeHandlers10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12PokeHandlers10class_nameEv); -+extern char _ZNK12PokeHandlers20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK12PokeHandlers20can_live_reconfigureEv); -+extern char _ZTV12PokeHandlers[]; -+EXPORT_SYMBOL(_ZTV12PokeHandlers); -+extern char _ZN10PollDevice10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10PollDevice10initializeEP12ErrorHandler); -+extern char _ZN10PollDevice12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN10PollDevice12add_handlersEv); -+extern char _ZN10PollDevice12reset_countsEv[]; -+EXPORT_SYMBOL(_ZN10PollDevice12reset_countsEv); -+extern char _ZN10PollDevice13change_deviceEP10net_device[]; -+EXPORT_SYMBOL(_ZN10PollDevice13change_deviceEP10net_device); -+extern char _ZN10PollDevice14static_cleanupEv[]; -+EXPORT_SYMBOL(_ZN10PollDevice14static_cleanupEv); -+extern char _ZN10PollDevice17static_initializeEv[]; -+EXPORT_SYMBOL(_ZN10PollDevice17static_initializeEv); -+extern char _ZN10PollDevice7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN10PollDevice7cleanupEN7Element12CleanupStageE); -+extern char _ZN10PollDevice8run_taskEP4Task[]; -+EXPORT_SYMBOL(_ZN10PollDevice8run_taskEP4Task); -+extern char _ZN10PollDevice9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10PollDevice9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN10PollDeviceC1Ev[]; -+EXPORT_SYMBOL(_ZN10PollDeviceC1Ev); -+extern char _ZN10PollDeviceC2Ev[]; -+EXPORT_SYMBOL(_ZN10PollDeviceC2Ev); -+extern char _ZN10PollDeviceD0Ev[]; -+EXPORT_SYMBOL(_ZN10PollDeviceD0Ev); -+extern char _ZN10PollDeviceD1Ev[]; -+EXPORT_SYMBOL(_ZN10PollDeviceD1Ev); -+extern char _ZN10PollDeviceD2Ev[]; -+EXPORT_SYMBOL(_ZN10PollDeviceD2Ev); -+extern char _ZNK10PollDevice10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK10PollDevice10class_nameEv); -+extern char _ZNK10PollDevice10port_countEv[]; -+EXPORT_SYMBOL(_ZNK10PollDevice10port_countEv); -+extern char _ZNK10PollDevice10processingEv[]; -+EXPORT_SYMBOL(_ZNK10PollDevice10processingEv); -+extern char _ZNK10PollDevice15configure_phaseEv[]; -+EXPORT_SYMBOL(_ZNK10PollDevice15configure_phaseEv); -+extern char _ZTV10PollDevice[]; -+EXPORT_SYMBOL(_ZTV10PollDevice); -+extern char _ZN8PortInfo9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8PortInfo9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN8PortInfoC1Ev[]; -+EXPORT_SYMBOL(_ZN8PortInfoC1Ev); -+extern char _ZN8PortInfoC2Ev[]; -+EXPORT_SYMBOL(_ZN8PortInfoC2Ev); -+extern char _ZN8PortInfoD0Ev[]; -+EXPORT_SYMBOL(_ZN8PortInfoD0Ev); -+extern char _ZN8PortInfoD1Ev[]; -+EXPORT_SYMBOL(_ZN8PortInfoD1Ev); -+extern char _ZN8PortInfoD2Ev[]; -+EXPORT_SYMBOL(_ZN8PortInfoD2Ev); -+extern char _ZNK8PortInfo10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK8PortInfo10class_nameEv); -+extern char _ZNK8PortInfo15configure_phaseEv[]; -+EXPORT_SYMBOL(_ZNK8PortInfo15configure_phaseEv); -+extern char _ZTV8PortInfo[]; -+EXPORT_SYMBOL(_ZTV8PortInfo); -+extern char _ZN5Print13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN5Print13simple_actionEP6Packet); -+extern char _ZN5Print9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN5Print9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN5PrintC1Ev[]; -+EXPORT_SYMBOL(_ZN5PrintC1Ev); -+extern char _ZN5PrintC2Ev[]; -+EXPORT_SYMBOL(_ZN5PrintC2Ev); -+extern char _ZN5PrintD0Ev[]; -+EXPORT_SYMBOL(_ZN5PrintD0Ev); -+extern char _ZN5PrintD1Ev[]; -+EXPORT_SYMBOL(_ZN5PrintD1Ev); -+extern char _ZN5PrintD2Ev[]; -+EXPORT_SYMBOL(_ZN5PrintD2Ev); -+extern char _ZNK5Print10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK5Print10class_nameEv); -+extern char _ZNK5Print10port_countEv[]; -+EXPORT_SYMBOL(_ZNK5Print10port_countEv); -+extern char _ZNK5Print10processingEv[]; -+EXPORT_SYMBOL(_ZNK5Print10processingEv); -+extern char _ZNK5Print20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK5Print20can_live_reconfigureEv); -+extern char _ZTV5Print[]; -+EXPORT_SYMBOL(_ZTV5Print); -+extern char _ZN9PrioSched10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN9PrioSched10initializeEP12ErrorHandler); -+extern char _ZN9PrioSched4pullEi[]; -+EXPORT_SYMBOL(_ZN9PrioSched4pullEi); -+extern char _ZN9PrioSched7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN9PrioSched7cleanupEN7Element12CleanupStageE); -+extern char _ZN9PrioSchedC1Ev[]; -+EXPORT_SYMBOL(_ZN9PrioSchedC1Ev); -+extern char _ZN9PrioSchedC2Ev[]; -+EXPORT_SYMBOL(_ZN9PrioSchedC2Ev); -+extern char _ZN9PrioSchedD0Ev[]; -+EXPORT_SYMBOL(_ZN9PrioSchedD0Ev); -+extern char _ZN9PrioSchedD1Ev[]; -+EXPORT_SYMBOL(_ZN9PrioSchedD1Ev); -+extern char _ZN9PrioSchedD2Ev[]; -+EXPORT_SYMBOL(_ZN9PrioSchedD2Ev); -+extern char _ZNK9PrioSched10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK9PrioSched10class_nameEv); -+extern char _ZNK9PrioSched10port_countEv[]; -+EXPORT_SYMBOL(_ZNK9PrioSched10port_countEv); -+extern char _ZNK9PrioSched10processingEv[]; -+EXPORT_SYMBOL(_ZNK9PrioSched10processingEv); -+extern char _ZTV9PrioSched[]; -+EXPORT_SYMBOL(_ZTV9PrioSched); -+extern char _ZN10PullSwitch10read_paramEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN10PullSwitch10read_paramEP7ElementPv); -+extern char _ZN10PullSwitch11write_paramERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10PullSwitch11write_paramERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN10PullSwitch12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN10PullSwitch12add_handlersEv); -+extern char _ZN10PullSwitch4pullEi[]; -+EXPORT_SYMBOL(_ZN10PullSwitch4pullEi); -+extern char _ZN10PullSwitch5llrpcEjPv[]; -+EXPORT_SYMBOL(_ZN10PullSwitch5llrpcEjPv); -+extern char _ZN10PullSwitch9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10PullSwitch9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN10PullSwitchC1Ev[]; -+EXPORT_SYMBOL(_ZN10PullSwitchC1Ev); -+extern char _ZN10PullSwitchC2Ev[]; -+EXPORT_SYMBOL(_ZN10PullSwitchC2Ev); -+extern char _ZN10PullSwitchD0Ev[]; -+EXPORT_SYMBOL(_ZN10PullSwitchD0Ev); -+extern char _ZN10PullSwitchD1Ev[]; -+EXPORT_SYMBOL(_ZN10PullSwitchD1Ev); -+extern char _ZN10PullSwitchD2Ev[]; -+EXPORT_SYMBOL(_ZN10PullSwitchD2Ev); -+extern char _ZNK10PullSwitch10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK10PullSwitch10class_nameEv); -+extern char _ZNK10PullSwitch10port_countEv[]; -+EXPORT_SYMBOL(_ZNK10PullSwitch10port_countEv); -+extern char _ZNK10PullSwitch10processingEv[]; -+EXPORT_SYMBOL(_ZNK10PullSwitch10processingEv); -+extern char _ZNK10PullSwitch13configurationER6VectorI6StringE[]; -+EXPORT_SYMBOL(_ZNK10PullSwitch13configurationER6VectorI6StringE); -+extern char _ZNK10PullSwitch20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK10PullSwitch20can_live_reconfigureEv); -+extern char _ZTV10PullSwitch[]; -+EXPORT_SYMBOL(_ZTV10PullSwitch); -+extern char _ZN11QuitWatcher10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11QuitWatcher10initializeEP12ErrorHandler); -+extern char _ZN11QuitWatcher9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11QuitWatcher9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN11QuitWatcher9run_timerEP5Timer[]; -+EXPORT_SYMBOL(_ZN11QuitWatcher9run_timerEP5Timer); -+extern char _ZN11QuitWatcherC1Ev[]; -+EXPORT_SYMBOL(_ZN11QuitWatcherC1Ev); -+extern char _ZN11QuitWatcherC2Ev[]; -+EXPORT_SYMBOL(_ZN11QuitWatcherC2Ev); -+extern char _ZN11QuitWatcherD0Ev[]; -+EXPORT_SYMBOL(_ZN11QuitWatcherD0Ev); -+extern char _ZN11QuitWatcherD1Ev[]; -+EXPORT_SYMBOL(_ZN11QuitWatcherD1Ev); -+extern char _ZN11QuitWatcherD2Ev[]; -+EXPORT_SYMBOL(_ZN11QuitWatcherD2Ev); -+extern char _ZNK11QuitWatcher10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK11QuitWatcher10class_nameEv); -+extern char _ZTV11QuitWatcher[]; -+EXPORT_SYMBOL(_ZTV11QuitWatcher); -+extern char _ZN13RadixIPLookup11dump_routesEv[]; -+EXPORT_SYMBOL(_ZN13RadixIPLookup11dump_routesEv); -+extern char _ZN13RadixIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13RadixIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler); -+extern char _ZN13RadixIPLookup5Radix10free_radixEPS0_[]; -+EXPORT_SYMBOL(_ZN13RadixIPLookup5Radix10free_radixEPS0_); -+extern char _ZN13RadixIPLookup5Radix10make_radixEii[]; -+EXPORT_SYMBOL(_ZN13RadixIPLookup5Radix10make_radixEii); -+extern char _ZN13RadixIPLookup5Radix6changeEjjij[]; -+EXPORT_SYMBOL(_ZN13RadixIPLookup5Radix6changeEjjij); -+extern char _ZN13RadixIPLookup7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN13RadixIPLookup7cleanupEN7Element12CleanupStageE); -+extern char _ZN13RadixIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13RadixIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler); -+extern char _ZN13RadixIPLookupC1Ev[]; -+EXPORT_SYMBOL(_ZN13RadixIPLookupC1Ev); -+extern char _ZN13RadixIPLookupC2Ev[]; -+EXPORT_SYMBOL(_ZN13RadixIPLookupC2Ev); -+extern char _ZN13RadixIPLookupD0Ev[]; -+EXPORT_SYMBOL(_ZN13RadixIPLookupD0Ev); -+extern char _ZN13RadixIPLookupD1Ev[]; -+EXPORT_SYMBOL(_ZN13RadixIPLookupD1Ev); -+extern char _ZN13RadixIPLookupD2Ev[]; -+EXPORT_SYMBOL(_ZN13RadixIPLookupD2Ev); -+extern char _ZN6VectorI7IPRouteE5eraseEPS0_S2_[]; -+EXPORT_SYMBOL(_ZN6VectorI7IPRouteE5eraseEPS0_S2_); -+extern char _ZNK13RadixIPLookup10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK13RadixIPLookup10class_nameEv); -+extern char _ZNK13RadixIPLookup10port_countEv[]; -+EXPORT_SYMBOL(_ZNK13RadixIPLookup10port_countEv); -+extern char _ZNK13RadixIPLookup10processingEv[]; -+EXPORT_SYMBOL(_ZNK13RadixIPLookup10processingEv); -+extern char _ZNK13RadixIPLookup12lookup_routeE9IPAddressRS0_[]; -+EXPORT_SYMBOL(_ZNK13RadixIPLookup12lookup_routeE9IPAddressRS0_); -+extern char _ZTV13RadixIPLookup[]; -+EXPORT_SYMBOL(_ZTV13RadixIPLookup); -+extern char _ZN15RandomBitErrors12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN15RandomBitErrors12add_handlersEv); -+extern char _ZN15RandomBitErrors13set_bit_errorEj[]; -+EXPORT_SYMBOL(_ZN15RandomBitErrors13set_bit_errorEj); -+extern char _ZN15RandomBitErrors13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN15RandomBitErrors13simple_actionEP6Packet); -+extern char _ZN15RandomBitErrors9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN15RandomBitErrors9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN15RandomBitErrorsC1Ev[]; -+EXPORT_SYMBOL(_ZN15RandomBitErrorsC1Ev); -+extern char _ZN15RandomBitErrorsC2Ev[]; -+EXPORT_SYMBOL(_ZN15RandomBitErrorsC2Ev); -+extern char _ZN15RandomBitErrorsD0Ev[]; -+EXPORT_SYMBOL(_ZN15RandomBitErrorsD0Ev); -+extern char _ZN15RandomBitErrorsD1Ev[]; -+EXPORT_SYMBOL(_ZN15RandomBitErrorsD1Ev); -+extern char _ZN15RandomBitErrorsD2Ev[]; -+EXPORT_SYMBOL(_ZN15RandomBitErrorsD2Ev); -+extern char _ZNK15RandomBitErrors10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK15RandomBitErrors10class_nameEv); -+extern char _ZNK15RandomBitErrors10port_countEv[]; -+EXPORT_SYMBOL(_ZNK15RandomBitErrors10port_countEv); -+extern char _ZNK15RandomBitErrors10processingEv[]; -+EXPORT_SYMBOL(_ZNK15RandomBitErrors10processingEv); -+extern char _ZNK15RandomBitErrors20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK15RandomBitErrors20can_live_reconfigureEv); -+extern char _ZTV15RandomBitErrors[]; -+EXPORT_SYMBOL(_ZTV15RandomBitErrors); -+extern char _ZN12RandomSample10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12RandomSample10initializeEP12ErrorHandler); -+extern char _ZN12RandomSample12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN12RandomSample12add_handlersEv); -+extern char _ZN12RandomSample12read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN12RandomSample12read_handlerEP7ElementPv); -+extern char _ZN12RandomSample4pullEi[]; -+EXPORT_SYMBOL(_ZN12RandomSample4pullEi); -+extern char _ZN12RandomSample4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN12RandomSample4pushEiP6Packet); -+extern char _ZN12RandomSample9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12RandomSample9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12RandomSampleC1Ev[]; -+EXPORT_SYMBOL(_ZN12RandomSampleC1Ev); -+extern char _ZN12RandomSampleC2Ev[]; -+EXPORT_SYMBOL(_ZN12RandomSampleC2Ev); -+extern char _ZN12RandomSampleD0Ev[]; -+EXPORT_SYMBOL(_ZN12RandomSampleD0Ev); -+extern char _ZN12RandomSampleD1Ev[]; -+EXPORT_SYMBOL(_ZN12RandomSampleD1Ev); -+extern char _ZN12RandomSampleD2Ev[]; -+EXPORT_SYMBOL(_ZN12RandomSampleD2Ev); -+extern char _ZNK12RandomSample10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12RandomSample10class_nameEv); -+extern char _ZNK12RandomSample10port_countEv[]; -+EXPORT_SYMBOL(_ZNK12RandomSample10port_countEv); -+extern char _ZNK12RandomSample10processingEv[]; -+EXPORT_SYMBOL(_ZNK12RandomSample10processingEv); -+extern char _ZNK12RandomSample13configurationER6VectorI6StringE[]; -+EXPORT_SYMBOL(_ZNK12RandomSample13configurationER6VectorI6StringE); -+extern char _ZNK12RandomSample20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK12RandomSample20can_live_reconfigureEv); -+extern char _ZTV12RandomSample[]; -+EXPORT_SYMBOL(_ZTV12RandomSample); -+extern char _ZN12RandomSource10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12RandomSource10initializeEP12ErrorHandler); -+extern char _ZN12RandomSource11make_packetEv[]; -+EXPORT_SYMBOL(_ZN12RandomSource11make_packetEv); -+extern char _ZN12RandomSource12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN12RandomSource12add_handlersEv); -+extern char _ZN12RandomSource4pullEi[]; -+EXPORT_SYMBOL(_ZN12RandomSource4pullEi); -+extern char _ZN12RandomSource8run_taskEP4Task[]; -+EXPORT_SYMBOL(_ZN12RandomSource8run_taskEP4Task); -+extern char _ZN12RandomSource9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12RandomSource9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12RandomSourceC1Ev[]; -+EXPORT_SYMBOL(_ZN12RandomSourceC1Ev); -+extern char _ZN12RandomSourceC2Ev[]; -+EXPORT_SYMBOL(_ZN12RandomSourceC2Ev); -+extern char _ZN12RandomSourceD0Ev[]; -+EXPORT_SYMBOL(_ZN12RandomSourceD0Ev); -+extern char _ZN12RandomSourceD1Ev[]; -+EXPORT_SYMBOL(_ZN12RandomSourceD1Ev); -+extern char _ZN12RandomSourceD2Ev[]; -+EXPORT_SYMBOL(_ZN12RandomSourceD2Ev); -+extern char _ZNK12RandomSource10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12RandomSource10class_nameEv); -+extern char _ZNK12RandomSource10port_countEv[]; -+EXPORT_SYMBOL(_ZNK12RandomSource10port_countEv); -+extern char _ZNK12RandomSource10processingEv[]; -+EXPORT_SYMBOL(_ZNK12RandomSource10processingEv); -+extern char _ZTV12RandomSource[]; -+EXPORT_SYMBOL(_ZTV12RandomSource); -+extern char _ZN12RandomSwitch4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN12RandomSwitch4pushEiP6Packet); -+extern char _ZN12RandomSwitchC1Ev[]; -+EXPORT_SYMBOL(_ZN12RandomSwitchC1Ev); -+extern char _ZN12RandomSwitchC2Ev[]; -+EXPORT_SYMBOL(_ZN12RandomSwitchC2Ev); -+extern char _ZN12RandomSwitchD0Ev[]; -+EXPORT_SYMBOL(_ZN12RandomSwitchD0Ev); -+extern char _ZN12RandomSwitchD1Ev[]; -+EXPORT_SYMBOL(_ZN12RandomSwitchD1Ev); -+extern char _ZN12RandomSwitchD2Ev[]; -+EXPORT_SYMBOL(_ZN12RandomSwitchD2Ev); -+extern char _ZNK12RandomSwitch10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12RandomSwitch10class_nameEv); -+extern char _ZNK12RandomSwitch10port_countEv[]; -+EXPORT_SYMBOL(_ZNK12RandomSwitch10port_countEv); -+extern char _ZNK12RandomSwitch10processingEv[]; -+EXPORT_SYMBOL(_ZNK12RandomSwitch10processingEv); -+extern char _ZTV12RandomSwitch[]; -+EXPORT_SYMBOL(_ZTV12RandomSwitch); -+extern char _ZN11RatedSource10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11RatedSource10initializeEP12ErrorHandler); -+extern char _ZN11RatedSource10read_paramEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN11RatedSource10read_paramEP7ElementPv); -+extern char _ZN11RatedSource12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN11RatedSource12add_handlersEv); -+extern char _ZN11RatedSource12change_paramERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11RatedSource12change_paramERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN11RatedSource12setup_packetEv[]; -+EXPORT_SYMBOL(_ZN11RatedSource12setup_packetEv); -+extern char _ZN11RatedSource4pullEi[]; -+EXPORT_SYMBOL(_ZN11RatedSource4pullEi); -+extern char _ZN11RatedSource7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN11RatedSource7cleanupEN7Element12CleanupStageE); -+extern char _ZN11RatedSource8NO_LIMITE[]; -+EXPORT_SYMBOL(_ZN11RatedSource8NO_LIMITE); -+extern char _ZN11RatedSource8run_taskEP4Task[]; -+EXPORT_SYMBOL(_ZN11RatedSource8run_taskEP4Task); -+extern char _ZN11RatedSource9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11RatedSource9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN11RatedSourceC1Ev[]; -+EXPORT_SYMBOL(_ZN11RatedSourceC1Ev); -+extern char _ZN11RatedSourceC2Ev[]; -+EXPORT_SYMBOL(_ZN11RatedSourceC2Ev); -+extern char _ZN11RatedSourceD0Ev[]; -+EXPORT_SYMBOL(_ZN11RatedSourceD0Ev); -+extern char _ZN11RatedSourceD1Ev[]; -+EXPORT_SYMBOL(_ZN11RatedSourceD1Ev); -+extern char _ZN11RatedSourceD2Ev[]; -+EXPORT_SYMBOL(_ZN11RatedSourceD2Ev); -+extern char _ZNK11RatedSource10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK11RatedSource10class_nameEv); -+extern char _ZNK11RatedSource10port_countEv[]; -+EXPORT_SYMBOL(_ZNK11RatedSource10port_countEv); -+extern char _ZNK11RatedSource10processingEv[]; -+EXPORT_SYMBOL(_ZNK11RatedSource10processingEv); -+extern char _ZTV11RatedSource[]; -+EXPORT_SYMBOL(_ZTV11RatedSource); -+extern char _ZN13RatedSplitter12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN13RatedSplitter12add_handlersEv); -+extern char _ZN13RatedSplitter4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN13RatedSplitter4pushEiP6Packet); -+extern char _ZN13RatedSplitter9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13RatedSplitter9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN13RatedSplitterC1Ev[]; -+EXPORT_SYMBOL(_ZN13RatedSplitterC1Ev); -+extern char _ZN13RatedSplitterC2Ev[]; -+EXPORT_SYMBOL(_ZN13RatedSplitterC2Ev); -+extern char _ZN13RatedSplitterD0Ev[]; -+EXPORT_SYMBOL(_ZN13RatedSplitterD0Ev); -+extern char _ZN13RatedSplitterD1Ev[]; -+EXPORT_SYMBOL(_ZN13RatedSplitterD1Ev); -+extern char _ZN13RatedSplitterD2Ev[]; -+EXPORT_SYMBOL(_ZN13RatedSplitterD2Ev); -+extern char _ZNK13RatedSplitter10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK13RatedSplitter10class_nameEv); -+extern char _ZNK13RatedSplitter13configurationER6VectorI6StringE[]; -+EXPORT_SYMBOL(_ZNK13RatedSplitter13configurationER6VectorI6StringE); -+extern char _ZTV13RatedSplitter[]; -+EXPORT_SYMBOL(_ZTV13RatedSplitter); -+extern char _ZN12RatedUnqueue10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12RatedUnqueue10initializeEP12ErrorHandler); -+extern char _ZN12RatedUnqueue12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN12RatedUnqueue12add_handlersEv); -+extern char _ZN12RatedUnqueue8run_taskEP4Task[]; -+EXPORT_SYMBOL(_ZN12RatedUnqueue8run_taskEP4Task); -+extern char _ZN12RatedUnqueue9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12RatedUnqueue9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12RatedUnqueueC1Ev[]; -+EXPORT_SYMBOL(_ZN12RatedUnqueueC1Ev); -+extern char _ZN12RatedUnqueueC2Ev[]; -+EXPORT_SYMBOL(_ZN12RatedUnqueueC2Ev); -+extern char _ZN12RatedUnqueueD0Ev[]; -+EXPORT_SYMBOL(_ZN12RatedUnqueueD0Ev); -+extern char _ZN12RatedUnqueueD1Ev[]; -+EXPORT_SYMBOL(_ZN12RatedUnqueueD1Ev); -+extern char _ZN12RatedUnqueueD2Ev[]; -+EXPORT_SYMBOL(_ZN12RatedUnqueueD2Ev); -+extern char _ZNK12RatedUnqueue10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12RatedUnqueue10class_nameEv); -+extern char _ZNK12RatedUnqueue13configurationER6VectorI6StringE[]; -+EXPORT_SYMBOL(_ZNK12RatedUnqueue13configurationER6VectorI6StringE); -+extern char _ZTV12RatedUnqueue[]; -+EXPORT_SYMBOL(_ZTV12RatedUnqueue); -+extern char click_cycle_counter[]; -+EXPORT_SYMBOL(click_cycle_counter); -+extern char _ZN11DirectEWMAXI24StabilityEWMAXParametersILj10EyxEE8update_nEyj[]; -+EXPORT_SYMBOL(_ZN11DirectEWMAXI24StabilityEWMAXParametersILj10EyxEE8update_nEyj); -+extern char _ZN3RED10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN3RED10initializeEP12ErrorHandler); -+extern char _ZN3RED10read_statsEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN3RED10read_statsEP7ElementPv); -+extern char _ZN3RED10take_stateEP7ElementP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN3RED10take_stateEP7ElementP12ErrorHandler); -+extern char _ZN3RED11read_queuesEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN3RED11read_queuesEP7ElementPv); -+extern char _ZN3RED11should_dropEv[]; -+EXPORT_SYMBOL(_ZN3RED11should_dropEv); -+extern char _ZN3RED12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN3RED12add_handlersEv); -+extern char _ZN3RED13set_C1_and_C2Ev[]; -+EXPORT_SYMBOL(_ZN3RED13set_C1_and_C2Ev); -+extern char _ZN3RED14read_parameterEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN3RED14read_parameterEP7ElementPv); -+extern char _ZN3RED16finish_configureEjjjjRK6StringP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN3RED16finish_configureEjjjjRK6StringP12ErrorHandler); -+extern char _ZN3RED16live_reconfigureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN3RED16live_reconfigureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN3RED4pullEi[]; -+EXPORT_SYMBOL(_ZN3RED4pullEi); -+extern char _ZN3RED4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN3RED4pushEiP6Packet); -+extern char _ZN3RED9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN3RED9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN3REDC1Ev[]; -+EXPORT_SYMBOL(_ZN3REDC1Ev); -+extern char _ZN3REDC2Ev[]; -+EXPORT_SYMBOL(_ZN3REDC2Ev); -+extern char _ZN3REDD0Ev[]; -+EXPORT_SYMBOL(_ZN3REDD0Ev); -+extern char _ZN3REDD1Ev[]; -+EXPORT_SYMBOL(_ZN3REDD1Ev); -+extern char _ZN3REDD2Ev[]; -+EXPORT_SYMBOL(_ZN3REDD2Ev); -+extern char _ZNK3RED10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK3RED10class_nameEv); -+extern char _ZNK3RED10queue_sizeEv[]; -+EXPORT_SYMBOL(_ZNK3RED10queue_sizeEv); -+extern char _ZNK3RED12check_paramsEjjjjP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZNK3RED12check_paramsEjjjjP12ErrorHandler); -+extern char _ZNK3RED13configurationER6VectorI6StringE[]; -+EXPORT_SYMBOL(_ZNK3RED13configurationER6VectorI6StringE); -+extern char _ZTV3RED[]; -+EXPORT_SYMBOL(_ZTV3RED); -+extern char _ZN7HashMapI8IPFlowIDiE10initializeEP20HashMap_ArenaFactoryj[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDiE10initializeEP20HashMap_ArenaFactoryj); -+extern char _ZN7HashMapI8IPFlowIDiE20set_dynamic_resizingEb[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDiE20set_dynamic_resizingEb); -+extern char _ZN7HashMapI8IPFlowIDiE6insertERKS0_RKi[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDiE6insertERKS0_RKi); -+extern char _ZN7HashMapI8IPFlowIDiE6resizeEj[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDiE6resizeEj); -+extern char _ZN7HashMapI8IPFlowIDiE7resize0Ej[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDiE7resize0Ej); -+extern char _ZN7HashMapI8IPFlowIDiE9set_arenaEP20HashMap_ArenaFactory[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDiE9set_arenaEP20HashMap_ArenaFactory); -+extern char _ZN7HashMapI8IPFlowIDiEC1Ev[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDiEC1Ev); -+extern char _ZN7HashMapI8IPFlowIDiED1Ev[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDiED1Ev); -+extern char _ZN8RFC2507c10make_otherEP6Packet[]; -+EXPORT_SYMBOL(_ZN8RFC2507c10make_otherEP6Packet); -+extern char _ZN8RFC2507c13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN8RFC2507c13simple_actionEP6Packet); -+extern char _ZN8RFC2507c15make_compressedEiP6Packet[]; -+EXPORT_SYMBOL(_ZN8RFC2507c15make_compressedEiP6Packet); -+extern char _ZN8RFC2507c7encodeXEiiPcRi[]; -+EXPORT_SYMBOL(_ZN8RFC2507c7encodeXEiiPcRi); -+extern char _ZN8RFC2507c8encode16EiiPcRi[]; -+EXPORT_SYMBOL(_ZN8RFC2507c8encode16EiiPcRi); -+extern char _ZN8RFC2507c8encode32EiiPcRi[]; -+EXPORT_SYMBOL(_ZN8RFC2507c8encode32EiiPcRi); -+extern char _ZN8RFC2507c8make_keyERKNS_5tcpipERS0_[]; -+EXPORT_SYMBOL(_ZN8RFC2507c8make_keyERKNS_5tcpipERS0_); -+extern char _ZN8RFC2507c9make_fullEiP6Packet[]; -+EXPORT_SYMBOL(_ZN8RFC2507c9make_fullEiP6Packet); -+extern char _ZN8RFC2507cC1Ev[]; -+EXPORT_SYMBOL(_ZN8RFC2507cC1Ev); -+extern char _ZN8RFC2507cC2Ev[]; -+EXPORT_SYMBOL(_ZN8RFC2507cC2Ev); -+extern char _ZN8RFC2507cD0Ev[]; -+EXPORT_SYMBOL(_ZN8RFC2507cD0Ev); -+extern char _ZN8RFC2507cD1Ev[]; -+EXPORT_SYMBOL(_ZN8RFC2507cD1Ev); -+extern char _ZN8RFC2507cD2Ev[]; -+EXPORT_SYMBOL(_ZN8RFC2507cD2Ev); -+extern char _ZNK7HashMapI8IPFlowIDiE9find_pairERKS0_[]; -+EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDiE9find_pairERKS0_); -+extern char _ZNK8RFC2507c10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK8RFC2507c10class_nameEv); -+extern char _ZNK8RFC2507c10port_countEv[]; -+EXPORT_SYMBOL(_ZNK8RFC2507c10port_countEv); -+extern char _ZNK8RFC2507c10processingEv[]; -+EXPORT_SYMBOL(_ZNK8RFC2507c10processingEv); -+extern char _ZTV8RFC2507c[]; -+EXPORT_SYMBOL(_ZTV8RFC2507c); -+extern char _ZN8RFC2507d13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN8RFC2507d13simple_actionEP6Packet); -+extern char _ZN8RFC2507d6decodeERPKhRj[]; -+EXPORT_SYMBOL(_ZN8RFC2507d6decodeERPKhRj); -+extern char _ZN8RFC2507d6decodeERPKhRt[]; -+EXPORT_SYMBOL(_ZN8RFC2507d6decodeERPKhRt); -+extern char _ZN8RFC2507dC1Ev[]; -+EXPORT_SYMBOL(_ZN8RFC2507dC1Ev); -+extern char _ZN8RFC2507dC2Ev[]; -+EXPORT_SYMBOL(_ZN8RFC2507dC2Ev); -+extern char _ZN8RFC2507dD0Ev[]; -+EXPORT_SYMBOL(_ZN8RFC2507dD0Ev); -+extern char _ZN8RFC2507dD1Ev[]; -+EXPORT_SYMBOL(_ZN8RFC2507dD1Ev); -+extern char _ZN8RFC2507dD2Ev[]; -+EXPORT_SYMBOL(_ZN8RFC2507dD2Ev); -+extern char _ZNK8RFC2507d10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK8RFC2507d10class_nameEv); -+extern char _ZNK8RFC2507d10port_countEv[]; -+EXPORT_SYMBOL(_ZNK8RFC2507d10port_countEv); -+extern char _ZNK8RFC2507d10processingEv[]; -+EXPORT_SYMBOL(_ZNK8RFC2507d10processingEv); -+extern char _ZTV8RFC2507d[]; -+EXPORT_SYMBOL(_ZTV8RFC2507d); -+extern char _ZN7RIPSend10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7RIPSend10initializeEP12ErrorHandler); -+extern char _ZN7RIPSend9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7RIPSend9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN7RIPSend9run_timerEP5Timer[]; -+EXPORT_SYMBOL(_ZN7RIPSend9run_timerEP5Timer); -+extern char _ZN7RIPSendC1Ev[]; -+EXPORT_SYMBOL(_ZN7RIPSendC1Ev); -+extern char _ZN7RIPSendC2Ev[]; -+EXPORT_SYMBOL(_ZN7RIPSendC2Ev); -+extern char _ZN7RIPSendD0Ev[]; -+EXPORT_SYMBOL(_ZN7RIPSendD0Ev); -+extern char _ZN7RIPSendD1Ev[]; -+EXPORT_SYMBOL(_ZN7RIPSendD1Ev); -+extern char _ZN7RIPSendD2Ev[]; -+EXPORT_SYMBOL(_ZN7RIPSendD2Ev); -+extern char _ZNK7RIPSend10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK7RIPSend10class_nameEv); -+extern char _ZNK7RIPSend10port_countEv[]; -+EXPORT_SYMBOL(_ZNK7RIPSend10port_countEv); -+extern char _ZNK7RIPSend10processingEv[]; -+EXPORT_SYMBOL(_ZNK7RIPSend10processingEv); -+extern char _ZTV7RIPSend[]; -+EXPORT_SYMBOL(_ZTV7RIPSend); -+extern char _ZN11ThreadSched22initial_home_thread_idEP4Taskb[]; -+EXPORT_SYMBOL(_ZN11ThreadSched22initial_home_thread_idEP4Taskb); -+extern char _ZN11ThreadSchedD0Ev[]; -+EXPORT_SYMBOL(_ZN11ThreadSchedD0Ev); -+extern char _ZN11ThreadSchedD1Ev[]; -+EXPORT_SYMBOL(_ZN11ThreadSchedD1Ev); -+extern char _ZN6Router10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN6Router10initializeEP12ErrorHandler); -+extern char _ZN6Router11add_elementEP7ElementRK6StringS4_S4_[]; -+EXPORT_SYMBOL(_ZN6Router11add_elementEP7ElementRK6StringS4_S4_); -+extern char _ZN6Router11make_gportsEv[]; -+EXPORT_SYMBOL(_ZN6Router11make_gportsEv); -+extern char _ZN6Router11set_handlerEPK7ElementRK6StringiPFiiRS3_PS0_PK7HandlerP12ErrorHandlerEPvSF_[]; -+EXPORT_SYMBOL(_ZN6Router11set_handlerEPK7ElementRK6StringiPFiiRS3_PS0_PK7HandlerP12ErrorHandlerEPvSF_); -+extern char _ZN6Router12hookup_errorERKNS_6HookupEbPKcP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN6Router12hookup_errorERKNS_6HookupEbPKcP12ErrorHandler); -+extern char _ZN6Router12set_runcountEi[]; -+EXPORT_SYMBOL(_ZN6Router12set_runcountEi); -+extern char _ZN6Router13remove_hookupEi[]; -+EXPORT_SYMBOL(_ZN6Router13remove_hookupEi); -+extern char _ZN6Router14add_connectionEiiii[]; -+EXPORT_SYMBOL(_ZN6Router14add_connectionEiiii); -+extern char _ZN6Router14add_module_refEP6module[]; -+EXPORT_SYMBOL(_ZN6Router14add_module_refEP6module); -+extern char _ZN6Router14set_attachmentERK6StringPv[]; -+EXPORT_SYMBOL(_ZN6Router14set_attachmentERK6StringPv); -+extern char _ZN6Router14static_cleanupEv[]; -+EXPORT_SYMBOL(_ZN6Router14static_cleanupEv); -+extern char _ZN6Router15add_requirementERK6String[]; -+EXPORT_SYMBOL(_ZN6Router15add_requirementERK6String); -+extern char _ZN6Router15adjust_runcountEi[]; -+EXPORT_SYMBOL(_ZN6Router15adjust_runcountEi); -+extern char _ZN6Router15force_name_infoEv[]; -+EXPORT_SYMBOL(_ZN6Router15force_name_infoEv); -+extern char _ZN6Router15set_connectionsEv[]; -+EXPORT_SYMBOL(_ZN6Router15set_connectionsEv); -+extern char _ZN6Router16add_read_handlerEPK7ElementRK6StringPFS3_PS0_PvES7_[]; -+EXPORT_SYMBOL(_ZN6Router16add_read_handlerEPK7ElementRK6StringPFS3_PS0_PvES7_); -+extern char _ZN6Router16element_hindexesEPK7ElementR6VectorIiE[]; -+EXPORT_SYMBOL(_ZN6Router16element_hindexesEPK7ElementR6VectorIiE); -+extern char _ZN6Router16force_attachmentERK6String[]; -+EXPORT_SYMBOL(_ZN6Router16force_attachmentERK6String); -+extern char _ZN6Router16global_port_flowEbP7ElementiP13ElementFilterR9Bitvector[]; -+EXPORT_SYMBOL(_ZN6Router16global_port_flowEbP7ElementiP13ElementFilterR9Bitvector); -+extern char _ZN6Router16processing_errorERKNS_6HookupES2_biP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN6Router16processing_errorERKNS_6HookupES2_biP12ErrorHandler); -+extern char _ZN6Router17add_write_handlerEPK7ElementRK6StringPFiS5_PS0_PvP12ErrorHandlerES7_[]; -+EXPORT_SYMBOL(_ZN6Router17add_write_handlerEPK7ElementRK6StringPFiS5_PS0_PvP12ErrorHandlerES7_); -+extern char _ZN6Router17static_initializeEv[]; -+EXPORT_SYMBOL(_ZN6Router17static_initializeEv); -+extern char _ZN6Router17upstream_elementsEP7ElementiP13ElementFilterR6VectorIS1_E[]; -+EXPORT_SYMBOL(_ZN6Router17upstream_elementsEP7ElementiP13ElementFilterR6VectorIS1_E); -+extern char _ZN6Router18check_hookup_rangeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN6Router18check_hookup_rangeEP12ErrorHandler); -+extern char _ZN6Router18make_hookup_gportsEv[]; -+EXPORT_SYMBOL(_ZN6Router18make_hookup_gportsEv); -+extern char _ZN6Router18set_econfigurationEiRK6String[]; -+EXPORT_SYMBOL(_ZN6Router18set_econfigurationEiRK6String); -+extern char _ZN6Router18set_hotswap_routerEPS_[]; -+EXPORT_SYMBOL(_ZN6Router18set_hotswap_routerEPS_); -+extern char _ZN6Router19check_push_and_pullEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN6Router19check_push_and_pullEP12ErrorHandler); -+extern char _ZN6Router19downstream_elementsEP7ElementiP13ElementFilterR6VectorIS1_E[]; -+EXPORT_SYMBOL(_ZN6Router19downstream_elementsEP7ElementiP13ElementFilterR6VectorIS1_E); -+extern char _ZN6Router19initialize_handlersEbb[]; -+EXPORT_SYMBOL(_ZN6Router19initialize_handlersEbb); -+extern char _ZN6Router19new_notifier_signalER14NotifierSignal[]; -+EXPORT_SYMBOL(_ZN6Router19new_notifier_signalER14NotifierSignal); -+extern char _ZN6Router19router_read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN6Router19router_read_handlerEP7ElementPv); -+extern char _ZN6Router19store_local_handlerEiRK7Handler[]; -+EXPORT_SYMBOL(_ZN6Router19store_local_handlerEiRK7Handler); -+extern char _ZN6Router20change_handler_flagsEPK7ElementRK6Stringjj[]; -+EXPORT_SYMBOL(_ZN6Router20change_handler_flagsEPK7ElementRK6Stringjj); -+extern char _ZN6Router20store_global_handlerERK7Handler[]; -+EXPORT_SYMBOL(_ZN6Router20store_global_handlerERK7Handler); -+extern char _ZN6Router21check_hookup_elementsEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN6Router21check_hookup_elementsEP12ErrorHandler); -+extern char _ZN6Router25check_hookup_completenessEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN6Router25check_hookup_completenessEP12ErrorHandler); -+extern char _ZN6Router5unuseEv[]; -+EXPORT_SYMBOL(_ZN6Router5unuseEv); -+extern char _ZN6Router6HookupC1Eii[]; -+EXPORT_SYMBOL(_ZN6Router6HookupC1Eii); -+extern char _ZN6Router6hindexEPK7ElementRK6String[]; -+EXPORT_SYMBOL(_ZN6Router6hindexEPK7ElementRK6String); -+extern char _ZN6Router7elementEPKS_i[]; -+EXPORT_SYMBOL(_ZN6Router7elementEPKS_i); -+extern char _ZN6Router7handlerEPK7ElementRK6String[]; -+EXPORT_SYMBOL(_ZN6Router7handlerEPK7ElementRK6String); -+extern char _ZN6Router7handlerEPKS_i[]; -+EXPORT_SYMBOL(_ZN6Router7handlerEPKS_i); -+extern char _ZN6Router8activateEbP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN6Router8activateEbP12ErrorHandler); -+extern char _ZN6RouterC1ERK6StringP6Master[]; -+EXPORT_SYMBOL(_ZN6RouterC1ERK6StringP6Master); -+extern char _ZN6RouterC2ERK6StringP6Master[]; -+EXPORT_SYMBOL(_ZN6RouterC2ERK6StringP6Master); -+extern char _ZN6RouterD1Ev[]; -+EXPORT_SYMBOL(_ZN6RouterD1Ev); -+extern char _ZN6RouterD2Ev[]; -+EXPORT_SYMBOL(_ZN6RouterD2Ev); -+extern char _ZN6VectorIiE5beginEv[]; -+EXPORT_SYMBOL(_ZN6VectorIiE5beginEv); -+extern char _ZN6VectorIiEC1EiRKi[]; -+EXPORT_SYMBOL(_ZN6VectorIiEC1EiRKi); -+extern char _ZN7Handler12unparse_nameEP7ElementRK6String[]; -+EXPORT_SYMBOL(_ZN7Handler12unparse_nameEP7ElementRK6String); -+extern char _ZN7Handler17the_blank_handlerE[]; -+EXPORT_SYMBOL(_ZN7Handler17the_blank_handlerE); -+extern char _ZNK6Router10attachmentERK6String[]; -+EXPORT_SYMBOL(_ZNK6Router10attachmentERK6String); -+extern char _ZNK6Router13find_ehandlerEiRK6Stringb[]; -+EXPORT_SYMBOL(_ZNK6Router13find_ehandlerEiRK6Stringb); -+extern char _ZNK6Router14econfigurationEi[]; -+EXPORT_SYMBOL(_ZNK6Router14econfigurationEi); -+extern char _ZNK6Router14element_lerrorEP12ErrorHandlerP7ElementPKcz[]; -+EXPORT_SYMBOL(_ZNK6Router14element_lerrorEP12ErrorHandlerP7ElementPKcz); -+extern char _ZNK6Router15chatter_channelERK6String[]; -+EXPORT_SYMBOL(_ZNK6Router15chatter_channelERK6String); -+extern char _ZNK6Router15context_messageEiPKc[]; -+EXPORT_SYMBOL(_ZNK6Router15context_messageEiPKc); -+extern char _ZNK6Router15unparse_classesER11StringAccumRK6String[]; -+EXPORT_SYMBOL(_ZNK6Router15unparse_classesER11StringAccumRK6String); -+extern char _ZNK6Router19gport_list_elementsEbRK9BitvectorR6VectorIP7ElementE[]; -+EXPORT_SYMBOL(_ZNK6Router19gport_list_elementsEbRK9BitvectorR6VectorIP7ElementE); -+extern char _ZNK6Router19unparse_connectionsER11StringAccumRK6String[]; -+EXPORT_SYMBOL(_ZNK6Router19unparse_connectionsER11StringAccumRK6String); -+extern char _ZNK6Router20element_ports_stringEi[]; -+EXPORT_SYMBOL(_ZNK6Router20element_ports_stringEi); -+extern char _ZNK6Router20unparse_declarationsER11StringAccumRK6String[]; -+EXPORT_SYMBOL(_ZNK6Router20unparse_declarationsER11StringAccumRK6String); -+extern char _ZNK6Router20unparse_requirementsER11StringAccumRK6String[]; -+EXPORT_SYMBOL(_ZNK6Router20unparse_requirementsER11StringAccumRK6String); -+extern char _ZNK6Router4findERK6StringP7ElementP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZNK6Router4findERK6StringP7ElementP12ErrorHandler); -+extern char _ZNK6Router4findERK6StringS0_P12ErrorHandler[]; -+EXPORT_SYMBOL(_ZNK6Router4findERK6StringS0_P12ErrorHandler); -+extern char _ZNK6Router5enameEi[]; -+EXPORT_SYMBOL(_ZNK6Router5enameEi); -+extern char _ZNK6Router7unparseER11StringAccumRK6String[]; -+EXPORT_SYMBOL(_ZNK6Router7unparseER11StringAccumRK6String); -+extern char _ZNK6Router9elandmarkEi[]; -+EXPORT_SYMBOL(_ZNK6Router9elandmarkEi); -+extern char _ZNK6VectorI6StringEixEi[]; -+EXPORT_SYMBOL(_ZNK6VectorI6StringEixEi); -+extern char _ZNK6VectorIN6Router6HookupEE4sizeEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIN6Router6HookupEE4sizeEv); -+extern char _ZNK6VectorIN6Router6HookupEEixEi[]; -+EXPORT_SYMBOL(_ZNK6VectorIN6Router6HookupEEixEi); -+extern char _ZNK6VectorIP7ElementEixEi[]; -+EXPORT_SYMBOL(_ZNK6VectorIP7ElementEixEi); -+extern char _ZNK7Handler10call_writeERK6StringP7ElementbP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZNK7Handler10call_writeERK6StringP7ElementbP12ErrorHandler); -+extern char _ZNK7Handler12unparse_nameEP7Element[]; -+EXPORT_SYMBOL(_ZNK7Handler12unparse_nameEP7Element); -+extern char _ZNK7Handler9call_readEP7ElementRK6StringbP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZNK7Handler9call_readEP7ElementRK6StringbP12ErrorHandler); -+extern char _ZTV11ThreadSched[]; -+EXPORT_SYMBOL(_ZTV11ThreadSched); -+extern char _ZN12RouterThread11driver_onceEv[]; -+EXPORT_SYMBOL(_ZN12RouterThread11driver_onceEv); -+extern char _ZN12RouterThread23unschedule_router_tasksEP6Router[]; -+EXPORT_SYMBOL(_ZN12RouterThread23unschedule_router_tasksEP6Router); -+extern char _ZN12RouterThread6driverEv[]; -+EXPORT_SYMBOL(_ZN12RouterThread6driverEv); -+extern char _ZN12RouterThreadC1EP6Masteri[]; -+EXPORT_SYMBOL(_ZN12RouterThreadC1EP6Masteri); -+extern char _ZN12RouterThreadC2EP6Masteri[]; -+EXPORT_SYMBOL(_ZN12RouterThreadC2EP6Masteri); -+extern char _ZN12RouterThreadD1Ev[]; -+EXPORT_SYMBOL(_ZN12RouterThreadD1Ev); -+extern char _ZN12RouterThreadD2Ev[]; -+EXPORT_SYMBOL(_ZN12RouterThreadD2Ev); -+extern char _ZN18RoundRobinIPMapper15notify_rewriterEP4IPRwP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN18RoundRobinIPMapper15notify_rewriterEP4IPRwP12ErrorHandler); -+extern char _ZN18RoundRobinIPMapper4castEPKc[]; -+EXPORT_SYMBOL(_ZN18RoundRobinIPMapper4castEPKc); -+extern char _ZN18RoundRobinIPMapper7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN18RoundRobinIPMapper7cleanupEN7Element12CleanupStageE); -+extern char _ZN18RoundRobinIPMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet[]; -+EXPORT_SYMBOL(_ZN18RoundRobinIPMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet); -+extern char _ZN18RoundRobinIPMapper9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN18RoundRobinIPMapper9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN18RoundRobinIPMapperC1Ev[]; -+EXPORT_SYMBOL(_ZN18RoundRobinIPMapperC1Ev); -+extern char _ZN18RoundRobinIPMapperC2Ev[]; -+EXPORT_SYMBOL(_ZN18RoundRobinIPMapperC2Ev); -+extern char _ZN18RoundRobinIPMapperD0Ev[]; -+EXPORT_SYMBOL(_ZN18RoundRobinIPMapperD0Ev); -+extern char _ZN18RoundRobinIPMapperD1Ev[]; -+EXPORT_SYMBOL(_ZN18RoundRobinIPMapperD1Ev); -+extern char _ZN18RoundRobinIPMapperD2Ev[]; -+EXPORT_SYMBOL(_ZN18RoundRobinIPMapperD2Ev); -+extern char _ZNK18RoundRobinIPMapper10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK18RoundRobinIPMapper10class_nameEv); -+extern char _ZNK18RoundRobinIPMapper15configure_phaseEv[]; -+EXPORT_SYMBOL(_ZNK18RoundRobinIPMapper15configure_phaseEv); -+extern char _ZTV18RoundRobinIPMapper[]; -+EXPORT_SYMBOL(_ZTV18RoundRobinIPMapper); -+extern char _ZThn60_N18RoundRobinIPMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet[]; -+EXPORT_SYMBOL(_ZThn60_N18RoundRobinIPMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet); -+extern char _ZThn60_N18RoundRobinIPMapperD0Ev[]; -+EXPORT_SYMBOL(_ZThn60_N18RoundRobinIPMapperD0Ev); -+extern char _ZThn60_N18RoundRobinIPMapperD1Ev[]; -+EXPORT_SYMBOL(_ZThn60_N18RoundRobinIPMapperD1Ev); -+extern char _ZN7RRSched10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7RRSched10initializeEP12ErrorHandler); -+extern char _ZN7RRSched4pullEi[]; -+EXPORT_SYMBOL(_ZN7RRSched4pullEi); -+extern char _ZN7RRSched7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN7RRSched7cleanupEN7Element12CleanupStageE); -+extern char _ZN7RRSchedC1Ev[]; -+EXPORT_SYMBOL(_ZN7RRSchedC1Ev); -+extern char _ZN7RRSchedC2Ev[]; -+EXPORT_SYMBOL(_ZN7RRSchedC2Ev); -+extern char _ZN7RRSchedD0Ev[]; -+EXPORT_SYMBOL(_ZN7RRSchedD0Ev); -+extern char _ZN7RRSchedD1Ev[]; -+EXPORT_SYMBOL(_ZN7RRSchedD1Ev); -+extern char _ZN7RRSchedD2Ev[]; -+EXPORT_SYMBOL(_ZN7RRSchedD2Ev); -+extern char _ZNK7RRSched10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK7RRSched10class_nameEv); -+extern char _ZNK7RRSched10port_countEv[]; -+EXPORT_SYMBOL(_ZNK7RRSched10port_countEv); -+extern char _ZNK7RRSched10processingEv[]; -+EXPORT_SYMBOL(_ZNK7RRSched10processingEv); -+extern char _ZTV7RRSched[]; -+EXPORT_SYMBOL(_ZTV7RRSched); -+extern char _ZN16RoundRobinSwitch4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN16RoundRobinSwitch4pushEiP6Packet); -+extern char _ZN16RoundRobinSwitchC1Ev[]; -+EXPORT_SYMBOL(_ZN16RoundRobinSwitchC1Ev); -+extern char _ZN16RoundRobinSwitchC2Ev[]; -+EXPORT_SYMBOL(_ZN16RoundRobinSwitchC2Ev); -+extern char _ZN16RoundRobinSwitchD0Ev[]; -+EXPORT_SYMBOL(_ZN16RoundRobinSwitchD0Ev); -+extern char _ZN16RoundRobinSwitchD1Ev[]; -+EXPORT_SYMBOL(_ZN16RoundRobinSwitchD1Ev); -+extern char _ZN16RoundRobinSwitchD2Ev[]; -+EXPORT_SYMBOL(_ZN16RoundRobinSwitchD2Ev); -+extern char _ZNK16RoundRobinSwitch10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK16RoundRobinSwitch10class_nameEv); -+extern char _ZNK16RoundRobinSwitch10port_countEv[]; -+EXPORT_SYMBOL(_ZNK16RoundRobinSwitch10port_countEv); -+extern char _ZNK16RoundRobinSwitch10processingEv[]; -+EXPORT_SYMBOL(_ZNK16RoundRobinSwitch10processingEv); -+extern char _ZTV16RoundRobinSwitch[]; -+EXPORT_SYMBOL(_ZTV16RoundRobinSwitch); -+extern char _ZN8RTCycles12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN8RTCycles12add_handlersEv); -+extern char _ZN8RTCycles4pullEi[]; -+EXPORT_SYMBOL(_ZN8RTCycles4pullEi); -+extern char _ZN8RTCycles4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN8RTCycles4pushEiP6Packet); -+extern char _ZN8RTCyclesC1Ev[]; -+EXPORT_SYMBOL(_ZN8RTCyclesC1Ev); -+extern char _ZN8RTCyclesC2Ev[]; -+EXPORT_SYMBOL(_ZN8RTCyclesC2Ev); -+extern char _ZN8RTCyclesD0Ev[]; -+EXPORT_SYMBOL(_ZN8RTCyclesD0Ev); -+extern char _ZN8RTCyclesD1Ev[]; -+EXPORT_SYMBOL(_ZN8RTCyclesD1Ev); -+extern char _ZN8RTCyclesD2Ev[]; -+EXPORT_SYMBOL(_ZN8RTCyclesD2Ev); -+extern char _ZNK8RTCycles10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK8RTCycles10class_nameEv); -+extern char _ZNK8RTCycles10port_countEv[]; -+EXPORT_SYMBOL(_ZNK8RTCycles10port_countEv); -+extern char _ZNK8RTCycles10processingEv[]; -+EXPORT_SYMBOL(_ZNK8RTCycles10processingEv); -+extern char _ZTV8RTCycles[]; -+EXPORT_SYMBOL(_ZTV8RTCycles); -+extern char _Z16click_init_schedP12ErrorHandler[]; -+EXPORT_SYMBOL(_Z16click_init_schedP12ErrorHandler); -+extern char _Z19click_cleanup_schedv[]; -+EXPORT_SYMBOL(_Z19click_cleanup_schedv); -+extern char _ZN12ScheduleInfo15initialize_taskEP7ElementP4TaskbP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12ScheduleInfo15initialize_taskEP7ElementP4TaskbP12ErrorHandler); -+extern char _ZN12ScheduleInfo5queryEP7ElementP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12ScheduleInfo5queryEP7ElementP12ErrorHandler); -+extern char _ZN12ScheduleInfo9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12ScheduleInfo9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12ScheduleInfoC1Ev[]; -+EXPORT_SYMBOL(_ZN12ScheduleInfoC1Ev); -+extern char _ZN12ScheduleInfoC2Ev[]; -+EXPORT_SYMBOL(_ZN12ScheduleInfoC2Ev); -+extern char _ZN12ScheduleInfoD0Ev[]; -+EXPORT_SYMBOL(_ZN12ScheduleInfoD0Ev); -+extern char _ZN12ScheduleInfoD1Ev[]; -+EXPORT_SYMBOL(_ZN12ScheduleInfoD1Ev); -+extern char _ZN12ScheduleInfoD2Ev[]; -+EXPORT_SYMBOL(_ZN12ScheduleInfoD2Ev); -+extern char _ZNK12ScheduleInfo10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12ScheduleInfo10class_nameEv); -+extern char _ZNK12ScheduleInfo15configure_phaseEv[]; -+EXPORT_SYMBOL(_ZNK12ScheduleInfo15configure_phaseEv); -+extern char _ZTV12ScheduleInfo[]; -+EXPORT_SYMBOL(_ZTV12ScheduleInfo); -+extern char _ZN13ScheduleLinux10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13ScheduleLinux10initializeEP12ErrorHandler); -+extern char _ZN13ScheduleLinux12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN13ScheduleLinux12add_handlersEv); -+extern char _ZN13ScheduleLinux8run_taskEP4Task[]; -+EXPORT_SYMBOL(_ZN13ScheduleLinux8run_taskEP4Task); -+extern char _ZN13ScheduleLinux9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13ScheduleLinux9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN13ScheduleLinuxC1Ev[]; -+EXPORT_SYMBOL(_ZN13ScheduleLinuxC1Ev); -+extern char _ZN13ScheduleLinuxC2Ev[]; -+EXPORT_SYMBOL(_ZN13ScheduleLinuxC2Ev); -+extern char _ZN13ScheduleLinuxD0Ev[]; -+EXPORT_SYMBOL(_ZN13ScheduleLinuxD0Ev); -+extern char _ZN13ScheduleLinuxD1Ev[]; -+EXPORT_SYMBOL(_ZN13ScheduleLinuxD1Ev); -+extern char _ZN13ScheduleLinuxD2Ev[]; -+EXPORT_SYMBOL(_ZN13ScheduleLinuxD2Ev); -+extern char _ZNK13ScheduleLinux10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK13ScheduleLinux10class_nameEv); -+extern char _ZTV13ScheduleLinux[]; -+EXPORT_SYMBOL(_ZTV13ScheduleLinux); -+extern char _ZN6Script10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN6Script10initializeEP12ErrorHandler); -+extern char _ZN6Script12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN6Script12add_handlersEv); -+extern char _ZN6Script12step_handlerEiR6StringP7ElementPK7HandlerP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN6Script12step_handlerEiR6StringP7ElementPK7HandlerP12ErrorHandler); -+extern char _ZN6Script14static_cleanupEv[]; -+EXPORT_SYMBOL(_ZN6Script14static_cleanupEv); -+extern char _ZN6Script17static_initializeEv[]; -+EXPORT_SYMBOL(_ZN6Script17static_initializeEv); -+extern char _ZN6Script18arithmetic_handlerEiR6StringP7ElementPK7HandlerP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN6Script18arithmetic_handlerEiR6StringP7ElementPK7HandlerP12ErrorHandler); -+extern char _ZN6Script4stepEiii[]; -+EXPORT_SYMBOL(_ZN6Script4stepEiii); -+extern char _ZN6Script8Expander6expandERK6StringiiR11StringAccum[]; -+EXPORT_SYMBOL(_ZN6Script8Expander6expandERK6StringiiR11StringAccum); -+extern char _ZN6Script8ExpanderD0Ev[]; -+EXPORT_SYMBOL(_ZN6Script8ExpanderD0Ev); -+extern char _ZN6Script8ExpanderD1Ev[]; -+EXPORT_SYMBOL(_ZN6Script8ExpanderD1Ev); -+extern char _ZN6Script8add_insnEiiiRK6String[]; -+EXPORT_SYMBOL(_ZN6Script8add_insnEiiiRK6String); -+extern char _ZN6Script9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN6Script9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN6Script9run_timerEP5Timer[]; -+EXPORT_SYMBOL(_ZN6Script9run_timerEP5Timer); -+extern char _ZN6ScriptC1Ev[]; -+EXPORT_SYMBOL(_ZN6ScriptC1Ev); -+extern char _ZN6ScriptC2Ev[]; -+EXPORT_SYMBOL(_ZN6ScriptC2Ev); -+extern char _ZN6ScriptD0Ev[]; -+EXPORT_SYMBOL(_ZN6ScriptD0Ev); -+extern char _ZN6ScriptD1Ev[]; -+EXPORT_SYMBOL(_ZN6ScriptD1Ev); -+extern char _ZN6ScriptD2Ev[]; -+EXPORT_SYMBOL(_ZN6ScriptD2Ev); -+extern char _ZNK6Script10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK6Script10class_nameEv); -+extern char _ZNK6Script10find_labelERK6String[]; -+EXPORT_SYMBOL(_ZNK6Script10find_labelERK6String); -+extern char _ZNK6Script13find_variableERK6String[]; -+EXPORT_SYMBOL(_ZNK6Script13find_variableERK6String); -+extern char _ZTV6Script[]; -+EXPORT_SYMBOL(_ZTV6Script); -+extern char _ZTVN6Script8ExpanderE[]; -+EXPORT_SYMBOL(_ZTVN6Script8ExpanderE); -+extern char _ZN11SetAnnoByte12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN11SetAnnoByte12add_handlersEv); -+extern char _ZN11SetAnnoByte13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN11SetAnnoByte13simple_actionEP6Packet); -+extern char _ZN11SetAnnoByte18value_read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN11SetAnnoByte18value_read_handlerEP7ElementPv); -+extern char _ZN11SetAnnoByte19offset_read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN11SetAnnoByte19offset_read_handlerEP7ElementPv); -+extern char _ZN11SetAnnoByte9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11SetAnnoByte9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN11SetAnnoByteC1Ev[]; -+EXPORT_SYMBOL(_ZN11SetAnnoByteC1Ev); -+extern char _ZN11SetAnnoByteC2Ev[]; -+EXPORT_SYMBOL(_ZN11SetAnnoByteC2Ev); -+extern char _ZN11SetAnnoByteD0Ev[]; -+EXPORT_SYMBOL(_ZN11SetAnnoByteD0Ev); -+extern char _ZN11SetAnnoByteD1Ev[]; -+EXPORT_SYMBOL(_ZN11SetAnnoByteD1Ev); -+extern char _ZN11SetAnnoByteD2Ev[]; -+EXPORT_SYMBOL(_ZN11SetAnnoByteD2Ev); -+extern char _ZNK11SetAnnoByte10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK11SetAnnoByte10class_nameEv); -+extern char _ZNK11SetAnnoByte10port_countEv[]; -+EXPORT_SYMBOL(_ZNK11SetAnnoByte10port_countEv); -+extern char _ZNK11SetAnnoByte10processingEv[]; -+EXPORT_SYMBOL(_ZNK11SetAnnoByte10processingEv); -+extern char _ZNK11SetAnnoByte20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK11SetAnnoByte20can_live_reconfigureEv); -+extern char _ZTV11SetAnnoByte[]; -+EXPORT_SYMBOL(_ZTV11SetAnnoByte); -+extern char _ZN8SetCRC3213simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN8SetCRC3213simple_actionEP6Packet); -+extern char _ZN8SetCRC32C1Ev[]; -+EXPORT_SYMBOL(_ZN8SetCRC32C1Ev); -+extern char _ZN8SetCRC32C2Ev[]; -+EXPORT_SYMBOL(_ZN8SetCRC32C2Ev); -+extern char _ZN8SetCRC32D0Ev[]; -+EXPORT_SYMBOL(_ZN8SetCRC32D0Ev); -+extern char _ZN8SetCRC32D1Ev[]; -+EXPORT_SYMBOL(_ZN8SetCRC32D1Ev); -+extern char _ZN8SetCRC32D2Ev[]; -+EXPORT_SYMBOL(_ZN8SetCRC32D2Ev); -+extern char _ZNK8SetCRC3210class_nameEv[]; -+EXPORT_SYMBOL(_ZNK8SetCRC3210class_nameEv); -+extern char _ZNK8SetCRC3210port_countEv[]; -+EXPORT_SYMBOL(_ZNK8SetCRC3210port_countEv); -+extern char _ZNK8SetCRC3210processingEv[]; -+EXPORT_SYMBOL(_ZNK8SetCRC3210processingEv); -+extern char _ZTV8SetCRC32[]; -+EXPORT_SYMBOL(_ZTV8SetCRC32); -+extern char _ZN13SetCycleCount4pullEi[]; -+EXPORT_SYMBOL(_ZN13SetCycleCount4pullEi); -+extern char _ZN13SetCycleCount4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN13SetCycleCount4pushEiP6Packet); -+extern char _ZN13SetCycleCountC1Ev[]; -+EXPORT_SYMBOL(_ZN13SetCycleCountC1Ev); -+extern char _ZN13SetCycleCountC2Ev[]; -+EXPORT_SYMBOL(_ZN13SetCycleCountC2Ev); -+extern char _ZN13SetCycleCountD0Ev[]; -+EXPORT_SYMBOL(_ZN13SetCycleCountD0Ev); -+extern char _ZN13SetCycleCountD1Ev[]; -+EXPORT_SYMBOL(_ZN13SetCycleCountD1Ev); -+extern char _ZN13SetCycleCountD2Ev[]; -+EXPORT_SYMBOL(_ZN13SetCycleCountD2Ev); -+extern char _ZNK13SetCycleCount10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK13SetCycleCount10class_nameEv); -+extern char _ZNK13SetCycleCount10port_countEv[]; -+EXPORT_SYMBOL(_ZNK13SetCycleCount10port_countEv); -+extern char _ZNK13SetCycleCount10processingEv[]; -+EXPORT_SYMBOL(_ZNK13SetCycleCount10processingEv); -+extern char _ZTV13SetCycleCount[]; -+EXPORT_SYMBOL(_ZTV13SetCycleCount); -+extern char _ZN12SetIPAddress13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN12SetIPAddress13simple_actionEP6Packet); -+extern char _ZN12SetIPAddress9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12SetIPAddress9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12SetIPAddressC1Ev[]; -+EXPORT_SYMBOL(_ZN12SetIPAddressC1Ev); -+extern char _ZN12SetIPAddressC2Ev[]; -+EXPORT_SYMBOL(_ZN12SetIPAddressC2Ev); -+extern char _ZN12SetIPAddressD0Ev[]; -+EXPORT_SYMBOL(_ZN12SetIPAddressD0Ev); -+extern char _ZN12SetIPAddressD1Ev[]; -+EXPORT_SYMBOL(_ZN12SetIPAddressD1Ev); -+extern char _ZN12SetIPAddressD2Ev[]; -+EXPORT_SYMBOL(_ZN12SetIPAddressD2Ev); -+extern char _ZNK12SetIPAddress10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12SetIPAddress10class_nameEv); -+extern char _ZNK12SetIPAddress10port_countEv[]; -+EXPORT_SYMBOL(_ZNK12SetIPAddress10port_countEv); -+extern char _ZNK12SetIPAddress10processingEv[]; -+EXPORT_SYMBOL(_ZNK12SetIPAddress10processingEv); -+extern char _ZNK12SetIPAddress20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK12SetIPAddress20can_live_reconfigureEv); -+extern char _ZTV12SetIPAddress[]; -+EXPORT_SYMBOL(_ZTV12SetIPAddress); -+extern char _ZN13SetIPChecksum13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN13SetIPChecksum13simple_actionEP6Packet); -+extern char _ZN13SetIPChecksumC1Ev[]; -+EXPORT_SYMBOL(_ZN13SetIPChecksumC1Ev); -+extern char _ZN13SetIPChecksumC2Ev[]; -+EXPORT_SYMBOL(_ZN13SetIPChecksumC2Ev); -+extern char _ZN13SetIPChecksumD0Ev[]; -+EXPORT_SYMBOL(_ZN13SetIPChecksumD0Ev); -+extern char _ZN13SetIPChecksumD1Ev[]; -+EXPORT_SYMBOL(_ZN13SetIPChecksumD1Ev); -+extern char _ZN13SetIPChecksumD2Ev[]; -+EXPORT_SYMBOL(_ZN13SetIPChecksumD2Ev); -+extern char _ZNK13SetIPChecksum10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK13SetIPChecksum10class_nameEv); -+extern char _ZNK13SetIPChecksum10port_countEv[]; -+EXPORT_SYMBOL(_ZNK13SetIPChecksum10port_countEv); -+extern char _ZNK13SetIPChecksum10processingEv[]; -+EXPORT_SYMBOL(_ZNK13SetIPChecksum10processingEv); -+extern char _ZTV13SetIPChecksum[]; -+EXPORT_SYMBOL(_ZTV13SetIPChecksum); -+extern char _ZN9SetIPDSCP12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN9SetIPDSCP12add_handlersEv); -+extern char _ZN9SetIPDSCP4pullEi[]; -+EXPORT_SYMBOL(_ZN9SetIPDSCP4pullEi); -+extern char _ZN9SetIPDSCP4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN9SetIPDSCP4pushEiP6Packet); -+extern char _ZN9SetIPDSCP9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN9SetIPDSCP9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN9SetIPDSCPC1Ev[]; -+EXPORT_SYMBOL(_ZN9SetIPDSCPC1Ev); -+extern char _ZN9SetIPDSCPC2Ev[]; -+EXPORT_SYMBOL(_ZN9SetIPDSCPC2Ev); -+extern char _ZN9SetIPDSCPD0Ev[]; -+EXPORT_SYMBOL(_ZN9SetIPDSCPD0Ev); -+extern char _ZN9SetIPDSCPD1Ev[]; -+EXPORT_SYMBOL(_ZN9SetIPDSCPD1Ev); -+extern char _ZN9SetIPDSCPD2Ev[]; -+EXPORT_SYMBOL(_ZN9SetIPDSCPD2Ev); -+extern char _ZNK9SetIPDSCP10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK9SetIPDSCP10class_nameEv); -+extern char _ZNK9SetIPDSCP10port_countEv[]; -+EXPORT_SYMBOL(_ZNK9SetIPDSCP10port_countEv); -+extern char _ZNK9SetIPDSCP10processingEv[]; -+EXPORT_SYMBOL(_ZNK9SetIPDSCP10processingEv); -+extern char _ZNK9SetIPDSCP20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK9SetIPDSCP20can_live_reconfigureEv); -+extern char _ZTV9SetIPDSCP[]; -+EXPORT_SYMBOL(_ZTV9SetIPDSCP); -+extern char _ZN13SetPacketType10parse_typeERK6String[]; -+EXPORT_SYMBOL(_ZN13SetPacketType10parse_typeERK6String); -+extern char _ZN13SetPacketType12unparse_typeEi[]; -+EXPORT_SYMBOL(_ZN13SetPacketType12unparse_typeEi); -+extern char _ZN13SetPacketType13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN13SetPacketType13simple_actionEP6Packet); -+extern char _ZN13SetPacketType9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN13SetPacketType9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN13SetPacketTypeC1Ev[]; -+EXPORT_SYMBOL(_ZN13SetPacketTypeC1Ev); -+extern char _ZN13SetPacketTypeC2Ev[]; -+EXPORT_SYMBOL(_ZN13SetPacketTypeC2Ev); -+extern char _ZN13SetPacketTypeD0Ev[]; -+EXPORT_SYMBOL(_ZN13SetPacketTypeD0Ev); -+extern char _ZN13SetPacketTypeD1Ev[]; -+EXPORT_SYMBOL(_ZN13SetPacketTypeD1Ev); -+extern char _ZN13SetPacketTypeD2Ev[]; -+EXPORT_SYMBOL(_ZN13SetPacketTypeD2Ev); -+extern char _ZNK13SetPacketType10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK13SetPacketType10class_nameEv); -+extern char _ZNK13SetPacketType10port_countEv[]; -+EXPORT_SYMBOL(_ZNK13SetPacketType10port_countEv); -+extern char _ZNK13SetPacketType10processingEv[]; -+EXPORT_SYMBOL(_ZNK13SetPacketType10processingEv); -+extern char _ZNK13SetPacketType20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK13SetPacketType20can_live_reconfigureEv); -+extern char _ZTV13SetPacketType[]; -+EXPORT_SYMBOL(_ZTV13SetPacketType); -+extern char _ZN12SetPerfCount4castEPKc[]; -+EXPORT_SYMBOL(_ZN12SetPerfCount4castEPKc); -+extern char _ZN12SetPerfCount4pullEi[]; -+EXPORT_SYMBOL(_ZN12SetPerfCount4pullEi); -+extern char _ZN12SetPerfCount4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN12SetPerfCount4pushEiP6Packet); -+extern char _ZN12SetPerfCount9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12SetPerfCount9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12SetPerfCountC1Ev[]; -+EXPORT_SYMBOL(_ZN12SetPerfCountC1Ev); -+extern char _ZN12SetPerfCountC2Ev[]; -+EXPORT_SYMBOL(_ZN12SetPerfCountC2Ev); -+extern char _ZN12SetPerfCountD0Ev[]; -+EXPORT_SYMBOL(_ZN12SetPerfCountD0Ev); -+extern char _ZN12SetPerfCountD1Ev[]; -+EXPORT_SYMBOL(_ZN12SetPerfCountD1Ev); -+extern char _ZN12SetPerfCountD2Ev[]; -+EXPORT_SYMBOL(_ZN12SetPerfCountD2Ev); -+extern char _ZNK12SetPerfCount10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12SetPerfCount10class_nameEv); -+extern char _ZNK12SetPerfCount10port_countEv[]; -+EXPORT_SYMBOL(_ZNK12SetPerfCount10port_countEv); -+extern char _ZNK12SetPerfCount10processingEv[]; -+EXPORT_SYMBOL(_ZNK12SetPerfCount10processingEv); -+extern char _ZTV12SetPerfCount[]; -+EXPORT_SYMBOL(_ZTV12SetPerfCount); -+extern char _ZN16SetRandIPAddress13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN16SetRandIPAddress13simple_actionEP6Packet); -+extern char _ZN16SetRandIPAddress4pickEv[]; -+EXPORT_SYMBOL(_ZN16SetRandIPAddress4pickEv); -+extern char _ZN16SetRandIPAddress9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN16SetRandIPAddress9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN16SetRandIPAddressC1Ev[]; -+EXPORT_SYMBOL(_ZN16SetRandIPAddressC1Ev); -+extern char _ZN16SetRandIPAddressC2Ev[]; -+EXPORT_SYMBOL(_ZN16SetRandIPAddressC2Ev); -+extern char _ZN16SetRandIPAddressD0Ev[]; -+EXPORT_SYMBOL(_ZN16SetRandIPAddressD0Ev); -+extern char _ZN16SetRandIPAddressD1Ev[]; -+EXPORT_SYMBOL(_ZN16SetRandIPAddressD1Ev); -+extern char _ZN16SetRandIPAddressD2Ev[]; -+EXPORT_SYMBOL(_ZN16SetRandIPAddressD2Ev); -+extern char _ZNK16SetRandIPAddress10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK16SetRandIPAddress10class_nameEv); -+extern char _ZNK16SetRandIPAddress10port_countEv[]; -+EXPORT_SYMBOL(_ZNK16SetRandIPAddress10port_countEv); -+extern char _ZNK16SetRandIPAddress10processingEv[]; -+EXPORT_SYMBOL(_ZNK16SetRandIPAddress10processingEv); -+extern char _ZTV16SetRandIPAddress[]; -+EXPORT_SYMBOL(_ZTV16SetRandIPAddress); -+extern char _ZN14SetTCPChecksum13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN14SetTCPChecksum13simple_actionEP6Packet); -+extern char _ZN14SetTCPChecksum9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14SetTCPChecksum9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN14SetTCPChecksumC1Ev[]; -+EXPORT_SYMBOL(_ZN14SetTCPChecksumC1Ev); -+extern char _ZN14SetTCPChecksumC2Ev[]; -+EXPORT_SYMBOL(_ZN14SetTCPChecksumC2Ev); -+extern char _ZN14SetTCPChecksumD0Ev[]; -+EXPORT_SYMBOL(_ZN14SetTCPChecksumD0Ev); -+extern char _ZN14SetTCPChecksumD1Ev[]; -+EXPORT_SYMBOL(_ZN14SetTCPChecksumD1Ev); -+extern char _ZN14SetTCPChecksumD2Ev[]; -+EXPORT_SYMBOL(_ZN14SetTCPChecksumD2Ev); -+extern char _ZNK14SetTCPChecksum10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK14SetTCPChecksum10class_nameEv); -+extern char _ZNK14SetTCPChecksum10port_countEv[]; -+EXPORT_SYMBOL(_ZNK14SetTCPChecksum10port_countEv); -+extern char _ZNK14SetTCPChecksum10processingEv[]; -+EXPORT_SYMBOL(_ZNK14SetTCPChecksum10processingEv); -+extern char _ZTV14SetTCPChecksum[]; -+EXPORT_SYMBOL(_ZTV14SetTCPChecksum); -+extern char _ZN12SetTimestamp13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN12SetTimestamp13simple_actionEP6Packet); -+extern char _ZN12SetTimestamp9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12SetTimestamp9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12SetTimestampC1Ev[]; -+EXPORT_SYMBOL(_ZN12SetTimestampC1Ev); -+extern char _ZN12SetTimestampC2Ev[]; -+EXPORT_SYMBOL(_ZN12SetTimestampC2Ev); -+extern char _ZN12SetTimestampD0Ev[]; -+EXPORT_SYMBOL(_ZN12SetTimestampD0Ev); -+extern char _ZN12SetTimestampD1Ev[]; -+EXPORT_SYMBOL(_ZN12SetTimestampD1Ev); -+extern char _ZN12SetTimestampD2Ev[]; -+EXPORT_SYMBOL(_ZN12SetTimestampD2Ev); -+extern char _ZNK12SetTimestamp10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12SetTimestamp10class_nameEv); -+extern char _ZNK12SetTimestamp10port_countEv[]; -+EXPORT_SYMBOL(_ZNK12SetTimestamp10port_countEv); -+extern char _ZNK12SetTimestamp10processingEv[]; -+EXPORT_SYMBOL(_ZNK12SetTimestamp10processingEv); -+extern char _ZTV12SetTimestamp[]; -+EXPORT_SYMBOL(_ZTV12SetTimestamp); -+extern char _ZN14SetUDPChecksum13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN14SetUDPChecksum13simple_actionEP6Packet); -+extern char _ZN14SetUDPChecksumC1Ev[]; -+EXPORT_SYMBOL(_ZN14SetUDPChecksumC1Ev); -+extern char _ZN14SetUDPChecksumC2Ev[]; -+EXPORT_SYMBOL(_ZN14SetUDPChecksumC2Ev); -+extern char _ZN14SetUDPChecksumD0Ev[]; -+EXPORT_SYMBOL(_ZN14SetUDPChecksumD0Ev); -+extern char _ZN14SetUDPChecksumD1Ev[]; -+EXPORT_SYMBOL(_ZN14SetUDPChecksumD1Ev); -+extern char _ZN14SetUDPChecksumD2Ev[]; -+EXPORT_SYMBOL(_ZN14SetUDPChecksumD2Ev); -+extern char _ZNK14SetUDPChecksum10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK14SetUDPChecksum10class_nameEv); -+extern char _ZNK14SetUDPChecksum10port_countEv[]; -+EXPORT_SYMBOL(_ZNK14SetUDPChecksum10port_countEv); -+extern char _ZNK14SetUDPChecksum10processingEv[]; -+EXPORT_SYMBOL(_ZNK14SetUDPChecksum10processingEv); -+extern char _ZTV14SetUDPChecksum[]; -+EXPORT_SYMBOL(_ZTV14SetUDPChecksum); -+extern char _ZN6Shaper12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN6Shaper12add_handlersEv); -+extern char _ZN6Shaper4pullEi[]; -+EXPORT_SYMBOL(_ZN6Shaper4pullEi); -+extern char _ZN6Shaper9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN6Shaper9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN6ShaperC1Ev[]; -+EXPORT_SYMBOL(_ZN6ShaperC1Ev); -+extern char _ZN6ShaperC2Ev[]; -+EXPORT_SYMBOL(_ZN6ShaperC2Ev); -+extern char _ZN6ShaperD0Ev[]; -+EXPORT_SYMBOL(_ZN6ShaperD0Ev); -+extern char _ZN6ShaperD1Ev[]; -+EXPORT_SYMBOL(_ZN6ShaperD1Ev); -+extern char _ZN6ShaperD2Ev[]; -+EXPORT_SYMBOL(_ZN6ShaperD2Ev); -+extern char _ZNK6Shaper10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK6Shaper10class_nameEv); -+extern char _ZNK6Shaper13configurationER6VectorI6StringE[]; -+EXPORT_SYMBOL(_ZNK6Shaper13configurationER6VectorI6StringE); -+extern char _ZTV6Shaper[]; -+EXPORT_SYMBOL(_ZTV6Shaper); -+extern char _ZN11SimpleQueue10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11SimpleQueue10initializeEP12ErrorHandler); -+extern char _ZN11SimpleQueue10take_stateEP7ElementP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11SimpleQueue10take_stateEP7ElementP12ErrorHandler); -+extern char _ZN11SimpleQueue12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN11SimpleQueue12add_handlersEv); -+extern char _ZN11SimpleQueue12read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN11SimpleQueue12read_handlerEP7ElementPv); -+extern char _ZN11SimpleQueue13write_handlerERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11SimpleQueue13write_handlerERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN11SimpleQueue16live_reconfigureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11SimpleQueue16live_reconfigureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN11SimpleQueue4castEPKc[]; -+EXPORT_SYMBOL(_ZN11SimpleQueue4castEPKc); -+extern char _ZN11SimpleQueue4pullEi[]; -+EXPORT_SYMBOL(_ZN11SimpleQueue4pullEi); -+extern char _ZN11SimpleQueue4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN11SimpleQueue4pushEiP6Packet); -+extern char _ZN11SimpleQueue7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN11SimpleQueue7cleanupEN7Element12CleanupStageE); -+extern char _ZN11SimpleQueue9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11SimpleQueue9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN11SimpleQueueC1Ev[]; -+EXPORT_SYMBOL(_ZN11SimpleQueueC1Ev); -+extern char _ZN11SimpleQueueC2Ev[]; -+EXPORT_SYMBOL(_ZN11SimpleQueueC2Ev); -+extern char _ZN11SimpleQueueD0Ev[]; -+EXPORT_SYMBOL(_ZN11SimpleQueueD0Ev); -+extern char _ZN11SimpleQueueD1Ev[]; -+EXPORT_SYMBOL(_ZN11SimpleQueueD1Ev); -+extern char _ZN11SimpleQueueD2Ev[]; -+EXPORT_SYMBOL(_ZN11SimpleQueueD2Ev); -+extern char _ZNK11SimpleQueue10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK11SimpleQueue10class_nameEv); -+extern char _ZTV11SimpleQueue[]; -+EXPORT_SYMBOL(_ZTV11SimpleQueue); -+extern char _Z6jvcompI12chash_node_tIiEiXadL_ZNS1_3keyEEEEiPKvS3_[]; -+EXPORT_SYMBOL(_Z6jvcompI12chash_node_tIiEiXadL_ZNS1_3keyEEEEiPKvS3_); -+extern char _ZN18SourceIPHashMapper12parse_serverERK6StringPPN4IPRw7PatternEPiS7_S7_P7ElementP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN18SourceIPHashMapper12parse_serverERK6StringPPN4IPRw7PatternEPiS7_S7_P7ElementP12ErrorHandler); -+extern char _ZN18SourceIPHashMapper15notify_rewriterEP4IPRwP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN18SourceIPHashMapper15notify_rewriterEP4IPRwP12ErrorHandler); -+extern char _ZN18SourceIPHashMapper4castEPKc[]; -+EXPORT_SYMBOL(_ZN18SourceIPHashMapper4castEPKc); -+extern char _ZN18SourceIPHashMapper7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN18SourceIPHashMapper7cleanupEN7Element12CleanupStageE); -+extern char _ZN18SourceIPHashMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet[]; -+EXPORT_SYMBOL(_ZN18SourceIPHashMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet); -+extern char _ZN18SourceIPHashMapper9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN18SourceIPHashMapper9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN18SourceIPHashMapperC1Ev[]; -+EXPORT_SYMBOL(_ZN18SourceIPHashMapperC1Ev); -+extern char _ZN18SourceIPHashMapperC2Ev[]; -+EXPORT_SYMBOL(_ZN18SourceIPHashMapperC2Ev); -+extern char _ZN18SourceIPHashMapperD0Ev[]; -+EXPORT_SYMBOL(_ZN18SourceIPHashMapperD0Ev); -+extern char _ZN18SourceIPHashMapperD1Ev[]; -+EXPORT_SYMBOL(_ZN18SourceIPHashMapperD1Ev); -+extern char _ZN18SourceIPHashMapperD2Ev[]; -+EXPORT_SYMBOL(_ZN18SourceIPHashMapperD2Ev); -+extern char _ZNK18SourceIPHashMapper10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK18SourceIPHashMapper10class_nameEv); -+extern char _ZNK18SourceIPHashMapper15configure_phaseEv[]; -+EXPORT_SYMBOL(_ZNK18SourceIPHashMapper15configure_phaseEv); -+extern char _ZTV18SourceIPHashMapper[]; -+EXPORT_SYMBOL(_ZTV18SourceIPHashMapper); -+extern char _ZThn60_N18SourceIPHashMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet[]; -+EXPORT_SYMBOL(_ZThn60_N18SourceIPHashMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet); -+extern char _ZThn60_N18SourceIPHashMapperD0Ev[]; -+EXPORT_SYMBOL(_ZThn60_N18SourceIPHashMapperD0Ev); -+extern char _ZThn60_N18SourceIPHashMapperD1Ev[]; -+EXPORT_SYMBOL(_ZThn60_N18SourceIPHashMapperD1Ev); -+extern char _Z11skbmgr_initv[]; -+EXPORT_SYMBOL(_Z11skbmgr_initv); -+extern char _Z14skbmgr_cleanupv[]; -+EXPORT_SYMBOL(_Z14skbmgr_cleanupv); -+extern char _Z19skbmgr_recycle_skbsP7sk_buff[]; -+EXPORT_SYMBOL(_Z19skbmgr_recycle_skbsP7sk_buff); -+extern char _Z20skbmgr_allocate_skbsjjPi[]; -+EXPORT_SYMBOL(_Z20skbmgr_allocate_skbsjjPi); -+extern char _ZN15RecycledSkbPool10initializeEv[]; -+EXPORT_SYMBOL(_ZN15RecycledSkbPool10initializeEv); -+extern char _ZN15RecycledSkbPool7cleanupEv[]; -+EXPORT_SYMBOL(_ZN15RecycledSkbPool7cleanupEv); -+extern char _ZN15RecycledSkbPool7recycleEP7sk_buff[]; -+EXPORT_SYMBOL(_ZN15RecycledSkbPool7recycleEP7sk_buff); -+extern char _ZN15RecycledSkbPool8allocateEjjiPi[]; -+EXPORT_SYMBOL(_ZN15RecycledSkbPool8allocateEjjiPi); -+extern char _ZN17RecycledSkbBucket10initializeEv[]; -+EXPORT_SYMBOL(_ZN17RecycledSkbBucket10initializeEv); -+extern char _ZN17RecycledSkbBucket7cleanupEv[]; -+EXPORT_SYMBOL(_ZN17RecycledSkbBucket7cleanupEv); -+extern char _ZN14SortedIPLookup10sort_tableEv[]; -+EXPORT_SYMBOL(_ZN14SortedIPLookup10sort_tableEv); -+extern char _ZN14SortedIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14SortedIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler); -+extern char _ZN14SortedIPLookup4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN14SortedIPLookup4pushEiP6Packet); -+extern char _ZN14SortedIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14SortedIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler); -+extern char _ZN14SortedIPLookup9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14SortedIPLookup9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN14SortedIPLookupC1Ev[]; -+EXPORT_SYMBOL(_ZN14SortedIPLookupC1Ev); -+extern char _ZN14SortedIPLookupC2Ev[]; -+EXPORT_SYMBOL(_ZN14SortedIPLookupC2Ev); -+extern char _ZN14SortedIPLookupD0Ev[]; -+EXPORT_SYMBOL(_ZN14SortedIPLookupD0Ev); -+extern char _ZN14SortedIPLookupD1Ev[]; -+EXPORT_SYMBOL(_ZN14SortedIPLookupD1Ev); -+extern char _ZN14SortedIPLookupD2Ev[]; -+EXPORT_SYMBOL(_ZN14SortedIPLookupD2Ev); -+extern char _ZN6VectorI7IPRouteE4swapERS1_[]; -+EXPORT_SYMBOL(_ZN6VectorI7IPRouteE4swapERS1_); -+extern char _ZN6VectorI7IPRouteE6resizeEiRKS0_[]; -+EXPORT_SYMBOL(_ZN6VectorI7IPRouteE6resizeEiRKS0_); -+extern char _ZN6VectorI7IPRouteEC1ERKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorI7IPRouteEC1ERKS1_); -+extern char _ZN6VectorI7IPRouteEaSERKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorI7IPRouteEaSERKS1_); -+extern char _ZNK14SortedIPLookup10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK14SortedIPLookup10class_nameEv); -+extern char _ZNK14SortedIPLookup5checkEv[]; -+EXPORT_SYMBOL(_ZNK14SortedIPLookup5checkEv); -+extern char _ZTV14SortedIPLookup[]; -+EXPORT_SYMBOL(_ZTV14SortedIPLookup); -+extern char _ZN15SpinlockAcquire13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN15SpinlockAcquire13simple_actionEP6Packet); -+extern char _ZN15SpinlockAcquire9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN15SpinlockAcquire9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN15SpinlockAcquireD0Ev[]; -+EXPORT_SYMBOL(_ZN15SpinlockAcquireD0Ev); -+extern char _ZN15SpinlockAcquireD1Ev[]; -+EXPORT_SYMBOL(_ZN15SpinlockAcquireD1Ev); -+extern char _ZNK15SpinlockAcquire10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK15SpinlockAcquire10class_nameEv); -+extern char _ZNK15SpinlockAcquire10port_countEv[]; -+EXPORT_SYMBOL(_ZNK15SpinlockAcquire10port_countEv); -+extern char _ZNK15SpinlockAcquire10processingEv[]; -+EXPORT_SYMBOL(_ZNK15SpinlockAcquire10processingEv); -+extern char _ZTV15SpinlockAcquire[]; -+EXPORT_SYMBOL(_ZTV15SpinlockAcquire); -+extern char _ZN12SpinlockInfo12add_spinlockERK6VectorI6StringERKS1_P12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12SpinlockInfo12add_spinlockERK6VectorI6StringERKS1_P12ErrorHandler); -+extern char _ZN12SpinlockInfo7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN12SpinlockInfo7cleanupEN7Element12CleanupStageE); -+extern char _ZN12SpinlockInfo9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12SpinlockInfo9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12SpinlockInfoC1Ev[]; -+EXPORT_SYMBOL(_ZN12SpinlockInfoC1Ev); -+extern char _ZN12SpinlockInfoC2Ev[]; -+EXPORT_SYMBOL(_ZN12SpinlockInfoC2Ev); -+extern char _ZN12SpinlockInfoD0Ev[]; -+EXPORT_SYMBOL(_ZN12SpinlockInfoD0Ev); -+extern char _ZN12SpinlockInfoD1Ev[]; -+EXPORT_SYMBOL(_ZN12SpinlockInfoD1Ev); -+extern char _ZN12SpinlockInfoD2Ev[]; -+EXPORT_SYMBOL(_ZN12SpinlockInfoD2Ev); -+extern char _ZNK12SpinlockInfo10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12SpinlockInfo10class_nameEv); -+extern char _ZNK12SpinlockInfo15configure_phaseEv[]; -+EXPORT_SYMBOL(_ZNK12SpinlockInfo15configure_phaseEv); -+extern char _ZNK12SpinlockInfo5queryERK6StringS2_[]; -+EXPORT_SYMBOL(_ZNK12SpinlockInfo5queryERK6StringS2_); -+extern char _ZTV12SpinlockInfo[]; -+EXPORT_SYMBOL(_ZTV12SpinlockInfo); -+extern char _ZN15SpinlockRelease13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN15SpinlockRelease13simple_actionEP6Packet); -+extern char _ZN15SpinlockRelease9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN15SpinlockRelease9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN15SpinlockReleaseD0Ev[]; -+EXPORT_SYMBOL(_ZN15SpinlockReleaseD0Ev); -+extern char _ZN15SpinlockReleaseD1Ev[]; -+EXPORT_SYMBOL(_ZN15SpinlockReleaseD1Ev); -+extern char _ZNK15SpinlockRelease10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK15SpinlockRelease10class_nameEv); -+extern char _ZNK15SpinlockRelease10port_countEv[]; -+EXPORT_SYMBOL(_ZNK15SpinlockRelease10port_countEv); -+extern char _ZNK15SpinlockRelease10processingEv[]; -+EXPORT_SYMBOL(_ZNK15SpinlockRelease10processingEv); -+extern char _ZTV15SpinlockRelease[]; -+EXPORT_SYMBOL(_ZTV15SpinlockRelease); -+extern char _ZN16StaticPullSwitch4pullEi[]; -+EXPORT_SYMBOL(_ZN16StaticPullSwitch4pullEi); -+extern char _ZN16StaticPullSwitch9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN16StaticPullSwitch9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN16StaticPullSwitchC1Ev[]; -+EXPORT_SYMBOL(_ZN16StaticPullSwitchC1Ev); -+extern char _ZN16StaticPullSwitchC2Ev[]; -+EXPORT_SYMBOL(_ZN16StaticPullSwitchC2Ev); -+extern char _ZN16StaticPullSwitchD0Ev[]; -+EXPORT_SYMBOL(_ZN16StaticPullSwitchD0Ev); -+extern char _ZN16StaticPullSwitchD1Ev[]; -+EXPORT_SYMBOL(_ZN16StaticPullSwitchD1Ev); -+extern char _ZN16StaticPullSwitchD2Ev[]; -+EXPORT_SYMBOL(_ZN16StaticPullSwitchD2Ev); -+extern char _ZNK16StaticPullSwitch10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK16StaticPullSwitch10class_nameEv); -+extern char _ZNK16StaticPullSwitch10port_countEv[]; -+EXPORT_SYMBOL(_ZNK16StaticPullSwitch10port_countEv); -+extern char _ZNK16StaticPullSwitch10processingEv[]; -+EXPORT_SYMBOL(_ZNK16StaticPullSwitch10processingEv); -+extern char _ZTV16StaticPullSwitch[]; -+EXPORT_SYMBOL(_ZTV16StaticPullSwitch); -+extern char _ZN12StaticSwitch4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN12StaticSwitch4pushEiP6Packet); -+extern char _ZN12StaticSwitch9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN12StaticSwitch9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN12StaticSwitchC1Ev[]; -+EXPORT_SYMBOL(_ZN12StaticSwitchC1Ev); -+extern char _ZN12StaticSwitchC2Ev[]; -+EXPORT_SYMBOL(_ZN12StaticSwitchC2Ev); -+extern char _ZN12StaticSwitchD0Ev[]; -+EXPORT_SYMBOL(_ZN12StaticSwitchD0Ev); -+extern char _ZN12StaticSwitchD1Ev[]; -+EXPORT_SYMBOL(_ZN12StaticSwitchD1Ev); -+extern char _ZN12StaticSwitchD2Ev[]; -+EXPORT_SYMBOL(_ZN12StaticSwitchD2Ev); -+extern char _ZNK12StaticSwitch10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12StaticSwitch10class_nameEv); -+extern char _ZNK12StaticSwitch10port_countEv[]; -+EXPORT_SYMBOL(_ZNK12StaticSwitch10port_countEv); -+extern char _ZNK12StaticSwitch10processingEv[]; -+EXPORT_SYMBOL(_ZNK12StaticSwitch10processingEv); -+extern char _ZTV12StaticSwitch[]; -+EXPORT_SYMBOL(_ZTV12StaticSwitch); -+extern char _ZN17StaticThreadSched22initial_home_thread_idEP4Taskb[]; -+EXPORT_SYMBOL(_ZN17StaticThreadSched22initial_home_thread_idEP4Taskb); -+extern char _ZN17StaticThreadSched9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN17StaticThreadSched9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN17StaticThreadSchedC1Ev[]; -+EXPORT_SYMBOL(_ZN17StaticThreadSchedC1Ev); -+extern char _ZN17StaticThreadSchedC2Ev[]; -+EXPORT_SYMBOL(_ZN17StaticThreadSchedC2Ev); -+extern char _ZN17StaticThreadSchedD0Ev[]; -+EXPORT_SYMBOL(_ZN17StaticThreadSchedD0Ev); -+extern char _ZN17StaticThreadSchedD1Ev[]; -+EXPORT_SYMBOL(_ZN17StaticThreadSchedD1Ev); -+extern char _ZN17StaticThreadSchedD2Ev[]; -+EXPORT_SYMBOL(_ZN17StaticThreadSchedD2Ev); -+extern char _ZNK17StaticThreadSched10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK17StaticThreadSched10class_nameEv); -+extern char _ZTV17StaticThreadSched[]; -+EXPORT_SYMBOL(_ZTV17StaticThreadSched); -+extern char _ZThn60_N17StaticThreadSched22initial_home_thread_idEP4Taskb[]; -+EXPORT_SYMBOL(_ZThn60_N17StaticThreadSched22initial_home_thread_idEP4Taskb); -+extern char _ZThn60_N17StaticThreadSchedD0Ev[]; -+EXPORT_SYMBOL(_ZThn60_N17StaticThreadSchedD0Ev); -+extern char _ZThn60_N17StaticThreadSchedD1Ev[]; -+EXPORT_SYMBOL(_ZThn60_N17StaticThreadSchedD1Ev); -+extern char _ZN9StoreData13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN9StoreData13simple_actionEP6Packet); -+extern char _ZN9StoreData9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN9StoreData9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN9StoreDataC1Ev[]; -+EXPORT_SYMBOL(_ZN9StoreDataC1Ev); -+extern char _ZN9StoreDataC2Ev[]; -+EXPORT_SYMBOL(_ZN9StoreDataC2Ev); -+extern char _ZN9StoreDataD0Ev[]; -+EXPORT_SYMBOL(_ZN9StoreDataD0Ev); -+extern char _ZN9StoreDataD1Ev[]; -+EXPORT_SYMBOL(_ZN9StoreDataD1Ev); -+extern char _ZN9StoreDataD2Ev[]; -+EXPORT_SYMBOL(_ZN9StoreDataD2Ev); -+extern char _ZNK9StoreData10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK9StoreData10class_nameEv); -+extern char _ZNK9StoreData10port_countEv[]; -+EXPORT_SYMBOL(_ZNK9StoreData10port_countEv); -+extern char _ZNK9StoreData10processingEv[]; -+EXPORT_SYMBOL(_ZNK9StoreData10processingEv); -+extern char _ZTV9StoreData[]; -+EXPORT_SYMBOL(_ZTV9StoreData); -+extern char _ZN14StoreIPAddress13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN14StoreIPAddress13simple_actionEP6Packet); -+extern char _ZN14StoreIPAddress9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN14StoreIPAddress9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN14StoreIPAddressC1Ev[]; -+EXPORT_SYMBOL(_ZN14StoreIPAddressC1Ev); -+extern char _ZN14StoreIPAddressC2Ev[]; -+EXPORT_SYMBOL(_ZN14StoreIPAddressC2Ev); -+extern char _ZN14StoreIPAddressD0Ev[]; -+EXPORT_SYMBOL(_ZN14StoreIPAddressD0Ev); -+extern char _ZN14StoreIPAddressD1Ev[]; -+EXPORT_SYMBOL(_ZN14StoreIPAddressD1Ev); -+extern char _ZN14StoreIPAddressD2Ev[]; -+EXPORT_SYMBOL(_ZN14StoreIPAddressD2Ev); -+extern char _ZNK14StoreIPAddress10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK14StoreIPAddress10class_nameEv); -+extern char _ZNK14StoreIPAddress10port_countEv[]; -+EXPORT_SYMBOL(_ZNK14StoreIPAddress10port_countEv); -+extern char _ZNK14StoreIPAddress10processingEv[]; -+EXPORT_SYMBOL(_ZNK14StoreIPAddress10processingEv); -+extern char _ZTV14StoreIPAddress[]; -+EXPORT_SYMBOL(_ZTV14StoreIPAddress); -+extern char _ZN11StringAccum11append_fillEii[]; -+EXPORT_SYMBOL(_ZN11StringAccum11append_fillEii); -+extern char _ZN11StringAccum11take_stringEv[]; -+EXPORT_SYMBOL(_ZN11StringAccum11take_stringEv); -+extern char _ZN11StringAccum14append_numericExib[]; -+EXPORT_SYMBOL(_ZN11StringAccum14append_numericExib); -+extern char _ZN11StringAccum14append_numericEyib[]; -+EXPORT_SYMBOL(_ZN11StringAccum14append_numericEyib); -+extern char _ZN11StringAccum18make_out_of_memoryEv[]; -+EXPORT_SYMBOL(_ZN11StringAccum18make_out_of_memoryEv); -+extern char _ZN11StringAccum4growEi[]; -+EXPORT_SYMBOL(_ZN11StringAccum4growEi); -+extern char _ZN11StringAccum4swapERS_[]; -+EXPORT_SYMBOL(_ZN11StringAccum4swapERS_); -+extern char _ZN11StringAccum5c_strEv[]; -+EXPORT_SYMBOL(_ZN11StringAccum5c_strEv); -+extern char _ZN11StringAccum8snprintfEiPKcz[]; -+EXPORT_SYMBOL(_ZN11StringAccum8snprintfEiPKcz); -+extern char _ZlsR11StringAccumPv[]; -+EXPORT_SYMBOL(_ZlsR11StringAccumPv); -+extern char _ZlsR11StringAccuml[]; -+EXPORT_SYMBOL(_ZlsR11StringAccuml); -+extern char _ZlsR11StringAccumm[]; -+EXPORT_SYMBOL(_ZlsR11StringAccumm); -+extern char _ZN11StrideSched10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11StrideSched10initializeEP12ErrorHandler); -+extern char _ZN11StrideSched11set_ticketsEiiP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11StrideSched11set_ticketsEiiP12ErrorHandler); -+extern char _ZN11StrideSched12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN11StrideSched12add_handlersEv); -+extern char _ZN11StrideSched4pullEi[]; -+EXPORT_SYMBOL(_ZN11StrideSched4pullEi); -+extern char _ZN11StrideSched7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN11StrideSched7cleanupEN7Element12CleanupStageE); -+extern char _ZN11StrideSched9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11StrideSched9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN11StrideSchedC1Ev[]; -+EXPORT_SYMBOL(_ZN11StrideSchedC1Ev); -+extern char _ZN11StrideSchedC2Ev[]; -+EXPORT_SYMBOL(_ZN11StrideSchedC2Ev); -+extern char _ZN11StrideSchedD0Ev[]; -+EXPORT_SYMBOL(_ZN11StrideSchedD0Ev); -+extern char _ZN11StrideSchedD1Ev[]; -+EXPORT_SYMBOL(_ZN11StrideSchedD1Ev); -+extern char _ZN11StrideSchedD2Ev[]; -+EXPORT_SYMBOL(_ZN11StrideSchedD2Ev); -+extern char _ZNK11StrideSched10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK11StrideSched10class_nameEv); -+extern char _ZNK11StrideSched10port_countEv[]; -+EXPORT_SYMBOL(_ZNK11StrideSched10port_countEv); -+extern char _ZNK11StrideSched10processingEv[]; -+EXPORT_SYMBOL(_ZNK11StrideSched10processingEv); -+extern char _ZNK11StrideSched7ticketsEi[]; -+EXPORT_SYMBOL(_ZNK11StrideSched7ticketsEi); -+extern char _ZTV11StrideSched[]; -+EXPORT_SYMBOL(_ZTV11StrideSched); -+extern char _ZN12StrideSwitch4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN12StrideSwitch4pushEiP6Packet); -+extern char _ZN12StrideSwitchC1Ev[]; -+EXPORT_SYMBOL(_ZN12StrideSwitchC1Ev); -+extern char _ZN12StrideSwitchC2Ev[]; -+EXPORT_SYMBOL(_ZN12StrideSwitchC2Ev); -+extern char _ZN12StrideSwitchD0Ev[]; -+EXPORT_SYMBOL(_ZN12StrideSwitchD0Ev); -+extern char _ZN12StrideSwitchD1Ev[]; -+EXPORT_SYMBOL(_ZN12StrideSwitchD1Ev); -+extern char _ZN12StrideSwitchD2Ev[]; -+EXPORT_SYMBOL(_ZN12StrideSwitchD2Ev); -+extern char _ZNK12StrideSwitch10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK12StrideSwitch10class_nameEv); -+extern char _ZNK12StrideSwitch10port_countEv[]; -+EXPORT_SYMBOL(_ZNK12StrideSwitch10port_countEv); -+extern char _ZNK12StrideSwitch10processingEv[]; -+EXPORT_SYMBOL(_ZNK12StrideSwitch10processingEv); -+extern char _ZTV12StrideSwitch[]; -+EXPORT_SYMBOL(_ZTV12StrideSwitch); -+extern char _ZN6String11InitializerC1Ev[]; -+EXPORT_SYMBOL(_ZN6String11InitializerC1Ev); -+extern char _ZN6String11InitializerC2Ev[]; -+EXPORT_SYMBOL(_ZN6String11InitializerC2Ev); -+extern char _ZN6String11append_fillEii[]; -+EXPORT_SYMBOL(_ZN6String11append_fillEii); -+extern char _ZN6String12claim_stringEPcii[]; -+EXPORT_SYMBOL(_ZN6String12claim_stringEPcii); -+extern char _ZN6String12mutable_dataEv[]; -+EXPORT_SYMBOL(_ZN6String12mutable_dataEv); -+extern char _ZN6String12oom_string_pE[]; -+EXPORT_SYMBOL(_ZN6String12oom_string_pE); -+extern char _ZN6String13mutable_c_strEv[]; -+EXPORT_SYMBOL(_ZN6String13mutable_c_strEv); -+extern char _ZN6String13null_string_pE[]; -+EXPORT_SYMBOL(_ZN6String13null_string_pE); -+extern char _ZN6String13stable_stringEPKci[]; -+EXPORT_SYMBOL(_ZN6String13stable_stringEPKci); -+extern char _ZN6String14append_garbageEi[]; -+EXPORT_SYMBOL(_ZN6String14append_garbageEi); -+extern char _ZN6String14garbage_stringEi[]; -+EXPORT_SYMBOL(_ZN6String14garbage_stringEi); -+extern char _ZN6String14numeric_stringExib[]; -+EXPORT_SYMBOL(_ZN6String14numeric_stringExib); -+extern char _ZN6String14numeric_stringEyib[]; -+EXPORT_SYMBOL(_ZN6String14numeric_stringEyib); -+extern char _ZN6String14permanent_memoE[]; -+EXPORT_SYMBOL(_ZN6String14permanent_memoE); -+extern char _ZN6String14static_cleanupEv[]; -+EXPORT_SYMBOL(_ZN6String14static_cleanupEv); -+extern char _ZN6String15oom_string_dataE[]; -+EXPORT_SYMBOL(_ZN6String15oom_string_dataE); -+extern char _ZN6String17static_initializeEv[]; -+EXPORT_SYMBOL(_ZN6String17static_initializeEv); -+extern char _ZN6String18make_out_of_memoryEv[]; -+EXPORT_SYMBOL(_ZN6String18make_out_of_memoryEv); -+extern char _ZN6String4MemoC1Eii[]; -+EXPORT_SYMBOL(_ZN6String4MemoC1Eii); -+extern char _ZN6String4MemoC2Eii[]; -+EXPORT_SYMBOL(_ZN6String4MemoC2Eii); -+extern char _ZN6String4MemoD1Ev[]; -+EXPORT_SYMBOL(_ZN6String4MemoD1Ev); -+extern char _ZN6String4MemoD2Ev[]; -+EXPORT_SYMBOL(_ZN6String4MemoD2Ev); -+extern char _ZN6String6appendEPKci[]; -+EXPORT_SYMBOL(_ZN6String6appendEPKci); -+extern char _ZN6String6assignEPKci[]; -+EXPORT_SYMBOL(_ZN6String6assignEPKci); -+extern char _ZN6String8oom_memoE[]; -+EXPORT_SYMBOL(_ZN6String8oom_memoE); -+extern char _ZN6String9null_memoE[]; -+EXPORT_SYMBOL(_ZN6String9null_memoE); -+extern char _ZN6StringC1Ei[]; -+EXPORT_SYMBOL(_ZN6StringC1Ei); -+extern char _ZN6StringC1Ej[]; -+EXPORT_SYMBOL(_ZN6StringC1Ej); -+extern char _ZN6StringC1El[]; -+EXPORT_SYMBOL(_ZN6StringC1El); -+extern char _ZN6StringC1Em[]; -+EXPORT_SYMBOL(_ZN6StringC1Em); -+extern char _ZN6StringC1Ex[]; -+EXPORT_SYMBOL(_ZN6StringC1Ex); -+extern char _ZN6StringC1Ey[]; -+EXPORT_SYMBOL(_ZN6StringC1Ey); -+extern char _ZN6StringC2Ei[]; -+EXPORT_SYMBOL(_ZN6StringC2Ei); -+extern char _ZN6StringC2Ej[]; -+EXPORT_SYMBOL(_ZN6StringC2Ej); -+extern char _ZN6StringC2El[]; -+EXPORT_SYMBOL(_ZN6StringC2El); -+extern char _ZN6StringC2Em[]; -+EXPORT_SYMBOL(_ZN6StringC2Em); -+extern char _ZN6StringC2Ex[]; -+EXPORT_SYMBOL(_ZN6StringC2Ex); -+extern char _ZN6StringC2Ey[]; -+EXPORT_SYMBOL(_ZN6StringC2Ey); -+extern char _ZNK6String10find_rightEci[]; -+EXPORT_SYMBOL(_ZNK6String10find_rightEci); -+extern char _ZNK6String10quoted_hexEv[]; -+EXPORT_SYMBOL(_ZNK6String10quoted_hexEv); -+extern char _ZNK6String10trim_spaceEv[]; -+EXPORT_SYMBOL(_ZNK6String10trim_spaceEv); -+extern char _ZNK6String5c_strEv[]; -+EXPORT_SYMBOL(_ZNK6String5c_strEv); -+extern char _ZNK6String5lowerEv[]; -+EXPORT_SYMBOL(_ZNK6String5lowerEv); -+extern char _ZNK6String5upperEv[]; -+EXPORT_SYMBOL(_ZNK6String5upperEv); -+extern char _ZNK6String6equalsEPKci[]; -+EXPORT_SYMBOL(_ZNK6String6equalsEPKci); -+extern char _ZNK6String7compareEPKci[]; -+EXPORT_SYMBOL(_ZNK6String7compareEPKci); -+extern char _ZNK6String8hashcodeEv[]; -+EXPORT_SYMBOL(_ZNK6String8hashcodeEv); -+extern char _ZNK6String9find_leftERKS_i[]; -+EXPORT_SYMBOL(_ZNK6String9find_leftERKS_i); -+extern char _ZNK6String9find_leftEci[]; -+EXPORT_SYMBOL(_ZNK6String9find_leftEci); -+extern char _ZNK6String9printableEv[]; -+EXPORT_SYMBOL(_ZNK6String9printableEv); -+extern char _ZNK6String9substringEii[]; -+EXPORT_SYMBOL(_ZNK6String9substringEii); -+extern char _ZN5Strip13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN5Strip13simple_actionEP6Packet); -+extern char _ZN5Strip9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN5Strip9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN5StripC1Ev[]; -+EXPORT_SYMBOL(_ZN5StripC1Ev); -+extern char _ZN5StripC2Ev[]; -+EXPORT_SYMBOL(_ZN5StripC2Ev); -+extern char _ZN5StripD0Ev[]; -+EXPORT_SYMBOL(_ZN5StripD0Ev); -+extern char _ZN5StripD1Ev[]; -+EXPORT_SYMBOL(_ZN5StripD1Ev); -+extern char _ZN5StripD2Ev[]; -+EXPORT_SYMBOL(_ZN5StripD2Ev); -+extern char _ZNK5Strip10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK5Strip10class_nameEv); -+extern char _ZNK5Strip10port_countEv[]; -+EXPORT_SYMBOL(_ZNK5Strip10port_countEv); -+extern char _ZNK5Strip10processingEv[]; -+EXPORT_SYMBOL(_ZNK5Strip10processingEv); -+extern char _ZTV5Strip[]; -+EXPORT_SYMBOL(_ZTV5Strip); -+extern char _ZN13StripIPHeader13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN13StripIPHeader13simple_actionEP6Packet); -+extern char _ZN13StripIPHeaderC1Ev[]; -+EXPORT_SYMBOL(_ZN13StripIPHeaderC1Ev); -+extern char _ZN13StripIPHeaderC2Ev[]; -+EXPORT_SYMBOL(_ZN13StripIPHeaderC2Ev); -+extern char _ZN13StripIPHeaderD0Ev[]; -+EXPORT_SYMBOL(_ZN13StripIPHeaderD0Ev); -+extern char _ZN13StripIPHeaderD1Ev[]; -+EXPORT_SYMBOL(_ZN13StripIPHeaderD1Ev); -+extern char _ZN13StripIPHeaderD2Ev[]; -+EXPORT_SYMBOL(_ZN13StripIPHeaderD2Ev); -+extern char _ZNK13StripIPHeader10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK13StripIPHeader10class_nameEv); -+extern char _ZNK13StripIPHeader10port_countEv[]; -+EXPORT_SYMBOL(_ZNK13StripIPHeader10port_countEv); -+extern char _ZTV13StripIPHeader[]; -+EXPORT_SYMBOL(_ZTV13StripIPHeader); -+extern char _ZN20StripToNetworkHeader13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN20StripToNetworkHeader13simple_actionEP6Packet); -+extern char _ZN20StripToNetworkHeaderC1Ev[]; -+EXPORT_SYMBOL(_ZN20StripToNetworkHeaderC1Ev); -+extern char _ZN20StripToNetworkHeaderC2Ev[]; -+EXPORT_SYMBOL(_ZN20StripToNetworkHeaderC2Ev); -+extern char _ZN20StripToNetworkHeaderD0Ev[]; -+EXPORT_SYMBOL(_ZN20StripToNetworkHeaderD0Ev); -+extern char _ZN20StripToNetworkHeaderD1Ev[]; -+EXPORT_SYMBOL(_ZN20StripToNetworkHeaderD1Ev); -+extern char _ZN20StripToNetworkHeaderD2Ev[]; -+EXPORT_SYMBOL(_ZN20StripToNetworkHeaderD2Ev); -+extern char _ZNK20StripToNetworkHeader10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK20StripToNetworkHeader10class_nameEv); -+extern char _ZNK20StripToNetworkHeader10port_countEv[]; -+EXPORT_SYMBOL(_ZNK20StripToNetworkHeader10port_countEv); -+extern char _ZNK20StripToNetworkHeader10processingEv[]; -+EXPORT_SYMBOL(_ZNK20StripToNetworkHeader10processingEv); -+extern char _ZTV20StripToNetworkHeader[]; -+EXPORT_SYMBOL(_ZTV20StripToNetworkHeader); -+extern char _ZN10Suppressor10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10Suppressor10initializeEP12ErrorHandler); -+extern char _ZN10Suppressor12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN10Suppressor12add_handlersEv); -+extern char _ZN10Suppressor3setEib[]; -+EXPORT_SYMBOL(_ZN10Suppressor3setEib); -+extern char _ZN10Suppressor4pullEi[]; -+EXPORT_SYMBOL(_ZN10Suppressor4pullEi); -+extern char _ZN10Suppressor4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN10Suppressor4pushEiP6Packet); -+extern char _ZN10SuppressorC1Ev[]; -+EXPORT_SYMBOL(_ZN10SuppressorC1Ev); -+extern char _ZN10SuppressorC2Ev[]; -+EXPORT_SYMBOL(_ZN10SuppressorC2Ev); -+extern char _ZN10SuppressorD0Ev[]; -+EXPORT_SYMBOL(_ZN10SuppressorD0Ev); -+extern char _ZN10SuppressorD1Ev[]; -+EXPORT_SYMBOL(_ZN10SuppressorD1Ev); -+extern char _ZN10SuppressorD2Ev[]; -+EXPORT_SYMBOL(_ZN10SuppressorD2Ev); -+extern char _ZNK10Suppressor10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK10Suppressor10class_nameEv); -+extern char _ZNK10Suppressor10port_countEv[]; -+EXPORT_SYMBOL(_ZNK10Suppressor10port_countEv); -+extern char _ZNK10Suppressor10processingEv[]; -+EXPORT_SYMBOL(_ZNK10Suppressor10processingEv); -+extern char _ZNK10Suppressor9flow_codeEv[]; -+EXPORT_SYMBOL(_ZNK10Suppressor9flow_codeEv); -+extern char _ZTV10Suppressor[]; -+EXPORT_SYMBOL(_ZTV10Suppressor); -+extern char _ZN6Switch10read_paramEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN6Switch10read_paramEP7ElementPv); -+extern char _ZN6Switch11write_paramERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN6Switch11write_paramERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN6Switch12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN6Switch12add_handlersEv); -+extern char _ZN6Switch4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN6Switch4pushEiP6Packet); -+extern char _ZN6Switch5llrpcEjPv[]; -+EXPORT_SYMBOL(_ZN6Switch5llrpcEjPv); -+extern char _ZN6Switch9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN6Switch9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN6SwitchC1Ev[]; -+EXPORT_SYMBOL(_ZN6SwitchC1Ev); -+extern char _ZN6SwitchC2Ev[]; -+EXPORT_SYMBOL(_ZN6SwitchC2Ev); -+extern char _ZN6SwitchD0Ev[]; -+EXPORT_SYMBOL(_ZN6SwitchD0Ev); -+extern char _ZN6SwitchD1Ev[]; -+EXPORT_SYMBOL(_ZN6SwitchD1Ev); -+extern char _ZN6SwitchD2Ev[]; -+EXPORT_SYMBOL(_ZN6SwitchD2Ev); -+extern char _ZNK6Switch10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK6Switch10class_nameEv); -+extern char _ZNK6Switch10port_countEv[]; -+EXPORT_SYMBOL(_ZNK6Switch10port_countEv); -+extern char _ZNK6Switch10processingEv[]; -+EXPORT_SYMBOL(_ZNK6Switch10processingEv); -+extern char _ZNK6Switch13configurationER6VectorI6StringE[]; -+EXPORT_SYMBOL(_ZNK6Switch13configurationER6VectorI6StringE); -+extern char _ZNK6Switch20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK6Switch20can_live_reconfigureEv); -+extern char _ZTV6Switch[]; -+EXPORT_SYMBOL(_ZTV6Switch); -+extern char _ZN4Task10error_hookEPS_Pv[]; -+EXPORT_SYMBOL(_ZN4Task10error_hookEPS_Pv); -+extern char _ZN4Task10initializeEP6Routerb[]; -+EXPORT_SYMBOL(_ZN4Task10initializeEP6Routerb); -+extern char _ZN4Task10initializeEP7Elementb[]; -+EXPORT_SYMBOL(_ZN4Task10initializeEP7Elementb); -+extern char _ZN4Task10unscheduleEv[]; -+EXPORT_SYMBOL(_ZN4Task10unscheduleEv); -+extern char _ZN4Task11add_pendingEv[]; -+EXPORT_SYMBOL(_ZN4Task11add_pendingEv); -+extern char _ZN4Task11move_threadEi[]; -+EXPORT_SYMBOL(_ZN4Task11move_threadEi); -+extern char _ZN4Task15process_pendingEP12RouterThread[]; -+EXPORT_SYMBOL(_ZN4Task15process_pendingEP12RouterThread); -+extern char _ZN4Task15true_rescheduleEv[]; -+EXPORT_SYMBOL(_ZN4Task15true_rescheduleEv); -+extern char _ZN4Task17strong_rescheduleEv[]; -+EXPORT_SYMBOL(_ZN4Task17strong_rescheduleEv); -+extern char _ZN4Task17strong_unscheduleEv[]; -+EXPORT_SYMBOL(_ZN4Task17strong_unscheduleEv); -+extern char _ZN4Task7cleanupEv[]; -+EXPORT_SYMBOL(_ZN4Task7cleanupEv); -+extern char _ZN4TaskD1Ev[]; -+EXPORT_SYMBOL(_ZN4TaskD1Ev); -+extern char _ZN4TaskD2Ev[]; -+EXPORT_SYMBOL(_ZN4TaskD2Ev); -+extern char _ZNK4Task6masterEv[]; -+EXPORT_SYMBOL(_ZNK4Task6masterEv); -+extern char _ZN11TCPRewriter10TCPMapping10apply_sackEP9click_tcpi[]; -+EXPORT_SYMBOL(_ZN11TCPRewriter10TCPMapping10apply_sackEP9click_tcpi); -+extern char _ZN11TCPRewriter10TCPMapping18update_seqno_deltaEji[]; -+EXPORT_SYMBOL(_ZN11TCPRewriter10TCPMapping18update_seqno_deltaEji); -+extern char _ZN11TCPRewriter10TCPMapping5applyEP14WritablePacket[]; -+EXPORT_SYMBOL(_ZN11TCPRewriter10TCPMapping5applyEP14WritablePacket); -+extern char _ZN11TCPRewriter10TCPMappingC1Eb[]; -+EXPORT_SYMBOL(_ZN11TCPRewriter10TCPMappingC1Eb); -+extern char _ZN11TCPRewriter10TCPMappingC2Eb[]; -+EXPORT_SYMBOL(_ZN11TCPRewriter10TCPMappingC2Eb); -+extern char _ZN11TCPRewriter10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11TCPRewriter10initializeEP12ErrorHandler); -+extern char _ZN11TCPRewriter10take_stateEP7ElementP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11TCPRewriter10take_stateEP7ElementP12ErrorHandler); -+extern char _ZN11TCPRewriter11tcp_gc_hookEP5TimerPv[]; -+EXPORT_SYMBOL(_ZN11TCPRewriter11tcp_gc_hookEP5TimerPv); -+extern char _ZN11TCPRewriter12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN11TCPRewriter12add_handlersEv); -+extern char _ZN11TCPRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii[]; -+EXPORT_SYMBOL(_ZN11TCPRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii); -+extern char _ZN11TCPRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11TCPRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler); -+extern char _ZN11TCPRewriter16tcp_done_gc_hookEP5TimerPv[]; -+EXPORT_SYMBOL(_ZN11TCPRewriter16tcp_done_gc_hookEP5TimerPv); -+extern char _ZN11TCPRewriter21dump_mappings_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN11TCPRewriter21dump_mappings_handlerEP7ElementPv); -+extern char _ZN11TCPRewriter21dump_patterns_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN11TCPRewriter21dump_patterns_handlerEP7ElementPv); -+extern char _ZN11TCPRewriter22dump_nmappings_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN11TCPRewriter22dump_nmappings_handlerEP7ElementPv); -+extern char _ZN11TCPRewriter4castEPKc[]; -+EXPORT_SYMBOL(_ZN11TCPRewriter4castEPKc); -+extern char _ZN11TCPRewriter4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN11TCPRewriter4pushEiP6Packet); -+extern char _ZN11TCPRewriter5llrpcEjPv[]; -+EXPORT_SYMBOL(_ZN11TCPRewriter5llrpcEjPv); -+extern char _ZN11TCPRewriter7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN11TCPRewriter7cleanupEN7Element12CleanupStageE); -+extern char _ZN11TCPRewriter9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11TCPRewriter9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN11TCPRewriterC1Ev[]; -+EXPORT_SYMBOL(_ZN11TCPRewriterC1Ev); -+extern char _ZN11TCPRewriterC2Ev[]; -+EXPORT_SYMBOL(_ZN11TCPRewriterC2Ev); -+extern char _ZN11TCPRewriterD0Ev[]; -+EXPORT_SYMBOL(_ZN11TCPRewriterD0Ev); -+extern char _ZN11TCPRewriterD1Ev[]; -+EXPORT_SYMBOL(_ZN11TCPRewriterD1Ev); -+extern char _ZN11TCPRewriterD2Ev[]; -+EXPORT_SYMBOL(_ZN11TCPRewriterD2Ev); -+extern char _ZNK11TCPRewriter10TCPMapping1sEv[]; -+EXPORT_SYMBOL(_ZNK11TCPRewriter10TCPMapping1sEv); -+extern char _ZNK11TCPRewriter10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK11TCPRewriter10class_nameEv); -+extern char _ZNK11TCPRewriter10port_countEv[]; -+EXPORT_SYMBOL(_ZNK11TCPRewriter10port_countEv); -+extern char _ZNK11TCPRewriter10processingEv[]; -+EXPORT_SYMBOL(_ZNK11TCPRewriter10processingEv); -+extern char _ZNK11TCPRewriter11get_mappingEiRK8IPFlowID[]; -+EXPORT_SYMBOL(_ZNK11TCPRewriter11get_mappingEiRK8IPFlowID); -+extern char _ZTV11TCPRewriter[]; -+EXPORT_SYMBOL(_ZTV11TCPRewriter); -+extern char _ZN3Tee4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN3Tee4pushEiP6Packet); -+extern char _ZN3Tee9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN3Tee9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN3TeeC1Ev[]; -+EXPORT_SYMBOL(_ZN3TeeC1Ev); -+extern char _ZN3TeeC2Ev[]; -+EXPORT_SYMBOL(_ZN3TeeC2Ev); -+extern char _ZN3TeeD0Ev[]; -+EXPORT_SYMBOL(_ZN3TeeD0Ev); -+extern char _ZN3TeeD1Ev[]; -+EXPORT_SYMBOL(_ZN3TeeD1Ev); -+extern char _ZN3TeeD2Ev[]; -+EXPORT_SYMBOL(_ZN3TeeD2Ev); -+extern char _ZN7PullTee4pullEi[]; -+EXPORT_SYMBOL(_ZN7PullTee4pullEi); -+extern char _ZN7PullTee9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7PullTee9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN7PullTeeC1Ev[]; -+EXPORT_SYMBOL(_ZN7PullTeeC1Ev); -+extern char _ZN7PullTeeC2Ev[]; -+EXPORT_SYMBOL(_ZN7PullTeeC2Ev); -+extern char _ZN7PullTeeD0Ev[]; -+EXPORT_SYMBOL(_ZN7PullTeeD0Ev); -+extern char _ZN7PullTeeD1Ev[]; -+EXPORT_SYMBOL(_ZN7PullTeeD1Ev); -+extern char _ZN7PullTeeD2Ev[]; -+EXPORT_SYMBOL(_ZN7PullTeeD2Ev); -+extern char _ZNK3Tee10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK3Tee10class_nameEv); -+extern char _ZNK3Tee10port_countEv[]; -+EXPORT_SYMBOL(_ZNK3Tee10port_countEv); -+extern char _ZNK3Tee10processingEv[]; -+EXPORT_SYMBOL(_ZNK3Tee10processingEv); -+extern char _ZNK7PullTee10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK7PullTee10class_nameEv); -+extern char _ZNK7PullTee10port_countEv[]; -+EXPORT_SYMBOL(_ZNK7PullTee10port_countEv); -+extern char _ZNK7PullTee10processingEv[]; -+EXPORT_SYMBOL(_ZNK7PullTee10processingEv); -+extern char _ZTV3Tee[]; -+EXPORT_SYMBOL(_ZTV3Tee); -+extern char _ZTV7PullTee[]; -+EXPORT_SYMBOL(_ZTV7PullTee); -+extern char _ZN17_HashMap_iteratorI6StringiEC1EP7HashMapIS0_iEb[]; -+EXPORT_SYMBOL(_ZN17_HashMap_iteratorI6StringiEC1EP7HashMapIS0_iEb); -+extern char _ZN17_HashMap_iteratorI6StringiEC2EP7HashMapIS0_iEb[]; -+EXPORT_SYMBOL(_ZN17_HashMap_iteratorI6StringiEC2EP7HashMapIS0_iEb); -+extern char _ZN23_HashMap_const_iteratorI6StringiEC1EPK7HashMapIS0_iEb[]; -+EXPORT_SYMBOL(_ZN23_HashMap_const_iteratorI6StringiEC1EPK7HashMapIS0_iEb); -+extern char _ZN23_HashMap_const_iteratorI6StringiEC2EPK7HashMapIS0_iEb[]; -+EXPORT_SYMBOL(_ZN23_HashMap_const_iteratorI6StringiEC2EPK7HashMapIS0_iEb); -+extern char _ZN23_HashMap_const_iteratorI6StringiEppEi[]; -+EXPORT_SYMBOL(_ZN23_HashMap_const_iteratorI6StringiEppEi); -+extern char _ZN23_HashMap_const_iteratorI6StringiEppEv[]; -+EXPORT_SYMBOL(_ZN23_HashMap_const_iteratorI6StringiEppEv); -+extern char _ZN23_HashMap_const_iteratorI8IPFlowIDbEC1EPK7HashMapIS0_bEb[]; -+EXPORT_SYMBOL(_ZN23_HashMap_const_iteratorI8IPFlowIDbEC1EPK7HashMapIS0_bEb); -+extern char _ZN23_HashMap_const_iteratorI8IPFlowIDbEC2EPK7HashMapIS0_bEb[]; -+EXPORT_SYMBOL(_ZN23_HashMap_const_iteratorI8IPFlowIDbEC2EPK7HashMapIS0_bEb); -+extern char _ZN23_HashMap_const_iteratorI9IPAddressjEC1EPK7HashMapIS0_jEb[]; -+EXPORT_SYMBOL(_ZN23_HashMap_const_iteratorI9IPAddressjEC1EPK7HashMapIS0_jEb); -+extern char _ZN23_HashMap_const_iteratorI9IPAddressjEC2EPK7HashMapIS0_jEb[]; -+EXPORT_SYMBOL(_ZN23_HashMap_const_iteratorI9IPAddressjEC2EPK7HashMapIS0_jEb); -+extern char _ZN6VectorI6StringE10push_frontERKS0_[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringE10push_frontERKS0_); -+extern char _ZN6VectorI6StringE2atEi[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringE2atEi); -+extern char _ZN6VectorI6StringE3endEv[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringE3endEv); -+extern char _ZN6VectorI6StringE4at_uEi[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringE4at_uEi); -+extern char _ZN6VectorI6StringE4backEv[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringE4backEv); -+extern char _ZN6VectorI6StringE4swapERS1_[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringE4swapERS1_); -+extern char _ZN6VectorI6StringE4veltEPS0_i[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringE4veltEPS0_i); -+extern char _ZN6VectorI6StringE5beginEv[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringE5beginEv); -+extern char _ZN6VectorI6StringE5clearEv[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringE5clearEv); -+extern char _ZN6VectorI6StringE5eraseEPS0_[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringE5eraseEPS0_); -+extern char _ZN6VectorI6StringE5frontEv[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringE5frontEv); -+extern char _ZN6VectorI6StringE6assignEiRKS0_[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringE6assignEiRKS0_); -+extern char _ZN6VectorI6StringE6insertEPS0_RKS0_[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringE6insertEPS0_RKS0_); -+extern char _ZN6VectorI6StringE8pop_backEv[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringE8pop_backEv); -+extern char _ZN6VectorI6StringE9pop_frontEv[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringE9pop_frontEv); -+extern char _ZN6VectorI6StringE9push_backERKS0_[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringE9push_backERKS0_); -+extern char _ZN6VectorI6StringEC1ERKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringEC1ERKS1_); -+extern char _ZN6VectorI6StringEC1EiRKS0_[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringEC1EiRKS0_); -+extern char _ZN6VectorI6StringEC1Ev[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringEC1Ev); -+extern char _ZN6VectorI6StringEC2ERKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringEC2ERKS1_); -+extern char _ZN6VectorI6StringEC2EiRKS0_[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringEC2EiRKS0_); -+extern char _ZN6VectorI6StringEC2Ev[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringEC2Ev); -+extern char _ZN6VectorI6StringED2Ev[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringED2Ev); -+extern char _ZN6VectorI6StringEaSERKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringEaSERKS1_); -+extern char _ZN6VectorI6StringEixEi[]; -+EXPORT_SYMBOL(_ZN6VectorI6StringEixEi); -+extern char _ZN6VectorI9IPAddressE10push_frontERKS0_[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressE10push_frontERKS0_); -+extern char _ZN6VectorI9IPAddressE2atEi[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressE2atEi); -+extern char _ZN6VectorI9IPAddressE3endEv[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressE3endEv); -+extern char _ZN6VectorI9IPAddressE4at_uEi[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressE4at_uEi); -+extern char _ZN6VectorI9IPAddressE4backEv[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressE4backEv); -+extern char _ZN6VectorI9IPAddressE4swapERS1_[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressE4swapERS1_); -+extern char _ZN6VectorI9IPAddressE4veltEPS0_i[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressE4veltEPS0_i); -+extern char _ZN6VectorI9IPAddressE5beginEv[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressE5beginEv); -+extern char _ZN6VectorI9IPAddressE5clearEv[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressE5clearEv); -+extern char _ZN6VectorI9IPAddressE5eraseEPS0_[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressE5eraseEPS0_); -+extern char _ZN6VectorI9IPAddressE5eraseEPS0_S2_[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressE5eraseEPS0_S2_); -+extern char _ZN6VectorI9IPAddressE5frontEv[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressE5frontEv); -+extern char _ZN6VectorI9IPAddressE6assignEiRKS0_[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressE6assignEiRKS0_); -+extern char _ZN6VectorI9IPAddressE6insertEPS0_RKS0_[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressE6insertEPS0_RKS0_); -+extern char _ZN6VectorI9IPAddressE6resizeEiRKS0_[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressE6resizeEiRKS0_); -+extern char _ZN6VectorI9IPAddressE7reserveEi[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressE7reserveEi); -+extern char _ZN6VectorI9IPAddressE8pop_backEv[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressE8pop_backEv); -+extern char _ZN6VectorI9IPAddressE9pop_frontEv[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressE9pop_frontEv); -+extern char _ZN6VectorI9IPAddressE9push_backERKS0_[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressE9push_backERKS0_); -+extern char _ZN6VectorI9IPAddressEC1ERKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressEC1ERKS1_); -+extern char _ZN6VectorI9IPAddressEC1EiRKS0_[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressEC1EiRKS0_); -+extern char _ZN6VectorI9IPAddressEC1Ev[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressEC1Ev); -+extern char _ZN6VectorI9IPAddressEC2ERKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressEC2ERKS1_); -+extern char _ZN6VectorI9IPAddressEC2EiRKS0_[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressEC2EiRKS0_); -+extern char _ZN6VectorI9IPAddressEC2Ev[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressEC2Ev); -+extern char _ZN6VectorI9IPAddressED1Ev[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressED1Ev); -+extern char _ZN6VectorI9IPAddressED2Ev[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressED2Ev); -+extern char _ZN6VectorI9IPAddressEaSERKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressEaSERKS1_); -+extern char _ZN6VectorI9IPAddressEixEi[]; -+EXPORT_SYMBOL(_ZN6VectorI9IPAddressEixEi); -+extern char _ZN6VectorIN6Router6HookupEE10push_frontERKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE10push_frontERKS1_); -+extern char _ZN6VectorIN6Router6HookupEE2atEi[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE2atEi); -+extern char _ZN6VectorIN6Router6HookupEE3endEv[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE3endEv); -+extern char _ZN6VectorIN6Router6HookupEE4at_uEi[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE4at_uEi); -+extern char _ZN6VectorIN6Router6HookupEE4backEv[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE4backEv); -+extern char _ZN6VectorIN6Router6HookupEE4swapERS2_[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE4swapERS2_); -+extern char _ZN6VectorIN6Router6HookupEE4veltEPS1_i[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE4veltEPS1_i); -+extern char _ZN6VectorIN6Router6HookupEE5beginEv[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE5beginEv); -+extern char _ZN6VectorIN6Router6HookupEE5clearEv[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE5clearEv); -+extern char _ZN6VectorIN6Router6HookupEE5eraseEPS1_[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE5eraseEPS1_); -+extern char _ZN6VectorIN6Router6HookupEE5eraseEPS1_S3_[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE5eraseEPS1_S3_); -+extern char _ZN6VectorIN6Router6HookupEE5frontEv[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE5frontEv); -+extern char _ZN6VectorIN6Router6HookupEE6assignEiRKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE6assignEiRKS1_); -+extern char _ZN6VectorIN6Router6HookupEE6insertEPS1_RKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE6insertEPS1_RKS1_); -+extern char _ZN6VectorIN6Router6HookupEE6resizeEiRKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE6resizeEiRKS1_); -+extern char _ZN6VectorIN6Router6HookupEE8pop_backEv[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE8pop_backEv); -+extern char _ZN6VectorIN6Router6HookupEE9pop_frontEv[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE9pop_frontEv); -+extern char _ZN6VectorIN6Router6HookupEE9push_backERKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE9push_backERKS1_); -+extern char _ZN6VectorIN6Router6HookupEEC1ERKS2_[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEEC1ERKS2_); -+extern char _ZN6VectorIN6Router6HookupEEC1EiRKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEEC1EiRKS1_); -+extern char _ZN6VectorIN6Router6HookupEEC1Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEEC1Ev); -+extern char _ZN6VectorIN6Router6HookupEEC2ERKS2_[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEEC2ERKS2_); -+extern char _ZN6VectorIN6Router6HookupEEC2EiRKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEEC2EiRKS1_); -+extern char _ZN6VectorIN6Router6HookupEEC2Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEEC2Ev); -+extern char _ZN6VectorIN6Router6HookupEED2Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEED2Ev); -+extern char _ZN6VectorIN6Router6HookupEEaSERKS2_[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEEaSERKS2_); -+extern char _ZN6VectorIN6Router6HookupEEixEi[]; -+EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEEixEi); -+extern char _ZN6VectorIiE10push_frontERKi[]; -+EXPORT_SYMBOL(_ZN6VectorIiE10push_frontERKi); -+extern char _ZN6VectorIiE2atEi[]; -+EXPORT_SYMBOL(_ZN6VectorIiE2atEi); -+extern char _ZN6VectorIiE3endEv[]; -+EXPORT_SYMBOL(_ZN6VectorIiE3endEv); -+extern char _ZN6VectorIiE4at_uEi[]; -+EXPORT_SYMBOL(_ZN6VectorIiE4at_uEi); -+extern char _ZN6VectorIiE4backEv[]; -+EXPORT_SYMBOL(_ZN6VectorIiE4backEv); -+extern char _ZN6VectorIiE4swapERS0_[]; -+EXPORT_SYMBOL(_ZN6VectorIiE4swapERS0_); -+extern char _ZN6VectorIiE4veltEPii[]; -+EXPORT_SYMBOL(_ZN6VectorIiE4veltEPii); -+extern char _ZN6VectorIiE5clearEv[]; -+EXPORT_SYMBOL(_ZN6VectorIiE5clearEv); -+extern char _ZN6VectorIiE5eraseEPi[]; -+EXPORT_SYMBOL(_ZN6VectorIiE5eraseEPi); -+extern char _ZN6VectorIiE5eraseEPiS1_[]; -+EXPORT_SYMBOL(_ZN6VectorIiE5eraseEPiS1_); -+extern char _ZN6VectorIiE5frontEv[]; -+EXPORT_SYMBOL(_ZN6VectorIiE5frontEv); -+extern char _ZN6VectorIiE6insertEPiRKi[]; -+EXPORT_SYMBOL(_ZN6VectorIiE6insertEPiRKi); -+extern char _ZN6VectorIiE8pop_backEv[]; -+EXPORT_SYMBOL(_ZN6VectorIiE8pop_backEv); -+extern char _ZN6VectorIiE9pop_frontEv[]; -+EXPORT_SYMBOL(_ZN6VectorIiE9pop_frontEv); -+extern char _ZN6VectorIiE9push_backERKi[]; -+EXPORT_SYMBOL(_ZN6VectorIiE9push_backERKi); -+extern char _ZN6VectorIiEC1Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIiEC1Ev); -+extern char _ZN6VectorIiEC2ERKS0_[]; -+EXPORT_SYMBOL(_ZN6VectorIiEC2ERKS0_); -+extern char _ZN6VectorIiEC2EiRKi[]; -+EXPORT_SYMBOL(_ZN6VectorIiEC2EiRKi); -+extern char _ZN6VectorIiEC2Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIiEC2Ev); -+extern char _ZN6VectorIiED2Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIiED2Ev); -+extern char _ZN6VectorIiEixEi[]; -+EXPORT_SYMBOL(_ZN6VectorIiEixEi); -+extern char _ZN6VectorIjE10push_frontERKj[]; -+EXPORT_SYMBOL(_ZN6VectorIjE10push_frontERKj); -+extern char _ZN6VectorIjE2atEi[]; -+EXPORT_SYMBOL(_ZN6VectorIjE2atEi); -+extern char _ZN6VectorIjE3endEv[]; -+EXPORT_SYMBOL(_ZN6VectorIjE3endEv); -+extern char _ZN6VectorIjE4at_uEi[]; -+EXPORT_SYMBOL(_ZN6VectorIjE4at_uEi); -+extern char _ZN6VectorIjE4backEv[]; -+EXPORT_SYMBOL(_ZN6VectorIjE4backEv); -+extern char _ZN6VectorIjE4swapERS0_[]; -+EXPORT_SYMBOL(_ZN6VectorIjE4swapERS0_); -+extern char _ZN6VectorIjE4veltEPji[]; -+EXPORT_SYMBOL(_ZN6VectorIjE4veltEPji); -+extern char _ZN6VectorIjE5beginEv[]; -+EXPORT_SYMBOL(_ZN6VectorIjE5beginEv); -+extern char _ZN6VectorIjE5clearEv[]; -+EXPORT_SYMBOL(_ZN6VectorIjE5clearEv); -+extern char _ZN6VectorIjE5eraseEPj[]; -+EXPORT_SYMBOL(_ZN6VectorIjE5eraseEPj); -+extern char _ZN6VectorIjE5eraseEPjS1_[]; -+EXPORT_SYMBOL(_ZN6VectorIjE5eraseEPjS1_); -+extern char _ZN6VectorIjE5frontEv[]; -+EXPORT_SYMBOL(_ZN6VectorIjE5frontEv); -+extern char _ZN6VectorIjE6assignEiRKj[]; -+EXPORT_SYMBOL(_ZN6VectorIjE6assignEiRKj); -+extern char _ZN6VectorIjE6insertEPjRKj[]; -+EXPORT_SYMBOL(_ZN6VectorIjE6insertEPjRKj); -+extern char _ZN6VectorIjE6resizeEiRKj[]; -+EXPORT_SYMBOL(_ZN6VectorIjE6resizeEiRKj); -+extern char _ZN6VectorIjE7reserveEi[]; -+EXPORT_SYMBOL(_ZN6VectorIjE7reserveEi); -+extern char _ZN6VectorIjE8pop_backEv[]; -+EXPORT_SYMBOL(_ZN6VectorIjE8pop_backEv); -+extern char _ZN6VectorIjE9pop_frontEv[]; -+EXPORT_SYMBOL(_ZN6VectorIjE9pop_frontEv); -+extern char _ZN6VectorIjE9push_backERKj[]; -+EXPORT_SYMBOL(_ZN6VectorIjE9push_backERKj); -+extern char _ZN6VectorIjEC1ERKS0_[]; -+EXPORT_SYMBOL(_ZN6VectorIjEC1ERKS0_); -+extern char _ZN6VectorIjEC1EiRKj[]; -+EXPORT_SYMBOL(_ZN6VectorIjEC1EiRKj); -+extern char _ZN6VectorIjEC1Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIjEC1Ev); -+extern char _ZN6VectorIjEC2ERKS0_[]; -+EXPORT_SYMBOL(_ZN6VectorIjEC2ERKS0_); -+extern char _ZN6VectorIjEC2EiRKj[]; -+EXPORT_SYMBOL(_ZN6VectorIjEC2EiRKj); -+extern char _ZN6VectorIjEC2Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIjEC2Ev); -+extern char _ZN6VectorIjED1Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIjED1Ev); -+extern char _ZN6VectorIjED2Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIjED2Ev); -+extern char _ZN6VectorIjEaSERKS0_[]; -+EXPORT_SYMBOL(_ZN6VectorIjEaSERKS0_); -+extern char _ZN6VectorIjEixEi[]; -+EXPORT_SYMBOL(_ZN6VectorIjEixEi); -+extern char _ZN7HashMapI6StringiE10find_forceERKS0_[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiE10find_forceERKS0_); -+extern char _ZN7HashMapI6StringiE10find_forceERKS0_RKi[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiE10find_forceERKS0_RKi); -+extern char _ZN7HashMapI6StringiE10initializeEP20HashMap_ArenaFactoryj[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiE10initializeEP20HashMap_ArenaFactoryj); -+extern char _ZN7HashMapI6StringiE11findp_forceERKS0_[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiE11findp_forceERKS0_); -+extern char _ZN7HashMapI6StringiE11findp_forceERKS0_RKi[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiE11findp_forceERKS0_RKi); -+extern char _ZN7HashMapI6StringiE15find_pair_forceERKS0_[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiE15find_pair_forceERKS0_); -+extern char _ZN7HashMapI6StringiE15find_pair_forceERKS0_RKi[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiE15find_pair_forceERKS0_RKi); -+extern char _ZN7HashMapI6StringiE20set_dynamic_resizingEb[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiE20set_dynamic_resizingEb); -+extern char _ZN7HashMapI6StringiE3endEv[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiE3endEv); -+extern char _ZN7HashMapI6StringiE4swapERS1_[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiE4swapERS1_); -+extern char _ZN7HashMapI6StringiE5beginEv[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiE5beginEv); -+extern char _ZN7HashMapI6StringiE5clearEv[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiE5clearEv); -+extern char _ZN7HashMapI6StringiE6insertERKS0_RKi[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiE6insertERKS0_RKi); -+extern char _ZN7HashMapI6StringiE6removeERKS0_[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiE6removeERKS0_); -+extern char _ZN7HashMapI6StringiE6resizeEj[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiE6resizeEj); -+extern char _ZN7HashMapI6StringiE7resize0Ej[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiE7resize0Ej); -+extern char _ZN7HashMapI6StringiE9copy_fromERKS1_[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiE9copy_fromERKS1_); -+extern char _ZN7HashMapI6StringiE9set_arenaEP20HashMap_ArenaFactory[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiE9set_arenaEP20HashMap_ArenaFactory); -+extern char _ZN7HashMapI6StringiEC1ERKS1_[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiEC1ERKS1_); -+extern char _ZN7HashMapI6StringiEC1ERKiP20HashMap_ArenaFactory[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiEC1ERKiP20HashMap_ArenaFactory); -+extern char _ZN7HashMapI6StringiEC1Ev[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiEC1Ev); -+extern char _ZN7HashMapI6StringiEC2ERKS1_[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiEC2ERKS1_); -+extern char _ZN7HashMapI6StringiEC2ERKiP20HashMap_ArenaFactory[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiEC2ERKiP20HashMap_ArenaFactory); -+extern char _ZN7HashMapI6StringiEC2Ev[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiEC2Ev); -+extern char _ZN7HashMapI6StringiED1Ev[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiED1Ev); -+extern char _ZN7HashMapI6StringiED2Ev[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiED2Ev); -+extern char _ZN7HashMapI6StringiEaSERKS1_[]; -+EXPORT_SYMBOL(_ZN7HashMapI6StringiEaSERKS1_); -+extern char _ZN7HashMapI8IPFlowIDbE10find_forceERKS0_[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE10find_forceERKS0_); -+extern char _ZN7HashMapI8IPFlowIDbE10find_forceERKS0_RKb[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE10find_forceERKS0_RKb); -+extern char _ZN7HashMapI8IPFlowIDbE10initializeEP20HashMap_ArenaFactoryj[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE10initializeEP20HashMap_ArenaFactoryj); -+extern char _ZN7HashMapI8IPFlowIDbE11findp_forceERKS0_[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE11findp_forceERKS0_); -+extern char _ZN7HashMapI8IPFlowIDbE11findp_forceERKS0_RKb[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE11findp_forceERKS0_RKb); -+extern char _ZN7HashMapI8IPFlowIDbE15find_pair_forceERKS0_[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE15find_pair_forceERKS0_); -+extern char _ZN7HashMapI8IPFlowIDbE15find_pair_forceERKS0_RKb[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE15find_pair_forceERKS0_RKb); -+extern char _ZN7HashMapI8IPFlowIDbE20set_dynamic_resizingEb[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE20set_dynamic_resizingEb); -+extern char _ZN7HashMapI8IPFlowIDbE3endEv[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE3endEv); -+extern char _ZN7HashMapI8IPFlowIDbE4swapERS1_[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE4swapERS1_); -+extern char _ZN7HashMapI8IPFlowIDbE5beginEv[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE5beginEv); -+extern char _ZN7HashMapI8IPFlowIDbE5clearEv[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE5clearEv); -+extern char _ZN7HashMapI8IPFlowIDbE6insertERKS0_RKb[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE6insertERKS0_RKb); -+extern char _ZN7HashMapI8IPFlowIDbE6removeERKS0_[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE6removeERKS0_); -+extern char _ZN7HashMapI8IPFlowIDbE6resizeEj[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE6resizeEj); -+extern char _ZN7HashMapI8IPFlowIDbE7resize0Ej[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE7resize0Ej); -+extern char _ZN7HashMapI8IPFlowIDbE9copy_fromERKS1_[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE9copy_fromERKS1_); -+extern char _ZN7HashMapI8IPFlowIDbE9set_arenaEP20HashMap_ArenaFactory[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE9set_arenaEP20HashMap_ArenaFactory); -+extern char _ZN7HashMapI8IPFlowIDbEC1ERKS1_[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbEC1ERKS1_); -+extern char _ZN7HashMapI8IPFlowIDbEC1ERKbP20HashMap_ArenaFactory[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbEC1ERKbP20HashMap_ArenaFactory); -+extern char _ZN7HashMapI8IPFlowIDbEC1Ev[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbEC1Ev); -+extern char _ZN7HashMapI8IPFlowIDbEC2ERKS1_[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbEC2ERKS1_); -+extern char _ZN7HashMapI8IPFlowIDbEC2ERKbP20HashMap_ArenaFactory[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbEC2ERKbP20HashMap_ArenaFactory); -+extern char _ZN7HashMapI8IPFlowIDbEC2Ev[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbEC2Ev); -+extern char _ZN7HashMapI8IPFlowIDbED1Ev[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbED1Ev); -+extern char _ZN7HashMapI8IPFlowIDbED2Ev[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbED2Ev); -+extern char _ZN7HashMapI8IPFlowIDbEaSERKS1_[]; -+EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbEaSERKS1_); -+extern char _ZN7HashMapI9IPAddressjE10find_forceERKS0_[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE10find_forceERKS0_); -+extern char _ZN7HashMapI9IPAddressjE10find_forceERKS0_RKj[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE10find_forceERKS0_RKj); -+extern char _ZN7HashMapI9IPAddressjE10initializeEP20HashMap_ArenaFactoryj[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE10initializeEP20HashMap_ArenaFactoryj); -+extern char _ZN7HashMapI9IPAddressjE11findp_forceERKS0_[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE11findp_forceERKS0_); -+extern char _ZN7HashMapI9IPAddressjE11findp_forceERKS0_RKj[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE11findp_forceERKS0_RKj); -+extern char _ZN7HashMapI9IPAddressjE15find_pair_forceERKS0_[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE15find_pair_forceERKS0_); -+extern char _ZN7HashMapI9IPAddressjE15find_pair_forceERKS0_RKj[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE15find_pair_forceERKS0_RKj); -+extern char _ZN7HashMapI9IPAddressjE20set_dynamic_resizingEb[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE20set_dynamic_resizingEb); -+extern char _ZN7HashMapI9IPAddressjE3endEv[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE3endEv); -+extern char _ZN7HashMapI9IPAddressjE4swapERS1_[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE4swapERS1_); -+extern char _ZN7HashMapI9IPAddressjE5beginEv[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE5beginEv); -+extern char _ZN7HashMapI9IPAddressjE5clearEv[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE5clearEv); -+extern char _ZN7HashMapI9IPAddressjE6insertERKS0_RKj[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE6insertERKS0_RKj); -+extern char _ZN7HashMapI9IPAddressjE6removeERKS0_[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE6removeERKS0_); -+extern char _ZN7HashMapI9IPAddressjE6resizeEj[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE6resizeEj); -+extern char _ZN7HashMapI9IPAddressjE7resize0Ej[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE7resize0Ej); -+extern char _ZN7HashMapI9IPAddressjE9copy_fromERKS1_[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE9copy_fromERKS1_); -+extern char _ZN7HashMapI9IPAddressjE9set_arenaEP20HashMap_ArenaFactory[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE9set_arenaEP20HashMap_ArenaFactory); -+extern char _ZN7HashMapI9IPAddressjEC1ERKS1_[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjEC1ERKS1_); -+extern char _ZN7HashMapI9IPAddressjEC1ERKjP20HashMap_ArenaFactory[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjEC1ERKjP20HashMap_ArenaFactory); -+extern char _ZN7HashMapI9IPAddressjEC1Ev[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjEC1Ev); -+extern char _ZN7HashMapI9IPAddressjEC2ERKS1_[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjEC2ERKS1_); -+extern char _ZN7HashMapI9IPAddressjEC2ERKjP20HashMap_ArenaFactory[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjEC2ERKjP20HashMap_ArenaFactory); -+extern char _ZN7HashMapI9IPAddressjEC2Ev[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjEC2Ev); -+extern char _ZN7HashMapI9IPAddressjED1Ev[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjED1Ev); -+extern char _ZN7HashMapI9IPAddressjED2Ev[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjED2Ev); -+extern char _ZN7HashMapI9IPAddressjEaSERKS1_[]; -+EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjEaSERKS1_); -+extern char _ZNK17_HashMap_iteratorI6StringiE4pairEv[]; -+EXPORT_SYMBOL(_ZNK17_HashMap_iteratorI6StringiE4pairEv); -+extern char _ZNK17_HashMap_iteratorI6StringiE5valueEv[]; -+EXPORT_SYMBOL(_ZNK17_HashMap_iteratorI6StringiE5valueEv); -+extern char _ZNK23_HashMap_const_iteratorI6StringiE3keyEv[]; -+EXPORT_SYMBOL(_ZNK23_HashMap_const_iteratorI6StringiE3keyEv); -+extern char _ZNK23_HashMap_const_iteratorI6StringiE4liveEv[]; -+EXPORT_SYMBOL(_ZNK23_HashMap_const_iteratorI6StringiE4liveEv); -+extern char _ZNK23_HashMap_const_iteratorI6StringiE4pairEv[]; -+EXPORT_SYMBOL(_ZNK23_HashMap_const_iteratorI6StringiE4pairEv); -+extern char _ZNK23_HashMap_const_iteratorI6StringiE5valueEv[]; -+EXPORT_SYMBOL(_ZNK23_HashMap_const_iteratorI6StringiE5valueEv); -+extern char _ZNK23_HashMap_const_iteratorI6StringiEcvMS1_KFbvEEv[]; -+EXPORT_SYMBOL(_ZNK23_HashMap_const_iteratorI6StringiEcvMS1_KFbvEEv); -+extern char _ZNK6VectorI6StringE2atEi[]; -+EXPORT_SYMBOL(_ZNK6VectorI6StringE2atEi); -+extern char _ZNK6VectorI6StringE3endEv[]; -+EXPORT_SYMBOL(_ZNK6VectorI6StringE3endEv); -+extern char _ZNK6VectorI6StringE4at_uEi[]; -+EXPORT_SYMBOL(_ZNK6VectorI6StringE4at_uEi); -+extern char _ZNK6VectorI6StringE4backEv[]; -+EXPORT_SYMBOL(_ZNK6VectorI6StringE4backEv); -+extern char _ZNK6VectorI6StringE4sizeEv[]; -+EXPORT_SYMBOL(_ZNK6VectorI6StringE4sizeEv); -+extern char _ZNK6VectorI6StringE4veltEi[]; -+EXPORT_SYMBOL(_ZNK6VectorI6StringE4veltEi); -+extern char _ZNK6VectorI6StringE5beginEv[]; -+EXPORT_SYMBOL(_ZNK6VectorI6StringE5beginEv); -+extern char _ZNK6VectorI6StringE5emptyEv[]; -+EXPORT_SYMBOL(_ZNK6VectorI6StringE5emptyEv); -+extern char _ZNK6VectorI6StringE5frontEv[]; -+EXPORT_SYMBOL(_ZNK6VectorI6StringE5frontEv); -+extern char _ZNK6VectorI6StringE8capacityEv[]; -+EXPORT_SYMBOL(_ZNK6VectorI6StringE8capacityEv); -+extern char _ZNK6VectorI9IPAddressE2atEi[]; -+EXPORT_SYMBOL(_ZNK6VectorI9IPAddressE2atEi); -+extern char _ZNK6VectorI9IPAddressE3endEv[]; -+EXPORT_SYMBOL(_ZNK6VectorI9IPAddressE3endEv); -+extern char _ZNK6VectorI9IPAddressE4at_uEi[]; -+EXPORT_SYMBOL(_ZNK6VectorI9IPAddressE4at_uEi); -+extern char _ZNK6VectorI9IPAddressE4backEv[]; -+EXPORT_SYMBOL(_ZNK6VectorI9IPAddressE4backEv); -+extern char _ZNK6VectorI9IPAddressE4sizeEv[]; -+EXPORT_SYMBOL(_ZNK6VectorI9IPAddressE4sizeEv); -+extern char _ZNK6VectorI9IPAddressE4veltEi[]; -+EXPORT_SYMBOL(_ZNK6VectorI9IPAddressE4veltEi); -+extern char _ZNK6VectorI9IPAddressE5beginEv[]; -+EXPORT_SYMBOL(_ZNK6VectorI9IPAddressE5beginEv); -+extern char _ZNK6VectorI9IPAddressE5emptyEv[]; -+EXPORT_SYMBOL(_ZNK6VectorI9IPAddressE5emptyEv); -+extern char _ZNK6VectorI9IPAddressE5frontEv[]; -+EXPORT_SYMBOL(_ZNK6VectorI9IPAddressE5frontEv); -+extern char _ZNK6VectorI9IPAddressE8capacityEv[]; -+EXPORT_SYMBOL(_ZNK6VectorI9IPAddressE8capacityEv); -+extern char _ZNK6VectorI9IPAddressEixEi[]; -+EXPORT_SYMBOL(_ZNK6VectorI9IPAddressEixEi); -+extern char _ZNK6VectorIN6Router6HookupEE2atEi[]; -+EXPORT_SYMBOL(_ZNK6VectorIN6Router6HookupEE2atEi); -+extern char _ZNK6VectorIN6Router6HookupEE3endEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIN6Router6HookupEE3endEv); -+extern char _ZNK6VectorIN6Router6HookupEE4at_uEi[]; -+EXPORT_SYMBOL(_ZNK6VectorIN6Router6HookupEE4at_uEi); -+extern char _ZNK6VectorIN6Router6HookupEE4backEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIN6Router6HookupEE4backEv); -+extern char _ZNK6VectorIN6Router6HookupEE4veltEi[]; -+EXPORT_SYMBOL(_ZNK6VectorIN6Router6HookupEE4veltEi); -+extern char _ZNK6VectorIN6Router6HookupEE5beginEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIN6Router6HookupEE5beginEv); -+extern char _ZNK6VectorIN6Router6HookupEE5emptyEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIN6Router6HookupEE5emptyEv); -+extern char _ZNK6VectorIN6Router6HookupEE5frontEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIN6Router6HookupEE5frontEv); -+extern char _ZNK6VectorIN6Router6HookupEE8capacityEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIN6Router6HookupEE8capacityEv); -+extern char _ZNK6VectorIiE2atEi[]; -+EXPORT_SYMBOL(_ZNK6VectorIiE2atEi); -+extern char _ZNK6VectorIiE3endEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIiE3endEv); -+extern char _ZNK6VectorIiE4at_uEi[]; -+EXPORT_SYMBOL(_ZNK6VectorIiE4at_uEi); -+extern char _ZNK6VectorIiE4backEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIiE4backEv); -+extern char _ZNK6VectorIiE4sizeEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIiE4sizeEv); -+extern char _ZNK6VectorIiE4veltEi[]; -+EXPORT_SYMBOL(_ZNK6VectorIiE4veltEi); -+extern char _ZNK6VectorIiE5beginEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIiE5beginEv); -+extern char _ZNK6VectorIiE5emptyEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIiE5emptyEv); -+extern char _ZNK6VectorIiE5frontEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIiE5frontEv); -+extern char _ZNK6VectorIiE8capacityEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIiE8capacityEv); -+extern char _ZNK6VectorIiEixEi[]; -+EXPORT_SYMBOL(_ZNK6VectorIiEixEi); -+extern char _ZNK6VectorIjE2atEi[]; -+EXPORT_SYMBOL(_ZNK6VectorIjE2atEi); -+extern char _ZNK6VectorIjE3endEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIjE3endEv); -+extern char _ZNK6VectorIjE4at_uEi[]; -+EXPORT_SYMBOL(_ZNK6VectorIjE4at_uEi); -+extern char _ZNK6VectorIjE4backEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIjE4backEv); -+extern char _ZNK6VectorIjE4sizeEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIjE4sizeEv); -+extern char _ZNK6VectorIjE4veltEi[]; -+EXPORT_SYMBOL(_ZNK6VectorIjE4veltEi); -+extern char _ZNK6VectorIjE5beginEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIjE5beginEv); -+extern char _ZNK6VectorIjE5emptyEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIjE5emptyEv); -+extern char _ZNK6VectorIjE5frontEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIjE5frontEv); -+extern char _ZNK6VectorIjE8capacityEv[]; -+EXPORT_SYMBOL(_ZNK6VectorIjE8capacityEv); -+extern char _ZNK6VectorIjEixEi[]; -+EXPORT_SYMBOL(_ZNK6VectorIjEixEi); -+extern char _ZNK7HashMapI6StringiE16dynamic_resizingEv[]; -+EXPORT_SYMBOL(_ZNK7HashMapI6StringiE16dynamic_resizingEv); -+extern char _ZNK7HashMapI6StringiE3endEv[]; -+EXPORT_SYMBOL(_ZNK7HashMapI6StringiE3endEv); -+extern char _ZNK7HashMapI6StringiE4findERKS0_[]; -+EXPORT_SYMBOL(_ZNK7HashMapI6StringiE4findERKS0_); -+extern char _ZNK7HashMapI6StringiE4findERKS0_RKi[]; -+EXPORT_SYMBOL(_ZNK7HashMapI6StringiE4findERKS0_RKi); -+extern char _ZNK7HashMapI6StringiE4sizeEv[]; -+EXPORT_SYMBOL(_ZNK7HashMapI6StringiE4sizeEv); -+extern char _ZNK7HashMapI6StringiE5beginEv[]; -+EXPORT_SYMBOL(_ZNK7HashMapI6StringiE5beginEv); -+extern char _ZNK7HashMapI6StringiE5emptyEv[]; -+EXPORT_SYMBOL(_ZNK7HashMapI6StringiE5emptyEv); -+extern char _ZNK7HashMapI6StringiE5findpERKS0_[]; -+EXPORT_SYMBOL(_ZNK7HashMapI6StringiE5findpERKS0_); -+extern char _ZNK7HashMapI6StringiE6bucketERKS0_[]; -+EXPORT_SYMBOL(_ZNK7HashMapI6StringiE6bucketERKS0_); -+extern char _ZNK7HashMapI6StringiE8nbucketsEv[]; -+EXPORT_SYMBOL(_ZNK7HashMapI6StringiE8nbucketsEv); -+extern char _ZNK7HashMapI6StringiE9find_pairERKS0_[]; -+EXPORT_SYMBOL(_ZNK7HashMapI6StringiE9find_pairERKS0_); -+extern char _ZNK7HashMapI6StringiEixERKS0_[]; -+EXPORT_SYMBOL(_ZNK7HashMapI6StringiEixERKS0_); -+extern char _ZNK7HashMapI8IPFlowIDbE16dynamic_resizingEv[]; -+EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbE16dynamic_resizingEv); -+extern char _ZNK7HashMapI8IPFlowIDbE3endEv[]; -+EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbE3endEv); -+extern char _ZNK7HashMapI8IPFlowIDbE4findERKS0_[]; -+EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbE4findERKS0_); -+extern char _ZNK7HashMapI8IPFlowIDbE4findERKS0_RKb[]; -+EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbE4findERKS0_RKb); -+extern char _ZNK7HashMapI8IPFlowIDbE4sizeEv[]; -+EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbE4sizeEv); -+extern char _ZNK7HashMapI8IPFlowIDbE5beginEv[]; -+EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbE5beginEv); -+extern char _ZNK7HashMapI8IPFlowIDbE5emptyEv[]; -+EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbE5emptyEv); -+extern char _ZNK7HashMapI8IPFlowIDbE5findpERKS0_[]; -+EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbE5findpERKS0_); -+extern char _ZNK7HashMapI8IPFlowIDbE6bucketERKS0_[]; -+EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbE6bucketERKS0_); -+extern char _ZNK7HashMapI8IPFlowIDbE8nbucketsEv[]; -+EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbE8nbucketsEv); -+extern char _ZNK7HashMapI8IPFlowIDbE9find_pairERKS0_[]; -+EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbE9find_pairERKS0_); -+extern char _ZNK7HashMapI8IPFlowIDbEixERKS0_[]; -+EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbEixERKS0_); -+extern char _ZNK7HashMapI9IPAddressjE16dynamic_resizingEv[]; -+EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjE16dynamic_resizingEv); -+extern char _ZNK7HashMapI9IPAddressjE3endEv[]; -+EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjE3endEv); -+extern char _ZNK7HashMapI9IPAddressjE4findERKS0_[]; -+EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjE4findERKS0_); -+extern char _ZNK7HashMapI9IPAddressjE4findERKS0_RKj[]; -+EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjE4findERKS0_RKj); -+extern char _ZNK7HashMapI9IPAddressjE4sizeEv[]; -+EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjE4sizeEv); -+extern char _ZNK7HashMapI9IPAddressjE5beginEv[]; -+EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjE5beginEv); -+extern char _ZNK7HashMapI9IPAddressjE5emptyEv[]; -+EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjE5emptyEv); -+extern char _ZNK7HashMapI9IPAddressjE5findpERKS0_[]; -+EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjE5findpERKS0_); -+extern char _ZNK7HashMapI9IPAddressjE6bucketERKS0_[]; -+EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjE6bucketERKS0_); -+extern char _ZNK7HashMapI9IPAddressjE8nbucketsEv[]; -+EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjE8nbucketsEv); -+extern char _ZNK7HashMapI9IPAddressjE9find_pairERKS0_[]; -+EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjE9find_pairERKS0_); -+extern char _ZNK7HashMapI9IPAddressjEixERKS0_[]; -+EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjEixERKS0_); -+extern char _ZN9TimedSink10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN9TimedSink10initializeEP12ErrorHandler); -+extern char _ZN9TimedSink9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN9TimedSink9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN9TimedSink9run_timerEP5Timer[]; -+EXPORT_SYMBOL(_ZN9TimedSink9run_timerEP5Timer); -+extern char _ZN9TimedSinkC1Ev[]; -+EXPORT_SYMBOL(_ZN9TimedSinkC1Ev); -+extern char _ZN9TimedSinkC2Ev[]; -+EXPORT_SYMBOL(_ZN9TimedSinkC2Ev); -+extern char _ZN9TimedSinkD0Ev[]; -+EXPORT_SYMBOL(_ZN9TimedSinkD0Ev); -+extern char _ZN9TimedSinkD1Ev[]; -+EXPORT_SYMBOL(_ZN9TimedSinkD1Ev); -+extern char _ZN9TimedSinkD2Ev[]; -+EXPORT_SYMBOL(_ZN9TimedSinkD2Ev); -+extern char _ZNK9TimedSink10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK9TimedSink10class_nameEv); -+extern char _ZNK9TimedSink10port_countEv[]; -+EXPORT_SYMBOL(_ZNK9TimedSink10port_countEv); -+extern char _ZNK9TimedSink10processingEv[]; -+EXPORT_SYMBOL(_ZNK9TimedSink10processingEv); -+extern char _ZTV9TimedSink[]; -+EXPORT_SYMBOL(_ZTV9TimedSink); -+extern char _ZN11TimedSource10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11TimedSource10initializeEP12ErrorHandler); -+extern char _ZN11TimedSource10read_paramEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN11TimedSource10read_paramEP7ElementPv); -+extern char _ZN11TimedSource12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN11TimedSource12add_handlersEv); -+extern char _ZN11TimedSource12change_paramERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11TimedSource12change_paramERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN11TimedSource7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN11TimedSource7cleanupEN7Element12CleanupStageE); -+extern char _ZN11TimedSource9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN11TimedSource9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN11TimedSource9run_timerEP5Timer[]; -+EXPORT_SYMBOL(_ZN11TimedSource9run_timerEP5Timer); -+extern char _ZN11TimedSourceC1Ev[]; -+EXPORT_SYMBOL(_ZN11TimedSourceC1Ev); -+extern char _ZN11TimedSourceC2Ev[]; -+EXPORT_SYMBOL(_ZN11TimedSourceC2Ev); -+extern char _ZN11TimedSourceD0Ev[]; -+EXPORT_SYMBOL(_ZN11TimedSourceD0Ev); -+extern char _ZN11TimedSourceD1Ev[]; -+EXPORT_SYMBOL(_ZN11TimedSourceD1Ev); -+extern char _ZN11TimedSourceD2Ev[]; -+EXPORT_SYMBOL(_ZN11TimedSourceD2Ev); -+extern char _ZNK11TimedSource10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK11TimedSource10class_nameEv); -+extern char _ZNK11TimedSource10port_countEv[]; -+EXPORT_SYMBOL(_ZNK11TimedSource10port_countEv); -+extern char _ZNK11TimedSource10processingEv[]; -+EXPORT_SYMBOL(_ZNK11TimedSource10processingEv); -+extern char _ZTV11TimedSource[]; -+EXPORT_SYMBOL(_ZTV11TimedSource); -+extern char _ZN5Timer10unscheduleEv[]; -+EXPORT_SYMBOL(_ZN5Timer10unscheduleEv); -+extern char _ZN5Timer11schedule_atERK9Timestamp[]; -+EXPORT_SYMBOL(_ZN5Timer11schedule_atERK9Timestamp); -+extern char _ZN5Timer14schedule_afterERK9Timestamp[]; -+EXPORT_SYMBOL(_ZN5Timer14schedule_afterERK9Timestamp); -+extern char _ZN5Timer8set_hookEP4Task[]; -+EXPORT_SYMBOL(_ZN5Timer8set_hookEP4Task); -+extern char _ZN5Timer8set_hookEP7Element[]; -+EXPORT_SYMBOL(_ZN5Timer8set_hookEP7Element); -+extern char _ZN5Timer8set_hookEPFvPS_PvES1_[]; -+EXPORT_SYMBOL(_ZN5Timer8set_hookEPFvPS_PvES1_); -+extern char _ZN5TimerC1EP4Task[]; -+EXPORT_SYMBOL(_ZN5TimerC1EP4Task); -+extern char _ZN5TimerC1EP7Element[]; -+EXPORT_SYMBOL(_ZN5TimerC1EP7Element); -+extern char _ZN5TimerC1EPFvPS_PvES1_[]; -+EXPORT_SYMBOL(_ZN5TimerC1EPFvPS_PvES1_); -+extern char _ZN5TimerC1Ev[]; -+EXPORT_SYMBOL(_ZN5TimerC1Ev); -+extern char _ZN5TimerC2EP4Task[]; -+EXPORT_SYMBOL(_ZN5TimerC2EP4Task); -+extern char _ZN5TimerC2EP7Element[]; -+EXPORT_SYMBOL(_ZN5TimerC2EP7Element); -+extern char _ZN5TimerC2EPFvPS_PvES1_[]; -+EXPORT_SYMBOL(_ZN5TimerC2EPFvPS_PvES1_); -+extern char _ZN5TimerC2Ev[]; -+EXPORT_SYMBOL(_ZN5TimerC2Ev); -+extern char _ZNK9Timestamp7unparseEv[]; -+EXPORT_SYMBOL(_ZNK9Timestamp7unparseEv); -+extern char _ZlsR11StringAccumRK7timeval[]; -+EXPORT_SYMBOL(_ZlsR11StringAccumRK7timeval); -+extern char _ZlsR11StringAccumRK9Timestamp[]; -+EXPORT_SYMBOL(_ZlsR11StringAccumRK9Timestamp); -+extern char _ZN8ToDevice10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8ToDevice10initializeEP12ErrorHandler); -+extern char _ZN8ToDevice12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN8ToDevice12add_handlersEv); -+extern char _ZN8ToDevice12queue_packetEP6Packet[]; -+EXPORT_SYMBOL(_ZN8ToDevice12queue_packetEP6Packet); -+extern char _ZN8ToDevice12reset_countsEv[]; -+EXPORT_SYMBOL(_ZN8ToDevice12reset_countsEv); -+extern char _ZN8ToDevice13change_deviceEP10net_device[]; -+EXPORT_SYMBOL(_ZN8ToDevice13change_deviceEP10net_device); -+extern char _ZN8ToDevice14static_cleanupEv[]; -+EXPORT_SYMBOL(_ZN8ToDevice14static_cleanupEv); -+extern char _ZN8ToDevice17static_initializeEv[]; -+EXPORT_SYMBOL(_ZN8ToDevice17static_initializeEv); -+extern char _ZN8ToDevice7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN8ToDevice7cleanupEN7Element12CleanupStageE); -+extern char _ZN8ToDevice8run_taskEP4Task[]; -+EXPORT_SYMBOL(_ZN8ToDevice8run_taskEP4Task); -+extern char _ZN8ToDevice9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8ToDevice9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN8ToDeviceC1Ev[]; -+EXPORT_SYMBOL(_ZN8ToDeviceC1Ev); -+extern char _ZN8ToDeviceC2Ev[]; -+EXPORT_SYMBOL(_ZN8ToDeviceC2Ev); -+extern char _ZN8ToDeviceD0Ev[]; -+EXPORT_SYMBOL(_ZN8ToDeviceD0Ev); -+extern char _ZN8ToDeviceD1Ev[]; -+EXPORT_SYMBOL(_ZN8ToDeviceD1Ev); -+extern char _ZN8ToDeviceD2Ev[]; -+EXPORT_SYMBOL(_ZN8ToDeviceD2Ev); -+extern char _ZNK8ToDevice10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK8ToDevice10class_nameEv); -+extern char _ZNK8ToDevice10port_countEv[]; -+EXPORT_SYMBOL(_ZNK8ToDevice10port_countEv); -+extern char _ZNK8ToDevice10processingEv[]; -+EXPORT_SYMBOL(_ZNK8ToDevice10processingEv); -+extern char _ZNK8ToDevice15configure_phaseEv[]; -+EXPORT_SYMBOL(_ZNK8ToDevice15configure_phaseEv); -+extern char _ZTV8ToDevice[]; -+EXPORT_SYMBOL(_ZTV8ToDevice); -+extern char _ZN6ToHost10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN6ToHost10initializeEP12ErrorHandler); -+extern char _ZN6ToHost12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN6ToHost12add_handlersEv); -+extern char _ZN6ToHost12read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN6ToHost12read_handlerEP7ElementPv); -+extern char _ZN6ToHost14static_cleanupEv[]; -+EXPORT_SYMBOL(_ZN6ToHost14static_cleanupEv); -+extern char _ZN6ToHost17static_initializeEv[]; -+EXPORT_SYMBOL(_ZN6ToHost17static_initializeEv); -+extern char _ZN6ToHost4pushEiP6Packet[]; -+EXPORT_SYMBOL(_ZN6ToHost4pushEiP6Packet); -+extern char _ZN6ToHost7cleanupEN7Element12CleanupStageE[]; -+EXPORT_SYMBOL(_ZN6ToHost7cleanupEN7Element12CleanupStageE); -+extern char _ZN6ToHost9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN6ToHost9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN6ToHostC1Ev[]; -+EXPORT_SYMBOL(_ZN6ToHostC1Ev); -+extern char _ZN6ToHostC2Ev[]; -+EXPORT_SYMBOL(_ZN6ToHostC2Ev); -+extern char _ZN6ToHostD0Ev[]; -+EXPORT_SYMBOL(_ZN6ToHostD0Ev); -+extern char _ZN6ToHostD1Ev[]; -+EXPORT_SYMBOL(_ZN6ToHostD1Ev); -+extern char _ZN6ToHostD2Ev[]; -+EXPORT_SYMBOL(_ZN6ToHostD2Ev); -+extern char _ZNK6ToHost10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK6ToHost10class_nameEv); -+extern char _ZNK6ToHost10port_countEv[]; -+EXPORT_SYMBOL(_ZNK6ToHost10port_countEv); -+extern char _ZNK6ToHost10processingEv[]; -+EXPORT_SYMBOL(_ZNK6ToHost10processingEv); -+extern char _ZNK6ToHost15configure_phaseEv[]; -+EXPORT_SYMBOL(_ZNK6ToHost15configure_phaseEv); -+extern char _ZNK6ToHost5flagsEv[]; -+EXPORT_SYMBOL(_ZNK6ToHost5flagsEv); -+extern char _ZTV6ToHost[]; -+EXPORT_SYMBOL(_ZTV6ToHost); -+extern char _ZN14ToHostSniffersC1Ev[]; -+EXPORT_SYMBOL(_ZN14ToHostSniffersC1Ev); -+extern char _ZN14ToHostSniffersC2Ev[]; -+EXPORT_SYMBOL(_ZN14ToHostSniffersC2Ev); -+extern char _ZN14ToHostSniffersD0Ev[]; -+EXPORT_SYMBOL(_ZN14ToHostSniffersD0Ev); -+extern char _ZN14ToHostSniffersD1Ev[]; -+EXPORT_SYMBOL(_ZN14ToHostSniffersD1Ev); -+extern char _ZN14ToHostSniffersD2Ev[]; -+EXPORT_SYMBOL(_ZN14ToHostSniffersD2Ev); -+extern char _ZNK14ToHostSniffers10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK14ToHostSniffers10class_nameEv); -+extern char _ZTV14ToHostSniffers[]; -+EXPORT_SYMBOL(_ZTV14ToHostSniffers); -+extern char _ZN8Truncate13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN8Truncate13simple_actionEP6Packet); -+extern char _ZN8Truncate9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8Truncate9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN8TruncateC1Ev[]; -+EXPORT_SYMBOL(_ZN8TruncateC1Ev); -+extern char _ZN8TruncateC2Ev[]; -+EXPORT_SYMBOL(_ZN8TruncateC2Ev); -+extern char _ZN8TruncateD0Ev[]; -+EXPORT_SYMBOL(_ZN8TruncateD0Ev); -+extern char _ZN8TruncateD1Ev[]; -+EXPORT_SYMBOL(_ZN8TruncateD1Ev); -+extern char _ZN8TruncateD2Ev[]; -+EXPORT_SYMBOL(_ZN8TruncateD2Ev); -+extern char _ZNK8Truncate10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK8Truncate10class_nameEv); -+extern char _ZNK8Truncate10port_countEv[]; -+EXPORT_SYMBOL(_ZNK8Truncate10port_countEv); -+extern char _ZNK8Truncate10processingEv[]; -+EXPORT_SYMBOL(_ZNK8Truncate10processingEv); -+extern char _ZTV8Truncate[]; -+EXPORT_SYMBOL(_ZTV8Truncate); -+extern char _ZN10UDPIPEncap12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN10UDPIPEncap12add_handlersEv); -+extern char _ZN10UDPIPEncap12read_handlerEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN10UDPIPEncap12read_handlerEP7ElementPv); -+extern char _ZN10UDPIPEncap13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN10UDPIPEncap13simple_actionEP6Packet); -+extern char _ZN10UDPIPEncap9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN10UDPIPEncap9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN10UDPIPEncapC1Ev[]; -+EXPORT_SYMBOL(_ZN10UDPIPEncapC1Ev); -+extern char _ZN10UDPIPEncapC2Ev[]; -+EXPORT_SYMBOL(_ZN10UDPIPEncapC2Ev); -+extern char _ZN10UDPIPEncapD0Ev[]; -+EXPORT_SYMBOL(_ZN10UDPIPEncapD0Ev); -+extern char _ZN10UDPIPEncapD1Ev[]; -+EXPORT_SYMBOL(_ZN10UDPIPEncapD1Ev); -+extern char _ZN10UDPIPEncapD2Ev[]; -+EXPORT_SYMBOL(_ZN10UDPIPEncapD2Ev); -+extern char _ZNK10UDPIPEncap10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK10UDPIPEncap10class_nameEv); -+extern char _ZNK10UDPIPEncap10port_countEv[]; -+EXPORT_SYMBOL(_ZNK10UDPIPEncap10port_countEv); -+extern char _ZNK10UDPIPEncap10processingEv[]; -+EXPORT_SYMBOL(_ZNK10UDPIPEncap10processingEv); -+extern char _ZNK10UDPIPEncap20can_live_reconfigureEv[]; -+EXPORT_SYMBOL(_ZNK10UDPIPEncap20can_live_reconfigureEv); -+extern char _ZNK10UDPIPEncap5flagsEv[]; -+EXPORT_SYMBOL(_ZNK10UDPIPEncap5flagsEv); -+extern char _ZTV10UDPIPEncap[]; -+EXPORT_SYMBOL(_ZTV10UDPIPEncap); -+extern char _ZN7Unqueue10initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7Unqueue10initializeEP12ErrorHandler); -+extern char _ZN7Unqueue10read_paramEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN7Unqueue10read_paramEP7ElementPv); -+extern char _ZN7Unqueue11write_paramERK6StringP7ElementPvP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7Unqueue11write_paramERK6StringP7ElementPvP12ErrorHandler); -+extern char _ZN7Unqueue12add_handlersEv[]; -+EXPORT_SYMBOL(_ZN7Unqueue12add_handlersEv); -+extern char _ZN7Unqueue8run_taskEP4Task[]; -+EXPORT_SYMBOL(_ZN7Unqueue8run_taskEP4Task); -+extern char _ZN7Unqueue9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7Unqueue9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN7UnqueueC1Ev[]; -+EXPORT_SYMBOL(_ZN7UnqueueC1Ev); -+extern char _ZN7UnqueueC2Ev[]; -+EXPORT_SYMBOL(_ZN7UnqueueC2Ev); -+extern char _ZN7UnqueueD0Ev[]; -+EXPORT_SYMBOL(_ZN7UnqueueD0Ev); -+extern char _ZN7UnqueueD1Ev[]; -+EXPORT_SYMBOL(_ZN7UnqueueD1Ev); -+extern char _ZN7UnqueueD2Ev[]; -+EXPORT_SYMBOL(_ZN7UnqueueD2Ev); -+extern char _ZNK7Unqueue10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK7Unqueue10class_nameEv); -+extern char _ZNK7Unqueue10port_countEv[]; -+EXPORT_SYMBOL(_ZNK7Unqueue10port_countEv); -+extern char _ZNK7Unqueue10processingEv[]; -+EXPORT_SYMBOL(_ZNK7Unqueue10processingEv); -+extern char _ZTV7Unqueue[]; -+EXPORT_SYMBOL(_ZTV7Unqueue); -+extern char _ZN8Unqueue210initializeEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8Unqueue210initializeEP12ErrorHandler); -+extern char _ZN8Unqueue210read_paramEP7ElementPv[]; -+EXPORT_SYMBOL(_ZN8Unqueue210read_paramEP7ElementPv); -+extern char _ZN8Unqueue212add_handlersEv[]; -+EXPORT_SYMBOL(_ZN8Unqueue212add_handlersEv); -+extern char _ZN8Unqueue28run_taskEP4Task[]; -+EXPORT_SYMBOL(_ZN8Unqueue28run_taskEP4Task); -+extern char _ZN8Unqueue29configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN8Unqueue29configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN8Unqueue2C1Ev[]; -+EXPORT_SYMBOL(_ZN8Unqueue2C1Ev); -+extern char _ZN8Unqueue2C2Ev[]; -+EXPORT_SYMBOL(_ZN8Unqueue2C2Ev); -+extern char _ZN8Unqueue2D0Ev[]; -+EXPORT_SYMBOL(_ZN8Unqueue2D0Ev); -+extern char _ZN8Unqueue2D1Ev[]; -+EXPORT_SYMBOL(_ZN8Unqueue2D1Ev); -+extern char _ZN8Unqueue2D2Ev[]; -+EXPORT_SYMBOL(_ZN8Unqueue2D2Ev); -+extern char _ZNK8Unqueue210class_nameEv[]; -+EXPORT_SYMBOL(_ZNK8Unqueue210class_nameEv); -+extern char _ZNK8Unqueue210port_countEv[]; -+EXPORT_SYMBOL(_ZNK8Unqueue210port_countEv); -+extern char _ZNK8Unqueue210processingEv[]; -+EXPORT_SYMBOL(_ZNK8Unqueue210processingEv); -+extern char _ZTV8Unqueue2[]; -+EXPORT_SYMBOL(_ZTV8Unqueue2); -+extern char _ZN7Unstrip13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN7Unstrip13simple_actionEP6Packet); -+extern char _ZN7Unstrip9configureER6VectorI6StringEP12ErrorHandler[]; -+EXPORT_SYMBOL(_ZN7Unstrip9configureER6VectorI6StringEP12ErrorHandler); -+extern char _ZN7UnstripC1Ej[]; -+EXPORT_SYMBOL(_ZN7UnstripC1Ej); -+extern char _ZN7UnstripC2Ej[]; -+EXPORT_SYMBOL(_ZN7UnstripC2Ej); -+extern char _ZN7UnstripD0Ev[]; -+EXPORT_SYMBOL(_ZN7UnstripD0Ev); -+extern char _ZN7UnstripD1Ev[]; -+EXPORT_SYMBOL(_ZN7UnstripD1Ev); -+extern char _ZN7UnstripD2Ev[]; -+EXPORT_SYMBOL(_ZN7UnstripD2Ev); -+extern char _ZNK7Unstrip10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK7Unstrip10class_nameEv); -+extern char _ZNK7Unstrip10port_countEv[]; -+EXPORT_SYMBOL(_ZNK7Unstrip10port_countEv); -+extern char _ZNK7Unstrip10processingEv[]; -+EXPORT_SYMBOL(_ZNK7Unstrip10processingEv); -+extern char _ZTV7Unstrip[]; -+EXPORT_SYMBOL(_ZTV7Unstrip); -+extern char _ZN15UnstripIPHeader13simple_actionEP6Packet[]; -+EXPORT_SYMBOL(_ZN15UnstripIPHeader13simple_actionEP6Packet); -+extern char _ZN15UnstripIPHeaderC1Ev[]; -+EXPORT_SYMBOL(_ZN15UnstripIPHeaderC1Ev); -+extern char _ZN15UnstripIPHeaderC2Ev[]; -+EXPORT_SYMBOL(_ZN15UnstripIPHeaderC2Ev); -+extern char _ZN15UnstripIPHeaderD0Ev[]; -+EXPORT_SYMBOL(_ZN15UnstripIPHeaderD0Ev); -+extern char _ZN15UnstripIPHeaderD1Ev[]; -+EXPORT_SYMBOL(_ZN15UnstripIPHeaderD1Ev); -+extern char _ZN15UnstripIPHeaderD2Ev[]; -+EXPORT_SYMBOL(_ZN15UnstripIPHeaderD2Ev); -+extern char _ZNK15UnstripIPHeader10class_nameEv[]; -+EXPORT_SYMBOL(_ZNK15UnstripIPHeader10class_nameEv); -+extern char _ZNK15UnstripIPHeader10port_countEv[]; -+EXPORT_SYMBOL(_ZNK15UnstripIPHeader10port_countEv); -+extern char _ZTV15UnstripIPHeader[]; -+EXPORT_SYMBOL(_ZTV15UnstripIPHeader); -+extern char _Z19cp_expand_in_quotesRK6Stringi[]; -+EXPORT_SYMBOL(_Z19cp_expand_in_quotesRK6Stringi); -+extern char _Z9cp_expandRK6StringR16VariableExpanderb[]; -+EXPORT_SYMBOL(_Z9cp_expandRK6StringR16VariableExpanderb); -+extern char _ZN19VariableEnvironment6defineERK6StringS2_b[]; -+EXPORT_SYMBOL(_ZN19VariableEnvironment6defineERK6StringS2_b); -+extern char _ZN19VariableEnvironment6expandERK6StringiiR11StringAccum[]; -+EXPORT_SYMBOL(_ZN19VariableEnvironment6expandERK6StringiiR11StringAccum); -+extern char _ZN19VariableEnvironment9parent_ofEi[]; -+EXPORT_SYMBOL(_ZN19VariableEnvironment9parent_ofEi); -+extern char _ZN19VariableEnvironmentC1EPS_[]; -+EXPORT_SYMBOL(_ZN19VariableEnvironmentC1EPS_); -+extern char _ZN19VariableEnvironmentC2EPS_[]; -+EXPORT_SYMBOL(_ZN19VariableEnvironmentC2EPS_); -+extern char _ZN19VariableEnvironmentD0Ev[]; -+EXPORT_SYMBOL(_ZN19VariableEnvironmentD0Ev); -+extern char _ZN19VariableEnvironmentD1Ev[]; -+EXPORT_SYMBOL(_ZN19VariableEnvironmentD1Ev); -+extern char _ZNK19VariableEnvironment5valueERK6StringRb[]; -+EXPORT_SYMBOL(_ZNK19VariableEnvironment5valueERK6StringRb); -+extern char _ZTV19VariableEnvironment[]; -+EXPORT_SYMBOL(_ZTV19VariableEnvironment); -+extern char _ZN6VectorIPvE4swapERS1_[]; -+EXPORT_SYMBOL(_ZN6VectorIPvE4swapERS1_); -+extern char _ZN6VectorIPvE5eraseEPS0_S2_[]; -+EXPORT_SYMBOL(_ZN6VectorIPvE5eraseEPS0_S2_); -+extern char _ZN6VectorIPvE6assignEiS0_[]; -+EXPORT_SYMBOL(_ZN6VectorIPvE6assignEiS0_); -+extern char _ZN6VectorIPvE6insertEPS0_S0_[]; -+EXPORT_SYMBOL(_ZN6VectorIPvE6insertEPS0_S0_); -+extern char _ZN6VectorIPvE6resizeEiS0_[]; -+EXPORT_SYMBOL(_ZN6VectorIPvE6resizeEiS0_); -+extern char _ZN6VectorIPvE7reserveEi[]; -+EXPORT_SYMBOL(_ZN6VectorIPvE7reserveEi); -+extern char _ZN6VectorIPvEC1ERKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorIPvEC1ERKS1_); -+extern char _ZN6VectorIPvEC2ERKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorIPvEC2ERKS1_); -+extern char _ZN6VectorIPvED1Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIPvED1Ev); -+extern char _ZN6VectorIPvED2Ev[]; -+EXPORT_SYMBOL(_ZN6VectorIPvED2Ev); -+extern char _ZN6VectorIPvEaSERKS1_[]; -+EXPORT_SYMBOL(_ZN6VectorIPvEaSERKS1_); -diff -Nurb click-1.6.0/linuxmodule/modules.order click-1.6.0-27/linuxmodule/modules.order ---- click-1.6.0/linuxmodule/modules.order 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/linuxmodule/modules.order 2009-02-11 16:55:09.000000000 -0500 -@@ -0,0 +1,2 @@ -+kernel//d/click/click-1.6.0-27/linuxmodule/click.ko -+kernel//d/click/click-1.6.0-27/linuxmodule/proclikefs.ko -diff -Nurb click-1.6.0/linuxmodule/proclikefs.c click-1.6.0-27/linuxmodule/proclikefs.c ---- click-1.6.0/linuxmodule/proclikefs.c 2007-07-16 19:47:50.000000000 -0400 -+++ click-1.6.0-27/linuxmodule/proclikefs.c 2009-02-11 16:49:44.000000000 -0500 -@@ -20,6 +20,8 @@ - #undef CLICK_LINUXMODULE - #include - #include -+#include -+ - #ifndef EXPORT_SYMTAB - # define EXPORT_SYMTAB - #endif -@@ -73,7 +75,7 @@ - char name[1]; - }; - --static LIST_HEAD(fs_list); -+static struct list_head fs_list; - static spinlock_t fslist_lock; - extern spinlock_t inode_lock; - extern spinlock_t sb_lock; -@@ -357,7 +359,7 @@ - fo->unlocked_ioctl = (void *) return_EIO; - fo->compat_ioctl = (void *) return_EIO; - fo->aio_fsync = (void *) return_EIO; -- fo->sendfile = (void *) return_EIO; -+ //fo->sendfile = (void *) return_EIO; - fo->check_flags = (void *) return_EIO; - fo->flock = (void *) return_EIO; - #endif -@@ -533,10 +535,12 @@ - int - init_module(void) - { -- proclikefs_null_super_operations.read_inode = proclikefs_read_inode; -+ //proclikefs_null_super_operations.read_inode = proclikefs_read_inode; - proclikefs_null_super_operations.put_super = proclikefs_put_super; - proclikefs_null_root_inode_operations.lookup = proclikefs_null_root_lookup; - spin_lock_init(&fslist_lock); -+ INIT_LIST_HEAD(&fs_list); -+ printk (KERN_CRIT "Initializing module\n"); - return 0; - } - -diff -Nurb click-1.6.0/linuxmodule/proclikefs.c.orig click-1.6.0-27/linuxmodule/proclikefs.c.orig ---- click-1.6.0/linuxmodule/proclikefs.c.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/linuxmodule/proclikefs.c.orig 2007-07-16 19:47:50.000000000 -0400 -@@ -0,0 +1,567 @@ -+/* -*- c-basic-offset: 4 -*- */ -+/* -+ * proclikefs.c -- /proc-like file system infrastructure; allow file systems -+ * to be unmounted even while active -+ * Eddie Kohler -+ * -+ * Copyright (c) 2002-2003 International Computer Science Institute -+ * Copyright (c) 2005 Regents of the University of California -+ * -+ * This source code 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, version 2. -+ * -+ * 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. -+ */ -+ -+#undef CLICK_LINUXMODULE -+#include -+#include -+#ifndef EXPORT_SYMTAB -+# define EXPORT_SYMTAB -+#endif -+#ifdef CONFIG_MODVERSIONS -+# define MODVERSIONS -+# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) -+# include -+# endif -+#endif -+#include -+#include "proclikefs.h" -+#include -+#include -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) -+# include -+#endif -+#include -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) -+# include -+#endif -+ -+#ifndef MOD_DEC_USE_COUNT -+# define MOD_DEC_USE_COUNT module_put(THIS_MODULE) -+#endif -+ -+ -+#if 0 -+# define DEBUG(args...) do { printk("<1>proclikefs: " args); printk("\n"); } while (0) -+#else -+# define DEBUG(args...) /* nada */ -+#endif -+ -+struct proclikefs_file_operations { -+ struct file_operations pfo_op; -+ struct proclikefs_file_operations *pfo_next; -+}; -+ -+struct proclikefs_inode_operations { -+ struct inode_operations pio_op; -+ struct proclikefs_inode_operations *pio_next; -+}; -+ -+struct proclikefs_file_system { -+ struct file_system_type fs; -+ struct list_head fs_list; -+ atomic_t nsuper; -+ int live; -+ spinlock_t lock; -+ struct proclikefs_file_operations *pfs_pfo; -+ struct proclikefs_inode_operations *pfs_pio; -+ char name[1]; -+}; -+ -+static LIST_HEAD(fs_list); -+static spinlock_t fslist_lock; -+extern spinlock_t inode_lock; -+extern spinlock_t sb_lock; -+ -+static struct super_operations proclikefs_null_super_operations; -+static struct inode_operations proclikefs_null_root_inode_operations; -+ -+EXPORT_SYMBOL(proclikefs_register_filesystem); -+EXPORT_SYMBOL(proclikefs_reinitialize_supers); -+EXPORT_SYMBOL(proclikefs_unregister_filesystem); -+EXPORT_SYMBOL(proclikefs_read_super); -+EXPORT_SYMBOL(proclikefs_put_super); -+EXPORT_SYMBOL(proclikefs_new_file_operations); -+EXPORT_SYMBOL(proclikefs_new_inode_operations); -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) -+static struct super_block * -+proclikefs_null_read_super(struct super_block *sb, void *data, int silent) -+{ -+ DEBUG("null_read_super"); -+ sb->s_dev = 0; -+ return 0; -+} -+#endif -+ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 16) -+static struct dentry * -+proclikefs_null_root_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *namei) -+{ -+ return (struct dentry *)(ERR_PTR(-ENOENT)); -+} -+#else -+static struct dentry * -+proclikefs_null_root_lookup(struct inode *dir, struct dentry *dentry) -+{ -+ return (struct dentry *)(ERR_PTR(-ENOENT)); -+} -+#endif -+ -+struct proclikefs_file_system * -+proclikefs_register_filesystem(const char *name, int fs_flags, -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19) -+ int (*get_sb) (struct file_system_type *, int, const char *, void *, struct vfsmount *) -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) -+ struct super_block *(*get_sb) (struct file_system_type *, int, const char *, void *) -+#else -+ struct super_block *(*read_super) (struct super_block *, void *, int) -+#endif -+ ) -+{ -+ struct proclikefs_file_system *newfs = 0; -+ struct list_head *next; -+ int newfs_is_new = 0; -+ -+ if (!name) -+ return 0; -+ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) -+ if (!try_module_get(THIS_MODULE)) { -+ printk("<1>proclikefs: error using module\n"); -+ return 0; -+ } -+#else -+ MOD_INC_USE_COUNT; -+#endif -+ -+ spin_lock(&fslist_lock); -+ -+ for (next = fs_list.next; next != &fs_list; next = next->next) { -+ newfs = list_entry(next, struct proclikefs_file_system, fs_list); -+ if (strcmp(name, newfs->name) == 0) { -+ if (newfs->live > 0) { /* active filesystem with that name */ -+ spin_unlock(&fslist_lock); -+ MOD_DEC_USE_COUNT; -+ return 0; -+ } else -+ break; -+ } -+ } -+ -+ if (!newfs) { -+ newfs = kmalloc(sizeof(struct proclikefs_file_system) + strlen(name), GFP_ATOMIC); -+ if (!newfs) { /* out of memory */ -+ spin_unlock(&fslist_lock); -+ MOD_DEC_USE_COUNT; -+ return 0; -+ } -+ newfs->pfs_pfo = 0; -+ newfs->pfs_pio = 0; -+ list_add(&newfs->fs_list, &fs_list); -+ strcpy(newfs->name, name); -+ spin_lock_init(&newfs->lock); -+ atomic_set(&newfs->nsuper, 0); -+ newfs->fs.name = newfs->name; -+ newfs->fs.next = 0; -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) -+ newfs->fs.owner = THIS_MODULE; -+#endif -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 10) -+ INIT_LIST_HEAD(&newfs->fs.fs_supers); -+#endif -+ newfs_is_new = 1; -+ } -+ -+ newfs->fs.fs_flags = fs_flags; -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) -+ newfs->fs.get_sb = get_sb; -+ newfs->fs.kill_sb = kill_anon_super; -+#else -+ newfs->fs.read_super = read_super; -+#endif -+ newfs->live = 1; -+ DEBUG("pfs[%p]: created filesystem %s", newfs, name); -+ -+ if (newfs_is_new) { -+ int err = register_filesystem(&newfs->fs); -+ if (err != 0) -+ printk("<1>proclikefs: error %d while initializing pfs[%p] (%s)\n", -err, newfs, name); -+ } -+ -+ spin_unlock(&fslist_lock); -+ return newfs; -+} -+ -+void -+proclikefs_reinitialize_supers(struct proclikefs_file_system *pfs, -+ void (*reread_super) (struct super_block *)) -+{ -+ struct super_block *sb; -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 10) -+ struct list_head *p; -+#endif -+ spin_lock(&fslist_lock); -+ /* transfer superblocks */ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 10) -+ spin_lock(&sb_lock); -+ for (p = pfs->fs.fs_supers.next; p != &pfs->fs.fs_supers; p = p->next) { -+ sb = list_entry(p, struct super_block, s_instances); -+ if (sb->s_type == &pfs->fs) -+ (*reread_super)(sb); -+ else -+ printk("<1>proclikefs: confusion\n"); -+ } -+ spin_unlock(&sb_lock); -+#else -+ for (sb = sb_entry(super_blocks.next); sb != sb_entry(&super_blocks); -+ sb = sb_entry(sb->s_list.next)) -+ if (sb->s_type == &pfs->fs) -+ (*reread_super)(sb); -+#endif -+ spin_unlock(&fslist_lock); -+} -+ -+static void -+proclikefs_kill_super(struct super_block *sb, struct file_operations *dummy) -+{ -+ struct dentry *dentry_tree; -+ struct list_head *p; -+ -+ DEBUG("killing files"); -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 16) -+ file_list_lock(); -+ list_for_each(p, &sb->s_files) { -+ struct file *filp = list_entry(p, struct file, f_u.fu_list); -+ filp->f_op = dummy; -+ } -+ file_list_unlock(); -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) -+ file_list_lock(); -+ for (p = sb->s_files.next; p != &sb->s_files; p = p->next) { -+ struct file *filp = list_entry(p, struct file, f_list); -+ filp->f_op = dummy; -+ } -+ file_list_unlock(); -+#else -+ (void) dummy; -+ (void) p; -+#endif -+ -+ lock_super(sb); -+ -+ sb->s_op = &proclikefs_null_super_operations; -+ /* will not create new dentries any more */ -+ -+ /* clear out dentries, starting from the root */ -+ /* Develop a linked list corresponding to depth-first search, through -+ the d_fsdata fields. */ -+ /* XXX locking? */ -+ -+ DEBUG("killing dentries"); -+ dentry_tree = sb->s_root; -+ if (dentry_tree) { -+ /* Do not d_drop(root) */ -+ dentry_tree->d_fsdata = 0; -+ } -+ while (dentry_tree) { -+ struct list_head *next; -+ struct dentry *active = dentry_tree; -+ /* Process this dentry, move to next */ -+ active->d_op = 0; -+ dentry_tree = (struct dentry *)active->d_fsdata; -+ /* Prepend children to dentry_tree */ -+ next = active->d_subdirs.next; -+ while (next != &active->d_subdirs) { -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 16) -+ struct dentry *child = list_entry(next, struct dentry, d_u.d_child); -+#else -+ struct dentry *child = list_entry(next, struct dentry, d_child); -+#endif -+ next = next->next; -+ d_drop(child); -+ child->d_fsdata = (void *)dentry_tree; -+ dentry_tree = child; -+ } -+ } -+ -+ /* But the root inode can't be a dead inode */ -+ sb->s_root->d_inode->i_op = &proclikefs_null_root_inode_operations; -+ -+ unlock_super(sb); -+ DEBUG("done killing super"); -+} -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 16) -+static int bad_follow_link(struct dentry *dent, struct nameidata *nd) -+{ -+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) -+ nd_set_link(nd, ERR_PTR(-EIO)); -+ return 0; -+# else -+ return vfs_follow_link(nd, ERR_PTR(-EIO)); -+# endif -+} -+#endif -+ -+static int return_EIO(void) -+{ -+ return -EIO; -+} -+ -+void -+proclikefs_unregister_filesystem(struct proclikefs_file_system *pfs) -+{ -+ struct super_block *sb; -+ struct file *filp; -+ struct list_head *p; -+ struct proclikefs_file_operations *pfo; -+ struct proclikefs_inode_operations *pio; -+ -+ if (!pfs) -+ return; -+ -+ DEBUG("unregister_filesystem entry"); -+ spin_lock(&fslist_lock); -+ -+ /* clear out file operations */ -+ for (pfo = pfs->pfs_pfo; pfo; pfo = pfo->pfo_next) { -+ struct file_operations *fo = &pfo->pfo_op; -+ fo->llseek = (void *) return_EIO; -+ fo->read = (void *) return_EIO; -+ fo->write = (void *) return_EIO; -+ fo->readdir = (void *) return_EIO; -+ fo->poll = (void *) return_EIO; -+ fo->ioctl = (void *) return_EIO; -+ fo->mmap = (void *) return_EIO; -+ fo->open = (void *) return_EIO; -+ fo->flush = (void *) return_EIO; -+ fo->release = (void *) return_EIO; -+ fo->fsync = (void *) return_EIO; -+ fo->fasync = (void *) return_EIO; -+ fo->lock = (void *) return_EIO; -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 19) -+ fo->readv = (void *) return_EIO; -+ fo->writev = (void *) return_EIO; -+#endif -+ fo->sendpage = (void *) return_EIO; -+ fo->get_unmapped_area = (void *) return_EIO; -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) -+ fo->aio_read = (void *) return_EIO; -+ fo->aio_write = (void *) return_EIO; -+ fo->unlocked_ioctl = (void *) return_EIO; -+ fo->compat_ioctl = (void *) return_EIO; -+ fo->aio_fsync = (void *) return_EIO; -+ fo->sendfile = (void *) return_EIO; -+ fo->check_flags = (void *) return_EIO; -+ fo->flock = (void *) return_EIO; -+#endif -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19) -+ fo->dir_notify = (void *) return_EIO; -+ fo->splice_write = (void *) return_EIO; -+ fo->splice_read = (void *) return_EIO; -+#endif -+ } -+ -+ for (pio = pfs->pfs_pio; pio; pio = pio->pio_next) { -+ struct inode_operations *io = &pio->pio_op; -+ io->create = (void *) return_EIO; -+ io->lookup = (void *) return_EIO; -+ io->link = (void *) return_EIO; -+ io->unlink = (void *) return_EIO; -+ io->symlink = (void *) return_EIO; -+ io->mkdir = (void *) return_EIO; -+ io->rmdir = (void *) return_EIO; -+ io->mknod = (void *) return_EIO; -+ io->rename = (void *) return_EIO; -+ io->readlink = (void *) return_EIO; -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 16) -+ io->follow_link = 0; -+#else -+ io->follow_link = bad_follow_link; -+#endif -+ io->truncate = (void *) return_EIO; -+ io->permission = (void *) return_EIO; -+ io->setattr = (void *) return_EIO; -+ io->getattr = (void *) return_EIO; -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 20) -+ io->setxattr = (void *) return_EIO; -+ io->getxattr = (void *) return_EIO; -+ io->listxattr = (void *) return_EIO; -+ io->removexattr = (void *) return_EIO; -+#endif -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) -+ io->put_link = (void *) return_EIO; -+#else -+ io->revalidate = (void *) return_EIO; -+#endif -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19) -+ io->truncate_range = (void *) return_EIO; -+#endif -+ } -+ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) -+ /* file operations cleared out superblock by superblock, below */ -+ (void) filp; -+#else -+ /* clear out file operations */ -+ /* inuse_filps is protected by the single kernel lock */ -+ /* XXX locking? */ -+ for (filp = inuse_filps; filp; filp = filp->f_next) { -+ struct dentry *dentry = filp->f_dentry; -+ if (!dentry) -+ continue; -+ inode = dentry->d_inode; -+ if (!inode || !inode->i_sb || inode->i_sb->s_type != &pfs->fs) -+ continue; -+ filp->f_op = &pfs->pfs_pfo->pfo_op; -+ } -+#endif -+ -+ spin_lock(&pfs->lock); -+ -+ /* clear out superblock operations */ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 10) -+ DEBUG("clearing superblocks"); -+ spin_lock(&sb_lock); -+ for (p = pfs->fs.fs_supers.next; p != &pfs->fs.fs_supers; p = p->next) { -+ sb = list_entry(p, struct super_block, s_instances); -+ proclikefs_kill_super(sb, &pfs->pfs_pfo->pfo_op); -+ } -+ spin_unlock(&sb_lock); -+#else -+ for (sb = sb_entry(super_blocks.next); sb != sb_entry(&super_blocks); -+ sb = sb_entry(sb->s_list.next)) { -+ if (sb->s_type != &pfs->fs) -+ continue; -+ proclikefs_kill_super(sb, &pfs->pfs_pfo->pfo_op); -+ } -+ (void) p; -+#endif -+ -+ pfs->live = 0; -+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0) -+ pfs->fs.read_super = proclikefs_null_read_super; -+#endif -+ MOD_DEC_USE_COUNT; -+ -+ spin_unlock(&pfs->lock); -+ spin_unlock(&fslist_lock); -+} -+ -+void -+proclikefs_read_super(struct super_block *sb) -+{ -+ struct proclikefs_file_system *pfs = (struct proclikefs_file_system *) (sb->s_type); -+ atomic_inc(&pfs->nsuper); -+ DEBUG("pfs[%p]: read_super for %s", pfs, pfs->fs.name); -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) -+ if (!try_module_get(THIS_MODULE)) -+ printk("<1>proclikefs: error using module\n"); -+#else -+ MOD_INC_USE_COUNT; -+#endif -+} -+ -+void -+proclikefs_put_super(struct super_block *sb) -+{ -+ struct proclikefs_file_system *pfs = (struct proclikefs_file_system *) (sb->s_type); -+ atomic_dec(&pfs->nsuper); -+ DEBUG("pfs[%p]: put_super for %s", pfs, pfs->fs.name); -+ MOD_DEC_USE_COUNT; -+ spin_lock(&fslist_lock); -+ if (!pfs->live && atomic_read(&pfs->nsuper) == 0) { -+ struct proclikefs_file_operations *pfo; -+ struct proclikefs_inode_operations *pio; -+ -+ list_del(&pfs->fs_list); -+ unregister_filesystem(&pfs->fs); -+ while ((pfo = pfs->pfs_pfo)) { -+ pfs->pfs_pfo = pfo->pfo_next; -+ kfree(pfo); -+ } -+ while ((pio = pfs->pfs_pio)) { -+ pfs->pfs_pio = pio->pio_next; -+ kfree(pio); -+ } -+ kfree(pfs); -+ } -+ spin_unlock(&fslist_lock); -+} -+ -+struct file_operations * -+proclikefs_new_file_operations(struct proclikefs_file_system *pfs) -+{ -+ struct proclikefs_file_operations *pfo = kmalloc(sizeof(struct proclikefs_file_operations), GFP_ATOMIC); -+ -+ if (pfo) { -+ spin_lock(&fslist_lock); -+ pfo->pfo_next = pfs->pfs_pfo; -+ pfs->pfs_pfo = pfo; -+ spin_unlock(&fslist_lock); -+ memset(&pfo->pfo_op, 0, sizeof(struct file_operations)); -+ } -+ return &pfo->pfo_op; -+} -+ -+struct inode_operations * -+proclikefs_new_inode_operations(struct proclikefs_file_system *pfs) -+{ -+ struct proclikefs_inode_operations *pio = kmalloc(sizeof(struct proclikefs_inode_operations), GFP_ATOMIC); -+ -+ if (pio) { -+ spin_lock(&fslist_lock); -+ pio->pio_next = pfs->pfs_pio; -+ pfs->pfs_pio = pio; -+ spin_unlock(&fslist_lock); -+ memset(&pio->pio_op, 0, sizeof(struct inode_operations)); -+ } -+ return &pio->pio_op; -+} -+ -+void -+proclikefs_read_inode(struct inode *inode) -+{ -+} -+ -+int -+init_module(void) -+{ -+ proclikefs_null_super_operations.read_inode = proclikefs_read_inode; -+ proclikefs_null_super_operations.put_super = proclikefs_put_super; -+ proclikefs_null_root_inode_operations.lookup = proclikefs_null_root_lookup; -+ spin_lock_init(&fslist_lock); -+ return 0; -+} -+ -+void -+cleanup_module(void) -+{ -+ struct list_head *next; -+ spin_lock(&fslist_lock); -+ for (next = fs_list.next; next != &fs_list; ) { -+ struct proclikefs_file_system *pfs = list_entry(next, struct proclikefs_file_system, fs_list); -+ next = next->next; -+ if (pfs->live || atomic_read(&pfs->nsuper) != 0) -+ printk("<1>proclikefs: unregistering active FS %s, prepare to die\n", pfs->name); -+ unregister_filesystem(&pfs->fs); -+ kfree(pfs); -+ } -+ spin_unlock(&fslist_lock); -+} -+ -+#ifdef MODULE_AUTHOR -+MODULE_AUTHOR("Eddie Kohler "); -+#endif -+#ifdef MODULE_DESCRIPTION -+MODULE_DESCRIPTION("Proclikefs: allow module unload of mounted filesystems"); -+#endif -+#ifdef MODULE_LICENSE -+MODULE_LICENSE("GPL"); -+#endif -diff -Nurb click-1.6.0/linuxmodule/read-pmc.c click-1.6.0-27/linuxmodule/read-pmc.c ---- click-1.6.0/linuxmodule/read-pmc.c 2007-07-16 19:47:50.000000000 -0400 -+++ click-1.6.0-27/linuxmodule/read-pmc.c 2009-02-11 16:51:50.000000000 -0500 -@@ -21,6 +21,7 @@ - #include - - -+ - #define P6MSR_CTRSEL0 0x186 /* MSR for programming CTR0 on P6 */ - #define P6MSR_CTRSEL1 0x187 /* MSR for programming CTR0 on P6 */ - #define P6MSR_CTR0 0xc1 /* Ctr0 on P6 */ -diff -Nurb click-1.6.0/linuxmodule/read-pmc.c.orig click-1.6.0-27/linuxmodule/read-pmc.c.orig ---- click-1.6.0/linuxmodule/read-pmc.c.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/linuxmodule/read-pmc.c.orig 2007-07-16 19:47:50.000000000 -0400 -@@ -0,0 +1,62 @@ -+/* -+ * Read and clear the PPro performance counters. -+ * Can't be compiled in C++? -+ */ -+ -+ /* -+ * Event number. -+ * 0x48 Number of cycles while a DCU mis is outstanding. -+ * 0x80 instruction fetches. -+ * 0x81 instruction fetch misses. -+ * 0x85 ITLB misses. -+ * 0x86 cycles of instruction fetch stall. -+ * 0xC8 interrupts. -+ * 0x13 floating point divides (only counter 1). -+ * 0x79 cycles in which the cpu is NOT halted. -+ */ -+ -+#include -+#include -+#include -+#include -+ -+ -+#define P6MSR_CTRSEL0 0x186 /* MSR for programming CTR0 on P6 */ -+#define P6MSR_CTRSEL1 0x187 /* MSR for programming CTR0 on P6 */ -+#define P6MSR_CTR0 0xc1 /* Ctr0 on P6 */ -+#define P6MSR_CTR1 0xc2 /* Ctr1 on P6 */ -+ -+typedef unsigned long long u_quad_t; -+typedef u_quad_t pctrval; -+ -+#define rdmsr(msr) \ -+({ \ -+ pctrval v; \ -+ __asm __volatile (".byte 0xf, 0x32" : "=A" (v) : "c" (msr)); \ -+ v; \ -+}) -+ -+#define wrmsr(msr, v) \ -+ __asm __volatile (".byte 0xf, 0x30" :: "A" ((u_quad_t) (v)), "c" (msr)); -+ -+/* Read the performance counters (Pentium Pro only) */ -+#define rdpmc(ctr) \ -+({ \ -+ pctrval v; \ -+ __asm __volatile (".byte 0xf, 0x33\n" \ -+ "\tandl $0xff, %%edx" \ -+ : "=A" (v) : "c" (ctr)); \ -+ v; \ -+}) -+ -+void -+click_cycle_counter(int which, unsigned int *fnp, unsigned long long *valp) -+{ -+#ifdef __i386__ -+ *fnp = rdmsr(P6MSR_CTRSEL0 + which); -+ *valp = rdpmc(which); -+ wrmsr(P6MSR_CTR0+which, 0); -+#else -+ printk("<1>click_cycle_counter: not i386\n"); -+#endif -+} -diff -Nurb click-1.6.0/linuxmodule/sched.cc click-1.6.0-27/linuxmodule/sched.cc ---- click-1.6.0/linuxmodule/sched.cc 2007-08-28 19:01:58.000000000 -0400 -+++ click-1.6.0-27/linuxmodule/sched.cc 2009-01-26 16:55:57.000000000 -0500 -@@ -228,7 +228,7 @@ - click_thread_priority = priority; - if (click_thread_pids) - for (int i = 0; i < click_thread_pids->size(); i++) { -- struct task_struct *task = find_task_by_pid((*click_thread_pids)[i]); -+ struct task_struct *task = find_task_by_vpid((*click_thread_pids)[i]); - if (task) - TASK_PRIO(task) = priority; - } -@@ -429,7 +429,7 @@ - SOFT_SPIN_LOCK(&click_thread_lock); - for (int i = 0; i < click_thread_pids->size(); i++) { - printk("<1>click: router thread pid %d\n", (*click_thread_pids)[i]); -- struct task_struct *ct = find_task_by_pid((*click_thread_pids)[i]); -+ struct task_struct *ct = find_task_by_vpid((*click_thread_pids)[i]); - if (ct) - printk("<1>click: state %d, EIP %08x\n", (int) ct->state, KSTK_EIP(ct)); - } -diff -Nurb click-1.6.0/linuxmodule/sched.cc.orig click-1.6.0-27/linuxmodule/sched.cc.orig ---- click-1.6.0/linuxmodule/sched.cc.orig 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/linuxmodule/sched.cc.orig 2007-08-28 19:01:58.000000000 -0400 -@@ -0,0 +1,446 @@ -+// -*- c-basic-offset: 4 -*- -+/* -+ * sched.cc -- kernel scheduler thread for click -+ * Benjie Chen, Eddie Kohler -+ * -+ * Copyright (c) 1999-2000 Massachusetts Institute of Technology -+ * Copyright (c) 2002-2003 International Computer Science Institute -+ * Copyright (c) 2007 Regents of the University of California -+ * -+ * Permission is hereby granted, free of charge, to any person obtaining a -+ * copy of this software and associated documentation files (the "Software"), -+ * to deal in the Software without restriction, subject to the conditions -+ * listed in the Click LICENSE file. These conditions include: you must -+ * preserve this copyright notice, and you cannot mention the copyright -+ * holders in advertising related to the Software without their permission. -+ * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This -+ * notice is a summary of the Click LICENSE file; the license in that file is -+ * legally binding. -+ */ -+ -+#define CLICK_SCHED_DEBUG -+#include -+#include "modulepriv.hh" -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+CLICK_CXX_PROTECT -+#include -+#include -+#include -+#include -+#include -+#include -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) -+# include -+#endif -+CLICK_CXX_UNPROTECT -+#include -+ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) -+# define MIN_PRIO MAX_RT_PRIO -+/* MAX_PRIO already defined */ -+# define PRIO2NICE(p) ((p) - MIN_PRIO - 20) -+# define NICE2PRIO(n) (MIN_PRIO + (n) + 20) -+# define DEF_PRIO NICE2PRIO(0) -+# define TASK_PRIO(t) ((t)->static_prio) -+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) -+# define MIN_PRIO (-20) -+# define MAX_PRIO 20 -+# define PRIO2NICE(p) (p) -+# define NICE2PRIO(n) (n) -+# define DEF_PRIO DEF_NICE -+# define TASK_PRIO(t) ((t)->nice) -+#else -+# define MIN_PRIO 1 -+# define MAX_PRIO (2 * DEF_PRIORITY) -+# define PRIO2NICE(p) (DEF_PRIORITY - (p)) -+# define NICE2PRIO(n) (DEF_PRIORITY - (n)) -+# define DEF_PRIO DEF_PRIORITY -+# define TASK_PRIO(t) ((t)->priority) -+#endif -+ -+#define SOFT_SPIN_LOCK(l) do { /*MDEBUG("soft_lock %s", #l);*/ soft_spin_lock((l)); } while (0) -+#define SPIN_UNLOCK(l) do { /*MDEBUG("unlock %s", #l);*/ spin_unlock((l)); } while (0) -+ -+static spinlock_t click_thread_lock; -+static int click_thread_priority = DEF_PRIO; -+static Vector *click_thread_pids; -+static Router *placeholder_router; -+ -+#ifdef HAVE_ADAPTIVE_SCHEDULER -+static unsigned min_click_frac = 5, max_click_frac = 800; -+#endif -+ -+static void -+soft_spin_lock(spinlock_t *l) -+{ -+ while (!spin_trylock(l)) -+ schedule(); -+} -+ -+static int -+click_sched(void *thunk) -+{ -+#ifdef LINUX_2_2 -+ // In Linux 2.2, daemonize() doesn't do exit_files. -+ exit_files(current); -+ current->files = init_task.files; -+ if (current->files) -+ atomic_inc(¤t->files->count); -+#endif -+ -+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) -+ daemonize("kclick"); -+#else -+ daemonize(); -+ strcpy(current->comm, "kclick"); -+#endif -+ -+ TASK_PRIO(current) = click_thread_priority; -+ -+ RouterThread *rt = (RouterThread *)thunk; -+#ifdef HAVE_ADAPTIVE_SCHEDULER -+ rt->set_cpu_share(min_click_frac, max_click_frac); -+#endif -+ -+#if CONFIG_SMP -+ int mycpu = click_parm(CLICKPARM_CPU); -+ if (mycpu >= 0) { -+ mycpu += rt->thread_id(); -+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0) -+ if (mycpu < num_possible_cpus() && cpu_online(mycpu)) -+ set_cpus_allowed(current, cpumask_of_cpu(mycpu)); -+ else -+ printk("<1>click: warning: cpu %d for thread %d offline\n", mycpu, rt->thread_id()); -+# elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 21) -+ if (mycpu < smp_num_cpus && (cpu_online_map & (1UL << cpu_logical_map(mycpu)))) -+ set_cpus_allowed(current, 1UL << cpu_logical_map(mycpu)); -+ else -+ printk("<1>click: warning: cpu %d for thread %d offline\n", mycpu, rt->thread_id()); -+# endif -+ } -+#endif -+ -+ printk("<1>click: starting router thread pid %d (%p)\n", current->pid, rt); -+ -+ // add pid to thread list -+ SOFT_SPIN_LOCK(&click_thread_lock); -+ if (click_thread_pids) -+ click_thread_pids->push_back(current->pid); -+ SPIN_UNLOCK(&click_thread_lock); -+ -+ // driver loop; does not return for a while -+ rt->driver(); -+ -+ // release master (preserved in click_init_sched) -+ click_master->unuse(); -+ -+ // remove pid from thread list -+ SOFT_SPIN_LOCK(&click_thread_lock); -+ if (click_thread_pids) -+ for (int i = 0; i < click_thread_pids->size(); i++) { -+ if ((*click_thread_pids)[i] == current->pid) { -+ (*click_thread_pids)[i] = click_thread_pids->back(); -+ click_thread_pids->pop_back(); -+ break; -+ } -+ } -+ printk("<1>click: stopping router thread pid %d\n", current->pid); -+ SPIN_UNLOCK(&click_thread_lock); -+ -+ return 0; -+} -+ -+static int -+kill_router_threads() -+{ -+ delete placeholder_router; -+ if (click_router) -+ click_router->set_runcount(Router::STOP_RUNCOUNT); -+ -+ // wait up to 5 seconds for routers to exit -+ unsigned long out_jiffies = jiffies + 5 * HZ; -+ int num_threads; -+ do { -+ MDEBUG("click_sched: waiting for threads to die"); -+ SOFT_SPIN_LOCK(&click_thread_lock); -+ num_threads = click_thread_pids->size(); -+ SPIN_UNLOCK(&click_thread_lock); -+ if (num_threads > 0) -+ schedule(); -+ } while (num_threads > 0 && jiffies < out_jiffies); -+ -+ if (num_threads > 0) { -+ printk("<1>click: current router threads refuse to die!\n"); -+ return -1; -+ } else -+ return 0; -+} -+ -+ -+/******************************* Handlers ************************************/ -+ -+static String -+read_threads(Element *, void *) -+{ -+ StringAccum sa; -+ MDEBUG("reading threads"); -+ SOFT_SPIN_LOCK(&click_thread_lock); -+ if (click_thread_pids) -+ for (int i = 0; i < click_thread_pids->size(); i++) -+ sa << (*click_thread_pids)[i] << '\n'; -+ SPIN_UNLOCK(&click_thread_lock); -+ return sa.take_string(); -+} -+ -+static String -+read_priority(Element *, void *) -+{ -+ return String(PRIO2NICE(click_thread_priority)) + "\n"; -+} -+ -+static int -+write_priority(const String &conf, Element *, void *, ErrorHandler *errh) -+{ -+ int priority; -+ if (!cp_integer(cp_uncomment(conf), &priority)) -+ return errh->error("priority must be an integer"); -+ -+ priority = NICE2PRIO(priority); -+ if (priority < MIN_PRIO) { -+ priority = MIN_PRIO; -+ errh->warning("priority pinned at %d", PRIO2NICE(priority)); -+ } else if (priority > MAX_PRIO) { -+ priority = MAX_PRIO; -+ errh->warning("priority pinned at %d", PRIO2NICE(priority)); -+ } -+ -+ // change current thread priorities -+ MDEBUG("writing priority"); -+ SOFT_SPIN_LOCK(&click_thread_lock); -+ click_thread_priority = priority; -+ if (click_thread_pids) -+ for (int i = 0; i < click_thread_pids->size(); i++) { -+ struct task_struct *task = find_task_by_pid((*click_thread_pids)[i]); -+ if (task) -+ TASK_PRIO(task) = priority; -+ } -+ SPIN_UNLOCK(&click_thread_lock); -+ -+ return 0; -+} -+ -+ -+#if CLICK_DEBUG_MASTER -+static String -+read_master_info(Element *, void *) -+{ -+ return click_master->info(); -+} -+#endif -+ -+ -+#ifdef HAVE_ADAPTIVE_SCHEDULER -+ -+static String -+read_cpu_share(Element *, void *thunk) -+{ -+ int val = (thunk ? max_click_frac : min_click_frac); -+ return cp_unparse_real10(val, 3) + "\n"; -+} -+ -+static String -+read_cur_cpu_share(Element *, void *) -+{ -+ if (click_router) { -+ String s; -+ for (int i = 0; i < click_master->nthreads(); i++) -+ s += cp_unparse_real10(click_master->thread(i)->cur_cpu_share(), 3) + "\n"; -+ return s; -+ } else -+ return "0\n"; -+} -+ -+static int -+write_cpu_share(const String &conf, Element *, void *thunk, ErrorHandler *errh) -+{ -+ const char *name = (thunk ? "max_" : "min_"); -+ -+ int32_t frac; -+ if (!cp_real10(cp_uncomment(conf), 3, &frac) || frac < 1 || frac > 999) -+ return errh->error("%scpu_share must be a real number between 0.001 and 0.999", name); -+ -+ (thunk ? max_click_frac : min_click_frac) = frac; -+ -+ // change current thread priorities -+ for (int i = 0; i < click_master->nthreads(); i++) -+ click_master->thread(i)->set_cpu_share(min_click_frac, max_click_frac); -+ -+ return 0; -+} -+ -+#endif -+ -+enum { H_TASKS_PER_ITER, H_ITERS_PER_TIMERS, H_ITERS_PER_OS }; -+ -+ -+static String -+read_sched_param(Element *, void *thunk) -+{ -+ String s; -+ switch (reinterpret_cast(thunk)) { -+ -+ case H_TASKS_PER_ITER: -+ for (int i = 0; i < click_master->nthreads(); i++) -+ s += String(click_master->thread(i)->_tasks_per_iter) + "\n"; -+ break; -+ -+ case H_ITERS_PER_TIMERS: -+ for (int i = 0; i < click_master->nthreads(); i++) -+ s += String(click_master->thread(i)->_iters_per_timers) + "\n"; -+ break; -+ -+ case H_ITERS_PER_OS: -+ for (int i = 0; i < click_master->nthreads(); i++) -+ s += String(click_master->thread(i)->_iters_per_os) + "\n"; -+ break; -+ -+ } -+ return s; -+} -+ -+static int -+write_sched_param(const String &conf, Element *e, void *thunk, ErrorHandler *errh) -+{ -+ switch (reinterpret_cast(thunk)) { -+ -+ case H_TASKS_PER_ITER: { -+ unsigned x; -+ if (!cp_integer(conf, &x)) -+ return errh->error("tasks_per_iter must be unsigned\n"); -+ // change current thread priorities -+ for (int i = 0; i < click_master->nthreads(); i++) -+ click_master->thread(i)->_tasks_per_iter = x; -+ break; -+ } -+ -+ case H_ITERS_PER_TIMERS: { -+ unsigned x; -+ if (!cp_integer(conf, &x)) -+ return errh->error("tasks_per_iter_timers must be unsigned\n"); -+ // change current thread priorities -+ for (int i = 0; i < click_master->nthreads(); i++) -+ click_master->thread(i)->_iters_per_timers = x; -+ break; -+ } -+ -+ case H_ITERS_PER_OS: { -+ unsigned x; -+ if (!cp_integer(conf, &x)) -+ return errh->error("tasks_per_iter_os must be unsigned\n"); -+ // change current thread priorities -+ for (int i = 0; i < click_master->nthreads(); i++) -+ click_master->thread(i)->_iters_per_os = x; -+ break; -+ } -+ -+ } -+ return 0; -+} -+ -+/********************** Initialization and cleanup ***************************/ -+ -+void -+click_init_sched(ErrorHandler *errh) -+{ -+ spin_lock_init(&click_thread_lock); -+ click_thread_pids = new Vector; -+ bool greedy = click_parm(CLICKPARM_GREEDY); -+ -+#if __MTCLICK__ -+ click_master = new Master(click_parm(CLICKPARM_THREADS)); -+ if (num_possible_cpus() != NUM_CLICK_CPUS) -+ click_chatter("warning: click compiled for %d cpus, machine allows %d", -+ NUM_CLICK_CPUS, num_possible_cpus()); -+#else -+ click_master = new Master(1); -+#endif -+ click_master->use(); -+ -+ placeholder_router = new Router("", click_master); -+ placeholder_router->initialize(errh); -+ placeholder_router->activate(errh); -+ -+ for (int i = 0; i < click_master->nthreads(); i++) { -+ click_master->use(); -+ RouterThread *thread = click_master->thread(i); -+ thread->set_greedy(greedy); -+ pid_t pid = kernel_thread -+ (click_sched, thread, CLONE_FS | CLONE_FILES | CLONE_SIGHAND); -+ if (pid < 0) { -+ errh->error("cannot create kernel thread for Click thread %i!", i); -+ click_master->unuse(); -+ } -+ } -+ -+ Router::add_read_handler(0, "threads", read_threads, 0); -+ Router::add_read_handler(0, "priority", read_priority, 0); -+ Router::add_write_handler(0, "priority", write_priority, 0); -+#ifdef HAVE_ADAPTIVE_SCHEDULER -+ static_assert(Task::MAX_UTILIZATION == 1000); -+ Router::add_read_handler(0, "min_cpu_share", read_cpu_share, 0); -+ Router::add_write_handler(0, "min_cpu_share", write_cpu_share, 0); -+ Router::add_read_handler(0, "max_cpu_share", read_cpu_share, (void *)1); -+ Router::add_write_handler(0, "max_cpu_share", write_cpu_share, (void *)1); -+ Router::add_read_handler(0, "cpu_share", read_cur_cpu_share, 0); -+#else -+ Router::add_read_handler(0, "tasks_per_iter", read_sched_param, -+ (void *)H_TASKS_PER_ITER); -+ Router::add_read_handler(0, "iters_per_timers", read_sched_param, -+ (void *)H_ITERS_PER_TIMERS); -+ Router::add_read_handler(0, "iters_per_os", read_sched_param, -+ (void *)H_ITERS_PER_OS); -+ -+ Router::add_write_handler(0, "tasks_per_iter", write_sched_param, -+ (void *)H_TASKS_PER_ITER); -+ Router::add_write_handler(0, "iters_per_timers", write_sched_param, -+ (void *)H_ITERS_PER_TIMERS); -+ Router::add_write_handler(0, "iters_per_os", write_sched_param, -+ (void *)H_ITERS_PER_OS); -+ -+#endif -+#if CLICK_DEBUG_MASTER -+ Router::add_read_handler(0, "master_info", read_master_info, 0); -+#endif -+} -+ -+int -+click_cleanup_sched() -+{ -+ if (kill_router_threads() < 0) { -+ printk("<1>click: Following threads still active, expect a crash:\n"); -+ SOFT_SPIN_LOCK(&click_thread_lock); -+ for (int i = 0; i < click_thread_pids->size(); i++) { -+ printk("<1>click: router thread pid %d\n", (*click_thread_pids)[i]); -+ struct task_struct *ct = find_task_by_pid((*click_thread_pids)[i]); -+ if (ct) -+ printk("<1>click: state %d, EIP %08x\n", (int) ct->state, KSTK_EIP(ct)); -+ } -+ SPIN_UNLOCK(&click_thread_lock); -+ click_master->unuse(); -+ return -1; -+ } else { -+ delete click_thread_pids; -+ click_thread_pids = 0; -+ click_master->unuse(); -+ click_master = 0; -+ return 0; -+ } -+} -diff -Nurb click-1.6.0/linuxmodule/string.i click-1.6.0-27/linuxmodule/string.i ---- click-1.6.0/linuxmodule/string.i 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/linuxmodule/string.i 2009-02-11 15:17:46.000000000 -0500 -@@ -0,0 +1,24292 @@ -+# 1 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc" -+# 1 "" -+# 1 "" -+# 1 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc" -+# 20 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc" -+# 1 "/d/click/click-1.6.0-27/linuxmodule/../include/click/config.h" 1 -+# 150 "/d/click/click-1.6.0-27/linuxmodule/../include/click/config.h" -+# 1 "/d/click/click-1.6.0-27/linuxmodule/../include/click/config-linuxmodule.h" 1 -+# 90 "/d/click/click-1.6.0-27/linuxmodule/../include/click/config-linuxmodule.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/autoconf.h" 1 -+# 91 "/d/click/click-1.6.0-27/linuxmodule/../include/click/config-linuxmodule.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/types.h" 1 -+# 11 "/d/kernels/linux-2.6.27.10-clickport/include/linux/types.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/posix_types.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/stddef.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/compiler.h" 1 -+# 40 "/d/kernels/linux-2.6.27.10-clickport/include/linux/compiler.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/compiler-gcc4.h" 1 -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/compiler-gcc.h" 1 -+# 7 "/d/kernels/linux-2.6.27.10-clickport/include/linux/compiler-gcc4.h" 2 -+# 41 "/d/kernels/linux-2.6.27.10-clickport/include/linux/compiler.h" 2 -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/stddef.h" 2 -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/posix_types.h" 2 -+# 36 "/d/kernels/linux-2.6.27.10-clickport/include/linux/posix_types.h" -+typedef struct { -+ unsigned long fds_bits [(1024/(8 * sizeof(unsigned long)))]; -+} __kernel_fd_set; -+ -+ -+typedef void (*__kernel_sighandler_t)(int); -+ -+ -+typedef int __kernel_key_t; -+typedef int __kernel_mqd_t; -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/posix_types.h" 1 -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/posix_types_32.h" 1 -+# 10 "/d/kernels/linux-2.6.27.10-clickport/include/asm/posix_types_32.h" -+typedef unsigned long __kernel_ino_t; -+typedef unsigned short __kernel_mode_t; -+typedef unsigned short __kernel_nlink_t; -+typedef long __kernel_off_t; -+typedef int __kernel_pid_t; -+typedef unsigned short __kernel_ipc_pid_t; -+typedef unsigned short __kernel_uid_t; -+typedef unsigned short __kernel_gid_t; -+typedef unsigned int __kernel_size_t; -+typedef int __kernel_ssize_t; -+typedef int __kernel_ptrdiff_t; -+typedef long __kernel_time_t; -+typedef long __kernel_suseconds_t; -+typedef long __kernel_clock_t; -+typedef int __kernel_timer_t; -+typedef int __kernel_clockid_t; -+typedef int __kernel_daddr_t; -+typedef char * __kernel_caddr_t; -+typedef unsigned short __kernel_uid16_t; -+typedef unsigned short __kernel_gid16_t; -+typedef unsigned int __kernel_uid32_t; -+typedef unsigned int __kernel_gid32_t; -+ -+typedef unsigned short __kernel_old_uid_t; -+typedef unsigned short __kernel_old_gid_t; -+typedef unsigned short __kernel_old_dev_t; -+ -+ -+typedef long long __kernel_loff_t; -+ -+ -+typedef struct { -+ int val[2]; -+} __kernel_fsid_t; -+# 4 "/d/kernels/linux-2.6.27.10-clickport/include/asm/posix_types.h" 2 -+# 48 "/d/kernels/linux-2.6.27.10-clickport/include/linux/posix_types.h" 2 -+# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/types.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/types.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/int-ll64.h" 1 -+# 17 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/int-ll64.h" -+typedef __signed__ char __s8; -+typedef unsigned char __u8; -+ -+typedef __signed__ short __s16; -+typedef unsigned short __u16; -+ -+typedef __signed__ int __s32; -+typedef unsigned int __u32; -+ -+ -+__extension__ typedef __signed__ long long __s64; -+__extension__ typedef unsigned long long __u64; -+# 40 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/int-ll64.h" -+typedef signed char s8; -+typedef unsigned char u8; -+ -+typedef signed short s16; -+typedef unsigned short u16; -+ -+typedef signed int s32; -+typedef unsigned int u32; -+ -+typedef signed long long s64; -+typedef unsigned long long u64; -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm/types.h" 2 -+ -+ -+ -+typedef unsigned short umode_t; -+# 25 "/d/kernels/linux-2.6.27.10-clickport/include/asm/types.h" -+typedef u64 dma64_addr_t; -+ -+ -+ -+ -+typedef u32 dma_addr_t; -+# 13 "/d/kernels/linux-2.6.27.10-clickport/include/linux/types.h" 2 -+ -+ -+ -+typedef __u32 __kernel_dev_t; -+ -+typedef __kernel_fd_set fd_set; -+typedef __kernel_dev_t dev_t; -+typedef __kernel_ino_t ino_t; -+typedef __kernel_mode_t mode_t; -+typedef __kernel_nlink_t nlink_t; -+typedef __kernel_off_t off_t; -+typedef __kernel_pid_t pid_t; -+typedef __kernel_daddr_t daddr_t; -+typedef __kernel_key_t key_t; -+typedef __kernel_suseconds_t suseconds_t; -+typedef __kernel_timer_t timer_t; -+typedef __kernel_clockid_t clockid_t; -+typedef __kernel_mqd_t mqd_t; -+ -+ -+ -+ -+ -+ -+typedef __kernel_uid32_t uid_t; -+typedef __kernel_gid32_t gid_t; -+typedef __kernel_uid16_t uid16_t; -+typedef __kernel_gid16_t gid16_t; -+typedef unsigned int xid_t; -+typedef unsigned int nid_t; -+typedef unsigned int tag_t; -+ -+typedef unsigned long uintptr_t; -+ -+ -+ -+typedef __kernel_old_uid_t old_uid_t; -+typedef __kernel_old_gid_t old_gid_t; -+# 62 "/d/kernels/linux-2.6.27.10-clickport/include/linux/types.h" -+typedef __kernel_loff_t loff_t; -+# 71 "/d/kernels/linux-2.6.27.10-clickport/include/linux/types.h" -+typedef __kernel_size_t size_t; -+ -+ -+ -+ -+typedef __kernel_ssize_t ssize_t; -+ -+ -+ -+ -+typedef __kernel_ptrdiff_t ptrdiff_t; -+ -+ -+ -+ -+typedef __kernel_time_t time_t; -+ -+ -+ -+ -+typedef __kernel_clock_t clock_t; -+ -+ -+ -+ -+typedef __kernel_caddr_t caddr_t; -+ -+ -+ -+typedef unsigned char u_char; -+typedef unsigned short u_short; -+typedef unsigned int u_int; -+typedef unsigned long u_long; -+ -+ -+typedef unsigned char unchar; -+typedef unsigned short ushort; -+typedef unsigned int uint; -+typedef unsigned long ulong; -+ -+ -+ -+ -+typedef __u8 u_int8_t; -+typedef __s8 int8_t; -+typedef __u16 u_int16_t; -+typedef __s16 int16_t; -+typedef __u32 u_int32_t; -+typedef __s32 int32_t; -+ -+ -+ -+typedef __u8 uint8_t; -+typedef __u16 uint16_t; -+typedef __u32 uint32_t; -+ -+ -+typedef __u64 uint64_t; -+typedef __u64 u_int64_t; -+typedef __s64 int64_t; -+# 145 "/d/kernels/linux-2.6.27.10-clickport/include/linux/types.h" -+typedef u64 sector_t; -+# 154 "/d/kernels/linux-2.6.27.10-clickport/include/linux/types.h" -+typedef u64 blkcnt_t; -+# 185 "/d/kernels/linux-2.6.27.10-clickport/include/linux/types.h" -+typedef __u16 __le16; -+typedef __u16 __be16; -+typedef __u32 __le32; -+typedef __u32 __be32; -+ -+typedef __u64 __le64; -+typedef __u64 __be64; -+ -+typedef __u16 __sum16; -+typedef __u32 __wsum; -+ -+ -+typedef unsigned gfp_t; -+ -+ -+typedef u64 resource_size_t; -+ -+ -+ -+ -+struct ustat { -+ __kernel_daddr_t f_tfree; -+ __kernel_ino_t f_tinode; -+ char f_fname[6]; -+ char f_fpack[6]; -+}; -+# 92 "/d/click/click-1.6.0-27/linuxmodule/../include/click/config-linuxmodule.h" 2 -+typedef ptrdiff_t intptr_t; -+# 115 "/d/click/click-1.6.0-27/linuxmodule/../include/click/config-linuxmodule.h" -+void *operator new(size_t) throw (); -+void *operator new[](size_t) throw (); -+ -+ -+inline __attribute__((always_inline)) void *operator new(size_t, void *v) { return v; } -+# 129 "/d/click/click-1.6.0-27/linuxmodule/../include/click/config-linuxmodule.h" -+# 1 "/d/click/click-1.6.0-27/linuxmodule/../include/click/fixconfig.h" 1 -+ -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/alternative.h" 1 -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/asm.h" 1 -+# 7 "/d/kernels/linux-2.6.27.10-clickport/include/asm/alternative.h" 2 -+# 42 "/d/kernels/linux-2.6.27.10-clickport/include/asm/alternative.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cpufeature.h" 1 -+ -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/required-features.h" 1 -+# 8 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cpufeature.h" 2 -+# 123 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cpufeature.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/bitops.h" 1 -+# 17 "/d/kernels/linux-2.6.27.10-clickport/include/linux/bitops.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" 1 -+# 13 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/alternative.h" 1 -+# 14 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" 2 -+# 56 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" -+static inline __attribute__((always_inline)) void set_bit(unsigned int nr, volatile unsigned long *addr) -+{ -+ if ((__builtin_constant_p(nr))) { -+ asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661f\n" ".previous\n" "661:\n\tlock; " "orb %1,%0" -+ : "+m" (*(volatile long *) ((char *)(addr) + ((nr)>>3))) -+ : "iq" ((u8)(1 << ((nr) & 7))) -+ : "memory"); -+ } else { -+ asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661f\n" ".previous\n" "661:\n\tlock; " "bts %1,%0" -+ : "+m" (*(volatile long *) (addr)) : "Ir" (nr) : "memory"); -+ } -+} -+# 78 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" -+static inline __attribute__((always_inline)) void __set_bit(int nr, volatile unsigned long *addr) -+{ -+ asm volatile("bts %1,%0" : "+m" (*(volatile long *) (addr)) : "Ir" (nr) : "memory"); -+} -+# 93 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" -+static inline __attribute__((always_inline)) void clear_bit(int nr, volatile unsigned long *addr) -+{ -+ if ((__builtin_constant_p(nr))) { -+ asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661f\n" ".previous\n" "661:\n\tlock; " "andb %1,%0" -+ : "+m" (*(volatile long *) ((char *)(addr) + ((nr)>>3))) -+ : "iq" ((u8)~(1 << ((nr) & 7)))); -+ } else { -+ asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661f\n" ".previous\n" "661:\n\tlock; " "btr %1,%0" -+ : "+m" (*(volatile long *) (addr)) -+ : "Ir" (nr)); -+ } -+} -+# 114 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" -+static inline __attribute__((always_inline)) void clear_bit_unlock(unsigned nr, volatile unsigned long *addr) -+{ -+ __asm__ __volatile__("": : :"memory"); -+ clear_bit(nr, addr); -+} -+ -+static inline __attribute__((always_inline)) void __clear_bit(int nr, volatile unsigned long *addr) -+{ -+ asm volatile("btr %1,%0" : "+m" (*(volatile long *) (addr)) : "Ir" (nr)); -+} -+# 137 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" -+static inline __attribute__((always_inline)) void __clear_bit_unlock(unsigned nr, volatile unsigned long *addr) -+{ -+ __asm__ __volatile__("": : :"memory"); -+ __clear_bit(nr, addr); -+} -+# 155 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" -+static inline __attribute__((always_inline)) void __change_bit(int nr, volatile unsigned long *addr) -+{ -+ asm volatile("btc %1,%0" : "+m" (*(volatile long *) (addr)) : "Ir" (nr)); -+} -+# 169 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" -+static inline __attribute__((always_inline)) void change_bit(int nr, volatile unsigned long *addr) -+{ -+ asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661f\n" ".previous\n" "661:\n\tlock; " "btc %1,%0" : "+m" (*(volatile long *) (addr)) : "Ir" (nr)); -+} -+# 182 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" -+static inline __attribute__((always_inline)) int test_and_set_bit(int nr, volatile unsigned long *addr) -+{ -+ int oldbit; -+ -+ asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661f\n" ".previous\n" "661:\n\tlock; " "bts %2,%1\n\t" -+ "sbb %0,%0" : "=r" (oldbit), "+m" (*(volatile long *) (addr)) : "Ir" (nr) : "memory"); -+ -+ return oldbit; -+} -+# 199 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" -+static inline __attribute__((always_inline)) int test_and_set_bit_lock(int nr, volatile unsigned long *addr) -+{ -+ return test_and_set_bit(nr, addr); -+} -+# 213 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" -+static inline __attribute__((always_inline)) int __test_and_set_bit(int nr, volatile unsigned long *addr) -+{ -+ int oldbit; -+ -+ asm("bts %2,%1\n\t" -+ "sbb %0,%0" -+ : "=r" (oldbit), "+m" (*(volatile long *) (addr)) -+ : "Ir" (nr)); -+ return oldbit; -+} -+# 232 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" -+static inline __attribute__((always_inline)) int test_and_clear_bit(int nr, volatile unsigned long *addr) -+{ -+ int oldbit; -+ -+ asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661f\n" ".previous\n" "661:\n\tlock; " "btr %2,%1\n\t" -+ "sbb %0,%0" -+ : "=r" (oldbit), "+m" (*(volatile long *) (addr)) : "Ir" (nr) : "memory"); -+ -+ return oldbit; -+} -+# 252 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" -+static inline __attribute__((always_inline)) int __test_and_clear_bit(int nr, volatile unsigned long *addr) -+{ -+ int oldbit; -+ -+ asm volatile("btr %2,%1\n\t" -+ "sbb %0,%0" -+ : "=r" (oldbit), "+m" (*(volatile long *) (addr)) -+ : "Ir" (nr)); -+ return oldbit; -+} -+ -+ -+static inline __attribute__((always_inline)) int __test_and_change_bit(int nr, volatile unsigned long *addr) -+{ -+ int oldbit; -+ -+ asm volatile("btc %2,%1\n\t" -+ "sbb %0,%0" -+ : "=r" (oldbit), "+m" (*(volatile long *) (addr)) -+ : "Ir" (nr) : "memory"); -+ -+ return oldbit; -+} -+# 284 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" -+static inline __attribute__((always_inline)) int test_and_change_bit(int nr, volatile unsigned long *addr) -+{ -+ int oldbit; -+ -+ asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661f\n" ".previous\n" "661:\n\tlock; " "btc %2,%1\n\t" -+ "sbb %0,%0" -+ : "=r" (oldbit), "+m" (*(volatile long *) (addr)) : "Ir" (nr) : "memory"); -+ -+ return oldbit; -+} -+ -+static inline __attribute__((always_inline)) int constant_test_bit(int nr, const volatile unsigned long *addr) -+{ -+ return ((1UL << (nr % 32)) & -+ (((unsigned long *)addr)[nr / 32])) != 0; -+} -+ -+static inline __attribute__((always_inline)) int variable_test_bit(int nr, volatile const unsigned long *addr) -+{ -+ int oldbit; -+ -+ asm volatile("bt %2,%1\n\t" -+ "sbb %0,%0" -+ : "=r" (oldbit) -+ : "m" (*(unsigned long *)addr), "Ir" (nr)); -+ -+ return oldbit; -+} -+# 333 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" -+static inline __attribute__((always_inline)) unsigned long __ffs(unsigned long word) -+{ -+ asm("bsf %1,%0" -+ : "=r" (word) -+ : "rm" (word)); -+ return word; -+} -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) unsigned long ffz(unsigned long word) -+{ -+ asm("bsf %1,%0" -+ : "=r" (word) -+ : "r" (~word)); -+ return word; -+} -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) unsigned long __fls(unsigned long word) -+{ -+ asm("bsr %1,%0" -+ : "=r" (word) -+ : "rm" (word)); -+ return word; -+} -+# 381 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" -+static inline __attribute__((always_inline)) int ffs(int x) -+{ -+ int r; -+ -+ asm("bsfl %1,%0\n\t" -+ "cmovzl %2,%0" -+ : "=r" (r) : "rm" (x), "r" (-1)); -+ -+ -+ -+ -+ -+ -+ return r + 1; -+} -+# 408 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" -+static inline __attribute__((always_inline)) int fls(int x) -+{ -+ int r; -+ -+ asm("bsrl %1,%0\n\t" -+ "cmovzl %2,%0" -+ : "=&r" (r) : "rm" (x), "rm" (-1)); -+ -+ -+ -+ -+ -+ -+ return r + 1; -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void set_bit_string(unsigned long *bitmap, -+ unsigned long i, int len) -+{ -+ unsigned long end = i + len; -+ while (i < end) { -+ __set_bit(i, bitmap); -+ i++; -+ } -+} -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bitops/sched.h" 1 -+# 12 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bitops/sched.h" -+static inline __attribute__((always_inline)) int sched_find_first_bit(const unsigned long *b) -+{ -+ -+ -+ -+ -+ -+ if (b[0]) -+ return __ffs(b[0]); -+ if (b[1]) -+ return __ffs(b[1]) + 32; -+ if (b[2]) -+ return __ffs(b[2]) + 64; -+ return __ffs(b[3]) + 96; -+ -+ -+ -+} -+# 440 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" 2 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bitops/hweight.h" 1 -+ -+ -+ -+ -+ -+ -+extern unsigned int hweight16(unsigned int w); -+extern unsigned int hweight8(unsigned int w); -+extern unsigned long hweight64(__u64 w); -+# 444 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" 2 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bitops/fls64.h" 1 -+# 18 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bitops/fls64.h" -+static inline __attribute__((always_inline)) int fls64(__u64 x) -+{ -+ __u32 h = x >> 32; -+ if (h) -+ return fls(h) + 32; -+ return fls(x); -+} -+# 448 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" 2 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bitops/ext2-non-atomic.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bitops/le.h" 1 -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/byteorder.h" 1 -+# 11 "/d/kernels/linux-2.6.27.10-clickport/include/asm/byteorder.h" -+static inline __attribute__((always_inline)) __attribute__((__const__)) __u32 ___arch__swab32(__u32 x) -+{ -+ -+ asm("bswap %0" : "=r" (x) : "0" (x)); -+ -+ -+ -+ -+ -+ -+ -+ return x; -+} -+ -+static inline __attribute__((always_inline)) __attribute__((__const__)) __u64 ___arch__swab64(__u64 val) -+{ -+ union { -+ struct { -+ __u32 a; -+ __u32 b; -+ } s; -+ __u64 u; -+ } v; -+ v.u = val; -+ -+ asm("bswapl %0 ; bswapl %1 ; xchgl %0,%1" -+ : "=r" (v.s.a), "=r" (v.s.b) -+ : "0" (v.s.a), "1" (v.s.b)); -+ -+ -+ -+ -+ -+ -+ -+ return v.u; -+} -+# 79 "/d/kernels/linux-2.6.27.10-clickport/include/asm/byteorder.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/byteorder/little_endian.h" 1 -+# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/byteorder/little_endian.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/byteorder/swab.h" 1 -+# 64 "/d/kernels/linux-2.6.27.10-clickport/include/linux/byteorder/swab.h" -+static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u16 ___swab16(__u16 x) -+{ -+ return x<<8 | x>>8; -+} -+static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u32 ___swab32(__u32 x) -+{ -+ return x<<24 | x>>24 | -+ (x & (__u32)0x0000ff00UL)<<8 | -+ (x & (__u32)0x00ff0000UL)>>8; -+} -+static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u64 ___swab64(__u64 x) -+{ -+ return x<<56 | x>>56 | -+ (x & (__u64)0x000000000000ff00ULL)<<40 | -+ (x & (__u64)0x0000000000ff0000ULL)<<24 | -+ (x & (__u64)0x00000000ff000000ULL)<< 8 | -+ (x & (__u64)0x000000ff00000000ULL)>> 8 | -+ (x & (__u64)0x0000ff0000000000ULL)>>24 | -+ (x & (__u64)0x00ff000000000000ULL)>>40; -+} -+# 163 "/d/kernels/linux-2.6.27.10-clickport/include/linux/byteorder/swab.h" -+static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u16 __fswab16(__u16 x) -+{ -+ return ___swab16(x); -+} -+static __inline__ __attribute__((always_inline)) __u16 __swab16p(const __u16 *x) -+{ -+ return ___swab16(*(x)); -+} -+static __inline__ __attribute__((always_inline)) void __swab16s(__u16 *addr) -+{ -+ ((void)(*(addr) = ___swab16(*(addr)))); -+} -+ -+static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u32 __fswab32(__u32 x) -+{ -+ return ___arch__swab32(x); -+} -+static __inline__ __attribute__((always_inline)) __u32 __swab32p(const __u32 *x) -+{ -+ return ___arch__swab32(*(x)); -+} -+static __inline__ __attribute__((always_inline)) void __swab32s(__u32 *addr) -+{ -+ ((void)(*(addr) = ___arch__swab32(*(addr)))); -+} -+ -+ -+static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u64 __fswab64(__u64 x) -+{ -+ -+ -+ -+ -+ -+ return ___arch__swab64(x); -+ -+} -+static __inline__ __attribute__((always_inline)) __u64 __swab64p(const __u64 *x) -+{ -+ return ___arch__swab64(*(x)); -+} -+static __inline__ __attribute__((always_inline)) void __swab64s(__u64 *addr) -+{ -+ ((void)(*(addr) = ___arch__swab64(*(addr)))); -+} -+# 13 "/d/kernels/linux-2.6.27.10-clickport/include/linux/byteorder/little_endian.h" 2 -+# 43 "/d/kernels/linux-2.6.27.10-clickport/include/linux/byteorder/little_endian.h" -+static inline __attribute__((always_inline)) __le64 __cpu_to_le64p(const __u64 *p) -+{ -+ return ( __le64)*p; -+} -+static inline __attribute__((always_inline)) __u64 __le64_to_cpup(const __le64 *p) -+{ -+ return ( __u64)*p; -+} -+static inline __attribute__((always_inline)) __le32 __cpu_to_le32p(const __u32 *p) -+{ -+ return ( __le32)*p; -+} -+static inline __attribute__((always_inline)) __u32 __le32_to_cpup(const __le32 *p) -+{ -+ return ( __u32)*p; -+} -+static inline __attribute__((always_inline)) __le16 __cpu_to_le16p(const __u16 *p) -+{ -+ return ( __le16)*p; -+} -+static inline __attribute__((always_inline)) __u16 __le16_to_cpup(const __le16 *p) -+{ -+ return ( __u16)*p; -+} -+static inline __attribute__((always_inline)) __be64 __cpu_to_be64p(const __u64 *p) -+{ -+ return ( __be64)__swab64p(p); -+} -+static inline __attribute__((always_inline)) __u64 __be64_to_cpup(const __be64 *p) -+{ -+ return __swab64p((__u64 *)p); -+} -+static inline __attribute__((always_inline)) __be32 __cpu_to_be32p(const __u32 *p) -+{ -+ return ( __be32)__swab32p(p); -+} -+static inline __attribute__((always_inline)) __u32 __be32_to_cpup(const __be32 *p) -+{ -+ return __swab32p((__u32 *)p); -+} -+static inline __attribute__((always_inline)) __be16 __cpu_to_be16p(const __u16 *p) -+{ -+ return ( __be16)__swab16p(p); -+} -+static inline __attribute__((always_inline)) __u16 __be16_to_cpup(const __be16 *p) -+{ -+ return __swab16p((__u16 *)p); -+} -+# 105 "/d/kernels/linux-2.6.27.10-clickport/include/linux/byteorder/little_endian.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/byteorder/generic.h" 1 -+# 143 "/d/kernels/linux-2.6.27.10-clickport/include/linux/byteorder/generic.h" -+static inline __attribute__((always_inline)) void le16_add_cpu(__le16 *var, u16 val) -+{ -+ *var = (( __le16)(__u16)((( __u16)(__le16)(*var)) + val)); -+} -+ -+static inline __attribute__((always_inline)) void le32_add_cpu(__le32 *var, u32 val) -+{ -+ *var = (( __le32)(__u32)((( __u32)(__le32)(*var)) + val)); -+} -+ -+static inline __attribute__((always_inline)) void le64_add_cpu(__le64 *var, u64 val) -+{ -+ *var = (( __le64)(__u64)((( __u64)(__le64)(*var)) + val)); -+} -+ -+static inline __attribute__((always_inline)) void be16_add_cpu(__be16 *var, u16 val) -+{ -+ *var = (( __be16)(__builtin_constant_p((__u16)(((__builtin_constant_p((__u16)(( __u16)(__be16)(*var))) ? ((__u16)( (((__u16)((( __u16)(__be16)(*var))) & (__u16)0x00ffU) << 8) | (((__u16)((( __u16)(__be16)(*var))) & (__u16)0xff00U) >> 8) )) : __fswab16((( __u16)(__be16)(*var)))) + val))) ? ((__u16)( (((__u16)((((__builtin_constant_p((__u16)(( __u16)(__be16)(*var))) ? ((__u16)( (((__u16)((( __u16)(__be16)(*var))) & (__u16)0x00ffU) << 8) | (((__u16)((( __u16)(__be16)(*var))) & (__u16)0xff00U) >> 8) )) : __fswab16((( __u16)(__be16)(*var)))) + val))) & (__u16)0x00ffU) << 8) | (((__u16)((((__builtin_constant_p((__u16)(( __u16)(__be16)(*var))) ? ((__u16)( (((__u16)((( __u16)(__be16)(*var))) & (__u16)0x00ffU) << 8) | (((__u16)((( __u16)(__be16)(*var))) & (__u16)0xff00U) >> 8) )) : __fswab16((( __u16)(__be16)(*var)))) + val))) & (__u16)0xff00U) >> 8) )) : __fswab16((((__builtin_constant_p((__u16)(( __u16)(__be16)(*var))) ? ((__u16)( (((__u16)((( __u16)(__be16)(*var))) & (__u16)0x00ffU) << 8) | (((__u16)((( __u16)(__be16)(*var))) & (__u16)0xff00U) >> 8) )) : __fswab16((( __u16)(__be16)(*var)))) + val))))); -+} -+ -+static inline __attribute__((always_inline)) void be32_add_cpu(__be32 *var, u32 val) -+{ -+ *var = (( __be32)(__builtin_constant_p((__u32)(((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x000000ffUL) << 24) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x0000ff00UL) << 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0xff000000UL) >> 24) )) : __fswab32((( __u32)(__be32)(*var)))) + val))) ? ((__u32)( (((__u32)((((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x000000ffUL) << 24) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x0000ff00UL) << 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0xff000000UL) >> 24) )) : __fswab32((( __u32)(__be32)(*var)))) + val))) & (__u32)0x000000ffUL) << 24) | (((__u32)((((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x000000ffUL) << 24) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x0000ff00UL) << 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0xff000000UL) >> 24) )) : __fswab32((( __u32)(__be32)(*var)))) + val))) & (__u32)0x0000ff00UL) << 8) | (((__u32)((((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x000000ffUL) << 24) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x0000ff00UL) << 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0xff000000UL) >> 24) )) : __fswab32((( __u32)(__be32)(*var)))) + val))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x000000ffUL) << 24) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x0000ff00UL) << 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0xff000000UL) >> 24) )) : __fswab32((( __u32)(__be32)(*var)))) + val))) & (__u32)0xff000000UL) >> 24) )) : __fswab32((((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x000000ffUL) << 24) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x0000ff00UL) << 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((( __u32)(__be32)(*var))) & (__u32)0xff000000UL) >> 24) )) : __fswab32((( __u32)(__be32)(*var)))) + val))))); -+} -+ -+static inline __attribute__((always_inline)) void be64_add_cpu(__be64 *var, u64 val) -+{ -+ *var = (( __be64)(__builtin_constant_p((__u64)(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0xff00000000000000ULL) >> 56) )) : __fswab64((( __u64)(__be64)(*var)))) + val))) ? ((__u64)( (__u64)(((__u64)((((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0xff00000000000000ULL) >> 56) )) : __fswab64((( __u64)(__be64)(*var)))) + val))) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)((((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0xff00000000000000ULL) >> 56) )) : __fswab64((( __u64)(__be64)(*var)))) + val))) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)((((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0xff00000000000000ULL) >> 56) )) : __fswab64((( __u64)(__be64)(*var)))) + val))) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)((((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0xff00000000000000ULL) >> 56) )) : __fswab64((( __u64)(__be64)(*var)))) + val))) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)((((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0xff00000000000000ULL) >> 56) )) : __fswab64((( __u64)(__be64)(*var)))) + val))) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)((((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0xff00000000000000ULL) >> 56) )) : __fswab64((( __u64)(__be64)(*var)))) + val))) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)((((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0xff00000000000000ULL) >> 56) )) : __fswab64((( __u64)(__be64)(*var)))) + val))) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)((((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0xff00000000000000ULL) >> 56) )) : __fswab64((( __u64)(__be64)(*var)))) + val))) & (__u64)0xff00000000000000ULL) >> 56) )) : __fswab64((((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000000000ffULL) << 56) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000000000ff00ULL) << 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000000000ff0000ULL) << 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00000000ff000000ULL) << 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x000000ff00000000ULL) >> 8) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x0000ff0000000000ULL) >> 24) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0x00ff000000000000ULL) >> 40) | (__u64)(((__u64)((( __u64)(__be64)(*var))) & (__u64)0xff00000000000000ULL) >> 56) )) : __fswab64((( __u64)(__be64)(*var)))) + val))))); -+} -+# 106 "/d/kernels/linux-2.6.27.10-clickport/include/linux/byteorder/little_endian.h" 2 -+# 80 "/d/kernels/linux-2.6.27.10-clickport/include/asm/byteorder.h" 2 -+# 6 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bitops/le.h" 2 -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bitops/ext2-non-atomic.h" 2 -+# 452 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" 2 -+ -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bitops/minix.h" 1 -+# 459 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" 2 -+# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/bitops.h" 2 -+ -+ -+ -+ -+ -+ -+ -+static __inline__ __attribute__((always_inline)) int get_bitmask_order(unsigned int count) -+{ -+ int order; -+ -+ order = fls(count); -+ return order; -+} -+ -+static __inline__ __attribute__((always_inline)) int get_count_order(unsigned int count) -+{ -+ int order; -+ -+ order = fls(count) - 1; -+ if (count & (count - 1)) -+ order++; -+ return order; -+} -+ -+static inline __attribute__((always_inline)) unsigned long hweight_long(unsigned long w) -+{ -+ return sizeof(w) == 4 ? hweight32(w) : hweight64(w); -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) __u32 rol32(__u32 word, unsigned int shift) -+{ -+ return (word << shift) | (word >> (32 - shift)); -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) __u32 ror32(__u32 word, unsigned int shift) -+{ -+ return (word >> shift) | (word << (32 - shift)); -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) __u16 rol16(__u16 word, unsigned int shift) -+{ -+ return (word << shift) | (word >> (16 - shift)); -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) __u16 ror16(__u16 word, unsigned int shift) -+{ -+ return (word >> shift) | (word << (16 - shift)); -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) __u8 rol8(__u8 word, unsigned int shift) -+{ -+ return (word << shift) | (word >> (8 - shift)); -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) __u8 ror8(__u8 word, unsigned int shift) -+{ -+ return (word >> shift) | (word << (8 - shift)); -+} -+ -+static inline __attribute__((always_inline)) unsigned fls_long(unsigned long l) -+{ -+ if (sizeof(l) == 4) -+ return fls(l); -+ return fls64(l); -+} -+# 124 "/d/kernels/linux-2.6.27.10-clickport/include/linux/bitops.h" -+extern unsigned long find_first_bit(const unsigned long *addr, -+ unsigned long size); -+# 134 "/d/kernels/linux-2.6.27.10-clickport/include/linux/bitops.h" -+extern unsigned long find_first_zero_bit(const unsigned long *addr, -+ unsigned long size); -+# 147 "/d/kernels/linux-2.6.27.10-clickport/include/linux/bitops.h" -+extern unsigned long find_next_bit(const unsigned long *addr, -+ unsigned long size, unsigned long offset); -+# 157 "/d/kernels/linux-2.6.27.10-clickport/include/linux/bitops.h" -+extern unsigned long find_next_zero_bit(const unsigned long *addr, -+ unsigned long size, -+ unsigned long offset); -+# 124 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cpufeature.h" 2 -+ -+extern const char * const x86_cap_flags[8*32]; -+extern const char * const x86_power_flags[32]; -+# 43 "/d/kernels/linux-2.6.27.10-clickport/include/asm/alternative.h" 2 -+ -+struct alt_instr { -+ u8 *instr; -+ u8 *replacement; -+ u8 cpuid; -+ u8 instrlen; -+ u8 replacementlen; -+ u8 pad1; -+ -+ -+ -+}; -+ -+extern void alternative_instructions(void); -+extern void apply_alternatives(struct alt_instr *start, struct alt_instr *end); -+ -+struct module; -+ -+ -+extern void alternatives_smp_module_add(struct module *mod, char *name, -+ void *locks, void *locks_end, -+ void *text, void *text_end); -+extern void alternatives_smp_module_del(struct module *mod); -+extern void alternatives_smp_switch(int smp); -+# 75 "/d/kernels/linux-2.6.27.10-clickport/include/asm/alternative.h" -+const unsigned char *const *find_nop_table(void); -+# 148 "/d/kernels/linux-2.6.27.10-clickport/include/asm/alternative.h" -+struct paravirt_patch_site; -+ -+void apply_paravirt(struct paravirt_patch_site *start, -+ struct paravirt_patch_site *end); -+# 160 "/d/kernels/linux-2.6.27.10-clickport/include/asm/alternative.h" -+extern void add_nops(void *insns, unsigned int len); -+# 180 "/d/kernels/linux-2.6.27.10-clickport/include/asm/alternative.h" -+extern void *text_poke(void *addr, const void *opcode, size_t len); -+extern void *text_poke_early(void *addr, const void *opcode, size_t len); -+# 8 "/d/click/click-1.6.0-27/linuxmodule/../include/click/fixconfig.h" 2 -+# 130 "/d/click/click-1.6.0-27/linuxmodule/../include/click/config-linuxmodule.h" 2 -+ -+ -+ -+ -+ -+extern "C" { -+ -+void click_assert_failed(const char *file, int line, const char *problem_text); -+ -+} -+# 151 "/d/click/click-1.6.0-27/linuxmodule/../include/click/config.h" 2 -+# 21 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc" 2 -+# 1 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh" 1 -+ -+ -+ -+ -+ -+ -+# 1 "/d/click/click-1.6.0-27/linuxmodule/../include/click/algorithm.hh" 1 -+ -+ -+ -+ -+template -+inline __attribute__((always_inline)) T * -+find(T *begin, T *end, const T &val) -+{ -+ while (begin < end && *begin != val) -+ begin++; -+ return begin; -+} -+ -+template -+inline __attribute__((always_inline)) const T * -+find(const T *begin, const T *end, const T &val) -+{ -+ while (begin < end && *begin != val) -+ begin++; -+ return begin; -+} -+ -+ -+# 8 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh" 2 -+# 1 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh" 1 -+ -+ -+ -+ -+# 1 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" 1 -+# 16 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" -+# 1 "/d/click/click-1.6.0-27/linuxmodule/../include/click/cxxprotect.h" 1 -+# 17 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" 2 -+extern "C" { -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" 1 -+# 10 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" -+# 1 "/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/stdarg.h" 1 3 4 -+# 43 "/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/stdarg.h" 3 4 -+typedef __builtin_va_list __gnuc_va_list; -+# 105 "/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/stdarg.h" 3 4 -+typedef __gnuc_va_list va_list; -+# 11 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/linkage.h" 1 -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/linkage.h" 1 -+# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/linkage.h" 2 -+# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" 2 -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/log2.h" 1 -+# 21 "/d/kernels/linux-2.6.27.10-clickport/include/linux/log2.h" -+extern __attribute__((const, noreturn)) -+int ____ilog2_NaN(void); -+# 31 "/d/kernels/linux-2.6.27.10-clickport/include/linux/log2.h" -+static inline __attribute__((always_inline)) __attribute__((const)) -+int __ilog2_u32(u32 n) -+{ -+ return fls(n) - 1; -+} -+ -+ -+ -+static inline __attribute__((always_inline)) __attribute__((const)) -+int __ilog2_u64(u64 n) -+{ -+ return fls64(n) - 1; -+} -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) __attribute__((const)) -+bool is_power_of_2(unsigned long n) -+{ -+ return (n != 0 && ((n & (n - 1)) == 0)); -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) __attribute__((const)) -+unsigned long __roundup_pow_of_two(unsigned long n) -+{ -+ return 1UL << fls_long(n - 1); -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) __attribute__((const)) -+unsigned long __rounddown_pow_of_two(unsigned long n) -+{ -+ return 1UL << (fls_long(n) - 1); -+} -+# 17 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/typecheck.h" 1 -+# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h" 1 -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/param.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/param.h" 1 -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/param.h" 2 -+# 4 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h" 2 -+ -+ -+ -+ -+struct ratelimit_state { -+ int interval; -+ int burst; -+ int printed; -+ int missed; -+ unsigned long begin; -+}; -+ -+ -+ -+ -+extern int __ratelimit(struct ratelimit_state *rs); -+ -+static inline __attribute__((always_inline)) int ratelimit(void) -+{ -+ static struct ratelimit_state rs = {(5 * 1000), 10,}; -+ -+ return __ratelimit(&rs); -+} -+# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bug.h" 1 -+# 38 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bug.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bug.h" 1 -+# 10 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bug.h" -+struct bug_entry { -+ unsigned long bug_addr; -+ -+ const char *file; -+ unsigned short line; -+ -+ unsigned short flags; -+}; -+# 36 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bug.h" -+extern void warn_on_slowpath(const char *file, const int line); -+extern void warn_slowpath(const char *file, const int line, -+ const char *fmt, ...) __attribute__((format(printf, 3, 4))); -+# 39 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bug.h" 2 -+# 21 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" 2 -+ -+extern const char linux_banner[]; -+extern const char linux_proc_banner[]; -+# 55 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/div64.h" 1 -+# 36 "/d/kernels/linux-2.6.27.10-clickport/include/asm/div64.h" -+static inline __attribute__((always_inline)) u64 div_u64_rem(u64 dividend, u32 divisor, u32 *remainder) -+{ -+ union { -+ u64 v64; -+ u32 v32[2]; -+ } d = { dividend }; -+ u32 upper; -+ -+ upper = d.v32[1]; -+ d.v32[1] = 0; -+ if (upper >= divisor) { -+ d.v32[1] = upper / divisor; -+ upper %= divisor; -+ } -+ asm ("divl %2" : "=a" (d.v32[0]), "=d" (*remainder) : -+ "rm" (divisor), "0" (d.v32[0]), "1" (upper)); -+ return d.v64; -+} -+# 56 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" 2 -+# 100 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" -+extern int console_printk[]; -+ -+ -+ -+ -+ -+ -+struct completion; -+struct pt_regs; -+struct user; -+# 129 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" -+ void __might_sleep(char *file, int line); -+# 143 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" -+extern struct atomic_notifier_head panic_notifier_list; -+extern long (*panic_blink)(long time); -+ void panic(const char * fmt, ...) -+ __attribute__ ((noreturn, format (printf, 1, 2))) ; -+extern void oops_enter(void); -+extern void oops_exit(void); -+extern int oops_may_print(void); -+ void do_exit(long error_code) -+ __attribute__((noreturn)); -+ void complete_and_exit(struct completion *, long) -+ __attribute__((noreturn)); -+extern unsigned long simple_strtoul(const char *,char **,unsigned int); -+extern long simple_strtol(const char *,char **,unsigned int); -+extern unsigned long long simple_strtoull(const char *,char **,unsigned int); -+extern long long simple_strtoll(const char *,char **,unsigned int); -+extern int strict_strtoul(const char *, unsigned int, unsigned long *); -+extern int strict_strtol(const char *, unsigned int, long *); -+extern int strict_strtoull(const char *, unsigned int, unsigned long long *); -+extern int strict_strtoll(const char *, unsigned int, long long *); -+extern int sprintf(char * buf, const char * fmt, ...) -+ __attribute__ ((format (printf, 2, 3))); -+extern int vsprintf(char *buf, const char *, va_list) -+ __attribute__ ((format (printf, 2, 0))); -+extern int snprintf(char * buf, size_t size, const char * fmt, ...) -+ __attribute__ ((format (printf, 3, 4))); -+extern int vsnprintf(char *buf, size_t size, const char *fmt, va_list args) -+ __attribute__ ((format (printf, 3, 0))); -+extern int scnprintf(char * buf, size_t size, const char * fmt, ...) -+ __attribute__ ((format (printf, 3, 4))); -+extern int vscnprintf(char *buf, size_t size, const char *fmt, va_list args) -+ __attribute__ ((format (printf, 3, 0))); -+extern char *kasprintf(gfp_t gfp, const char *fmt, ...) -+ __attribute__ ((format (printf, 2, 3))); -+extern char *kvasprintf(gfp_t gfp, const char *fmt, va_list args); -+ -+extern int sscanf(const char *, const char *, ...) -+ __attribute__ ((format (scanf, 2, 3))); -+extern int vsscanf(const char *, const char *, va_list) -+ __attribute__ ((format (scanf, 2, 0))); -+ -+extern int get_option(char **str, int *pint); -+extern char *get_options(const char *str, int nints, int *ints); -+extern unsigned long long memparse(char *ptr, char **retptr); -+ -+extern int core_kernel_text(unsigned long addr); -+extern int __kernel_text_address(unsigned long addr); -+extern int kernel_text_address(unsigned long addr); -+struct pid; -+extern struct pid *session_of_pgrp(struct pid *pgrp); -+ -+ -+extern "C" __attribute__((regparm(0))) int vprintk(const char *fmt, va_list args) -+ __attribute__ ((format (printf, 1, 0))); -+extern "C" __attribute__((regparm(0))) int printk(const char * fmt, ...) -+ __attribute__ ((format (printf, 1, 2))) ; -+ -+extern struct ratelimit_state printk_ratelimit_state; -+extern int printk_ratelimit(void); -+extern bool printk_timed_ratelimit(unsigned long *caller_jiffies, -+ unsigned int interval_msec); -+# 216 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" -+extern "C" __attribute__((regparm(0))) void __attribute__((format(printf, 1, 2))) -+ early_printk(const char *fmt, ...); -+ -+unsigned long int_sqrt(unsigned long); -+ -+static inline __attribute__((always_inline)) void console_silent(void) -+{ -+ (console_printk[0]) = 0; -+} -+ -+static inline __attribute__((always_inline)) void console_verbose(void) -+{ -+ if ((console_printk[0])) -+ (console_printk[0]) = 15; -+} -+ -+extern void bust_spinlocks(int yes); -+extern void wake_up_klogd(void); -+extern int oops_in_progress; -+extern int panic_timeout; -+extern int panic_on_oops; -+extern int panic_on_unrecovered_nmi; -+extern int tainted; -+extern const char *print_tainted(void); -+extern void add_taint(unsigned); -+extern int root_mountflags; -+ -+ -+extern enum system_states { -+ SYSTEM_BOOTING, -+ SYSTEM_RUNNING, -+ SYSTEM_HALT, -+ SYSTEM_POWER_OFF, -+ SYSTEM_RESTART, -+ SYSTEM_SUSPEND_DISK, -+} system_state; -+# 264 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" -+extern void dump_stack(void) ; -+ -+enum { -+ DUMP_PREFIX_NONE, -+ DUMP_PREFIX_ADDRESS, -+ DUMP_PREFIX_OFFSET -+}; -+extern void hex_dump_to_buffer(const void *buf, size_t len, -+ int rowsize, int groupsize, -+ char *linebuf, size_t linebuflen, bool ascii); -+extern void print_hex_dump(const char *level, const char *prefix_str, -+ int prefix_type, int rowsize, int groupsize, -+ const void *buf, size_t len, bool ascii); -+extern void print_hex_dump_bytes(const char *prefix_str, int prefix_type, -+ const void *buf, size_t len); -+ -+extern const char hex_asc[]; -+ -+ -+ -+static inline __attribute__((always_inline)) char *pack_hex_byte(char *buf, u8 byte) -+{ -+ *buf++ = hex_asc[((byte) & 0xf0) >> 4]; -+ *buf++ = hex_asc[((byte) & 0x0f)]; -+ return buf; -+} -+# 447 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" -+struct sysinfo; -+extern int do_sysinfo(struct sysinfo *info); -+ -+ -+ -+ -+struct sysinfo { -+ long uptime; -+ unsigned long loads[3]; -+ unsigned long totalram; -+ unsigned long freeram; -+ unsigned long sharedram; -+ unsigned long bufferram; -+ unsigned long totalswap; -+ unsigned long freeswap; -+ unsigned short procs; -+ unsigned short pad; -+ unsigned long totalhigh; -+ unsigned long freehigh; -+ unsigned int mem_unit; -+ char _f[20-2*sizeof(long)-sizeof(int)]; -+}; -+# 24 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/version.h" 1 -+# 25 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/string.h" 1 -+# 14 "/d/kernels/linux-2.6.27.10-clickport/include/linux/string.h" -+extern char *strndup_user(const char *, long); -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/string.h" 1 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/string_32.h" 1 -+# 9 "/d/kernels/linux-2.6.27.10-clickport/include/asm/string_32.h" -+extern char *strcpy(char *dest, const char *src); -+ -+ -+extern char *strncpy(char *dest, const char *src, size_t count); -+ -+ -+extern char *strcat(char *dest, const char *src); -+ -+ -+extern char *strncat(char *dest, const char *src, size_t count); -+ -+ -+extern int strcmp(const char *cs, const char *ct); -+ -+ -+extern int strncmp(const char *cs, const char *ct, size_t count); -+ -+ -+extern char *strchr(const char *s, int c); -+ -+ -+extern size_t strlen(const char *s); -+ -+static inline __attribute__((always_inline)) __attribute__((always_inline)) void *__memcpy(void *to, const void *from, size_t n) -+{ -+ int d0, d1, d2; -+ asm volatile("rep ; movsl\n\t" -+ "movl %4,%%ecx\n\t" -+ "andl $3,%%ecx\n\t" -+ "jz 1f\n\t" -+ "rep ; movsb\n\t" -+ "1:" -+ : "=&c" (d0), "=&D" (d1), "=&S" (d2) -+ : "0" (n / 4), "g" (n), "1" ((long)to), "2" ((long)from) -+ : "memory"); -+ return to; -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) __attribute__((always_inline)) void *__constant_memcpy(void *to, const void *from, -+ size_t n) -+{ -+ long esi, edi; -+ if (!n) -+ return to; -+ -+ switch (n) { -+ case 1: -+ *(char *)to = *(char *)from; -+ return to; -+ case 2: -+ *(short *)to = *(short *)from; -+ return to; -+ case 4: -+ *(int *)to = *(int *)from; -+ return to; -+ -+ case 3: -+ *(short *)to = *(short *)from; -+ *((char *)to + 2) = *((char *)from + 2); -+ return to; -+ case 5: -+ *(int *)to = *(int *)from; -+ *((char *)to + 4) = *((char *)from + 4); -+ return to; -+ case 6: -+ *(int *)to = *(int *)from; -+ *((short *)to + 2) = *((short *)from + 2); -+ return to; -+ case 8: -+ *(int *)to = *(int *)from; -+ *((int *)to + 1) = *((int *)from + 1); -+ return to; -+ } -+ -+ esi = (long)from; -+ edi = (long)to; -+ if (n >= 5 * 4) { -+ -+ int ecx; -+ asm volatile("rep ; movsl" -+ : "=&c" (ecx), "=&D" (edi), "=&S" (esi) -+ : "0" (n / 4), "1" (edi), "2" (esi) -+ : "memory" -+ ); -+ } else { -+ -+ if (n >= 4 * 4) -+ asm volatile("movsl" -+ : "=&D"(edi), "=&S"(esi) -+ : "0"(edi), "1"(esi) -+ : "memory"); -+ if (n >= 3 * 4) -+ asm volatile("movsl" -+ : "=&D"(edi), "=&S"(esi) -+ : "0"(edi), "1"(esi) -+ : "memory"); -+ if (n >= 2 * 4) -+ asm volatile("movsl" -+ : "=&D"(edi), "=&S"(esi) -+ : "0"(edi), "1"(esi) -+ : "memory"); -+ if (n >= 1 * 4) -+ asm volatile("movsl" -+ : "=&D"(edi), "=&S"(esi) -+ : "0"(edi), "1"(esi) -+ : "memory"); -+ } -+ switch (n % 4) { -+ -+ case 0: -+ return to; -+ case 1: -+ asm volatile("movsb" -+ : "=&D"(edi), "=&S"(esi) -+ : "0"(edi), "1"(esi) -+ : "memory"); -+ return to; -+ case 2: -+ asm volatile("movsw" -+ : "=&D"(edi), "=&S"(esi) -+ : "0"(edi), "1"(esi) -+ : "memory"); -+ return to; -+ default: -+ asm volatile("movsw\n\tmovsb" -+ : "=&D"(edi), "=&S"(esi) -+ : "0"(edi), "1"(esi) -+ : "memory"); -+ return to; -+ } -+} -+# 188 "/d/kernels/linux-2.6.27.10-clickport/include/asm/string_32.h" -+void *memmove(void *dest, const void *src, size_t n); -+ -+ -+ -+ -+extern void *memchr(const void *cs, int c, size_t count); -+ -+static inline __attribute__((always_inline)) void *__memset_generic(void *s, char c, size_t count) -+{ -+ int d0, d1; -+ asm volatile("rep\n\t" -+ "stosb" -+ : "=&c" (d0), "=&D" (d1) -+ : "a" (c), "1" (s), "0" (count) -+ : "memory"); -+ return s; -+} -+# 214 "/d/kernels/linux-2.6.27.10-clickport/include/asm/string_32.h" -+static inline __attribute__((always_inline)) __attribute__((always_inline)) -+void *__constant_c_memset(void *s, unsigned long c, size_t count) -+{ -+ int d0, d1; -+ asm volatile("rep ; stosl\n\t" -+ "testb $2,%b3\n\t" -+ "je 1f\n\t" -+ "stosw\n" -+ "1:\ttestb $1,%b3\n\t" -+ "je 2f\n\t" -+ "stosb\n" -+ "2:" -+ : "=&c" (d0), "=&D" (d1) -+ : "a" (c), "q" (count), "0" (count/4), "1" ((long)s) -+ : "memory"); -+ return s; -+} -+ -+ -+ -+extern size_t strnlen(const char *s, size_t count); -+ -+ -+ -+extern char *strstr(const char *cs, const char *ct); -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) __attribute__((always_inline)) -+void *__constant_c_and_count_memset(void *s, unsigned long pattern, -+ size_t count) -+{ -+ switch (count) { -+ case 0: -+ return s; -+ case 1: -+ *(unsigned char *)s = pattern & 0xff; -+ return s; -+ case 2: -+ *(unsigned short *)s = pattern & 0xffff; -+ return s; -+ case 3: -+ *(unsigned short *)s = pattern & 0xffff; -+ *((unsigned char *)s + 2) = pattern & 0xff; -+ return s; -+ case 4: -+ *(unsigned long *)s = pattern; -+ return s; -+ } -+# 273 "/d/kernels/linux-2.6.27.10-clickport/include/asm/string_32.h" -+ { -+ int d0, d1; -+ -+ -+ -+ -+ unsigned long eax = pattern; -+ -+ -+ switch (count % 4) { -+ case 0: -+ asm volatile("rep ; stosl" "" : "=&c" (d0), "=&D" (d1) : "a" (eax), "0" (count/4), "1" ((long)s) : "memory"); -+ return s; -+ case 1: -+ asm volatile("rep ; stosl" "\n\tstosb" : "=&c" (d0), "=&D" (d1) : "a" (eax), "0" (count/4), "1" ((long)s) : "memory"); -+ return s; -+ case 2: -+ asm volatile("rep ; stosl" "\n\tstosw" : "=&c" (d0), "=&D" (d1) : "a" (eax), "0" (count/4), "1" ((long)s) : "memory"); -+ return s; -+ default: -+ asm volatile("rep ; stosl" "\n\tstosw\n\tstosb" : "=&c" (d0), "=&D" (d1) : "a" (eax), "0" (count/4), "1" ((long)s) : "memory"); -+ return s; -+ } -+ } -+ -+ -+} -+# 322 "/d/kernels/linux-2.6.27.10-clickport/include/asm/string_32.h" -+extern void *memscan(void *addr, int c, size_t size); -+# 3 "/d/kernels/linux-2.6.27.10-clickport/include/asm/string.h" 2 -+# 20 "/d/kernels/linux-2.6.27.10-clickport/include/linux/string.h" 2 -+# 28 "/d/kernels/linux-2.6.27.10-clickport/include/linux/string.h" -+size_t strlcpy(char *, const char *, size_t); -+# 37 "/d/kernels/linux-2.6.27.10-clickport/include/linux/string.h" -+extern size_t strlcat(char *, const char *, __kernel_size_t); -+# 46 "/d/kernels/linux-2.6.27.10-clickport/include/linux/string.h" -+extern int strnicmp(const char *, const char *, __kernel_size_t); -+ -+ -+extern int strcasecmp(const char *s1, const char *s2); -+ -+ -+extern int strncasecmp(const char *s1, const char *s2, size_t n); -+ -+ -+ -+ -+ -+extern char * strnchr(const char *, size_t, int); -+ -+ -+extern char * strrchr(const char *,int); -+ -+extern char * strstrip(char *); -+# 74 "/d/kernels/linux-2.6.27.10-clickport/include/linux/string.h" -+extern char * strpbrk(const char *,const char *); -+ -+ -+extern char * strsep(char **,const char *); -+ -+ -+extern __kernel_size_t strspn(const char *,const char *); -+ -+ -+extern __kernel_size_t strcspn(const char *,const char *); -+# 99 "/d/kernels/linux-2.6.27.10-clickport/include/linux/string.h" -+extern int __builtin_memcmp(const void *,const void *,__kernel_size_t); -+ -+ -+ -+ -+ -+extern char *kstrdup(const char *s, gfp_t gfp); -+extern char *kstrndup(const char *s, size_t len, gfp_t gfp); -+extern void *kmemdup(const void *src, size_t len, gfp_t gfp); -+ -+extern char **argv_split(gfp_t gfp, const char *str, int *argcp); -+extern void argv_free(char **argv); -+ -+extern bool sysfs_streq(const char *s1, const char *s2); -+ -+extern ssize_t memory_read_from_buffer(void *to, size_t count, loff_t *ppos, -+ const void *from, size_t available); -+# 26 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" 1 -+# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/time.h" 1 -+ -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/cache.h" 1 -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cache.h" 1 -+# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/cache.h" 2 -+# 8 "/d/kernels/linux-2.6.27.10-clickport/include/linux/time.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h" 1 -+# 29 "/d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h" 1 -+# 50 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h" 1 -+# 9 "/d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h" 1 -+# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h" -+struct timespec; -+struct compat_timespec; -+ -+ -+ -+ -+struct restart_block { -+ long (*fn)(struct restart_block *); -+ union { -+ struct { -+ unsigned long arg0, arg1, arg2, arg3; -+ }; -+ -+ struct { -+ u32 *uaddr; -+ u32 val; -+ u32 flags; -+ u32 bitset; -+ u64 time; -+ } futex; -+ -+ struct { -+ clockid_t index; -+ struct timespec *rmtp; -+ -+ -+ -+ u64 expires; -+ } nanosleep; -+ }; -+}; -+ -+extern long do_no_restart_syscall(struct restart_block *parm); -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h" 1 -+# 11 "/d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/const.h" 1 -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h" 2 -+# 44 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page_32.h" 1 -+# 52 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page_32.h" -+typedef unsigned long pteval_t; -+typedef unsigned long pmdval_t; -+typedef unsigned long pudval_t; -+typedef unsigned long pgdval_t; -+typedef unsigned long pgprotval_t; -+typedef unsigned long phys_addr_t; -+ -+typedef union { -+ pteval_t pte; -+ pteval_t pte_low; -+} pte_t; -+ -+ -+ -+ -+ -+typedef struct page *pgtable_t; -+# 83 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page_32.h" -+extern int nx_enabled; -+ -+ -+ -+ -+ -+extern unsigned int __VMALLOC_RESERVE; -+extern int sysctl_legacy_va_layout; -+ -+ -+ -+ -+extern void find_low_pfn_range(void); -+extern unsigned long init_memory_mapping(unsigned long start, -+ unsigned long end); -+extern void initmem_init(unsigned long, unsigned long); -+extern void setup_bootmem_allocator(void); -+# 117 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page_32.h" -+static inline __attribute__((always_inline)) void clear_page(void *page) -+{ -+ (__builtin_constant_p(0) ? (__builtin_constant_p((((1UL) << 12))) ? __constant_c_and_count_memset(((page)), ((0x01010101UL * (unsigned char)(0))), ((((1UL) << 12)))) : __constant_c_memset(((page)), ((0x01010101UL * (unsigned char)(0))), ((((1UL) << 12))))) : (__builtin_constant_p((((1UL) << 12))) ? __memset_generic((((page))), (((0))), (((((1UL) << 12))))) : __memset_generic(((page)), ((0)), ((((1UL) << 12)))))); -+} -+ -+static inline __attribute__((always_inline)) void copy_page(void *to, void *from) -+{ -+ (__builtin_constant_p((((1UL) << 12))) ? __constant_memcpy((to), (from), (((1UL) << 12))) : __memcpy((to), (from), (((1UL) << 12)))); -+} -+# 45 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h" 2 -+# 56 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h" -+typedef struct { pgdval_t pgd; } pgd_t; -+typedef struct { pgprotval_t pgprot; } pgprot_t; -+ -+extern int page_is_ram(unsigned long pagenr); -+extern int devmem_is_allowed(unsigned long pagenr); -+extern void map_devmem(unsigned long pfn, unsigned long size, -+ pgprot_t vma_prot); -+extern void unmap_devmem(unsigned long pfn, unsigned long size, -+ pgprot_t vma_prot); -+ -+extern unsigned long max_low_pfn_mapped; -+extern unsigned long max_pfn_mapped; -+ -+struct page; -+ -+static inline __attribute__((always_inline)) void clear_user_page(void *page, unsigned long vaddr, -+ struct page *pg) -+{ -+ clear_page(page); -+} -+ -+static inline __attribute__((always_inline)) void copy_user_page(void *to, void *from, unsigned long vaddr, -+ struct page *topage) -+{ -+ copy_page(to, from); -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) pgd_t native_make_pgd(pgdval_t val) -+{ -+ return (pgd_t) { val }; -+} -+ -+static inline __attribute__((always_inline)) pgdval_t native_pgd_val(pgd_t pgd) -+{ -+ return pgd.pgd; -+} -+# 131 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h" 1 -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h" 1 -+# 13 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h" -+typedef struct { pgd_t pgd; } pud_t; -+# 25 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h" -+static inline __attribute__((always_inline)) int pgd_none(pgd_t pgd) { return 0; } -+static inline __attribute__((always_inline)) int pgd_bad(pgd_t pgd) { return 0; } -+static inline __attribute__((always_inline)) int pgd_present(pgd_t pgd) { return 1; } -+static inline __attribute__((always_inline)) void pgd_clear(pgd_t *pgd) { } -+# 38 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h" -+static inline __attribute__((always_inline)) pud_t * pud_offset(pgd_t * pgd, unsigned long address) -+{ -+ return (pud_t *)pgd; -+} -+# 7 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h" 2 -+ -+struct mm_struct; -+# 17 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h" -+typedef struct { pud_t pud; } pmd_t; -+# 29 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h" -+static inline __attribute__((always_inline)) int pud_none(pud_t pud) { return 0; } -+static inline __attribute__((always_inline)) int pud_bad(pud_t pud) { return 0; } -+static inline __attribute__((always_inline)) int pud_present(pud_t pud) { return 1; } -+static inline __attribute__((always_inline)) void pud_clear(pud_t *pud) { } -+# 43 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h" -+static inline __attribute__((always_inline)) pmd_t * pmd_offset(pud_t * pud, unsigned long address) -+{ -+ return (pmd_t *)pud; -+} -+# 59 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h" -+static inline __attribute__((always_inline)) void pmd_free(struct mm_struct *mm, pmd_t *pmd) -+{ -+} -+# 132 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h" 2 -+ -+static inline __attribute__((always_inline)) pmdval_t native_pmd_val(pmd_t pmd) -+{ -+ return native_pgd_val(pmd.pud.pgd); -+} -+ -+ -+static inline __attribute__((always_inline)) pte_t native_make_pte(pteval_t val) -+{ -+ return (pte_t) ({pte_t duh; duh.pte = val;duh;}); -+} -+ -+static inline __attribute__((always_inline)) pteval_t native_pte_val(pte_t pte) -+{ -+ return pte.pte; -+} -+ -+static inline __attribute__((always_inline)) pteval_t native_pte_flags(pte_t pte) -+{ -+ return native_pte_val(pte) & (~((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & ((phys_addr_t)(1ULL << 32) - 1)))); -+} -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" 1 -+ -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h" 1 -+# 8 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" 2 -+# 32 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/cpumask.h" 1 -+# 138 "/d/kernels/linux-2.6.27.10-clickport/include/linux/cpumask.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/threads.h" 1 -+# 139 "/d/kernels/linux-2.6.27.10-clickport/include/linux/cpumask.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/bitmap.h" 1 -+# 87 "/d/kernels/linux-2.6.27.10-clickport/include/linux/bitmap.h" -+extern int __bitmap_empty(const unsigned long *bitmap, int bits); -+extern int __bitmap_full(const unsigned long *bitmap, int bits); -+extern int __bitmap_equal(const unsigned long *bitmap1, -+ const unsigned long *bitmap2, int bits); -+extern void __bitmap_complement(unsigned long *dst, const unsigned long *src, -+ int bits); -+extern void __bitmap_shift_right(unsigned long *dst, -+ const unsigned long *src, int shift, int bits); -+extern void __bitmap_shift_left(unsigned long *dst, -+ const unsigned long *src, int shift, int bits); -+extern void __bitmap_and(unsigned long *dst, const unsigned long *bitmap1, -+ const unsigned long *bitmap2, int bits); -+extern void __bitmap_or(unsigned long *dst, const unsigned long *bitmap1, -+ const unsigned long *bitmap2, int bits); -+extern void __bitmap_xor(unsigned long *dst, const unsigned long *bitmap1, -+ const unsigned long *bitmap2, int bits); -+extern void __bitmap_andnot(unsigned long *dst, const unsigned long *bitmap1, -+ const unsigned long *bitmap2, int bits); -+extern int __bitmap_intersects(const unsigned long *bitmap1, -+ const unsigned long *bitmap2, int bits); -+extern int __bitmap_subset(const unsigned long *bitmap1, -+ const unsigned long *bitmap2, int bits); -+extern int __bitmap_weight(const unsigned long *bitmap, int bits); -+ -+extern int bitmap_scnprintf(char *buf, unsigned int len, -+ const unsigned long *src, int nbits); -+extern int bitmap_scnprintf_len(unsigned int nr_bits); -+extern int __bitmap_parse(const char *buf, unsigned int buflen, int is_user, -+ unsigned long *dst, int nbits); -+extern int bitmap_parse_user(const char *ubuf, unsigned int ulen, -+ unsigned long *dst, int nbits); -+extern int bitmap_scnlistprintf(char *buf, unsigned int len, -+ const unsigned long *src, int nbits); -+extern int bitmap_parselist(const char *buf, unsigned long *maskp, -+ int nmaskbits); -+extern void bitmap_remap(unsigned long *dst, const unsigned long *src, -+ const unsigned long *old, const unsigned long *xxx_new, int bits); -+extern int bitmap_bitremap(int oldbit, -+ const unsigned long *old, const unsigned long *xxx_new, int bits); -+extern void bitmap_onto(unsigned long *dst, const unsigned long *orig, -+ const unsigned long *relmap, int bits); -+extern void bitmap_fold(unsigned long *dst, const unsigned long *orig, -+ int sz, int bits); -+extern int bitmap_find_free_region(unsigned long *bitmap, int bits, int order); -+extern void bitmap_release_region(unsigned long *bitmap, int pos, int order); -+extern int bitmap_allocate_region(unsigned long *bitmap, int pos, int order); -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void bitmap_zero(unsigned long *dst, int nbits) -+{ -+ if (nbits <= 32) -+ *dst = 0UL; -+ else { -+ int len = (((nbits) + (8 * sizeof(long)) - 1) / (8 * sizeof(long))) * sizeof(unsigned long); -+ (__builtin_constant_p(0) ? (__builtin_constant_p((len)) ? __constant_c_and_count_memset(((dst)), ((0x01010101UL * (unsigned char)(0))), ((len))) : __constant_c_memset(((dst)), ((0x01010101UL * (unsigned char)(0))), ((len)))) : (__builtin_constant_p((len)) ? __memset_generic((((dst))), (((0))), (((len)))) : __memset_generic(((dst)), ((0)), ((len))))); -+ } -+} -+ -+static inline __attribute__((always_inline)) void bitmap_fill(unsigned long *dst, int nbits) -+{ -+ size_t nlongs = (((nbits) + (8 * sizeof(long)) - 1) / (8 * sizeof(long))); -+ if (nlongs > 1) { -+ int len = (nlongs - 1) * sizeof(unsigned long); -+ (__builtin_constant_p(0xff) ? (__builtin_constant_p((len)) ? __constant_c_and_count_memset(((dst)), ((0x01010101UL * (unsigned char)(0xff))), ((len))) : __constant_c_memset(((dst)), ((0x01010101UL * (unsigned char)(0xff))), ((len)))) : (__builtin_constant_p((len)) ? __memset_generic((((dst))), (((0xff))), (((len)))) : __memset_generic(((dst)), ((0xff)), ((len))))); -+ } -+ dst[nlongs - 1] = ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL ); -+} -+ -+static inline __attribute__((always_inline)) void bitmap_copy(unsigned long *dst, const unsigned long *src, -+ int nbits) -+{ -+ if (nbits <= 32) -+ *dst = *src; -+ else { -+ int len = (((nbits) + (8 * sizeof(long)) - 1) / (8 * sizeof(long))) * sizeof(unsigned long); -+ (__builtin_constant_p((len)) ? __constant_memcpy((dst), (src), (len)) : __memcpy((dst), (src), (len))); -+ } -+} -+ -+static inline __attribute__((always_inline)) void bitmap_and(unsigned long *dst, const unsigned long *src1, -+ const unsigned long *src2, int nbits) -+{ -+ if (nbits <= 32) -+ *dst = *src1 & *src2; -+ else -+ __bitmap_and(dst, src1, src2, nbits); -+} -+ -+static inline __attribute__((always_inline)) void bitmap_or(unsigned long *dst, const unsigned long *src1, -+ const unsigned long *src2, int nbits) -+{ -+ if (nbits <= 32) -+ *dst = *src1 | *src2; -+ else -+ __bitmap_or(dst, src1, src2, nbits); -+} -+ -+static inline __attribute__((always_inline)) void bitmap_xor(unsigned long *dst, const unsigned long *src1, -+ const unsigned long *src2, int nbits) -+{ -+ if (nbits <= 32) -+ *dst = *src1 ^ *src2; -+ else -+ __bitmap_xor(dst, src1, src2, nbits); -+} -+ -+static inline __attribute__((always_inline)) void bitmap_andnot(unsigned long *dst, const unsigned long *src1, -+ const unsigned long *src2, int nbits) -+{ -+ if (nbits <= 32) -+ *dst = *src1 & ~(*src2); -+ else -+ __bitmap_andnot(dst, src1, src2, nbits); -+} -+ -+static inline __attribute__((always_inline)) void bitmap_complement(unsigned long *dst, const unsigned long *src, -+ int nbits) -+{ -+ if (nbits <= 32) -+ *dst = ~(*src) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL ); -+ else -+ __bitmap_complement(dst, src, nbits); -+} -+ -+static inline __attribute__((always_inline)) int bitmap_equal(const unsigned long *src1, -+ const unsigned long *src2, int nbits) -+{ -+ if (nbits <= 32) -+ return ! ((*src1 ^ *src2) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL )); -+ else -+ return __bitmap_equal(src1, src2, nbits); -+} -+ -+static inline __attribute__((always_inline)) int bitmap_intersects(const unsigned long *src1, -+ const unsigned long *src2, int nbits) -+{ -+ if (nbits <= 32) -+ return ((*src1 & *src2) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL )) != 0; -+ else -+ return __bitmap_intersects(src1, src2, nbits); -+} -+ -+static inline __attribute__((always_inline)) int bitmap_subset(const unsigned long *src1, -+ const unsigned long *src2, int nbits) -+{ -+ if (nbits <= 32) -+ return ! ((*src1 & ~(*src2)) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL )); -+ else -+ return __bitmap_subset(src1, src2, nbits); -+} -+ -+static inline __attribute__((always_inline)) int bitmap_empty(const unsigned long *src, int nbits) -+{ -+ if (nbits <= 32) -+ return ! (*src & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL )); -+ else -+ return __bitmap_empty(src, nbits); -+} -+ -+static inline __attribute__((always_inline)) int bitmap_full(const unsigned long *src, int nbits) -+{ -+ if (nbits <= 32) -+ return ! (~(*src) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL )); -+ else -+ return __bitmap_full(src, nbits); -+} -+ -+static inline __attribute__((always_inline)) int bitmap_weight(const unsigned long *src, int nbits) -+{ -+ if (nbits <= 32) -+ return hweight_long(*src & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL )); -+ return __bitmap_weight(src, nbits); -+} -+ -+static inline __attribute__((always_inline)) void bitmap_shift_right(unsigned long *dst, -+ const unsigned long *src, int n, int nbits) -+{ -+ if (nbits <= 32) -+ *dst = *src >> n; -+ else -+ __bitmap_shift_right(dst, src, n, nbits); -+} -+ -+static inline __attribute__((always_inline)) void bitmap_shift_left(unsigned long *dst, -+ const unsigned long *src, int n, int nbits) -+{ -+ if (nbits <= 32) -+ *dst = (*src << n) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL ); -+ else -+ __bitmap_shift_left(dst, src, n, nbits); -+} -+ -+static inline __attribute__((always_inline)) int bitmap_parse(const char *buf, unsigned int buflen, -+ unsigned long *maskp, int nmaskbits) -+{ -+ return __bitmap_parse(buf, buflen, 0, maskp, nmaskbits); -+} -+# 140 "/d/kernels/linux-2.6.27.10-clickport/include/linux/cpumask.h" 2 -+ -+typedef struct { unsigned long bits[(((32) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; } cpumask_t; -+extern cpumask_t _unused_cpumask_arg_; -+ -+ -+static inline __attribute__((always_inline)) void __cpu_set(int cpu, volatile cpumask_t *dstp) -+{ -+ set_bit(cpu, dstp->bits); -+} -+ -+ -+static inline __attribute__((always_inline)) void __cpu_clear(int cpu, volatile cpumask_t *dstp) -+{ -+ clear_bit(cpu, dstp->bits); -+} -+ -+ -+static inline __attribute__((always_inline)) void __cpus_setall(cpumask_t *dstp, int nbits) -+{ -+ bitmap_fill(dstp->bits, nbits); -+} -+ -+ -+static inline __attribute__((always_inline)) void __cpus_clear(cpumask_t *dstp, int nbits) -+{ -+ bitmap_zero(dstp->bits, nbits); -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int __cpu_test_and_set(int cpu, cpumask_t *addr) -+{ -+ return test_and_set_bit(cpu, addr->bits); -+} -+ -+ -+static inline __attribute__((always_inline)) void __cpus_and(cpumask_t *dstp, const cpumask_t *src1p, -+ const cpumask_t *src2p, int nbits) -+{ -+ bitmap_and(dstp->bits, src1p->bits, src2p->bits, nbits); -+} -+ -+ -+static inline __attribute__((always_inline)) void __cpus_or(cpumask_t *dstp, const cpumask_t *src1p, -+ const cpumask_t *src2p, int nbits) -+{ -+ bitmap_or(dstp->bits, src1p->bits, src2p->bits, nbits); -+} -+ -+ -+static inline __attribute__((always_inline)) void __cpus_xor(cpumask_t *dstp, const cpumask_t *src1p, -+ const cpumask_t *src2p, int nbits) -+{ -+ bitmap_xor(dstp->bits, src1p->bits, src2p->bits, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) void __cpus_andnot(cpumask_t *dstp, const cpumask_t *src1p, -+ const cpumask_t *src2p, int nbits) -+{ -+ bitmap_andnot(dstp->bits, src1p->bits, src2p->bits, nbits); -+} -+ -+ -+static inline __attribute__((always_inline)) void __cpus_complement(cpumask_t *dstp, -+ const cpumask_t *srcp, int nbits) -+{ -+ bitmap_complement(dstp->bits, srcp->bits, nbits); -+} -+ -+ -+static inline __attribute__((always_inline)) int __cpus_equal(const cpumask_t *src1p, -+ const cpumask_t *src2p, int nbits) -+{ -+ return bitmap_equal(src1p->bits, src2p->bits, nbits); -+} -+ -+ -+static inline __attribute__((always_inline)) int __cpus_intersects(const cpumask_t *src1p, -+ const cpumask_t *src2p, int nbits) -+{ -+ return bitmap_intersects(src1p->bits, src2p->bits, nbits); -+} -+ -+ -+static inline __attribute__((always_inline)) int __cpus_subset(const cpumask_t *src1p, -+ const cpumask_t *src2p, int nbits) -+{ -+ return bitmap_subset(src1p->bits, src2p->bits, nbits); -+} -+ -+ -+static inline __attribute__((always_inline)) int __cpus_empty(const cpumask_t *srcp, int nbits) -+{ -+ return bitmap_empty(srcp->bits, nbits); -+} -+ -+ -+static inline __attribute__((always_inline)) int __cpus_full(const cpumask_t *srcp, int nbits) -+{ -+ return bitmap_full(srcp->bits, nbits); -+} -+ -+ -+static inline __attribute__((always_inline)) int __cpus_weight(const cpumask_t *srcp, int nbits) -+{ -+ return bitmap_weight(srcp->bits, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) void __cpus_shift_right(cpumask_t *dstp, -+ const cpumask_t *srcp, int n, int nbits) -+{ -+ bitmap_shift_right(dstp->bits, srcp->bits, n, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) void __cpus_shift_left(cpumask_t *dstp, -+ const cpumask_t *srcp, int n, int nbits) -+{ -+ bitmap_shift_left(dstp->bits, srcp->bits, n, nbits); -+} -+# 275 "/d/kernels/linux-2.6.27.10-clickport/include/linux/cpumask.h" -+extern const unsigned long -+ cpu_bit_bitmap[32 +1][(((32) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; -+ -+static inline __attribute__((always_inline)) const cpumask_t *get_cpu_mask(unsigned int cpu) -+{ -+ const unsigned long *p = cpu_bit_bitmap[1 + cpu % 32]; -+ p -= cpu / 32; -+ return (const cpumask_t *)p; -+} -+# 341 "/d/kernels/linux-2.6.27.10-clickport/include/linux/cpumask.h" -+static inline __attribute__((always_inline)) int __cpumask_scnprintf(char *buf, int len, -+ const cpumask_t *srcp, int nbits) -+{ -+ return bitmap_scnprintf(buf, len, srcp->bits, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) int __cpumask_parse_user(const char *buf, int len, -+ cpumask_t *dstp, int nbits) -+{ -+ return bitmap_parse_user(buf, len, dstp->bits, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) int __cpulist_scnprintf(char *buf, int len, -+ const cpumask_t *srcp, int nbits) -+{ -+ return bitmap_scnlistprintf(buf, len, srcp->bits, nbits); -+} -+ -+ -+static inline __attribute__((always_inline)) int __cpulist_parse(const char *buf, cpumask_t *dstp, int nbits) -+{ -+ return bitmap_parselist(buf, dstp->bits, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) int __cpu_remap(int oldbit, -+ const cpumask_t *oldp, const cpumask_t *newp, int nbits) -+{ -+ return bitmap_bitremap(oldbit, oldp->bits, newp->bits, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) void __cpus_remap(cpumask_t *dstp, const cpumask_t *srcp, -+ const cpumask_t *oldp, const cpumask_t *newp, int nbits) -+{ -+ bitmap_remap(dstp->bits, srcp->bits, oldp->bits, newp->bits, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) void __cpus_onto(cpumask_t *dstp, const cpumask_t *origp, -+ const cpumask_t *relmapp, int nbits) -+{ -+ bitmap_onto(dstp->bits, origp->bits, relmapp->bits, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) void __cpus_fold(cpumask_t *dstp, const cpumask_t *origp, -+ int sz, int nbits) -+{ -+ bitmap_fold(dstp->bits, origp->bits, sz, nbits); -+} -+# 412 "/d/kernels/linux-2.6.27.10-clickport/include/linux/cpumask.h" -+extern int nr_cpu_ids; -+int __first_cpu(const cpumask_t *srcp); -+int __next_cpu(int n, const cpumask_t *srcp); -+int __any_online_cpu(const cpumask_t *mask); -+# 501 "/d/kernels/linux-2.6.27.10-clickport/include/linux/cpumask.h" -+extern cpumask_t cpu_possible_map; -+extern cpumask_t cpu_online_map; -+extern cpumask_t cpu_present_map; -+extern cpumask_t cpu_active_map; -+# 33 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/kmap_types.h" 1 -+# 10 "/d/kernels/linux-2.6.27.10-clickport/include/asm/kmap_types.h" -+enum km_type { -+ KM_BOUNCE_READ, -+ KM_SKB_SUNRPC_DATA, -+ KM_SKB_DATA_SOFTIRQ, -+ KM_USER0, -+ KM_USER1, -+ KM_BIO_SRC_IRQ, -+ KM_BIO_DST_IRQ, -+ KM_PTE0, -+ KM_PTE1, -+ KM_IRQ0, -+ KM_IRQ1, -+ KM_SOFTIRQ0, -+ KM_SOFTIRQ1, -+ KM_TYPE_NR -+}; -+# 34 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/desc_defs.h" 1 -+# 22 "/d/kernels/linux-2.6.27.10-clickport/include/asm/desc_defs.h" -+struct desc_struct { -+ union { -+ struct { -+ unsigned int a; -+ unsigned int b; -+ }; -+ struct { -+ u16 limit0; -+ u16 base0; -+ unsigned base1: 8, type: 4, s: 1, dpl: 2, p: 1; -+ unsigned limit: 4, avl: 1, l: 1, d: 1, g: 1, base2: 8; -+ }; -+ }; -+} __attribute__((packed)); -+ -+enum { -+ GATE_INTERRUPT = 0xE, -+ GATE_TRAP = 0xF, -+ GATE_CALL = 0xC, -+ GATE_TASK = 0x5, -+}; -+ -+ -+struct gate_struct64 { -+ u16 offset_low; -+ u16 segment; -+ unsigned ist : 3, zero0 : 5, type : 5, dpl : 2, p : 1; -+ u16 offset_middle; -+ u32 offset_high; -+ u32 zero1; -+} __attribute__((packed)); -+ -+ -+ -+ -+ -+enum { -+ DESC_TSS = 0x9, -+ DESC_LDT = 0x2, -+ DESCTYPE_S = 0x10, -+}; -+ -+ -+struct ldttss_desc64 { -+ u16 limit0; -+ u16 base0; -+ unsigned base1 : 8, type : 5, dpl : 2, p : 1; -+ unsigned limit1 : 4, zero0 : 3, g : 1, base2 : 8; -+ u32 base3; -+ u32 zero1; -+} __attribute__((packed)); -+# 81 "/d/kernels/linux-2.6.27.10-clickport/include/asm/desc_defs.h" -+typedef struct desc_struct gate_desc; -+typedef struct desc_struct ldt_desc; -+typedef struct desc_struct tss_desc; -+ -+ -+ -+ -+struct desc_ptr { -+ unsigned short size; -+ unsigned long address; -+} __attribute__((packed)) ; -+# 35 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" 2 -+ -+struct page; -+struct thread_struct; -+struct desc_ptr; -+struct tss_struct; -+struct mm_struct; -+struct desc_struct; -+ -+ -+struct pv_info { -+ unsigned int kernel_rpl; -+ int shared_kernel_pmd; -+ int paravirt_enabled; -+ const char *name; -+}; -+ -+struct pv_init_ops { -+# 60 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" -+ unsigned (*patch)(u8 type, u16 clobber, void *insnbuf, -+ unsigned long addr, unsigned len); -+ -+ -+ void (*arch_setup)(void); -+ char *(*memory_setup)(void); -+ void (*post_allocator_init)(void); -+ -+ -+ void (*banner)(void); -+}; -+ -+ -+struct pv_lazy_ops { -+ -+ void (*enter)(void); -+ void (*leave)(void); -+}; -+ -+struct pv_time_ops { -+ void (*time_init)(void); -+ -+ -+ unsigned long (*get_wallclock)(void); -+ int (*set_wallclock)(unsigned long); -+ -+ unsigned long long (*sched_clock)(void); -+ unsigned long (*get_tsc_khz)(void); -+}; -+ -+struct pv_cpu_ops { -+ -+ unsigned long (*get_debugreg)(int regno); -+ void (*set_debugreg)(int regno, unsigned long value); -+ -+ void (*clts)(void); -+ -+ unsigned long (*read_cr0)(void); -+ void (*write_cr0)(unsigned long); -+ -+ unsigned long (*read_cr4_safe)(void); -+ unsigned long (*read_cr4)(void); -+ void (*write_cr4)(unsigned long); -+ -+ -+ -+ -+ -+ -+ -+ void (*load_tr_desc)(void); -+ void (*load_gdt)(const struct desc_ptr *); -+ void (*load_idt)(const struct desc_ptr *); -+ void (*store_gdt)(struct desc_ptr *); -+ void (*store_idt)(struct desc_ptr *); -+ void (*set_ldt)(const void *desc, unsigned entries); -+ unsigned long (*store_tr)(void); -+ void (*load_tls)(struct thread_struct *t, unsigned int cpu); -+ -+ -+ -+ void (*write_ldt_entry)(struct desc_struct *ldt, int entrynum, -+ const void *desc); -+ void (*write_gdt_entry)(struct desc_struct *, -+ int entrynum, const void *desc, int size); -+ void (*write_idt_entry)(gate_desc *, -+ int entrynum, const gate_desc *gate); -+ void (*load_sp0)(struct tss_struct *tss, struct thread_struct *t); -+ -+ void (*set_iopl_mask)(unsigned mask); -+ -+ void (*wbinvd)(void); -+ void (*io_delay)(void); -+ -+ -+ void (*cpuid)(unsigned int *eax, unsigned int *ebx, -+ unsigned int *ecx, unsigned int *edx); -+ -+ -+ -+ u64 (*read_msr)(unsigned int msr, int *err); -+ int (*write_msr)(unsigned int msr, unsigned low, unsigned high); -+ -+ u64 (*read_tsc)(void); -+ u64 (*read_pmc)(int counter); -+ unsigned long long (*read_tscp)(unsigned int *aux); -+ -+ -+ -+ -+ -+ -+ -+ void (*irq_enable_sysexit)(void); -+ -+ -+ -+ -+ -+ -+ -+ void (*usergs_sysret64)(void); -+ -+ -+ -+ -+ -+ -+ -+ void (*usergs_sysret32)(void); -+ -+ -+ -+ void (*iret)(void); -+ -+ void (*swapgs)(void); -+ -+ struct pv_lazy_ops lazy_mode; -+}; -+ -+struct pv_irq_ops { -+ void (*init_IRQ)(void); -+ -+ -+ -+ -+ -+ -+ -+ unsigned long (*save_fl)(void); -+ void (*restore_fl)(unsigned long); -+ void (*irq_disable)(void); -+ void (*irq_enable)(void); -+ void (*safe_halt)(void); -+ void (*halt)(void); -+ -+ -+ -+ -+}; -+ -+struct pv_apic_ops { -+ -+ -+ -+ -+ -+ void (*apic_write)(unsigned long reg, u32 v); -+ u32 (*apic_read)(unsigned long reg); -+ void (*setup_boot_clock)(void); -+ void (*setup_secondary_clock)(void); -+ -+ void (*startup_ipi_hook)(int phys_apicid, -+ unsigned long start_eip, -+ unsigned long start_esp); -+ -+}; -+ -+struct pv_mmu_ops { -+ -+ -+ -+ -+ -+ -+ void (*pagetable_setup_start)(pgd_t *pgd_base); -+ void (*pagetable_setup_done)(pgd_t *pgd_base); -+ -+ unsigned long (*read_cr2)(void); -+ void (*write_cr2)(unsigned long); -+ -+ unsigned long (*read_cr3)(void); -+ void (*write_cr3)(unsigned long); -+ -+ -+ -+ -+ -+ void (*activate_mm)(struct mm_struct *prev, -+ struct mm_struct *next); -+ void (*dup_mmap)(struct mm_struct *oldmm, -+ struct mm_struct *mm); -+ void (*exit_mmap)(struct mm_struct *mm); -+ -+ -+ -+ void (*flush_tlb_user)(void); -+ void (*flush_tlb_kernel)(void); -+ void (*flush_tlb_single)(unsigned long addr); -+ void (*flush_tlb_others)(const cpumask_t *cpus, struct mm_struct *mm, -+ unsigned long va); -+ -+ -+ int (*pgd_alloc)(struct mm_struct *mm); -+ void (*pgd_free)(struct mm_struct *mm, pgd_t *pgd); -+ -+ -+ -+ -+ -+ void (*alloc_pte)(struct mm_struct *mm, u32 pfn); -+ void (*alloc_pmd)(struct mm_struct *mm, u32 pfn); -+ void (*alloc_pmd_clone)(u32 pfn, u32 clonepfn, u32 start, u32 count); -+ void (*alloc_pud)(struct mm_struct *mm, u32 pfn); -+ void (*release_pte)(u32 pfn); -+ void (*release_pmd)(u32 pfn); -+ void (*release_pud)(u32 pfn); -+ -+ -+ void (*set_pte)(pte_t *ptep, pte_t pteval); -+ void (*set_pte_at)(struct mm_struct *mm, unsigned long addr, -+ pte_t *ptep, pte_t pteval); -+ void (*set_pmd)(pmd_t *pmdp, pmd_t pmdval); -+ void (*pte_update)(struct mm_struct *mm, unsigned long addr, -+ pte_t *ptep); -+ void (*pte_update_defer)(struct mm_struct *mm, -+ unsigned long addr, pte_t *ptep); -+ -+ pte_t (*ptep_modify_prot_start)(struct mm_struct *mm, unsigned long addr, -+ pte_t *ptep); -+ void (*ptep_modify_prot_commit)(struct mm_struct *mm, unsigned long addr, -+ pte_t *ptep, pte_t pte); -+ -+ pteval_t (*pte_val)(pte_t); -+ pteval_t (*pte_flags)(pte_t); -+ pte_t (*make_pte)(pteval_t pte); -+ -+ pgdval_t (*pgd_val)(pgd_t); -+ pgd_t (*make_pgd)(pgdval_t pgd); -+# 315 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" -+ void *(*kmap_atomic_pte)(struct page *page, enum km_type type); -+ -+ -+ struct pv_lazy_ops lazy_mode; -+ -+ -+ -+ -+ -+ void (*set_fixmap)(unsigned idx, -+ unsigned long phys, pgprot_t flags); -+}; -+ -+struct raw_spinlock; -+struct pv_lock_ops { -+ int (*spin_is_locked)(struct raw_spinlock *lock); -+ int (*spin_is_contended)(struct raw_spinlock *lock); -+ void (*spin_lock)(struct raw_spinlock *lock); -+ int (*spin_trylock)(struct raw_spinlock *lock); -+ void (*spin_unlock)(struct raw_spinlock *lock); -+}; -+ -+ -+ -+ -+struct paravirt_patch_template { -+ struct pv_init_ops pv_init_ops; -+ struct pv_time_ops pv_time_ops; -+ struct pv_cpu_ops pv_cpu_ops; -+ struct pv_irq_ops pv_irq_ops; -+ struct pv_apic_ops pv_apic_ops; -+ struct pv_mmu_ops pv_mmu_ops; -+ struct pv_lock_ops pv_lock_ops; -+}; -+ -+extern struct pv_info pv_info; -+extern struct pv_init_ops pv_init_ops; -+extern struct pv_time_ops pv_time_ops; -+extern struct pv_cpu_ops pv_cpu_ops; -+extern struct pv_irq_ops pv_irq_ops; -+extern struct pv_apic_ops pv_apic_ops; -+extern struct pv_mmu_ops pv_mmu_ops; -+extern struct pv_lock_ops pv_lock_ops; -+# 391 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" -+unsigned paravirt_patch_nop(void); -+unsigned paravirt_patch_ignore(unsigned len); -+unsigned paravirt_patch_call(void *insnbuf, -+ const void *target, u16 tgt_clobbers, -+ unsigned long addr, u16 site_clobbers, -+ unsigned len); -+unsigned paravirt_patch_jmp(void *insnbuf, const void *target, -+ unsigned long addr, unsigned len); -+unsigned paravirt_patch_default(u8 type, u16 clobbers, void *insnbuf, -+ unsigned long addr, unsigned len); -+ -+unsigned paravirt_patch_insns(void *insnbuf, unsigned len, -+ const char *start, const char *end); -+ -+unsigned native_patch(u8 type, u16 clobbers, void *ibuf, -+ unsigned long addr, unsigned len); -+ -+int paravirt_disable_iospace(void); -+# 600 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" -+static inline __attribute__((always_inline)) int paravirt_enabled(void) -+{ -+ return pv_info.paravirt_enabled; -+} -+ -+static inline __attribute__((always_inline)) void load_sp0(struct tss_struct *tss, -+ struct thread_struct *thread) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.load_sp0); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.load_sp0) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.load_sp0), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(tss)), "1" ((unsigned long)(thread)) : "memory", "cc" ); }); -+} -+ -+ -+static inline __attribute__((always_inline)) unsigned long get_wallclock(void) -+{ -+ return ({ unsigned long __ret; unsigned long __eax, __edx, __ecx; ((void)pv_time_ops.get_wallclock); if (sizeof(unsigned long) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_time_ops.get_wallclock) / sizeof(void *))), [paravirt_opptr] "m" (pv_time_ops.get_wallclock), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); __ret = (unsigned long)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_time_ops.get_wallclock) / sizeof(void *))), [paravirt_opptr] "m" (pv_time_ops.get_wallclock), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); __ret = (unsigned long)__eax; } __ret; }); -+} -+ -+static inline __attribute__((always_inline)) int set_wallclock(unsigned long nowtime) -+{ -+ return ({ int __ret; unsigned long __eax, __edx, __ecx; ((void)pv_time_ops.set_wallclock); if (sizeof(int) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_time_ops.set_wallclock) / sizeof(void *))), [paravirt_opptr] "m" (pv_time_ops.set_wallclock), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(nowtime)) : "memory", "cc" ); __ret = (int)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_time_ops.set_wallclock) / sizeof(void *))), [paravirt_opptr] "m" (pv_time_ops.set_wallclock), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(nowtime)) : "memory", "cc" ); __ret = (int)__eax; } __ret; }); -+} -+ -+static inline __attribute__((always_inline)) void (*choose_time_init(void))(void) -+{ -+ return pv_time_ops.time_init; -+} -+ -+ -+static inline __attribute__((always_inline)) void __cpuid(unsigned int *eax, unsigned int *ebx, -+ unsigned int *ecx, unsigned int *edx) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.cpuid); asm volatile("push %[_arg4];" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "lea 4(%%esp),%%esp;" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.cpuid) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.cpuid), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((u32)(eax)), "1" ((u32)(ebx)), "2" ((u32)(ecx)), [_arg4] "mr" ((u32)(edx)) : "memory", "cc" ); }); -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) unsigned long paravirt_get_debugreg(int reg) -+{ -+ return ({ unsigned long __ret; unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.get_debugreg); if (sizeof(unsigned long) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.get_debugreg) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.get_debugreg), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(reg)) : "memory", "cc" ); __ret = (unsigned long)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.get_debugreg) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.get_debugreg), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(reg)) : "memory", "cc" ); __ret = (unsigned long)__eax; } __ret; }); -+} -+ -+static inline __attribute__((always_inline)) void set_debugreg(unsigned long val, int reg) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.set_debugreg); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.set_debugreg) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.set_debugreg), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(reg)), "1" ((unsigned long)(val)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) void clts(void) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.clts); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.clts) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.clts), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) unsigned long read_cr0(void) -+{ -+ return ({ unsigned long __ret; unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.read_cr0); if (sizeof(unsigned long) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.read_cr0) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.read_cr0), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); __ret = (unsigned long)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.read_cr0) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.read_cr0), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); __ret = (unsigned long)__eax; } __ret; }); -+} -+ -+static inline __attribute__((always_inline)) void write_cr0(unsigned long x) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.write_cr0); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.write_cr0) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.write_cr0), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(x)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) unsigned long read_cr2(void) -+{ -+ return ({ unsigned long __ret; unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.read_cr2); if (sizeof(unsigned long) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.read_cr2) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.read_cr2), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); __ret = (unsigned long)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.read_cr2) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.read_cr2), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); __ret = (unsigned long)__eax; } __ret; }); -+} -+ -+static inline __attribute__((always_inline)) void write_cr2(unsigned long x) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.write_cr2); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.write_cr2) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.write_cr2), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(x)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) unsigned long read_cr3(void) -+{ -+ return ({ unsigned long __ret; unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.read_cr3); if (sizeof(unsigned long) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.read_cr3) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.read_cr3), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); __ret = (unsigned long)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.read_cr3) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.read_cr3), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); __ret = (unsigned long)__eax; } __ret; }); -+} -+ -+static inline __attribute__((always_inline)) void write_cr3(unsigned long x) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.write_cr3); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.write_cr3) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.write_cr3), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(x)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) unsigned long read_cr4(void) -+{ -+ return ({ unsigned long __ret; unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.read_cr4); if (sizeof(unsigned long) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.read_cr4) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.read_cr4), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); __ret = (unsigned long)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.read_cr4) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.read_cr4), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); __ret = (unsigned long)__eax; } __ret; }); -+} -+static inline __attribute__((always_inline)) unsigned long read_cr4_safe(void) -+{ -+ return ({ unsigned long __ret; unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.read_cr4_safe); if (sizeof(unsigned long) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.read_cr4_safe) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.read_cr4_safe), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); __ret = (unsigned long)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.read_cr4_safe) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.read_cr4_safe), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); __ret = (unsigned long)__eax; } __ret; }); -+} -+ -+static inline __attribute__((always_inline)) void write_cr4(unsigned long x) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.write_cr4); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.write_cr4) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.write_cr4), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(x)) : "memory", "cc" ); }); -+} -+# 708 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" -+static inline __attribute__((always_inline)) void raw_safe_halt(void) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_irq_ops.safe_halt); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_irq_ops.safe_halt) / sizeof(void *))), [paravirt_opptr] "m" (pv_irq_ops.safe_halt), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) void halt(void) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_irq_ops.safe_halt); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_irq_ops.safe_halt) / sizeof(void *))), [paravirt_opptr] "m" (pv_irq_ops.safe_halt), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) void wbinvd(void) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.wbinvd); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.wbinvd) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.wbinvd), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); }); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) u64 paravirt_read_msr(unsigned msr, int *err) -+{ -+ return ({ u64 __ret; unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.read_msr); if (sizeof(u64) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.read_msr) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.read_msr), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(msr)), "1" ((unsigned long)(err)) : "memory", "cc" ); __ret = (u64)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.read_msr) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.read_msr), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(msr)), "1" ((unsigned long)(err)) : "memory", "cc" ); __ret = (u64)__eax; } __ret; }); -+} -+static inline __attribute__((always_inline)) int paravirt_write_msr(unsigned msr, unsigned low, unsigned high) -+{ -+ return ({ int __ret; unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.write_msr); if (sizeof(int) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.write_msr) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.write_msr), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(msr)), "1"((unsigned long)(low)), "2"((unsigned long)(high)) : "memory", "cc" ); __ret = (int)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.write_msr) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.write_msr), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(msr)), "1"((unsigned long)(low)), "2"((unsigned long)(high)) : "memory", "cc" ); __ret = (int)__eax; } __ret; }); -+} -+# 767 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" -+static inline __attribute__((always_inline)) int rdmsrl_safe(unsigned msr, unsigned long long *p) -+{ -+ int err; -+ -+ *p = paravirt_read_msr(msr, &err); -+ return err; -+} -+ -+static inline __attribute__((always_inline)) u64 paravirt_read_tsc(void) -+{ -+ return ({ u64 __ret; unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.read_tsc); if (sizeof(u64) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.read_tsc) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.read_tsc), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); __ret = (u64)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.read_tsc) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.read_tsc), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); __ret = (u64)__eax; } __ret; }); -+} -+# 788 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" -+static inline __attribute__((always_inline)) unsigned long long paravirt_sched_clock(void) -+{ -+ return ({ unsigned long long __ret; unsigned long __eax, __edx, __ecx; ((void)pv_time_ops.sched_clock); if (sizeof(unsigned long long) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_time_ops.sched_clock) / sizeof(void *))), [paravirt_opptr] "m" (pv_time_ops.sched_clock), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); __ret = (unsigned long long)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_time_ops.sched_clock) / sizeof(void *))), [paravirt_opptr] "m" (pv_time_ops.sched_clock), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); __ret = (unsigned long long)__eax; } __ret; }); -+} -+ -+ -+static inline __attribute__((always_inline)) unsigned long long paravirt_read_pmc(int counter) -+{ -+ return ({ u64 __ret; unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.read_pmc); if (sizeof(u64) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.read_pmc) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.read_pmc), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(counter)) : "memory", "cc" ); __ret = (u64)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.read_pmc) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.read_pmc), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(counter)) : "memory", "cc" ); __ret = (u64)__eax; } __ret; }); -+} -+# 806 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" -+static inline __attribute__((always_inline)) unsigned long long paravirt_rdtscp(unsigned int *aux) -+{ -+ return ({ u64 __ret; unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.read_tscp); if (sizeof(u64) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.read_tscp) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.read_tscp), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(aux)) : "memory", "cc" ); __ret = (u64)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.read_tscp) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.read_tscp), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(aux)) : "memory", "cc" ); __ret = (u64)__eax; } __ret; }); -+} -+# 827 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" -+static inline __attribute__((always_inline)) void load_TR_desc(void) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.load_tr_desc); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.load_tr_desc) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.load_tr_desc), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); }); -+} -+static inline __attribute__((always_inline)) void load_gdt(const struct desc_ptr *dtr) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.load_gdt); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.load_gdt) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.load_gdt), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(dtr)) : "memory", "cc" ); }); -+} -+static inline __attribute__((always_inline)) void load_idt(const struct desc_ptr *dtr) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.load_idt); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.load_idt) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.load_idt), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(dtr)) : "memory", "cc" ); }); -+} -+static inline __attribute__((always_inline)) void set_ldt(const void *addr, unsigned entries) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.set_ldt); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.set_ldt) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.set_ldt), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(addr)), "1" ((unsigned long)(entries)) : "memory", "cc" ); }); -+} -+static inline __attribute__((always_inline)) void store_gdt(struct desc_ptr *dtr) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.store_gdt); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.store_gdt) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.store_gdt), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(dtr)) : "memory", "cc" ); }); -+} -+static inline __attribute__((always_inline)) void store_idt(struct desc_ptr *dtr) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.store_idt); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.store_idt) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.store_idt), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(dtr)) : "memory", "cc" ); }); -+} -+static inline __attribute__((always_inline)) unsigned long paravirt_store_tr(void) -+{ -+ return ({ unsigned long __ret; unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.store_tr); if (sizeof(unsigned long) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.store_tr) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.store_tr), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); __ret = (unsigned long)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.store_tr) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.store_tr), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); __ret = (unsigned long)__eax; } __ret; }); -+} -+ -+static inline __attribute__((always_inline)) void load_TLS(struct thread_struct *t, unsigned cpu) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.load_tls); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.load_tls) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.load_tls), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(t)), "1" ((unsigned long)(cpu)) : "memory", "cc" ); }); -+} -+# 868 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" -+static inline __attribute__((always_inline)) void write_ldt_entry(struct desc_struct *dt, int entry, -+ const void *desc) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.write_ldt_entry); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.write_ldt_entry) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.write_ldt_entry), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(dt)), "1"((unsigned long)(entry)), "2"((unsigned long)(desc)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) void write_gdt_entry(struct desc_struct *dt, int entry, -+ void *desc, int type) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.write_gdt_entry); asm volatile("push %[_arg4];" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "lea 4(%%esp),%%esp;" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.write_gdt_entry) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.write_gdt_entry), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((u32)(dt)), "1" ((u32)(entry)), "2" ((u32)(desc)), [_arg4] "mr" ((u32)(type)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) void write_idt_entry(gate_desc *dt, int entry, const gate_desc *g) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.write_idt_entry); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.write_idt_entry) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.write_idt_entry), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(dt)), "1"((unsigned long)(entry)), "2"((unsigned long)(g)) : "memory", "cc" ); }); -+} -+static inline __attribute__((always_inline)) void set_iopl_mask(unsigned mask) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.set_iopl_mask); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.set_iopl_mask) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.set_iopl_mask), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(mask)) : "memory", "cc" ); }); -+} -+ -+ -+static inline __attribute__((always_inline)) void slow_down_io(void) -+{ -+ pv_cpu_ops.io_delay(); -+ -+ -+ -+ -+ -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void apic_write(unsigned long reg, u32 v) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_apic_ops.apic_write); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_apic_ops.apic_write) / sizeof(void *))), [paravirt_opptr] "m" (pv_apic_ops.apic_write), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(reg)), "1" ((unsigned long)(v)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) u32 apic_read(unsigned long reg) -+{ -+ return ({ unsigned long __ret; unsigned long __eax, __edx, __ecx; ((void)pv_apic_ops.apic_read); if (sizeof(unsigned long) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_apic_ops.apic_read) / sizeof(void *))), [paravirt_opptr] "m" (pv_apic_ops.apic_read), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(reg)) : "memory", "cc" ); __ret = (unsigned long)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_apic_ops.apic_read) / sizeof(void *))), [paravirt_opptr] "m" (pv_apic_ops.apic_read), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(reg)) : "memory", "cc" ); __ret = (unsigned long)__eax; } __ret; }); -+} -+ -+static inline __attribute__((always_inline)) void setup_boot_clock(void) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_apic_ops.setup_boot_clock); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_apic_ops.setup_boot_clock) / sizeof(void *))), [paravirt_opptr] "m" (pv_apic_ops.setup_boot_clock), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) void setup_secondary_clock(void) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_apic_ops.setup_secondary_clock); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_apic_ops.setup_secondary_clock) / sizeof(void *))), [paravirt_opptr] "m" (pv_apic_ops.setup_secondary_clock), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); }); -+} -+ -+ -+static inline __attribute__((always_inline)) void paravirt_post_allocator_init(void) -+{ -+ if (pv_init_ops.post_allocator_init) -+ (*pv_init_ops.post_allocator_init)(); -+} -+ -+static inline __attribute__((always_inline)) void paravirt_pagetable_setup_start(pgd_t *base) -+{ -+ (*pv_mmu_ops.pagetable_setup_start)(base); -+} -+ -+static inline __attribute__((always_inline)) void paravirt_pagetable_setup_done(pgd_t *base) -+{ -+ (*pv_mmu_ops.pagetable_setup_done)(base); -+} -+ -+ -+static inline __attribute__((always_inline)) void startup_ipi_hook(int phys_apicid, unsigned long start_eip, -+ unsigned long start_esp) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_apic_ops.startup_ipi_hook); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_apic_ops.startup_ipi_hook) / sizeof(void *))), [paravirt_opptr] "m" (pv_apic_ops.startup_ipi_hook), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(phys_apicid)), "1"((unsigned long)(start_eip)), "2"((unsigned long)(start_esp)) : "memory", "cc" ); }); -+ -+} -+ -+ -+static inline __attribute__((always_inline)) void paravirt_activate_mm(struct mm_struct *prev, -+ struct mm_struct *next) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.activate_mm); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.activate_mm) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.activate_mm), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(prev)), "1" ((unsigned long)(next)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) void arch_dup_mmap(struct mm_struct *oldmm, -+ struct mm_struct *mm) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.dup_mmap); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.dup_mmap) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.dup_mmap), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(oldmm)), "1" ((unsigned long)(mm)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) void arch_exit_mmap(struct mm_struct *mm) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.exit_mmap); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.exit_mmap) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.exit_mmap), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(mm)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) void __flush_tlb(void) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.flush_tlb_user); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.flush_tlb_user) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.flush_tlb_user), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); }); -+} -+static inline __attribute__((always_inline)) void __flush_tlb_global(void) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.flush_tlb_kernel); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.flush_tlb_kernel) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.flush_tlb_kernel), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); }); -+} -+static inline __attribute__((always_inline)) void __flush_tlb_single(unsigned long addr) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.flush_tlb_single); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.flush_tlb_single) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.flush_tlb_single), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(addr)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) void flush_tlb_others(cpumask_t cpumask, struct mm_struct *mm, -+ unsigned long va) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.flush_tlb_others); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.flush_tlb_others) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.flush_tlb_others), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(&cpumask)), "1"((unsigned long)(mm)), "2"((unsigned long)(va)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) int paravirt_pgd_alloc(struct mm_struct *mm) -+{ -+ return ({ int __ret; unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.pgd_alloc); if (sizeof(int) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.pgd_alloc) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.pgd_alloc), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(mm)) : "memory", "cc" ); __ret = (int)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.pgd_alloc) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.pgd_alloc), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(mm)) : "memory", "cc" ); __ret = (int)__eax; } __ret; }); -+} -+ -+static inline __attribute__((always_inline)) void paravirt_pgd_free(struct mm_struct *mm, pgd_t *pgd) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.pgd_free); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.pgd_free) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.pgd_free), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(mm)), "1" ((unsigned long)(pgd)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) void paravirt_alloc_pte(struct mm_struct *mm, unsigned pfn) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.alloc_pte); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.alloc_pte) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.alloc_pte), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(mm)), "1" ((unsigned long)(pfn)) : "memory", "cc" ); }); -+} -+static inline __attribute__((always_inline)) void paravirt_release_pte(unsigned pfn) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.release_pte); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.release_pte) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.release_pte), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(pfn)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) void paravirt_alloc_pmd(struct mm_struct *mm, unsigned pfn) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.alloc_pmd); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.alloc_pmd) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.alloc_pmd), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(mm)), "1" ((unsigned long)(pfn)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) void paravirt_alloc_pmd_clone(unsigned pfn, unsigned clonepfn, -+ unsigned start, unsigned count) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.alloc_pmd_clone); asm volatile("push %[_arg4];" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "lea 4(%%esp),%%esp;" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.alloc_pmd_clone) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.alloc_pmd_clone), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((u32)(pfn)), "1" ((u32)(clonepfn)), "2" ((u32)(start)), [_arg4] "mr" ((u32)(count)) : "memory", "cc" ); }); -+} -+static inline __attribute__((always_inline)) void paravirt_release_pmd(unsigned pfn) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.release_pmd); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.release_pmd) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.release_pmd), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(pfn)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) void paravirt_alloc_pud(struct mm_struct *mm, unsigned pfn) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.alloc_pud); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.alloc_pud) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.alloc_pud), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(mm)), "1" ((unsigned long)(pfn)) : "memory", "cc" ); }); -+} -+static inline __attribute__((always_inline)) void paravirt_release_pud(unsigned pfn) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.release_pud); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.release_pud) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.release_pud), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(pfn)) : "memory", "cc" ); }); -+} -+ -+ -+static inline __attribute__((always_inline)) void *kmap_atomic_pte(struct page *page, enum km_type type) -+{ -+ unsigned long ret; -+ ret = ({ unsigned long __ret; unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.kmap_atomic_pte); if (sizeof(unsigned long) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.kmap_atomic_pte) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.kmap_atomic_pte), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(page)), "1" ((unsigned long)(type)) : "memory", "cc" ); __ret = (unsigned long)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.kmap_atomic_pte) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.kmap_atomic_pte), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(page)), "1" ((unsigned long)(type)) : "memory", "cc" ); __ret = (unsigned long)__eax; } __ret; }); -+ return (void *)ret; -+} -+ -+ -+static inline __attribute__((always_inline)) void pte_update(struct mm_struct *mm, unsigned long addr, -+ pte_t *ptep) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.pte_update); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.pte_update) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.pte_update), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(mm)), "1"((unsigned long)(addr)), "2"((unsigned long)(ptep)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) void pte_update_defer(struct mm_struct *mm, unsigned long addr, -+ pte_t *ptep) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.pte_update_defer); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.pte_update_defer) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.pte_update_defer), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(mm)), "1"((unsigned long)(addr)), "2"((unsigned long)(ptep)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) pte_t __pte(pteval_t val) -+{ -+ pteval_t ret; -+ -+ if (sizeof(pteval_t) > sizeof(long)) -+ ret = ({ pteval_t __ret; unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.make_pte); if (sizeof(pteval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.make_pte) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.make_pte), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(val)), "1" ((unsigned long)((u64)val >> 32)) : "memory", "cc" ); __ret = (pteval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.make_pte) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.make_pte), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(val)), "1" ((unsigned long)((u64)val >> 32)) : "memory", "cc" ); __ret = (pteval_t)__eax; } __ret; }); -+ -+ -+ else -+ ret = ({ pteval_t __ret; unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.make_pte); if (sizeof(pteval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.make_pte) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.make_pte), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(val)) : "memory", "cc" ); __ret = (pteval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.make_pte) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.make_pte), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(val)) : "memory", "cc" ); __ret = (pteval_t)__eax; } __ret; }); -+ -+ -+ -+ return (pte_t) ({pte_t duh; duh.pte = ret;duh;}); -+} -+ -+static inline __attribute__((always_inline)) pteval_t pte_val(pte_t pte) -+{ -+ pteval_t ret; -+ -+ if (sizeof(pteval_t) > sizeof(long)) -+ ret = ({ pteval_t __ret; unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.pte_val); if (sizeof(pteval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.pte_val) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.pte_val), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(pte.pte)), "1" ((unsigned long)((u64)pte.pte >> 32)) : "memory", "cc" ); __ret = (pteval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.pte_val) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.pte_val), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(pte.pte)), "1" ((unsigned long)((u64)pte.pte >> 32)) : "memory", "cc" ); __ret = (pteval_t)__eax; } __ret; }); -+ -+ else -+ ret = ({ pteval_t __ret; unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.pte_val); if (sizeof(pteval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.pte_val) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.pte_val), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(pte.pte)) : "memory", "cc" ); __ret = (pteval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.pte_val) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.pte_val), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(pte.pte)) : "memory", "cc" ); __ret = (pteval_t)__eax; } __ret; }); -+ -+ -+ return ret; -+} -+ -+static inline __attribute__((always_inline)) pteval_t pte_flags(pte_t pte) -+{ -+ pteval_t ret; -+ -+ if (sizeof(pteval_t) > sizeof(long)) -+ ret = ({ pteval_t __ret; unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.pte_flags); if (sizeof(pteval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.pte_flags) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.pte_flags), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(pte.pte)), "1" ((unsigned long)((u64)pte.pte >> 32)) : "memory", "cc" ); __ret = (pteval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.pte_flags) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.pte_flags), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(pte.pte)), "1" ((unsigned long)((u64)pte.pte >> 32)) : "memory", "cc" ); __ret = (pteval_t)__eax; } __ret; }); -+ -+ else -+ ret = ({ pteval_t __ret; unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.pte_flags); if (sizeof(pteval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.pte_flags) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.pte_flags), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(pte.pte)) : "memory", "cc" ); __ret = (pteval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.pte_flags) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.pte_flags), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(pte.pte)) : "memory", "cc" ); __ret = (pteval_t)__eax; } __ret; }); -+ -+ -+ -+ -+ -+ return ret; -+} -+ -+static inline __attribute__((always_inline)) pgd_t __pgd(pgdval_t val) -+{ -+ pgdval_t ret; -+ -+ if (sizeof(pgdval_t) > sizeof(long)) -+ ret = ({ pgdval_t __ret; unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.make_pgd); if (sizeof(pgdval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.make_pgd) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.make_pgd), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(val)), "1" ((unsigned long)((u64)val >> 32)) : "memory", "cc" ); __ret = (pgdval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.make_pgd) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.make_pgd), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(val)), "1" ((unsigned long)((u64)val >> 32)) : "memory", "cc" ); __ret = (pgdval_t)__eax; } __ret; }); -+ -+ else -+ ret = ({ pgdval_t __ret; unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.make_pgd); if (sizeof(pgdval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.make_pgd) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.make_pgd), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(val)) : "memory", "cc" ); __ret = (pgdval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.make_pgd) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.make_pgd), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(val)) : "memory", "cc" ); __ret = (pgdval_t)__eax; } __ret; }); -+ -+ -+ return (pgd_t) { ret }; -+} -+ -+static inline __attribute__((always_inline)) pgdval_t pgd_val(pgd_t pgd) -+{ -+ pgdval_t ret; -+ -+ if (sizeof(pgdval_t) > sizeof(long)) -+ ret = ({ pgdval_t __ret; unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.pgd_val); if (sizeof(pgdval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.pgd_val) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.pgd_val), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(pgd.pgd)), "1" ((unsigned long)((u64)pgd.pgd >> 32)) : "memory", "cc" ); __ret = (pgdval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.pgd_val) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.pgd_val), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(pgd.pgd)), "1" ((unsigned long)((u64)pgd.pgd >> 32)) : "memory", "cc" ); __ret = (pgdval_t)__eax; } __ret; }); -+ -+ else -+ ret = ({ pgdval_t __ret; unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.pgd_val); if (sizeof(pgdval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.pgd_val) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.pgd_val), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(pgd.pgd)) : "memory", "cc" ); __ret = (pgdval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.pgd_val) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.pgd_val), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(pgd.pgd)) : "memory", "cc" ); __ret = (pgdval_t)__eax; } __ret; }); -+ -+ -+ return ret; -+} -+ -+ -+static inline __attribute__((always_inline)) pte_t ptep_modify_prot_start(struct mm_struct *mm, unsigned long addr, -+ pte_t *ptep) -+{ -+ pteval_t ret; -+ -+ ret = ({ pteval_t __ret; unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.ptep_modify_prot_start); if (sizeof(pteval_t) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.ptep_modify_prot_start) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.ptep_modify_prot_start), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(mm)), "1"((unsigned long)(addr)), "2"((unsigned long)(ptep)) : "memory", "cc" ); __ret = (pteval_t)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.ptep_modify_prot_start) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.ptep_modify_prot_start), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(mm)), "1"((unsigned long)(addr)), "2"((unsigned long)(ptep)) : "memory", "cc" ); __ret = (pteval_t)__eax; } __ret; }); -+ -+ -+ return (pte_t) ({pte_t duh; duh.pte = ret;duh;}); -+} -+ -+static inline __attribute__((always_inline)) void ptep_modify_prot_commit(struct mm_struct *mm, unsigned long addr, -+ pte_t *ptep, pte_t pte) -+{ -+ if (sizeof(pteval_t) > sizeof(long)) -+ -+ pv_mmu_ops.ptep_modify_prot_commit(mm, addr, ptep, pte); -+ else -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.ptep_modify_prot_commit); asm volatile("push %[_arg4];" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "lea 4(%%esp),%%esp;" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.ptep_modify_prot_commit) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.ptep_modify_prot_commit), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((u32)(mm)), "1" ((u32)(addr)), "2" ((u32)(ptep)), [_arg4] "mr" ((u32)(pte.pte)) : "memory", "cc" ); }); -+ -+} -+ -+static inline __attribute__((always_inline)) void set_pte(pte_t *ptep, pte_t pte) -+{ -+ if (sizeof(pteval_t) > sizeof(long)) -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.set_pte); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.set_pte) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.set_pte), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(ptep)), "1"((unsigned long)(pte.pte)), "2"((unsigned long)((u64)pte.pte >> 32)) : "memory", "cc" ); }); -+ -+ else -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.set_pte); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.set_pte) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.set_pte), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(ptep)), "1" ((unsigned long)(pte.pte)) : "memory", "cc" ); }); -+ -+} -+ -+static inline __attribute__((always_inline)) void set_pte_at(struct mm_struct *mm, unsigned long addr, -+ pte_t *ptep, pte_t pte) -+{ -+ if (sizeof(pteval_t) > sizeof(long)) -+ -+ pv_mmu_ops.set_pte_at(mm, addr, ptep, pte); -+ else -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.set_pte_at); asm volatile("push %[_arg4];" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "lea 4(%%esp),%%esp;" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.set_pte_at) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.set_pte_at), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((u32)(mm)), "1" ((u32)(addr)), "2" ((u32)(ptep)), [_arg4] "mr" ((u32)(pte.pte)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) void set_pmd(pmd_t *pmdp, pmd_t pmd) -+{ -+ pmdval_t val = native_pmd_val(pmd); -+ -+ if (sizeof(pmdval_t) > sizeof(long)) -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.set_pmd); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.set_pmd) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.set_pmd), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(pmdp)), "1"((unsigned long)(val)), "2"((unsigned long)((u64)val >> 32)) : "memory", "cc" ); }); -+ else -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.set_pmd); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.set_pmd) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.set_pmd), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(pmdp)), "1" ((unsigned long)(val)) : "memory", "cc" ); }); -+} -+# 1300 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" -+static inline __attribute__((always_inline)) void set_pte_atomic(pte_t *ptep, pte_t pte) -+{ -+ set_pte(ptep, pte); -+} -+ -+static inline __attribute__((always_inline)) void set_pte_present(struct mm_struct *mm, unsigned long addr, -+ pte_t *ptep, pte_t pte) -+{ -+ set_pte(ptep, pte); -+} -+ -+static inline __attribute__((always_inline)) void pte_clear(struct mm_struct *mm, unsigned long addr, -+ pte_t *ptep) -+{ -+ set_pte_at(mm, addr, ptep, __pte(0)); -+} -+# 1326 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" -+enum paravirt_lazy_mode { -+ PARAVIRT_LAZY_NONE, -+ PARAVIRT_LAZY_MMU, -+ PARAVIRT_LAZY_CPU, -+}; -+ -+enum paravirt_lazy_mode paravirt_get_lazy_mode(void); -+void paravirt_enter_lazy_cpu(void); -+void paravirt_leave_lazy_cpu(void); -+void paravirt_enter_lazy_mmu(void); -+void paravirt_leave_lazy_mmu(void); -+void paravirt_leave_lazy(enum paravirt_lazy_mode mode); -+ -+ -+static inline __attribute__((always_inline)) void arch_enter_lazy_cpu_mode(void) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.lazy_mode.enter); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.lazy_mode.enter) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.lazy_mode.enter), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) void arch_leave_lazy_cpu_mode(void) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_cpu_ops.lazy_mode.leave); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_cpu_ops.lazy_mode.leave) / sizeof(void *))), [paravirt_opptr] "m" (pv_cpu_ops.lazy_mode.leave), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) void arch_flush_lazy_cpu_mode(void) -+{ -+ if (__builtin_expect(!!(paravirt_get_lazy_mode() == PARAVIRT_LAZY_CPU), 0)) { -+ arch_leave_lazy_cpu_mode(); -+ arch_enter_lazy_cpu_mode(); -+ } -+} -+ -+ -+ -+static inline __attribute__((always_inline)) void arch_enter_lazy_mmu_mode(void) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.lazy_mode.enter); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.lazy_mode.enter) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.lazy_mode.enter), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) void arch_leave_lazy_mmu_mode(void) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_mmu_ops.lazy_mode.leave); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_mmu_ops.lazy_mode.leave) / sizeof(void *))), [paravirt_opptr] "m" (pv_mmu_ops.lazy_mode.leave), [paravirt_clobber] "i" (((1 << 3) - 1)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) void arch_flush_lazy_mmu_mode(void) -+{ -+ if (__builtin_expect(!!(paravirt_get_lazy_mode() == PARAVIRT_LAZY_MMU), 0)) { -+ arch_leave_lazy_mmu_mode(); -+ arch_enter_lazy_mmu_mode(); -+ } -+} -+ -+static inline __attribute__((always_inline)) void __set_fixmap(unsigned idx, -+ unsigned long phys, pgprot_t flags) -+{ -+ pv_mmu_ops.set_fixmap(idx, phys, flags); -+} -+ -+void _paravirt_nop(void); -+ -+ -+void paravirt_use_bytelocks(void); -+ -+ -+ -+static inline __attribute__((always_inline)) int __raw_spin_is_locked(struct raw_spinlock *lock) -+{ -+ return ({ int __ret; unsigned long __eax, __edx, __ecx; ((void)pv_lock_ops.spin_is_locked); if (sizeof(int) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_lock_ops.spin_is_locked) / sizeof(void *))), [paravirt_opptr] "m" (pv_lock_ops.spin_is_locked), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(lock)) : "memory", "cc" ); __ret = (int)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_lock_ops.spin_is_locked) / sizeof(void *))), [paravirt_opptr] "m" (pv_lock_ops.spin_is_locked), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(lock)) : "memory", "cc" ); __ret = (int)__eax; } __ret; }); -+} -+ -+static inline __attribute__((always_inline)) int __raw_spin_is_contended(struct raw_spinlock *lock) -+{ -+ return ({ int __ret; unsigned long __eax, __edx, __ecx; ((void)pv_lock_ops.spin_is_contended); if (sizeof(int) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_lock_ops.spin_is_contended) / sizeof(void *))), [paravirt_opptr] "m" (pv_lock_ops.spin_is_contended), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(lock)) : "memory", "cc" ); __ret = (int)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_lock_ops.spin_is_contended) / sizeof(void *))), [paravirt_opptr] "m" (pv_lock_ops.spin_is_contended), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(lock)) : "memory", "cc" ); __ret = (int)__eax; } __ret; }); -+} -+ -+static inline __attribute__((always_inline)) __attribute__((always_inline)) void __raw_spin_lock(struct raw_spinlock *lock) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_lock_ops.spin_lock); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_lock_ops.spin_lock) / sizeof(void *))), [paravirt_opptr] "m" (pv_lock_ops.spin_lock), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(lock)) : "memory", "cc" ); }); -+} -+ -+static inline __attribute__((always_inline)) __attribute__((always_inline)) int __raw_spin_trylock(struct raw_spinlock *lock) -+{ -+ return ({ int __ret; unsigned long __eax, __edx, __ecx; ((void)pv_lock_ops.spin_trylock); if (sizeof(int) > sizeof(unsigned long)) { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_lock_ops.spin_trylock) / sizeof(void *))), [paravirt_opptr] "m" (pv_lock_ops.spin_trylock), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(lock)) : "memory", "cc" ); __ret = (int)((((u64)__edx) << 32) | __eax); } else { asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_lock_ops.spin_trylock) / sizeof(void *))), [paravirt_opptr] "m" (pv_lock_ops.spin_trylock), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(lock)) : "memory", "cc" ); __ret = (int)__eax; } __ret; }); -+} -+ -+static inline __attribute__((always_inline)) __attribute__((always_inline)) void __raw_spin_unlock(struct raw_spinlock *lock) -+{ -+ ({ unsigned long __eax, __edx, __ecx; ((void)pv_lock_ops.spin_unlock); asm volatile("" "771:\n\t" "call *%[paravirt_opptr];" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" "" : "=a" (__eax), "=d" (__edx), "=c" (__ecx) : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_lock_ops.spin_unlock) / sizeof(void *))), [paravirt_opptr] "m" (pv_lock_ops.spin_unlock), [paravirt_clobber] "i" (((1 << 3) - 1)), "0" ((unsigned long)(lock)) : "memory", "cc" ); }); -+} -+ -+ -+ -+ -+struct paravirt_patch_site { -+ u8 *instr; -+ u8 instrtype; -+ u8 len; -+ u16 clobbers; -+}; -+ -+extern struct paravirt_patch_site __parainstructions[], -+ __parainstructions_end[]; -+# 1445 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" -+static inline __attribute__((always_inline)) unsigned long __raw_local_save_flags(void) -+{ -+ unsigned long f; -+ -+ asm volatile("771:\n\t" "pushl %%ecx; pushl %%edx;" "call *%[paravirt_opptr];" "popl %%edx; popl %%ecx" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" -+ -+ -+ : "=a"(f) -+ : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_irq_ops.save_fl) / sizeof(void *))), [paravirt_opptr] "m" (pv_irq_ops.save_fl), -+ [paravirt_clobber] "i" ((1 << 0)) -+ : "memory", "cc" ); -+ return f; -+} -+ -+static inline __attribute__((always_inline)) void raw_local_irq_restore(unsigned long f) -+{ -+ asm volatile("771:\n\t" "pushl %%ecx; pushl %%edx;" "call *%[paravirt_opptr];" "popl %%edx; popl %%ecx" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" -+ -+ -+ : "=a"(f) -+ : "0"(f), -+ [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_irq_ops.restore_fl) / sizeof(void *))), [paravirt_opptr] "m" (pv_irq_ops.restore_fl), -+ [paravirt_clobber] "i" ((1 << 0)) -+ : "memory", "cc" ); -+} -+ -+static inline __attribute__((always_inline)) void raw_local_irq_disable(void) -+{ -+ asm volatile("771:\n\t" "pushl %%ecx; pushl %%edx;" "call *%[paravirt_opptr];" "popl %%edx; popl %%ecx" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" -+ -+ -+ : -+ : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_irq_ops.irq_disable) / sizeof(void *))), [paravirt_opptr] "m" (pv_irq_ops.irq_disable), -+ [paravirt_clobber] "i" ((1 << 0)) -+ : "memory", "eax", "cc" ); -+} -+ -+static inline __attribute__((always_inline)) void raw_local_irq_enable(void) -+{ -+ asm volatile("771:\n\t" "pushl %%ecx; pushl %%edx;" "call *%[paravirt_opptr];" "popl %%edx; popl %%ecx" "\n" "772:\n" ".pushsection .parainstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " " 771b\n" " .byte " "%c[paravirt_typenum]" "\n" " .byte 772b-771b\n" " .short " "%c[paravirt_clobber]" "\n" ".popsection\n" -+ -+ -+ : -+ : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_irq_ops.irq_enable) / sizeof(void *))), [paravirt_opptr] "m" (pv_irq_ops.irq_enable), -+ [paravirt_clobber] "i" ((1 << 0)) -+ : "memory", "eax", "cc" ); -+} -+ -+static inline __attribute__((always_inline)) unsigned long __raw_local_irq_save(void) -+{ -+ unsigned long f; -+ -+ f = __raw_local_save_flags(); -+ raw_local_irq_disable(); -+ return f; -+} -+# 159 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h" 2 -+# 196 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/memory_model.h" 1 -+# 197 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/page.h" 1 -+# 9 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/page.h" -+static __inline__ __attribute__((always_inline)) __attribute__((__const__)) int get_order(unsigned long size) -+{ -+ int order; -+ -+ size = (size - 1) >> (12 - 1); -+ order = -1; -+ do { -+ size >>= 1; -+ order++; -+ } while (size); -+ return order; -+} -+# 198 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h" 2 -+# 12 "/d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h" 2 -+# 20 "/d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h" -+struct task_struct; -+struct exec_domain; -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor-flags.h" 1 -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" 2 -+ -+ -+struct task_struct; -+struct mm_struct; -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/vm86.h" 1 -+# 62 "/d/kernels/linux-2.6.27.10-clickport/include/asm/vm86.h" -+struct vm86_regs { -+ -+ -+ -+ long ebx; -+ long ecx; -+ long edx; -+ long esi; -+ long edi; -+ long ebp; -+ long eax; -+ long __null_ds; -+ long __null_es; -+ long __null_fs; -+ long __null_gs; -+ long orig_eax; -+ long eip; -+ unsigned short cs, __csh; -+ long eflags; -+ long esp; -+ unsigned short ss, __ssh; -+ -+ -+ -+ unsigned short es, __esh; -+ unsigned short ds, __dsh; -+ unsigned short fs, __fsh; -+ unsigned short gs, __gsh; -+}; -+ -+struct revectored_struct { -+ unsigned long __map[8]; -+}; -+ -+struct vm86_struct { -+ struct vm86_regs regs; -+ unsigned long flags; -+ unsigned long screen_bitmap; -+ unsigned long cpu_type; -+ struct revectored_struct int_revectored; -+ struct revectored_struct int21_revectored; -+}; -+ -+ -+ -+ -+ -+ -+struct vm86plus_info_struct { -+ unsigned long force_return_for_pic:1; -+ unsigned long vm86dbg_active:1; -+ unsigned long vm86dbg_TFpendig:1; -+ unsigned long unused:28; -+ unsigned long is_vm86pus:1; -+ unsigned char vm86dbg_intxxtab[32]; -+}; -+struct vm86plus_struct { -+ struct vm86_regs regs; -+ unsigned long flags; -+ unsigned long screen_bitmap; -+ unsigned long cpu_type; -+ struct revectored_struct int_revectored; -+ struct revectored_struct int21_revectored; -+ struct vm86plus_info_struct vm86plus; -+}; -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ptrace.h" 1 -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ptrace-abi.h" 1 -+# 90 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ptrace-abi.h" -+struct ptrace_bts_config { -+ -+ __u32 size; -+ -+ __u32 flags; -+ -+ __u32 signal; -+ -+ __u32 bts_size; -+}; -+# 6 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ptrace.h" 2 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ds.h" 1 -+# 24 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ds.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/init.h" 1 -+# 135 "/d/kernels/linux-2.6.27.10-clickport/include/linux/init.h" -+typedef int (*initcall_t)(void); -+typedef void (*exitcall_t)(void); -+ -+extern initcall_t __con_initcall_start[], __con_initcall_end[]; -+extern initcall_t __security_initcall_start[], __security_initcall_end[]; -+ -+ -+extern int do_one_initcall(initcall_t fn); -+extern char __attribute__ ((__section__(".init.data"))) boot_command_line[]; -+extern char *saved_command_line; -+extern unsigned int reset_devices; -+ -+ -+void setup_arch(char **); -+void prepare_namespace(void); -+ -+extern void (*late_time_init)(void); -+# 25 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ds.h" 2 -+ -+struct cpuinfo_x86; -+ -+ -+ -+ -+ -+ -+ -+enum bts_qualifier { -+ BTS_INVALID = 0, -+ BTS_BRANCH, -+ BTS_TASK_ARRIVES, -+ BTS_TASK_DEPARTS -+}; -+ -+struct bts_struct { -+ u64 qualifier; -+ union { -+ -+ struct { -+ u64 from_ip; -+ u64 to_ip; -+ } lbr; -+ -+ -+ u64 jiffies; -+ } variant; -+}; -+ -+ -+ -+ -+ -+extern int ds_allocate(void **, size_t); -+extern int ds_free(void **); -+extern int ds_get_bts_size(void *); -+extern int ds_get_bts_end(void *); -+extern int ds_get_bts_index(void *); -+extern int ds_set_overflow(void *, int); -+extern int ds_get_overflow(void *); -+extern int ds_clear(void *); -+extern int ds_read_bts(void *, int, struct bts_struct *); -+extern int ds_write_bts(void *, const struct bts_struct *); -+extern unsigned long ds_debugctl_mask(void); -+extern void __attribute__ ((__section__(".cpuinit.text"))) ds_init_intel(struct cpuinfo_x86 *c); -+# 10 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ptrace.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/segment.h" 1 -+# 211 "/d/kernels/linux-2.6.27.10-clickport/include/asm/segment.h" -+extern const char early_idt_handlers[32][10]; -+# 11 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ptrace.h" 2 -+# 43 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ptrace.h" -+struct pt_regs { -+ unsigned long bx; -+ unsigned long cx; -+ unsigned long dx; -+ unsigned long si; -+ unsigned long di; -+ unsigned long bp; -+ unsigned long ax; -+ unsigned long ds; -+ unsigned long es; -+ unsigned long fs; -+ -+ unsigned long orig_ax; -+ unsigned long ip; -+ unsigned long cs; -+ unsigned long flags; -+ unsigned long sp; -+ unsigned long ss; -+}; -+# 135 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ptrace.h" -+struct task_struct; -+ -+extern void ptrace_bts_take_timestamp(struct task_struct *, enum bts_qualifier); -+ -+extern unsigned long profile_pc(struct pt_regs *regs); -+ -+extern unsigned long -+convert_ip_to_linear(struct task_struct *child, struct pt_regs *regs); -+ -+ -+extern void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs, -+ int error_code); -+ -+ -+ -+ -+static inline __attribute__((always_inline)) unsigned long regs_return_value(struct pt_regs *regs) -+{ -+ return regs->ax; -+} -+# 163 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ptrace.h" -+static inline __attribute__((always_inline)) int user_mode(struct pt_regs *regs) -+{ -+ -+ return (regs->cs & 0x3) == 0x3; -+ -+ -+ -+} -+ -+static inline __attribute__((always_inline)) int user_mode_vm(struct pt_regs *regs) -+{ -+ -+ return ((regs->cs & 0x3) | (regs->flags & 0x00020000)) >= -+ 0x3; -+ -+ -+ -+} -+ -+static inline __attribute__((always_inline)) int v8086_mode(struct pt_regs *regs) -+{ -+ -+ return (regs->flags & 0x00020000); -+ -+ -+ -+} -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) unsigned long kernel_trap_sp(struct pt_regs *regs) -+{ -+ -+ return (unsigned long)regs; -+ -+ -+ -+} -+ -+static inline __attribute__((always_inline)) unsigned long instruction_pointer(struct pt_regs *regs) -+{ -+ return regs->ip; -+} -+ -+static inline __attribute__((always_inline)) unsigned long frame_pointer(struct pt_regs *regs) -+{ -+ return regs->bp; -+} -+ -+ -+ -+ -+ -+extern void user_enable_single_step(struct task_struct *); -+extern void user_disable_single_step(struct task_struct *); -+ -+extern void user_enable_block_step(struct task_struct *); -+ -+ -+ -+ -+ -+ -+struct user_desc; -+extern int do_get_thread_area(struct task_struct *p, int idx, -+ struct user_desc *info); -+extern int do_set_thread_area(struct task_struct *p, int idx, -+ struct user_desc *info, int can_allocate); -+# 131 "/d/kernels/linux-2.6.27.10-clickport/include/asm/vm86.h" 2 -+# 141 "/d/kernels/linux-2.6.27.10-clickport/include/asm/vm86.h" -+struct kernel_vm86_regs { -+ -+ -+ -+ struct pt_regs pt; -+ -+ -+ -+ unsigned short es, __esh; -+ unsigned short ds, __dsh; -+ unsigned short fs, __fsh; -+ unsigned short gs, __gsh; -+}; -+ -+struct kernel_vm86_struct { -+ struct kernel_vm86_regs regs; -+# 166 "/d/kernels/linux-2.6.27.10-clickport/include/asm/vm86.h" -+ unsigned long flags; -+ unsigned long screen_bitmap; -+ unsigned long cpu_type; -+ struct revectored_struct int_revectored; -+ struct revectored_struct int21_revectored; -+ struct vm86plus_info_struct vm86plus; -+ struct pt_regs *regs32; -+# 183 "/d/kernels/linux-2.6.27.10-clickport/include/asm/vm86.h" -+}; -+ -+ -+ -+void handle_vm86_fault(struct kernel_vm86_regs *, long); -+int handle_vm86_trap(struct kernel_vm86_regs *, long, int); -+struct pt_regs *save_v86_state(struct kernel_vm86_regs *); -+ -+struct task_struct; -+void release_vm86_irqs(struct task_struct *); -+# 11 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/math_emu.h" 1 -+ -+ -+ -+ -+ -+ -+ -+struct info { -+ long ___orig_eip; -+ long ___ebx; -+ long ___ecx; -+ long ___edx; -+ long ___esi; -+ long ___edi; -+ long ___ebp; -+ long ___eax; -+ long ___ds; -+ long ___es; -+ long ___fs; -+ long ___orig_eax; -+ long ___eip; -+ long ___cs; -+ long ___eflags; -+ long ___esp; -+ long ___ss; -+ long ___vm86_es; -+ long ___vm86_ds; -+ long ___vm86_fs; -+ long ___vm86_gs; -+}; -+# 12 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" 2 -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/sigcontext.h" 1 -+# 22 "/d/kernels/linux-2.6.27.10-clickport/include/asm/sigcontext.h" -+struct _fpreg { -+ unsigned short significand[4]; -+ unsigned short exponent; -+}; -+ -+struct _fpxreg { -+ unsigned short significand[4]; -+ unsigned short exponent; -+ unsigned short padding[3]; -+}; -+ -+struct _xmmreg { -+ unsigned long element[4]; -+}; -+ -+struct _fpstate { -+ -+ unsigned long cw; -+ unsigned long sw; -+ unsigned long tag; -+ unsigned long ipoff; -+ unsigned long cssel; -+ unsigned long dataoff; -+ unsigned long datasel; -+ struct _fpreg _st[8]; -+ unsigned short status; -+ unsigned short magic; -+ -+ -+ unsigned long _fxsr_env[6]; -+ unsigned long mxcsr; -+ unsigned long reserved; -+ struct _fpxreg _fxsr_st[8]; -+ struct _xmmreg _xmm[8]; -+ unsigned long padding[56]; -+}; -+ -+ -+ -+ -+struct sigcontext { -+ unsigned short gs, __gsh; -+ unsigned short fs, __fsh; -+ unsigned short es, __esh; -+ unsigned short ds, __dsh; -+ unsigned long di; -+ unsigned long si; -+ unsigned long bp; -+ unsigned long sp; -+ unsigned long bx; -+ unsigned long dx; -+ unsigned long cx; -+ unsigned long ax; -+ unsigned long trapno; -+ unsigned long err; -+ unsigned long ip; -+ unsigned short cs, __csh; -+ unsigned long flags; -+ unsigned long sp_at_signal; -+ unsigned short ss, __ssh; -+ struct _fpstate *fpstate; -+ unsigned long oldmask; -+ unsigned long cr2; -+}; -+# 15 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/current.h" 1 -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/percpu.h" 1 -+# 105 "/d/kernels/linux-2.6.27.10-clickport/include/asm/percpu.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/percpu.h" 1 -+# 22 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/percpu.h" -+extern unsigned long __per_cpu_offset[32]; -+# 65 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/percpu.h" -+extern void setup_per_cpu_areas(void); -+# 106 "/d/kernels/linux-2.6.27.10-clickport/include/asm/percpu.h" 2 -+ -+ -+extern __typeof__(unsigned long) per_cpu__this_cpu_off; -+ -+ -+ -+extern void __bad_percpu_size(void); -+# 7 "/d/kernels/linux-2.6.27.10-clickport/include/asm/current.h" 2 -+ -+struct task_struct; -+ -+extern __typeof__(struct task_struct *) per_cpu__current_task; -+static inline __attribute__((always_inline)) __attribute__((always_inline)) struct task_struct *get_current(void) -+{ -+ return ({ typeof(per_cpu__current_task) ret__; switch (sizeof(per_cpu__current_task)) { case 1: asm("mov" "b ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__current_task)); break; case 2: asm("mov" "w ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__current_task)); break; case 4: asm("mov" "l ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__current_task)); break; default: __bad_percpu_size(); } ret__; }); -+} -+# 16 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/system.h" 1 -+ -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg.h" 1 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h" 1 -+# 14 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h" -+struct __xchg_dummy { -+ unsigned long a[100]; -+}; -+# 33 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h" -+static inline __attribute__((always_inline)) void __set_64bit(unsigned long long *ptr, -+ unsigned int low, unsigned int high) -+{ -+ asm volatile("\n1:\t" -+ "movl (%0), %%eax\n\t" -+ "movl 4(%0), %%edx\n\t" -+ "lock ; " "cmpxchg8b (%0)\n\t" -+ "jnz 1b" -+ : -+ : "D"(ptr), -+ "b"(low), -+ "c"(high) -+ : "ax", "dx", "memory"); -+} -+ -+static inline __attribute__((always_inline)) void __set_64bit_constant(unsigned long long *ptr, -+ unsigned long long value) -+{ -+ __set_64bit(ptr, (unsigned int)value, (unsigned int)(value >> 32)); -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void __set_64bit_var(unsigned long long *ptr, -+ unsigned long long value) -+{ -+ __set_64bit(ptr, *(((unsigned int *)&(value)) + 0), *(((unsigned int *)&(value)) + 1)); -+} -+# 79 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h" -+static inline __attribute__((always_inline)) unsigned long __xchg(unsigned long x, volatile void *ptr, -+ int size) -+{ -+ switch (size) { -+ case 1: -+ asm volatile("xchgb %b0,%1" -+ : "=q" (x) -+ : "m" (*((struct __xchg_dummy *)(ptr))), "0" (x) -+ : "memory"); -+ break; -+ case 2: -+ asm volatile("xchgw %w0,%1" -+ : "=r" (x) -+ : "m" (*((struct __xchg_dummy *)(ptr))), "0" (x) -+ : "memory"); -+ break; -+ case 4: -+ asm volatile("xchgl %0,%1" -+ : "=r" (x) -+ : "m" (*((struct __xchg_dummy *)(ptr))), "0" (x) -+ : "memory"); -+ break; -+ } -+ return x; -+} -+# 136 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h" -+static inline __attribute__((always_inline)) unsigned long __cmpxchg(volatile void *ptr, unsigned long old, -+ unsigned long xxx_new, int size) -+{ -+ unsigned long prev; -+ switch (size) { -+ case 1: -+ asm volatile("lock ; " "cmpxchgb %b1,%2" -+ : "=a"(prev) -+ : "q"(xxx_new), "m"(*((struct __xchg_dummy *)(ptr))), "0"(old) -+ : "memory"); -+ return prev; -+ case 2: -+ asm volatile("lock ; " "cmpxchgw %w1,%2" -+ : "=a"(prev) -+ : "r"(xxx_new), "m"(*((struct __xchg_dummy *)(ptr))), "0"(old) -+ : "memory"); -+ return prev; -+ case 4: -+ asm volatile("lock ; " "cmpxchgl %1,%2" -+ : "=a"(prev) -+ : "r"(xxx_new), "m"(*((struct __xchg_dummy *)(ptr))), "0"(old) -+ : "memory"); -+ return prev; -+ } -+ return old; -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) unsigned long __sync_cmpxchg(volatile void *ptr, -+ unsigned long old, -+ unsigned long xxx_new, int size) -+{ -+ unsigned long prev; -+ switch (size) { -+ case 1: -+ asm volatile("lock; cmpxchgb %b1,%2" -+ : "=a"(prev) -+ : "q"(xxx_new), "m"(*((struct __xchg_dummy *)(ptr))), "0"(old) -+ : "memory"); -+ return prev; -+ case 2: -+ asm volatile("lock; cmpxchgw %w1,%2" -+ : "=a"(prev) -+ : "r"(xxx_new), "m"(*((struct __xchg_dummy *)(ptr))), "0"(old) -+ : "memory"); -+ return prev; -+ case 4: -+ asm volatile("lock; cmpxchgl %1,%2" -+ : "=a"(prev) -+ : "r"(xxx_new), "m"(*((struct __xchg_dummy *)(ptr))), "0"(old) -+ : "memory"); -+ return prev; -+ } -+ return old; -+} -+ -+static inline __attribute__((always_inline)) unsigned long __cmpxchg_local(volatile void *ptr, -+ unsigned long old, -+ unsigned long xxx_new, int size) -+{ -+ unsigned long prev; -+ switch (size) { -+ case 1: -+ asm volatile("cmpxchgb %b1,%2" -+ : "=a"(prev) -+ : "q"(xxx_new), "m"(*((struct __xchg_dummy *)(ptr))), "0"(old) -+ : "memory"); -+ return prev; -+ case 2: -+ asm volatile("cmpxchgw %w1,%2" -+ : "=a"(prev) -+ : "r"(xxx_new), "m"(*((struct __xchg_dummy *)(ptr))), "0"(old) -+ : "memory"); -+ return prev; -+ case 4: -+ asm volatile("cmpxchgl %1,%2" -+ : "=a"(prev) -+ : "r"(xxx_new), "m"(*((struct __xchg_dummy *)(ptr))), "0"(old) -+ : "memory"); -+ return prev; -+ } -+ return old; -+} -+ -+static inline __attribute__((always_inline)) unsigned long long __cmpxchg64(volatile void *ptr, -+ unsigned long long old, -+ unsigned long long xxx_new) -+{ -+ unsigned long long prev; -+ asm volatile("lock ; " "cmpxchg8b %3" -+ : "=A"(prev) -+ : "b"((unsigned long)xxx_new), -+ "c"((unsigned long)(xxx_new >> 32)), -+ "m"(*((struct __xchg_dummy *)(ptr))), -+ "0"(old) -+ : "memory"); -+ return prev; -+} -+ -+static inline __attribute__((always_inline)) unsigned long long __cmpxchg64_local(volatile void *ptr, -+ unsigned long long old, -+ unsigned long long xxx_new) -+{ -+ unsigned long long prev; -+ asm volatile("cmpxchg8b %3" -+ : "=A"(prev) -+ : "b"((unsigned long)xxx_new), -+ "c"((unsigned long)(xxx_new >> 32)), -+ "m"(*((struct __xchg_dummy *)(ptr))), -+ "0"(old) -+ : "memory"); -+ return prev; -+} -+# 313 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h" -+extern unsigned long long cmpxchg_486_u64(volatile void *, u64, u64); -+# 3 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg.h" 2 -+# 8 "/d/kernels/linux-2.6.27.10-clickport/include/asm/system.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/nops.h" 1 -+# 9 "/d/kernels/linux-2.6.27.10-clickport/include/asm/system.h" 2 -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irqflags.h" 1 -+# 57 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irqflags.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irqflags.h" 1 -+# 11 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irqflags.h" -+static inline __attribute__((always_inline)) unsigned long native_save_fl(void) -+{ -+ unsigned long flags; -+ -+ asm volatile("# __raw_save_flags\n\t" -+ "pushf ; pop %0" -+ : "=g" (flags) -+ : -+ : "memory"); -+ -+ return flags; -+} -+ -+static inline __attribute__((always_inline)) void native_restore_fl(unsigned long flags) -+{ -+ asm volatile("push %0 ; popf" -+ : -+ :"g" (flags) -+ :"memory", "cc"); -+} -+ -+static inline __attribute__((always_inline)) void native_irq_disable(void) -+{ -+ asm volatile("cli": : :"memory"); -+} -+ -+static inline __attribute__((always_inline)) void native_irq_enable(void) -+{ -+ asm volatile("sti": : :"memory"); -+} -+ -+static inline __attribute__((always_inline)) void native_safe_halt(void) -+{ -+ asm volatile("sti; hlt": : :"memory"); -+} -+ -+static inline __attribute__((always_inline)) void native_halt(void) -+{ -+ asm volatile("hlt": : :"memory"); -+} -+# 157 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irqflags.h" -+static inline __attribute__((always_inline)) int raw_irqs_disabled_flags(unsigned long flags) -+{ -+ return !(flags & 0x00000200); -+} -+ -+static inline __attribute__((always_inline)) int raw_irqs_disabled(void) -+{ -+ unsigned long flags = __raw_local_save_flags(); -+ -+ return raw_irqs_disabled_flags(flags); -+} -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void trace_hardirqs_fixup_flags(unsigned long flags) -+{ -+ if (raw_irqs_disabled_flags(flags)) -+ do { } while (0); -+ else -+ do { } while (0); -+} -+ -+static inline __attribute__((always_inline)) void trace_hardirqs_fixup(void) -+{ -+ unsigned long flags = __raw_local_save_flags(); -+ -+ trace_hardirqs_fixup_flags(flags); -+} -+# 58 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irqflags.h" 2 -+# 12 "/d/kernels/linux-2.6.27.10-clickport/include/asm/system.h" 2 -+# 22 "/d/kernels/linux-2.6.27.10-clickport/include/asm/system.h" -+struct task_struct; -+struct task_struct *__switch_to(struct task_struct *prev, -+ struct task_struct *next); -+# 139 "/d/kernels/linux-2.6.27.10-clickport/include/asm/system.h" -+extern void native_load_gs_index(unsigned); -+# 165 "/d/kernels/linux-2.6.27.10-clickport/include/asm/system.h" -+static inline __attribute__((always_inline)) unsigned long get_limit(unsigned long segment) -+{ -+ unsigned long __limit; -+ asm("lsll %1,%0" : "=r" (__limit) : "r" (segment)); -+ return __limit + 1; -+} -+ -+static inline __attribute__((always_inline)) void native_clts(void) -+{ -+ asm volatile("clts"); -+} -+# 184 "/d/kernels/linux-2.6.27.10-clickport/include/asm/system.h" -+static unsigned long __force_order; -+ -+static inline __attribute__((always_inline)) unsigned long native_read_cr0(void) -+{ -+ unsigned long val; -+ asm volatile("mov %%cr0,%0\n\t" : "=r" (val), "=m" (__force_order)); -+ return val; -+} -+ -+static inline __attribute__((always_inline)) void native_write_cr0(unsigned long val) -+{ -+ asm volatile("mov %0,%%cr0": : "r" (val), "m" (__force_order)); -+} -+ -+static inline __attribute__((always_inline)) unsigned long native_read_cr2(void) -+{ -+ unsigned long val; -+ asm volatile("mov %%cr2,%0\n\t" : "=r" (val), "=m" (__force_order)); -+ return val; -+} -+ -+static inline __attribute__((always_inline)) void native_write_cr2(unsigned long val) -+{ -+ asm volatile("mov %0,%%cr2": : "r" (val), "m" (__force_order)); -+} -+ -+static inline __attribute__((always_inline)) unsigned long native_read_cr3(void) -+{ -+ unsigned long val; -+ asm volatile("mov %%cr3,%0\n\t" : "=r" (val), "=m" (__force_order)); -+ return val; -+} -+ -+static inline __attribute__((always_inline)) void native_write_cr3(unsigned long val) -+{ -+ asm volatile("mov %0,%%cr3": : "r" (val), "m" (__force_order)); -+} -+ -+static inline __attribute__((always_inline)) unsigned long native_read_cr4(void) -+{ -+ unsigned long val; -+ asm volatile("mov %%cr4,%0\n\t" : "=r" (val), "=m" (__force_order)); -+ return val; -+} -+ -+static inline __attribute__((always_inline)) unsigned long native_read_cr4_safe(void) -+{ -+ unsigned long val; -+ -+ -+ -+ asm volatile("1: mov %%cr4, %0\n" -+ "2:\n" -+ " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "2b" "\n" " .previous\n" -+ : "=r" (val), "=m" (__force_order) : "0" (0)); -+ -+ -+ -+ return val; -+} -+ -+static inline __attribute__((always_inline)) void native_write_cr4(unsigned long val) -+{ -+ asm volatile("mov %0,%%cr4": : "r" (val), "m" (__force_order)); -+} -+# 264 "/d/kernels/linux-2.6.27.10-clickport/include/asm/system.h" -+static inline __attribute__((always_inline)) void native_wbinvd(void) -+{ -+ asm volatile("wbinvd": : :"memory"); -+} -+# 297 "/d/kernels/linux-2.6.27.10-clickport/include/asm/system.h" -+static inline __attribute__((always_inline)) void clflush(volatile void *__p) -+{ -+ asm volatile("clflush %0" : "+m" (*(volatile char *)__p)); -+} -+ -+ -+ -+void disable_hlt(void); -+void enable_hlt(void); -+ -+void cpu_idle_wait(void); -+ -+extern unsigned long arch_align_stack(unsigned long sp); -+extern void free_init_pages(char *what, unsigned long begin, unsigned long end); -+ -+void default_idle(void); -+# 416 "/d/kernels/linux-2.6.27.10-clickport/include/asm/system.h" -+static inline __attribute__((always_inline)) void rdtsc_barrier(void) -+{ -+ asm volatile ("661:\n\t" ".byte 0x8d,0x76,0x00\n" "\n662:\n" ".section .altinstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661b\n" " " ".long" " " "663f\n" " .byte %c0\n" " .byte 662b-661b\n" " .byte 664f-663f\n" ".previous\n" ".section .altinstr_replacement,\"ax\"\n" "663:\n\t" "mfence" "\n664:\n" ".previous" :: "i" ((3*32+17)) : "memory"); -+ asm volatile ("661:\n\t" ".byte 0x8d,0x76,0x00\n" "\n662:\n" ".section .altinstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661b\n" " " ".long" " " "663f\n" " .byte %c0\n" " .byte 662b-661b\n" " .byte 664f-663f\n" ".previous\n" ".section .altinstr_replacement,\"ax\"\n" "663:\n\t" "lfence" "\n664:\n" ".previous" :: "i" ((3*32+18)) : "memory"); -+} -+# 18 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" 2 -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/msr.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/msr-index.h" 1 -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm/msr.h" 2 -+# 14 "/d/kernels/linux-2.6.27.10-clickport/include/asm/msr.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/errno.h" 1 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/errno.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/errno-base.h" 1 -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/errno.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/errno.h" 2 -+# 15 "/d/kernels/linux-2.6.27.10-clickport/include/asm/msr.h" 2 -+ -+static inline __attribute__((always_inline)) unsigned long long native_read_tscp(unsigned int *aux) -+{ -+ unsigned long low, high; -+ asm volatile(".byte 0x0f,0x01,0xf9" -+ : "=a" (low), "=d" (high), "=c" (*aux)); -+ return low | ((u64)high << 32); -+} -+# 42 "/d/kernels/linux-2.6.27.10-clickport/include/asm/msr.h" -+static inline __attribute__((always_inline)) unsigned long long native_read_msr(unsigned int msr) -+{ -+ unsigned long long val; -+ -+ asm volatile("rdmsr" : "=A" (val) : "c" (msr)); -+ return (val); -+} -+ -+static inline __attribute__((always_inline)) unsigned long long native_read_msr_safe(unsigned int msr, -+ int *err) -+{ -+ unsigned long long val; -+ -+ asm volatile("2: rdmsr ; xor %[err],%[err]\n" -+ "1:\n\t" -+ ".section .fixup,\"ax\"\n\t" -+ "3: mov %[fault],%[err] ; jmp 1b\n\t" -+ ".previous\n\t" -+ " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "2b" "," "3b" "\n" " .previous\n" -+ : [err] "=r" (*err), "=A" (val) -+ : "c" (msr), [fault] "i" (-14)); -+ return (val); -+} -+ -+static inline __attribute__((always_inline)) void native_write_msr(unsigned int msr, -+ unsigned low, unsigned high) -+{ -+ asm volatile("wrmsr" : : "c" (msr), "a"(low), "d" (high) : "memory"); -+} -+ -+static inline __attribute__((always_inline)) int native_write_msr_safe(unsigned int msr, -+ unsigned low, unsigned high) -+{ -+ int err; -+ asm volatile("2: wrmsr ; xor %[err],%[err]\n" -+ "1:\n\t" -+ ".section .fixup,\"ax\"\n\t" -+ "3: mov %[fault],%[err] ; jmp 1b\n\t" -+ ".previous\n\t" -+ " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "2b" "," "3b" "\n" " .previous\n" -+ : [err] "=a" (err) -+ : "c" (msr), "0" (low), "d" (high), -+ [fault] "i" (-14) -+ : "memory"); -+ return err; -+} -+ -+extern unsigned long long native_read_tsc(void); -+ -+static inline __attribute__((always_inline)) __attribute__((always_inline)) unsigned long long __native_read_tsc(void) -+{ -+ unsigned long long val; -+ -+ rdtsc_barrier(); -+ asm volatile("rdtsc" : "=A" (val)); -+ rdtsc_barrier(); -+ -+ return (val); -+} -+ -+static inline __attribute__((always_inline)) unsigned long long native_read_pmc(int counter) -+{ -+ unsigned long long val; -+ -+ asm volatile("rdpmc" : "=A" (val) : "c" (counter)); -+ return (val); -+} -+# 195 "/d/kernels/linux-2.6.27.10-clickport/include/asm/msr.h" -+int rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h); -+int wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h); -+int rdmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h); -+int wrmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h); -+# 21 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" 2 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/personality.h" 1 -+# 10 "/d/kernels/linux-2.6.27.10-clickport/include/linux/personality.h" -+struct exec_domain; -+struct pt_regs; -+ -+extern int register_exec_domain(struct exec_domain *); -+extern int unregister_exec_domain(struct exec_domain *); -+extern int __set_personality(unsigned long); -+# 24 "/d/kernels/linux-2.6.27.10-clickport/include/linux/personality.h" -+enum { -+ ADDR_NO_RANDOMIZE = 0x0040000, -+ FDPIC_FUNCPTRS = 0x0080000, -+ -+ -+ MMAP_PAGE_ZERO = 0x0100000, -+ ADDR_COMPAT_LAYOUT = 0x0200000, -+ READ_IMPLIES_EXEC = 0x0400000, -+ ADDR_LIMIT_32BIT = 0x0800000, -+ SHORT_INODE = 0x1000000, -+ WHOLE_SECONDS = 0x2000000, -+ STICKY_TIMEOUTS = 0x4000000, -+ ADDR_LIMIT_3GB = 0x8000000, -+}; -+# 51 "/d/kernels/linux-2.6.27.10-clickport/include/linux/personality.h" -+enum { -+ PER_LINUX = 0x0000, -+ PER_LINUX_32BIT = 0x0000 | ADDR_LIMIT_32BIT, -+ PER_LINUX_FDPIC = 0x0000 | FDPIC_FUNCPTRS, -+ PER_SVR4 = 0x0001 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO, -+ PER_SVR3 = 0x0002 | STICKY_TIMEOUTS | SHORT_INODE, -+ PER_SCOSVR3 = 0x0003 | STICKY_TIMEOUTS | -+ WHOLE_SECONDS | SHORT_INODE, -+ PER_OSR5 = 0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS, -+ PER_WYSEV386 = 0x0004 | STICKY_TIMEOUTS | SHORT_INODE, -+ PER_ISCR4 = 0x0005 | STICKY_TIMEOUTS, -+ PER_BSD = 0x0006, -+ PER_SUNOS = 0x0006 | STICKY_TIMEOUTS, -+ PER_XENIX = 0x0007 | STICKY_TIMEOUTS | SHORT_INODE, -+ PER_LINUX32 = 0x0008, -+ PER_LINUX32_3GB = 0x0008 | ADDR_LIMIT_3GB, -+ PER_IRIX32 = 0x0009 | STICKY_TIMEOUTS, -+ PER_IRIXN32 = 0x000a | STICKY_TIMEOUTS, -+ PER_IRIX64 = 0x000b | STICKY_TIMEOUTS, -+ PER_RISCOS = 0x000c, -+ PER_SOLARIS = 0x000d | STICKY_TIMEOUTS, -+ PER_UW7 = 0x000e | STICKY_TIMEOUTS | MMAP_PAGE_ZERO, -+ PER_OSF4 = 0x000f, -+ PER_HPUX = 0x0010, -+ PER_MASK = 0x00ff, -+}; -+# 86 "/d/kernels/linux-2.6.27.10-clickport/include/linux/personality.h" -+typedef void (*handler_t)(int, struct pt_regs *); -+ -+struct exec_domain { -+ const char *name; -+ handler_t handler; -+ unsigned char pers_low; -+ unsigned char pers_high; -+ unsigned long *signal_map; -+ unsigned long *signal_invmap; -+ struct map_segment *err_map; -+ struct map_segment *socktype_map; -+ struct map_segment *sockopt_map; -+ struct map_segment *af_map; -+ struct module *module; -+ struct exec_domain *next; -+}; -+# 25 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" 2 -+# 34 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" -+static inline __attribute__((always_inline)) void *current_text_addr(void) -+{ -+ void *pc; -+ -+ asm volatile("mov $1f, %0; 1:":"=r" (pc)); -+ -+ return pc; -+} -+# 57 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" -+struct cpuinfo_x86 { -+ __u8 x86; -+ __u8 x86_vendor; -+ __u8 x86_model; -+ __u8 x86_mask; -+ -+ char wp_works_ok; -+ -+ -+ char hlt_works_ok; -+ char hard_math; -+ char rfu; -+ char fdiv_bug; -+ char f00f_bug; -+ char coma_bug; -+ char pad0; -+# 84 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" -+ int cpuid_level; -+ __u32 x86_capability[8]; -+ char x86_vendor_id[16]; -+ char x86_model_id[64]; -+ -+ int x86_cache_size; -+ int x86_cache_alignment; -+ int x86_power; -+ unsigned long loops_per_jiffy; -+ -+ -+ cpumask_t llc_shared_map; -+ -+ -+ u16 x86_max_cores; -+ u16 apicid; -+ u16 initial_apicid; -+ u16 x86_clflush_size; -+ -+ -+ u16 booted_cores; -+ -+ u16 phys_proc_id; -+ -+ u16 cpu_core_id; -+ -+ u16 cpu_index; -+ -+} __attribute__((__aligned__((1 << (7))))); -+# 128 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" -+extern struct cpuinfo_x86 boot_cpu_data; -+extern struct cpuinfo_x86 new_cpu_data; -+ -+extern struct tss_struct doublefault_tss; -+extern __u32 cleared_cpu_caps[8]; -+ -+ -+extern __typeof__(struct cpuinfo_x86) per_cpu__cpu_info; -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int hlt_works(int cpu) -+{ -+ -+ return (*({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((&per_cpu__cpu_info))); (typeof((&per_cpu__cpu_info))) (__ptr + (((__per_cpu_offset[cpu])))); })).hlt_works_ok; -+ -+ -+ -+} -+ -+ -+ -+extern void cpu_detect(struct cpuinfo_x86 *c); -+ -+extern void early_cpu_init(void); -+extern void identify_boot_cpu(void); -+extern void identify_secondary_cpu(struct cpuinfo_x86 *); -+extern void print_cpu_info(struct cpuinfo_x86 *); -+extern void init_scattered_cpuid_features(struct cpuinfo_x86 *c); -+extern unsigned int init_intel_cacheinfo(struct cpuinfo_x86 *c); -+extern unsigned short num_cache_leaves; -+ -+ -+extern void detect_ht(struct cpuinfo_x86 *c); -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void native_cpuid(unsigned int *eax, unsigned int *ebx, -+ unsigned int *ecx, unsigned int *edx) -+{ -+ -+ asm("cpuid" -+ : "=a" (*eax), -+ "=b" (*ebx), -+ "=c" (*ecx), -+ "=d" (*edx) -+ : "0" (*eax), "2" (*ecx)); -+} -+ -+static inline __attribute__((always_inline)) void load_cr3(pgd_t *pgdir) -+{ -+ write_cr3((((unsigned long)(pgdir)) - ((unsigned long)(0xC0000000UL)))); -+} -+ -+ -+ -+struct x86_hw_tss { -+ unsigned short back_link, __blh; -+ unsigned long sp0; -+ unsigned short ss0, __ss0h; -+ unsigned long sp1; -+ -+ unsigned short ss1, __ss1h; -+ unsigned long sp2; -+ unsigned short ss2, __ss2h; -+ unsigned long __cr3; -+ unsigned long ip; -+ unsigned long flags; -+ unsigned long ax; -+ unsigned long cx; -+ unsigned long dx; -+ unsigned long bx; -+ unsigned long sp; -+ unsigned long bp; -+ unsigned long si; -+ unsigned long di; -+ unsigned short es, __esh; -+ unsigned short cs, __csh; -+ unsigned short ss, __ssh; -+ unsigned short ds, __dsh; -+ unsigned short fs, __fsh; -+ unsigned short gs, __gsh; -+ unsigned short ldt, __ldth; -+ unsigned short trace; -+ unsigned short io_bitmap_base; -+ -+} __attribute__((packed)); -+# 246 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" -+struct tss_struct { -+ -+ -+ -+ struct x86_hw_tss x86_tss; -+ -+ -+ -+ -+ -+ -+ -+ unsigned long io_bitmap[((65536/8)/sizeof(long)) + 1]; -+ -+ -+ -+ unsigned long io_bitmap_max; -+ struct thread_struct *io_bitmap_owner; -+ -+ -+ -+ -+ unsigned long stack[64]; -+ -+} __attribute__((__aligned__((1 << (7))))); -+ -+extern __typeof__(struct tss_struct) per_cpu__init_tss; -+ -+ -+ -+ -+struct orig_ist { -+ unsigned long ist[7]; -+}; -+ -+ -+ -+struct i387_fsave_struct { -+ u32 cwd; -+ u32 swd; -+ u32 twd; -+ u32 fip; -+ u32 fcs; -+ u32 foo; -+ u32 fos; -+ -+ -+ u32 st_space[20]; -+ -+ -+ u32 status; -+}; -+ -+struct i387_fxsave_struct { -+ u16 cwd; -+ u16 swd; -+ u16 twd; -+ u16 fop; -+ union { -+ struct { -+ u64 rip; -+ u64 rdp; -+ }; -+ struct { -+ u32 fip; -+ u32 fcs; -+ u32 foo; -+ u32 fos; -+ }; -+ }; -+ u32 mxcsr; -+ u32 mxcsr_mask; -+ -+ -+ u32 st_space[32]; -+ -+ -+ u32 xmm_space[64]; -+ -+ u32 padding[24]; -+ -+} __attribute__((aligned(16))); -+ -+struct i387_soft_struct { -+ u32 cwd; -+ u32 swd; -+ u32 twd; -+ u32 fip; -+ u32 fcs; -+ u32 foo; -+ u32 fos; -+ -+ u32 st_space[20]; -+ u8 ftop; -+ u8 changed; -+ u8 lookahead; -+ u8 no_update; -+ u8 rm; -+ u8 alimit; -+ struct info *info; -+ u32 entry_eip; -+}; -+ -+union thread_xstate { -+ struct i387_fsave_struct fsave; -+ struct i387_fxsave_struct fxsave; -+ struct i387_soft_struct soft; -+}; -+ -+ -+ -+ -+ -+extern void print_cpu_info(struct cpuinfo_x86 *); -+extern unsigned int xstate_size; -+extern void free_thread_xstate(struct task_struct *); -+extern struct kmem_cache *task_xstate_cachep; -+extern void init_scattered_cpuid_features(struct cpuinfo_x86 *c); -+extern unsigned int init_intel_cacheinfo(struct cpuinfo_x86 *c); -+extern unsigned short num_cache_leaves; -+ -+struct thread_struct { -+ -+ struct desc_struct tls_array[3]; -+ unsigned long sp0; -+ unsigned long sp; -+ -+ unsigned long sysenter_cs; -+ -+ -+ -+ -+ -+ -+ -+ unsigned long ip; -+ unsigned long fs; -+ unsigned long gs; -+ -+ unsigned long debugreg0; -+ unsigned long debugreg1; -+ unsigned long debugreg2; -+ unsigned long debugreg3; -+ unsigned long debugreg6; -+ unsigned long debugreg7; -+ -+ unsigned long cr2; -+ unsigned long trap_no; -+ unsigned long error_code; -+ -+ union thread_xstate *xstate; -+ -+ -+ struct vm86_struct *vm86_info; -+ unsigned long screen_bitmap; -+ unsigned long v86flags; -+ unsigned long v86mask; -+ unsigned long saved_sp0; -+ unsigned int saved_fs; -+ unsigned int saved_gs; -+ -+ -+ unsigned long *io_bitmap_ptr; -+ unsigned long iopl; -+ -+ unsigned io_bitmap_max; -+ -+ unsigned long debugctlmsr; -+ -+ -+ unsigned long ds_area_msr; -+}; -+ -+static inline __attribute__((always_inline)) unsigned long native_get_debugreg(int regno) -+{ -+ unsigned long val = 0; -+ -+ switch (regno) { -+ case 0: -+ asm("mov %%db0, %0" :"=r" (val)); -+ break; -+ case 1: -+ asm("mov %%db1, %0" :"=r" (val)); -+ break; -+ case 2: -+ asm("mov %%db2, %0" :"=r" (val)); -+ break; -+ case 3: -+ asm("mov %%db3, %0" :"=r" (val)); -+ break; -+ case 6: -+ asm("mov %%db6, %0" :"=r" (val)); -+ break; -+ case 7: -+ asm("mov %%db7, %0" :"=r" (val)); -+ break; -+ default: -+ do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h"), "i" (443), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); -+ } -+ return val; -+} -+ -+static inline __attribute__((always_inline)) void native_set_debugreg(int regno, unsigned long value) -+{ -+ switch (regno) { -+ case 0: -+ asm("mov %0, %%db0" ::"r" (value)); -+ break; -+ case 1: -+ asm("mov %0, %%db1" ::"r" (value)); -+ break; -+ case 2: -+ asm("mov %0, %%db2" ::"r" (value)); -+ break; -+ case 3: -+ asm("mov %0, %%db3" ::"r" (value)); -+ break; -+ case 6: -+ asm("mov %0, %%db6" ::"r" (value)); -+ break; -+ case 7: -+ asm("mov %0, %%db7" ::"r" (value)); -+ break; -+ default: -+ do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h"), "i" (470), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); -+ } -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void native_set_iopl_mask(unsigned mask) -+{ -+ -+ unsigned int reg; -+ -+ asm volatile ("pushfl;" -+ "popl %0;" -+ "andl %1, %0;" -+ "orl %2, %0;" -+ "pushl %0;" -+ "popfl" -+ : "=&r" (reg) -+ : "i" (~0x00003000), "r" (mask)); -+ -+} -+ -+static inline __attribute__((always_inline)) void -+native_load_sp0(struct tss_struct *tss, struct thread_struct *thread) -+{ -+ tss->x86_tss.sp0 = thread->sp0; -+ -+ -+ if (__builtin_expect(!!(tss->x86_tss.ss1 != thread->sysenter_cs), 0)) { -+ tss->x86_tss.ss1 = thread->sysenter_cs; -+ do { paravirt_write_msr(0x00000174, thread->sysenter_cs, 0); } while (0); -+ } -+ -+} -+ -+static inline __attribute__((always_inline)) void native_swapgs(void) -+{ -+ -+ -+ -+} -+# 542 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" -+extern unsigned long mmu_cr4_features; -+ -+static inline __attribute__((always_inline)) void set_in_cr4(unsigned long mask) -+{ -+ unsigned cr4; -+ -+ mmu_cr4_features |= mask; -+ cr4 = read_cr4(); -+ cr4 |= mask; -+ write_cr4(cr4); -+} -+ -+static inline __attribute__((always_inline)) void clear_in_cr4(unsigned long mask) -+{ -+ unsigned cr4; -+ -+ mmu_cr4_features &= ~mask; -+ cr4 = read_cr4(); -+ cr4 &= ~mask; -+ write_cr4(cr4); -+} -+ -+struct microcode_header { -+ unsigned int hdrver; -+ unsigned int rev; -+ unsigned int date; -+ unsigned int sig; -+ unsigned int cksum; -+ unsigned int ldrver; -+ unsigned int pf; -+ unsigned int datasize; -+ unsigned int totalsize; -+ unsigned int reserved[3]; -+}; -+ -+struct microcode { -+ struct microcode_header hdr; -+ unsigned int bits[0]; -+}; -+ -+typedef struct microcode microcode_t; -+typedef struct microcode_header microcode_header_t; -+ -+ -+struct extended_signature { -+ unsigned int sig; -+ unsigned int pf; -+ unsigned int cksum; -+}; -+ -+struct extended_sigtable { -+ unsigned int count; -+ unsigned int cksum; -+ unsigned int reserved[3]; -+ struct extended_signature sigs[0]; -+}; -+ -+typedef struct { -+ unsigned long seg; -+} mm_segment_t; -+ -+ -+ -+ -+ -+extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); -+ -+ -+extern void release_thread(struct task_struct *); -+ -+ -+extern void prepare_to_copy(struct task_struct *tsk); -+ -+unsigned long get_wchan(struct task_struct *p); -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void cpuid(unsigned int op, -+ unsigned int *eax, unsigned int *ebx, -+ unsigned int *ecx, unsigned int *edx) -+{ -+ *eax = op; -+ *ecx = 0; -+ __cpuid(eax, ebx, ecx, edx); -+} -+ -+ -+static inline __attribute__((always_inline)) void cpuid_count(unsigned int op, int count, -+ unsigned int *eax, unsigned int *ebx, -+ unsigned int *ecx, unsigned int *edx) -+{ -+ *eax = op; -+ *ecx = count; -+ __cpuid(eax, ebx, ecx, edx); -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) unsigned int cpuid_eax(unsigned int op) -+{ -+ unsigned int eax, ebx, ecx, edx; -+ -+ cpuid(op, &eax, &ebx, &ecx, &edx); -+ -+ return eax; -+} -+ -+static inline __attribute__((always_inline)) unsigned int cpuid_ebx(unsigned int op) -+{ -+ unsigned int eax, ebx, ecx, edx; -+ -+ cpuid(op, &eax, &ebx, &ecx, &edx); -+ -+ return ebx; -+} -+ -+static inline __attribute__((always_inline)) unsigned int cpuid_ecx(unsigned int op) -+{ -+ unsigned int eax, ebx, ecx, edx; -+ -+ cpuid(op, &eax, &ebx, &ecx, &edx); -+ -+ return ecx; -+} -+ -+static inline __attribute__((always_inline)) unsigned int cpuid_edx(unsigned int op) -+{ -+ unsigned int eax, ebx, ecx, edx; -+ -+ cpuid(op, &eax, &ebx, &ecx, &edx); -+ -+ return edx; -+} -+ -+ -+static inline __attribute__((always_inline)) void rep_nop(void) -+{ -+ asm volatile("rep; nop" ::: "memory"); -+} -+ -+static inline __attribute__((always_inline)) void cpu_relax(void) -+{ -+ rep_nop(); -+} -+ -+ -+static inline __attribute__((always_inline)) void sync_core(void) -+{ -+ int tmp; -+ -+ asm volatile("cpuid" : "=a" (tmp) : "0" (1) -+ : "ebx", "ecx", "edx", "memory"); -+} -+ -+static inline __attribute__((always_inline)) void __monitor(const void *eax, unsigned long ecx, -+ unsigned long edx) -+{ -+ -+ asm volatile(".byte 0x0f, 0x01, 0xc8;" -+ :: "a" (eax), "c" (ecx), "d"(edx)); -+} -+ -+static inline __attribute__((always_inline)) void __mwait(unsigned long eax, unsigned long ecx) -+{ -+ -+ asm volatile(".byte 0x0f, 0x01, 0xc9;" -+ :: "a" (eax), "c" (ecx)); -+} -+ -+static inline __attribute__((always_inline)) void __sti_mwait(unsigned long eax, unsigned long ecx) -+{ -+ do { } while (0); -+ -+ asm volatile("sti; .byte 0x0f, 0x01, 0xc9;" -+ :: "a" (eax), "c" (ecx)); -+} -+ -+extern void mwait_idle_with_hints(unsigned long eax, unsigned long ecx); -+ -+extern void select_idle_routine(const struct cpuinfo_x86 *c); -+ -+extern unsigned long boot_option_idle_override; -+extern unsigned long idle_halt; -+extern unsigned long idle_nomwait; -+# 743 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" -+static inline __attribute__((always_inline)) void wbinvd_halt(void) -+{ -+ asm volatile ("661:\n\t" "lock; addl $0,0(%%esp)" "\n662:\n" ".section .altinstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661b\n" " " ".long" " " "663f\n" " .byte %c0\n" " .byte 662b-661b\n" " .byte 664f-663f\n" ".previous\n" ".section .altinstr_replacement,\"ax\"\n" "663:\n\t" "mfence" "\n664:\n" ".previous" :: "i" ((0*32+26)) : "memory"); -+ -+ if ((__builtin_constant_p((0*32+19)) && ( ((((0*32+19))>>5)==0 && (1UL<<(((0*32+19))&31) & ((1<<((0*32+ 0) & 31))|0|0|0| 0|0|0|(1<<((0*32+15) & 31))| 0|0))) || ((((0*32+19))>>5)==1 && (1UL<<(((0*32+19))&31) & (0|0))) || ((((0*32+19))>>5)==2 && (1UL<<(((0*32+19))&31) & 0)) || ((((0*32+19))>>5)==3 && (1UL<<(((0*32+19))&31) & (0))) || ((((0*32+19))>>5)==4 && (1UL<<(((0*32+19))&31) & 0)) || ((((0*32+19))>>5)==5 && (1UL<<(((0*32+19))&31) & 0)) || ((((0*32+19))>>5)==6 && (1UL<<(((0*32+19))&31) & 0)) || ((((0*32+19))>>5)==7 && (1UL<<(((0*32+19))&31) & 0)) ) ? 1 : (__builtin_constant_p(((0*32+19))) ? constant_test_bit(((0*32+19)), ((unsigned long *)((&boot_cpu_data)->x86_capability))) : variable_test_bit(((0*32+19)), ((unsigned long *)((&boot_cpu_data)->x86_capability)))))) -+ asm volatile("cli; wbinvd; 1: hlt; jmp 1b" : : : "memory"); -+ else -+ while (1) -+ halt(); -+} -+ -+extern void enable_sep_cpu(void); -+extern int sysenter_setup(void); -+ -+ -+extern struct desc_ptr early_gdt_descr; -+ -+extern void cpu_set_gdt(int); -+extern void switch_to_new_gdt(void); -+extern void cpu_init(void); -+extern void init_gdt(int cpu); -+ -+static inline __attribute__((always_inline)) void update_debugctlmsr(unsigned long debugctlmsr) -+{ -+ -+ -+ -+ -+ do { paravirt_write_msr(0x000001d9, (u32)((u64)(debugctlmsr)), ((u64)(debugctlmsr))>>32); } while (0); -+} -+ -+ -+ -+ -+ -+extern unsigned int machine_id; -+extern unsigned int machine_submodel_id; -+extern unsigned int BIOS_revision; -+ -+ -+extern int bootloader_type; -+ -+extern char ignore_fpu_irq; -+# 804 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" -+static inline __attribute__((always_inline)) void prefetch(const void *x) -+{ -+ asm volatile ("661:\n\t" ".byte 0x8d,0x74,0x26,0x00\n" "\n662:\n" ".section .altinstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661b\n" " " ".long" " " "663f\n" " .byte %c0\n" " .byte 662b-661b\n" " .byte 664f-663f\n" ".previous\n" ".section .altinstr_replacement,\"ax\"\n" "663:\n\t" "prefetchnta (%1)" "\n664:\n" ".previous" :: "i" ((0*32+25)), "r" (x)); -+ -+ -+ -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void prefetchw(const void *x) -+{ -+ asm volatile ("661:\n\t" ".byte 0x8d,0x74,0x26,0x00\n" "\n662:\n" ".section .altinstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661b\n" " " ".long" " " "663f\n" " .byte %c0\n" " .byte 662b-661b\n" " .byte 664f-663f\n" ".previous\n" ".section .altinstr_replacement,\"ax\"\n" "663:\n\t" "prefetchw (%1)" "\n664:\n" ".previous" :: "i" ((1*32+31)), "r" (x)); -+ -+ -+ -+} -+ -+static inline __attribute__((always_inline)) void spin_lock_prefetch(const void *x) -+{ -+ prefetchw(x); -+} -+# 862 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" -+extern unsigned long thread_saved_pc(struct task_struct *tsk); -+# 928 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" -+extern void start_thread(struct pt_regs *regs, unsigned long new_ip, -+ unsigned long new_sp); -+# 943 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" -+extern int get_tsc_mode(unsigned long adr); -+extern int set_tsc_mode(unsigned int val); -+# 23 "/d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h" 2 -+ -+struct thread_info { -+ struct task_struct *task; -+ struct exec_domain *exec_domain; -+ unsigned long flags; -+ __u32 status; -+ __u32 cpu; -+ int preempt_count; -+ -+ mm_segment_t addr_limit; -+ struct restart_block restart_block; -+ void *sysenter_return; -+ -+ unsigned long previous_esp; -+ -+ -+ __u8 supervisor_stack[0]; -+ -+}; -+# 172 "/d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h" -+register unsigned long current_stack_pointer asm("esp") __attribute__((__used__)); -+ -+ -+static inline __attribute__((always_inline)) struct thread_info *current_thread_info(void) -+{ -+ return (struct thread_info *) -+ (current_stack_pointer & ~((((1UL) << 12) << 0) - 1)); -+} -+# 247 "/d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h" -+static inline __attribute__((always_inline)) void set_restore_sigmask(void) -+{ -+ struct thread_info *ti = current_thread_info(); -+ ti->status |= 0x0008; -+ set_bit(2, (unsigned long *)&ti->flags); -+} -+ -+ -+ -+extern void arch_task_cache_init(void); -+extern void free_thread_info(struct thread_info *ti); -+extern int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src); -+# 48 "/d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h" 2 -+# 56 "/d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h" -+static inline __attribute__((always_inline)) void set_ti_thread_flag(struct thread_info *ti, int flag) -+{ -+ set_bit(flag, (unsigned long *)&ti->flags); -+} -+ -+static inline __attribute__((always_inline)) void clear_ti_thread_flag(struct thread_info *ti, int flag) -+{ -+ clear_bit(flag, (unsigned long *)&ti->flags); -+} -+ -+static inline __attribute__((always_inline)) int test_and_set_ti_thread_flag(struct thread_info *ti, int flag) -+{ -+ return test_and_set_bit(flag, (unsigned long *)&ti->flags); -+} -+ -+static inline __attribute__((always_inline)) int test_and_clear_ti_thread_flag(struct thread_info *ti, int flag) -+{ -+ return test_and_clear_bit(flag, (unsigned long *)&ti->flags); -+} -+ -+static inline __attribute__((always_inline)) int test_ti_thread_flag(struct thread_info *ti, int flag) -+{ -+ return (__builtin_constant_p((flag)) ? constant_test_bit((flag), ((unsigned long *)&ti->flags)) : variable_test_bit((flag), ((unsigned long *)&ti->flags))); -+} -+# 10 "/d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h" 1 -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/poison.h" 1 -+# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/prefetch.h" 1 -+# 53 "/d/kernels/linux-2.6.27.10-clickport/include/linux/prefetch.h" -+static inline __attribute__((always_inline)) void prefetch_range(void *addr, size_t len) -+{ -+ -+ char *cp; -+ char *end = (char*)(addr) + len; -+ -+ for (cp = (char*)(addr); cp < end; cp += (4*(1 << (7)))) -+ prefetch(cp); -+ -+} -+# 7 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h" 2 -+# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h" -+struct list_head { -+ struct list_head *next, *prev; -+}; -+# 32 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h" -+static inline __attribute__((always_inline)) void INIT_LIST_HEAD(struct list_head *list) -+{ -+ list->next = list; -+ list->prev = list; -+} -+# 55 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h" -+extern void __list_add(struct list_head *xxx_new, -+ struct list_head *prev, -+ struct list_head *next); -+# 68 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h" -+static inline __attribute__((always_inline)) void list_add(struct list_head *xxx_new, struct list_head *head) -+{ -+ __list_add(xxx_new, head, head->next); -+} -+# 82 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h" -+static inline __attribute__((always_inline)) void list_add_tail(struct list_head *xxx_new, struct list_head *head) -+{ -+ __list_add(xxx_new, head->prev, head); -+} -+# 94 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h" -+static inline __attribute__((always_inline)) void __list_del(struct list_head * prev, struct list_head * next) -+{ -+ next->prev = prev; -+ prev->next = next; -+} -+# 114 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h" -+extern void list_del(struct list_head *entry); -+# 124 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h" -+static inline __attribute__((always_inline)) void list_replace(struct list_head *old, -+ struct list_head *xxx_new) -+{ -+ xxx_new->next = old->next; -+ xxx_new->next->prev = xxx_new; -+ xxx_new->prev = old->prev; -+ xxx_new->prev->next = xxx_new; -+} -+ -+static inline __attribute__((always_inline)) void list_replace_init(struct list_head *old, -+ struct list_head *xxx_new) -+{ -+ list_replace(old, xxx_new); -+ INIT_LIST_HEAD(old); -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void list_del_init(struct list_head *entry) -+{ -+ __list_del(entry->prev, entry->next); -+ INIT_LIST_HEAD(entry); -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void list_move(struct list_head *list, struct list_head *head) -+{ -+ __list_del(list->prev, list->next); -+ list_add(list, head); -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void list_move_tail(struct list_head *list, -+ struct list_head *head) -+{ -+ __list_del(list->prev, list->next); -+ list_add_tail(list, head); -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int list_is_last(const struct list_head *list, -+ const struct list_head *head) -+{ -+ return list->next == head; -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int list_empty(const struct list_head *head) -+{ -+ return head->next == head; -+} -+# 206 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h" -+static inline __attribute__((always_inline)) int list_empty_careful(const struct list_head *head) -+{ -+ struct list_head *next = head->next; -+ return (next == head) && (next == head->prev); -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int list_is_singular(const struct list_head *head) -+{ -+ return !list_empty(head) && (head->next == head->prev); -+} -+ -+static inline __attribute__((always_inline)) void __list_cut_position(struct list_head *list, -+ struct list_head *head, struct list_head *entry) -+{ -+ struct list_head *new_first = entry->next; -+ list->next = head->next; -+ list->next->prev = list; -+ list->prev = entry; -+ entry->next = list; -+ head->next = new_first; -+ new_first->prev = head; -+} -+# 247 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h" -+static inline __attribute__((always_inline)) void list_cut_position(struct list_head *list, -+ struct list_head *head, struct list_head *entry) -+{ -+ if (list_empty(head)) -+ return; -+ if (list_is_singular(head) && -+ (head->next != entry && head != entry)) -+ return; -+ if (entry == head) -+ INIT_LIST_HEAD(list); -+ else -+ __list_cut_position(list, head, entry); -+} -+ -+static inline __attribute__((always_inline)) void __list_splice(const struct list_head *list, -+ struct list_head *prev, -+ struct list_head *next) -+{ -+ struct list_head *first = list->next; -+ struct list_head *last = list->prev; -+ -+ first->prev = prev; -+ prev->next = first; -+ -+ last->next = next; -+ next->prev = last; -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void list_splice(const struct list_head *list, -+ struct list_head *head) -+{ -+ if (!list_empty(list)) -+ __list_splice(list, head, head->next); -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void list_splice_tail(struct list_head *list, -+ struct list_head *head) -+{ -+ if (!list_empty(list)) -+ __list_splice(list, head->prev, head); -+} -+# 306 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h" -+static inline __attribute__((always_inline)) void list_splice_init(struct list_head *list, -+ struct list_head *head) -+{ -+ if (!list_empty(list)) { -+ __list_splice(list, head, head->next); -+ INIT_LIST_HEAD(list); -+ } -+} -+# 323 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h" -+static inline __attribute__((always_inline)) void list_splice_tail_init(struct list_head *list, -+ struct list_head *head) -+{ -+ if (!list_empty(list)) { -+ __list_splice(list, head->prev, head); -+ INIT_LIST_HEAD(list); -+ } -+} -+# 544 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h" -+struct hlist_head { -+ struct hlist_node *first; -+}; -+ -+struct hlist_node { -+ struct hlist_node *next, **pprev; -+}; -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void INIT_HLIST_NODE(struct hlist_node *h) -+{ -+ h->next = 0; -+ h->pprev = 0; -+} -+ -+static inline __attribute__((always_inline)) int hlist_unhashed(const struct hlist_node *h) -+{ -+ return !h->pprev; -+} -+ -+static inline __attribute__((always_inline)) int hlist_empty(const struct hlist_head *h) -+{ -+ return !h->first; -+} -+ -+static inline __attribute__((always_inline)) void __hlist_del(struct hlist_node *n) -+{ -+ struct hlist_node *next = n->next; -+ struct hlist_node **pprev = n->pprev; -+ *pprev = next; -+ if (next) -+ next->pprev = pprev; -+} -+ -+static inline __attribute__((always_inline)) void hlist_del(struct hlist_node *n) -+{ -+ __hlist_del(n); -+ n->next = (struct hlist_node*)(((void *) 0x00100100)); -+ n->pprev = (struct hlist_node**)(((void *) 0x00200200)); -+} -+ -+static inline __attribute__((always_inline)) void hlist_del_init(struct hlist_node *n) -+{ -+ if (!hlist_unhashed(n)) { -+ __hlist_del(n); -+ INIT_HLIST_NODE(n); -+ } -+} -+ -+static inline __attribute__((always_inline)) void hlist_add_head(struct hlist_node *n, struct hlist_head *h) -+{ -+ struct hlist_node *first = h->first; -+ n->next = first; -+ if (first) -+ first->pprev = &n->next; -+ h->first = n; -+ n->pprev = &h->first; -+} -+ -+ -+static inline __attribute__((always_inline)) void hlist_add_before(struct hlist_node *n, -+ struct hlist_node *next) -+{ -+ n->pprev = next->pprev; -+ n->next = next; -+ next->pprev = &n->next; -+ *(n->pprev) = n; -+} -+ -+static inline __attribute__((always_inline)) void hlist_add_after(struct hlist_node *n, -+ struct hlist_node *next) -+{ -+ next->next = n->next; -+ n->next = next; -+ next->pprev = &n->next; -+ -+ if(next->next) -+ next->next->pprev = &next->next; -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void hlist_move_list(struct hlist_head *old, -+ struct hlist_head *xxx_new) -+{ -+ xxx_new->first = old->first; -+ if (xxx_new->first) -+ xxx_new->first->pprev = &xxx_new->first; -+ old->first = 0; -+} -+# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h" 2 -+# 98 "/d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h" -+struct preempt_notifier; -+# 109 "/d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h" -+struct preempt_ops { -+ void (*sched_in)(struct preempt_notifier *notifier, int cpu); -+ void (*sched_out)(struct preempt_notifier *notifier, -+ struct task_struct *next); -+}; -+# 122 "/d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h" -+struct preempt_notifier { -+ struct hlist_node link; -+ struct preempt_ops *ops; -+}; -+ -+void preempt_notifier_register(struct preempt_notifier *notifier); -+void preempt_notifier_unregister(struct preempt_notifier *notifier); -+ -+static inline __attribute__((always_inline)) void preempt_notifier_init(struct preempt_notifier *notifier, -+ struct preempt_ops *ops) -+{ -+ INIT_HLIST_NODE(¬ifier->link); -+ notifier->ops = ops; -+} -+# 51 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h" 2 -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/stringify.h" 1 -+# 56 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/bottom_half.h" 1 -+ -+ -+ -+extern void local_bh_disable(void); -+extern void __local_bh_enable(void); -+extern void _local_bh_enable(void); -+extern void local_bh_enable(void); -+extern void local_bh_enable_ip(unsigned long ip); -+# 57 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h" 2 -+# 81 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h" 1 -+# 13 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/spinlock_types.h" 1 -+ -+ -+ -+ -+ -+ -+ -+typedef struct raw_spinlock { -+ unsigned int slock; -+} raw_spinlock_t; -+ -+ -+ -+ -+ -+ -+ -+typedef struct { -+ unsigned int lock; -+} raw_rwlock_t; -+# 14 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h" 2 -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h" 1 -+# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h" -+struct task_struct; -+struct lockdep_map; -+# 321 "/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h" -+static inline __attribute__((always_inline)) void lockdep_off(void) -+{ -+} -+ -+static inline __attribute__((always_inline)) void lockdep_on(void) -+{ -+} -+# 349 "/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h" -+struct lock_class_key { }; -+# 382 "/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h" -+static inline __attribute__((always_inline)) void early_init_irq_lock_class(void) -+{ -+} -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void early_boot_irqs_off(void) -+{ -+} -+static inline __attribute__((always_inline)) void early_boot_irqs_on(void) -+{ -+} -+static inline __attribute__((always_inline)) void print_irqtrace_events(struct task_struct *curr) -+{ -+} -+# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h" 2 -+ -+typedef struct { -+ raw_spinlock_t raw_lock; -+# 32 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h" -+} spinlock_t; -+ -+ -+ -+typedef struct { -+ raw_rwlock_t raw_lock; -+# 48 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h" -+} rwlock_t; -+# 82 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h" 2 -+ -+extern int __attribute__((section(".spinlock.text"))) generic__raw_read_trylock(raw_rwlock_t *lock); -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/spinlock.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h" 1 -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg.h" 1 -+# 7 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h" 2 -+# 18 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h" -+typedef struct { -+ int counter; -+} atomic_t; -+# 48 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h" -+static inline __attribute__((always_inline)) void atomic_add(int i, atomic_t *v) -+{ -+ asm volatile("lock ; " "addl %1,%0" -+ : "+m" (v->counter) -+ : "ir" (i)); -+} -+# 62 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h" -+static inline __attribute__((always_inline)) void atomic_sub(int i, atomic_t *v) -+{ -+ asm volatile("lock ; " "subl %1,%0" -+ : "+m" (v->counter) -+ : "ir" (i)); -+} -+# 78 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h" -+static inline __attribute__((always_inline)) int atomic_sub_and_test(int i, atomic_t *v) -+{ -+ unsigned char c; -+ -+ asm volatile("lock ; " "subl %2,%0; sete %1" -+ : "+m" (v->counter), "=qm" (c) -+ : "ir" (i) : "memory"); -+ return c; -+} -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void atomic_inc(atomic_t *v) -+{ -+ asm volatile("lock ; " "incl %0" -+ : "+m" (v->counter)); -+} -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void atomic_dec(atomic_t *v) -+{ -+ asm volatile("lock ; " "decl %0" -+ : "+m" (v->counter)); -+} -+# 120 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h" -+static inline __attribute__((always_inline)) int atomic_dec_and_test(atomic_t *v) -+{ -+ unsigned char c; -+ -+ asm volatile("lock ; " "decl %0; sete %1" -+ : "+m" (v->counter), "=qm" (c) -+ : : "memory"); -+ return c != 0; -+} -+# 138 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h" -+static inline __attribute__((always_inline)) int atomic_inc_and_test(atomic_t *v) -+{ -+ unsigned char c; -+ -+ asm volatile("lock ; " "incl %0; sete %1" -+ : "+m" (v->counter), "=qm" (c) -+ : : "memory"); -+ return c != 0; -+} -+# 157 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h" -+static inline __attribute__((always_inline)) int atomic_add_negative(int i, atomic_t *v) -+{ -+ unsigned char c; -+ -+ asm volatile("lock ; " "addl %2,%0; sets %1" -+ : "+m" (v->counter), "=qm" (c) -+ : "ir" (i) : "memory"); -+ return c; -+} -+# 174 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h" -+static inline __attribute__((always_inline)) int atomic_add_return(int i, atomic_t *v) -+{ -+ int __i; -+ -+ -+ -+ -+ -+ -+ __i = i; -+ asm volatile("lock ; " "xaddl %0, %1" -+ : "+r" (i), "+m" (v->counter) -+ : : "memory"); -+ return i + __i; -+# 197 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h" -+} -+# 206 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h" -+static inline __attribute__((always_inline)) int atomic_sub_return(int i, atomic_t *v) -+{ -+ return atomic_add_return(-i, v); -+} -+# 223 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h" -+static inline __attribute__((always_inline)) int atomic_add_unless(atomic_t *v, int a, int u) -+{ -+ int c, old; -+ c = ((v)->counter); -+ for (;;) { -+ if (__builtin_expect(!!(c == (u)), 0)) -+ break; -+ old = (((__typeof__(*(&(((v))->counter))))__cmpxchg((&(((v))->counter)), (unsigned long)((c)), (unsigned long)((c + (a))), sizeof(*(&(((v))->counter)))))); -+ if (__builtin_expect(!!(old == c), 1)) -+ break; -+ c = old; -+ } -+ return c != (u); -+} -+# 258 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/atomic.h" 1 -+# 141 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/atomic.h" -+typedef atomic_t atomic_long_t; -+ -+ -+static inline __attribute__((always_inline)) long atomic_long_read(atomic_long_t *l) -+{ -+ atomic_t *v = (atomic_t *)l; -+ -+ return (long)((v)->counter); -+} -+ -+static inline __attribute__((always_inline)) void atomic_long_set(atomic_long_t *l, long i) -+{ -+ atomic_t *v = (atomic_t *)l; -+ -+ (((v)->counter) = (i)); -+} -+ -+static inline __attribute__((always_inline)) void atomic_long_inc(atomic_long_t *l) -+{ -+ atomic_t *v = (atomic_t *)l; -+ -+ atomic_inc(v); -+} -+ -+static inline __attribute__((always_inline)) void atomic_long_dec(atomic_long_t *l) -+{ -+ atomic_t *v = (atomic_t *)l; -+ -+ atomic_dec(v); -+} -+ -+static inline __attribute__((always_inline)) void atomic_long_add(long i, atomic_long_t *l) -+{ -+ atomic_t *v = (atomic_t *)l; -+ -+ atomic_add(i, v); -+} -+ -+static inline __attribute__((always_inline)) void atomic_long_sub(long i, atomic_long_t *l) -+{ -+ atomic_t *v = (atomic_t *)l; -+ -+ atomic_sub(i, v); -+} -+ -+static inline __attribute__((always_inline)) int atomic_long_sub_and_test(long i, atomic_long_t *l) -+{ -+ atomic_t *v = (atomic_t *)l; -+ -+ return atomic_sub_and_test(i, v); -+} -+ -+static inline __attribute__((always_inline)) int atomic_long_dec_and_test(atomic_long_t *l) -+{ -+ atomic_t *v = (atomic_t *)l; -+ -+ return atomic_dec_and_test(v); -+} -+ -+static inline __attribute__((always_inline)) int atomic_long_inc_and_test(atomic_long_t *l) -+{ -+ atomic_t *v = (atomic_t *)l; -+ -+ return atomic_inc_and_test(v); -+} -+ -+static inline __attribute__((always_inline)) int atomic_long_add_negative(long i, atomic_long_t *l) -+{ -+ atomic_t *v = (atomic_t *)l; -+ -+ return atomic_add_negative(i, v); -+} -+ -+static inline __attribute__((always_inline)) long atomic_long_add_return(long i, atomic_long_t *l) -+{ -+ atomic_t *v = (atomic_t *)l; -+ -+ return (long)atomic_add_return(i, v); -+} -+ -+static inline __attribute__((always_inline)) long atomic_long_sub_return(long i, atomic_long_t *l) -+{ -+ atomic_t *v = (atomic_t *)l; -+ -+ return (long)atomic_sub_return(i, v); -+} -+ -+static inline __attribute__((always_inline)) long atomic_long_inc_return(atomic_long_t *l) -+{ -+ atomic_t *v = (atomic_t *)l; -+ -+ return (long)(atomic_add_return(1, v)); -+} -+ -+static inline __attribute__((always_inline)) long atomic_long_dec_return(atomic_long_t *l) -+{ -+ atomic_t *v = (atomic_t *)l; -+ -+ return (long)(atomic_sub_return(1, v)); -+} -+ -+static inline __attribute__((always_inline)) long atomic_long_add_unless(atomic_long_t *l, long a, long u) -+{ -+ atomic_t *v = (atomic_t *)l; -+ -+ return (long)atomic_add_unless(v, a, u); -+} -+# 259 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h" 2 -+# 3 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 2 -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm/spinlock.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/rwlock.h" 1 -+# 6 "/d/kernels/linux-2.6.27.10-clickport/include/asm/spinlock.h" 2 -+# 57 "/d/kernels/linux-2.6.27.10-clickport/include/asm/spinlock.h" -+static inline __attribute__((always_inline)) int __ticket_spin_is_locked(raw_spinlock_t *lock) -+{ -+ int tmp = (*(volatile typeof(lock->slock) *)&(lock->slock)); -+ -+ return (((tmp >> 8) & 0xff) != (tmp & 0xff)); -+} -+ -+static inline __attribute__((always_inline)) int __ticket_spin_is_contended(raw_spinlock_t *lock) -+{ -+ int tmp = (*(volatile typeof(lock->slock) *)&(lock->slock)); -+ -+ return (((tmp >> 8) - tmp) & 0xff) > 1; -+} -+ -+static inline __attribute__((always_inline)) __attribute__((always_inline)) void __ticket_spin_lock(raw_spinlock_t *lock) -+{ -+ short inc = 0x0100; -+ -+ asm volatile ( -+ "lock ; " "xaddw %w0, %1\n" -+ "1:\t" -+ "cmpb %h0, %b0\n\t" -+ "je 2f\n\t" -+ "rep ; nop\n\t" -+ "movb %1, %b0\n\t" -+ -+ "jmp 1b\n" -+ "2:" -+ : "+Q" (inc), "+m" (lock->slock) -+ : -+ : "memory", "cc"); -+} -+ -+static inline __attribute__((always_inline)) __attribute__((always_inline)) int __ticket_spin_trylock(raw_spinlock_t *lock) -+{ -+ int tmp; -+ short xxx_new; -+ -+ asm volatile("movw %2,%w0\n\t" -+ "cmpb %h0,%b0\n\t" -+ "jne 1f\n\t" -+ "movw %w0,%w1\n\t" -+ "incb %h1\n\t" -+ "lock ; cmpxchgw %w1,%2\n\t" -+ "1:" -+ "sete %b1\n\t" -+ "movzbl %b1,%0\n\t" -+ : "=&a" (tmp), "=Q" (xxx_new), "+m" (lock->slock) -+ : -+ : "memory", "cc"); -+ -+ return tmp; -+} -+ -+static inline __attribute__((always_inline)) __attribute__((always_inline)) void __ticket_spin_unlock(raw_spinlock_t *lock) -+{ -+ asm volatile("lock ; " "incb %0" -+ : "+m" (lock->slock) -+ : -+ : "memory", "cc"); -+} -+# 198 "/d/kernels/linux-2.6.27.10-clickport/include/asm/spinlock.h" -+struct __byte_spinlock { -+ s8 lock; -+ s8 spinners; -+}; -+ -+static inline __attribute__((always_inline)) int __byte_spin_is_locked(raw_spinlock_t *lock) -+{ -+ struct __byte_spinlock *bl = (struct __byte_spinlock *)lock; -+ return bl->lock != 0; -+} -+ -+static inline __attribute__((always_inline)) int __byte_spin_is_contended(raw_spinlock_t *lock) -+{ -+ struct __byte_spinlock *bl = (struct __byte_spinlock *)lock; -+ return bl->spinners != 0; -+} -+ -+static inline __attribute__((always_inline)) void __byte_spin_lock(raw_spinlock_t *lock) -+{ -+ struct __byte_spinlock *bl = (struct __byte_spinlock *)lock; -+ s8 val = 1; -+ -+ asm("1: xchgb %1, %0\n" -+ " test %1,%1\n" -+ " jz 3f\n" -+ " " "lock ; " "incb %2\n" -+ "2: rep;nop\n" -+ " cmpb $1, %0\n" -+ " je 2b\n" -+ " " "lock ; " "decb %2\n" -+ " jmp 1b\n" -+ "3:" -+ : "+m" (bl->lock), "+q" (val), "+m" (bl->spinners): : "memory"); -+} -+ -+static inline __attribute__((always_inline)) int __byte_spin_trylock(raw_spinlock_t *lock) -+{ -+ struct __byte_spinlock *bl = (struct __byte_spinlock *)lock; -+ u8 old = 1; -+ -+ asm("xchgb %1,%0" -+ : "+m" (bl->lock), "+q" (old) : : "memory"); -+ -+ return old == 0; -+} -+ -+static inline __attribute__((always_inline)) void __byte_spin_unlock(raw_spinlock_t *lock) -+{ -+ struct __byte_spinlock *bl = (struct __byte_spinlock *)lock; -+ __asm__ __volatile__("": : :"memory"); -+ bl->lock = 0; -+} -+# 277 "/d/kernels/linux-2.6.27.10-clickport/include/asm/spinlock.h" -+static inline __attribute__((always_inline)) void __raw_spin_unlock_wait(raw_spinlock_t *lock) -+{ -+ while (__raw_spin_is_locked(lock)) -+ cpu_relax(); -+} -+# 301 "/d/kernels/linux-2.6.27.10-clickport/include/asm/spinlock.h" -+static inline __attribute__((always_inline)) int __raw_read_can_lock(raw_rwlock_t *lock) -+{ -+ return (int)(lock)->lock > 0; -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int __raw_write_can_lock(raw_rwlock_t *lock) -+{ -+ return (lock)->lock == 0x01000000; -+} -+ -+static inline __attribute__((always_inline)) void __raw_read_lock(raw_rwlock_t *rw) -+{ -+ asm volatile("lock ; " " subl $1,(%0)\n\t" -+ "jns 1f\n" -+ "call __read_lock_failed\n\t" -+ "1:\n" -+ ::"a" (rw) : "memory"); -+} -+ -+static inline __attribute__((always_inline)) void __raw_write_lock(raw_rwlock_t *rw) -+{ -+ asm volatile("lock ; " " subl %1,(%0)\n\t" -+ "jz 1f\n" -+ "call __write_lock_failed\n\t" -+ "1:\n" -+ ::"a" (rw), "i" (0x01000000) : "memory"); -+} -+ -+static inline __attribute__((always_inline)) int __raw_read_trylock(raw_rwlock_t *lock) -+{ -+ atomic_t *count = (atomic_t *)lock; -+ -+ atomic_dec(count); -+ if (((count)->counter) >= 0) -+ return 1; -+ atomic_inc(count); -+ return 0; -+} -+ -+static inline __attribute__((always_inline)) int __raw_write_trylock(raw_rwlock_t *lock) -+{ -+ atomic_t *count = (atomic_t *)lock; -+ -+ if (atomic_sub_and_test(0x01000000, count)) -+ return 1; -+ atomic_add(0x01000000, count); -+ return 0; -+} -+ -+static inline __attribute__((always_inline)) void __raw_read_unlock(raw_rwlock_t *rw) -+{ -+ asm volatile("lock ; " "incl %0" :"+m" (rw->lock) : : "memory"); -+} -+ -+static inline __attribute__((always_inline)) void __raw_write_unlock(raw_rwlock_t *rw) -+{ -+ asm volatile("lock ; " "addl %1, %0" -+ : "+m" (rw->lock) : "i" (0x01000000) : "memory"); -+} -+# 90 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h" 2 -+# 141 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_api_smp.h" 1 -+# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_api_smp.h" -+int in_lock_functions(unsigned long addr); -+ -+ -+ -+void __attribute__((section(".spinlock.text"))) _spin_lock(spinlock_t *lock) ; -+void __attribute__((section(".spinlock.text"))) _spin_lock_nested(spinlock_t *lock, int subclass) -+ ; -+void __attribute__((section(".spinlock.text"))) _spin_lock_nest_lock(spinlock_t *lock, struct lockdep_map *map) -+ ; -+void __attribute__((section(".spinlock.text"))) _read_lock(rwlock_t *lock) ; -+void __attribute__((section(".spinlock.text"))) _write_lock(rwlock_t *lock) ; -+void __attribute__((section(".spinlock.text"))) _spin_lock_bh(spinlock_t *lock) ; -+void __attribute__((section(".spinlock.text"))) _read_lock_bh(rwlock_t *lock) ; -+void __attribute__((section(".spinlock.text"))) _write_lock_bh(rwlock_t *lock) ; -+void __attribute__((section(".spinlock.text"))) _spin_lock_irq(spinlock_t *lock) ; -+void __attribute__((section(".spinlock.text"))) _read_lock_irq(rwlock_t *lock) ; -+void __attribute__((section(".spinlock.text"))) _write_lock_irq(rwlock_t *lock) ; -+unsigned long __attribute__((section(".spinlock.text"))) _spin_lock_irqsave(spinlock_t *lock) -+ ; -+unsigned long __attribute__((section(".spinlock.text"))) _spin_lock_irqsave_nested(spinlock_t *lock, int subclass) -+ ; -+unsigned long __attribute__((section(".spinlock.text"))) _read_lock_irqsave(rwlock_t *lock) -+ ; -+unsigned long __attribute__((section(".spinlock.text"))) _write_lock_irqsave(rwlock_t *lock) -+ ; -+int __attribute__((section(".spinlock.text"))) _spin_trylock(spinlock_t *lock); -+int __attribute__((section(".spinlock.text"))) _read_trylock(rwlock_t *lock); -+int __attribute__((section(".spinlock.text"))) _write_trylock(rwlock_t *lock); -+int __attribute__((section(".spinlock.text"))) _spin_trylock_bh(spinlock_t *lock); -+void __attribute__((section(".spinlock.text"))) _spin_unlock(spinlock_t *lock) ; -+void __attribute__((section(".spinlock.text"))) _read_unlock(rwlock_t *lock) ; -+void __attribute__((section(".spinlock.text"))) _write_unlock(rwlock_t *lock) ; -+void __attribute__((section(".spinlock.text"))) _spin_unlock_bh(spinlock_t *lock) ; -+void __attribute__((section(".spinlock.text"))) _read_unlock_bh(rwlock_t *lock) ; -+void __attribute__((section(".spinlock.text"))) _write_unlock_bh(rwlock_t *lock) ; -+void __attribute__((section(".spinlock.text"))) _spin_unlock_irq(spinlock_t *lock) ; -+void __attribute__((section(".spinlock.text"))) _read_unlock_irq(rwlock_t *lock) ; -+void __attribute__((section(".spinlock.text"))) _write_unlock_irq(rwlock_t *lock) ; -+void __attribute__((section(".spinlock.text"))) _spin_unlock_irqrestore(spinlock_t *lock, unsigned long flags) -+ ; -+void __attribute__((section(".spinlock.text"))) _read_unlock_irqrestore(rwlock_t *lock, unsigned long flags) -+ ; -+void __attribute__((section(".spinlock.text"))) _write_unlock_irqrestore(rwlock_t *lock, unsigned long flags) -+ ; -+# 142 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h" 2 -+# 349 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1 -+# 350 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h" 2 -+# 358 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h" -+extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock); -+# 30 "/d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h" 2 -+ -+ -+typedef struct { -+ unsigned sequence; -+ spinlock_t lock; -+} seqlock_t; -+# 60 "/d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h" -+static inline __attribute__((always_inline)) void write_seqlock(seqlock_t *sl) -+{ -+ _spin_lock(&sl->lock); -+ ++sl->sequence; -+ __asm__ __volatile__("": : :"memory"); -+} -+ -+static inline __attribute__((always_inline)) void write_sequnlock(seqlock_t *sl) -+{ -+ __asm__ __volatile__("": : :"memory"); -+ sl->sequence++; -+ do {__raw_spin_unlock(&(&sl->lock)->raw_lock); (void)0; } while (0); -+} -+ -+static inline __attribute__((always_inline)) int write_tryseqlock(seqlock_t *sl) -+{ -+ int ret = (_spin_trylock(&sl->lock)); -+ -+ if (ret) { -+ ++sl->sequence; -+ __asm__ __volatile__("": : :"memory"); -+ } -+ return ret; -+} -+ -+ -+static inline __attribute__((always_inline)) __attribute__((always_inline)) unsigned read_seqbegin(const seqlock_t *sl) -+{ -+ unsigned ret; -+ -+repeat: -+ ret = sl->sequence; -+ asm volatile ("661:\n\t" "lock; addl $0,0(%%esp)" "\n662:\n" ".section .altinstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661b\n" " " ".long" " " "663f\n" " .byte %c0\n" " .byte 662b-661b\n" " .byte 664f-663f\n" ".previous\n" ".section .altinstr_replacement,\"ax\"\n" "663:\n\t" "lfence" "\n664:\n" ".previous" :: "i" ((0*32+26)) : "memory"); -+ if (__builtin_expect(!!(ret & 1), 0)) { -+ cpu_relax(); -+ goto repeat; -+ } -+ -+ return ret; -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) __attribute__((always_inline)) int read_seqretry(const seqlock_t *sl, unsigned start) -+{ -+ asm volatile ("661:\n\t" "lock; addl $0,0(%%esp)" "\n662:\n" ".section .altinstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661b\n" " " ".long" " " "663f\n" " .byte %c0\n" " .byte 662b-661b\n" " .byte 664f-663f\n" ".previous\n" ".section .altinstr_replacement,\"ax\"\n" "663:\n\t" "lfence" "\n664:\n" ".previous" :: "i" ((0*32+26)) : "memory"); -+ -+ return (sl->sequence != start); -+} -+# 121 "/d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h" -+typedef struct seqcount { -+ unsigned sequence; -+} seqcount_t; -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) unsigned read_seqcount_begin(const seqcount_t *s) -+{ -+ unsigned ret; -+ -+repeat: -+ ret = s->sequence; -+ asm volatile ("661:\n\t" "lock; addl $0,0(%%esp)" "\n662:\n" ".section .altinstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661b\n" " " ".long" " " "663f\n" " .byte %c0\n" " .byte 662b-661b\n" " .byte 664f-663f\n" ".previous\n" ".section .altinstr_replacement,\"ax\"\n" "663:\n\t" "lfence" "\n664:\n" ".previous" :: "i" ((0*32+26)) : "memory"); -+ if (__builtin_expect(!!(ret & 1), 0)) { -+ cpu_relax(); -+ goto repeat; -+ } -+ return ret; -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int read_seqcount_retry(const seqcount_t *s, unsigned start) -+{ -+ asm volatile ("661:\n\t" "lock; addl $0,0(%%esp)" "\n662:\n" ".section .altinstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661b\n" " " ".long" " " "663f\n" " .byte %c0\n" " .byte 662b-661b\n" " .byte 664f-663f\n" ".previous\n" ".section .altinstr_replacement,\"ax\"\n" "663:\n\t" "lfence" "\n664:\n" ".previous" :: "i" ((0*32+26)) : "memory"); -+ -+ return s->sequence != start; -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void write_seqcount_begin(seqcount_t *s) -+{ -+ s->sequence++; -+ __asm__ __volatile__("": : :"memory"); -+} -+ -+static inline __attribute__((always_inline)) void write_seqcount_end(seqcount_t *s) -+{ -+ __asm__ __volatile__("": : :"memory"); -+ s->sequence++; -+} -+# 9 "/d/kernels/linux-2.6.27.10-clickport/include/linux/time.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/math64.h" 1 -+# 49 "/d/kernels/linux-2.6.27.10-clickport/include/linux/math64.h" -+extern s64 div_s64_rem(s64 dividend, s32 divisor, s32 *remainder); -+ -+ -+ -+extern u64 div64_u64(u64 dividend, u64 divisor); -+# 66 "/d/kernels/linux-2.6.27.10-clickport/include/linux/math64.h" -+static inline __attribute__((always_inline)) u64 div_u64(u64 dividend, u32 divisor) -+{ -+ u32 remainder; -+ return div_u64_rem(dividend, divisor, &remainder); -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) s64 div_s64(s64 dividend, s32 divisor) -+{ -+ s32 remainder; -+ return div_s64_rem(dividend, divisor, &remainder); -+} -+ -+ -+u32 iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder); -+ -+static inline __attribute__((always_inline)) __attribute__((always_inline)) u32 -+__iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder) -+{ -+ u32 ret = 0; -+ -+ while (dividend >= divisor) { -+ -+ -+ asm("" : "+rm"(dividend)); -+ -+ dividend -= divisor; -+ ret++; -+ } -+ -+ *remainder = dividend; -+ -+ return ret; -+} -+# 10 "/d/kernels/linux-2.6.27.10-clickport/include/linux/time.h" 2 -+ -+ -+ -+ -+struct timespec { -+ time_t tv_sec; -+ long tv_nsec; -+}; -+ -+ -+struct timeval { -+ time_t tv_sec; -+ suseconds_t tv_usec; -+}; -+ -+struct timezone { -+ int tz_minuteswest; -+ int tz_dsttime; -+}; -+# 41 "/d/kernels/linux-2.6.27.10-clickport/include/linux/time.h" -+static inline __attribute__((always_inline)) int timespec_equal(const struct timespec *a, -+ const struct timespec *b) -+{ -+ return (a->tv_sec == b->tv_sec) && (a->tv_nsec == b->tv_nsec); -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int timespec_compare(const struct timespec *lhs, const struct timespec *rhs) -+{ -+ if (lhs->tv_sec < rhs->tv_sec) -+ return -1; -+ if (lhs->tv_sec > rhs->tv_sec) -+ return 1; -+ return lhs->tv_nsec - rhs->tv_nsec; -+} -+ -+static inline __attribute__((always_inline)) int timeval_compare(const struct timeval *lhs, const struct timeval *rhs) -+{ -+ if (lhs->tv_sec < rhs->tv_sec) -+ return -1; -+ if (lhs->tv_sec > rhs->tv_sec) -+ return 1; -+ return lhs->tv_usec - rhs->tv_usec; -+} -+ -+extern unsigned long mktime(const unsigned int year, const unsigned int mon, -+ const unsigned int day, const unsigned int hour, -+ const unsigned int min, const unsigned int sec); -+ -+extern void set_normalized_timespec(struct timespec *ts, time_t sec, long nsec); -+ -+ -+ -+ -+static inline __attribute__((always_inline)) struct timespec timespec_sub(struct timespec lhs, -+ struct timespec rhs) -+{ -+ struct timespec ts_delta; -+ set_normalized_timespec(&ts_delta, lhs.tv_sec - rhs.tv_sec, -+ lhs.tv_nsec - rhs.tv_nsec); -+ return ts_delta; -+} -+ -+ -+ -+ -+ -+ -+ -+extern struct timespec xtime; -+extern struct timespec wall_to_monotonic; -+extern seqlock_t xtime_lock; -+ -+extern unsigned long read_persistent_clock(void); -+extern int update_persistent_clock(struct timespec now); -+extern int no_sync_cmos_clock __attribute__((__section__(".data.read_mostly"))); -+void timekeeping_init(void); -+ -+unsigned long get_seconds(void); -+struct timespec current_kernel_time(void); -+ -+ -+ -+ -+extern void do_gettimeofday(struct timeval *tv); -+extern int do_settimeofday(struct timespec *tv); -+extern int do_sys_settimeofday(struct timespec *tv, struct timezone *tz); -+ -+extern long do_utimes(int dfd, char *filename, struct timespec *times, int flags); -+struct itimerval; -+extern int do_setitimer(int which, struct itimerval *value, -+ struct itimerval *ovalue); -+extern unsigned int alarm_setitimer(unsigned int seconds); -+extern int do_getitimer(int which, struct itimerval *value); -+extern void getnstimeofday(struct timespec *tv); -+extern void getboottime(struct timespec *ts); -+extern void monotonic_to_bootbased(struct timespec *ts); -+ -+extern struct timespec timespec_trunc(struct timespec t, unsigned gran); -+extern int timekeeping_valid_for_hres(void); -+extern void update_wall_time(void); -+extern void update_xtime_cache(u64 nsec); -+# 135 "/d/kernels/linux-2.6.27.10-clickport/include/linux/time.h" -+static inline __attribute__((always_inline)) s64 timespec_to_ns(const struct timespec *ts) -+{ -+ return ((s64) ts->tv_sec * 1000000000L) + ts->tv_nsec; -+} -+# 147 "/d/kernels/linux-2.6.27.10-clickport/include/linux/time.h" -+static inline __attribute__((always_inline)) s64 timeval_to_ns(const struct timeval *tv) -+{ -+ return ((s64) tv->tv_sec * 1000000000L) + -+ tv->tv_usec * 1000L; -+} -+ -+ -+ -+ -+ -+ -+ -+extern struct timespec ns_to_timespec(const s64 nsec); -+ -+ -+ -+ -+ -+ -+ -+extern struct timeval ns_to_timeval(const s64 nsec); -+# 177 "/d/kernels/linux-2.6.27.10-clickport/include/linux/time.h" -+static inline __attribute__((always_inline)) __attribute__((always_inline)) void timespec_add_ns(struct timespec *a, u64 ns) -+{ -+ a->tv_sec += __iter_div_u64_rem(a->tv_nsec + ns, 1000000000L, &ns); -+ a->tv_nsec = ns; -+} -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vs_time.h" 1 -+# 184 "/d/kernels/linux-2.6.27.10-clickport/include/linux/time.h" 2 -+# 203 "/d/kernels/linux-2.6.27.10-clickport/include/linux/time.h" -+struct itimerspec { -+ struct timespec it_interval; -+ struct timespec it_value; -+}; -+ -+struct itimerval { -+ struct timeval it_interval; -+ struct timeval it_value; -+}; -+# 20 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" 2 -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1 -+# 23 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" 2 -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h" 1 -+# 21 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/socket.h" 1 -+# 11 "/d/kernels/linux-2.6.27.10-clickport/include/linux/socket.h" -+struct __kernel_sockaddr_storage { -+ unsigned short ss_family; -+ -+ char __data[128 - sizeof(unsigned short)]; -+ -+ -+} __attribute__ ((aligned((__alignof__ (struct sockaddr *))))); -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/socket.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/sockios.h" 1 -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm/socket.h" 2 -+# 22 "/d/kernels/linux-2.6.27.10-clickport/include/linux/socket.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sockios.h" 1 -+# 23 "/d/kernels/linux-2.6.27.10-clickport/include/linux/socket.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/uio.h" 1 -+# 16 "/d/kernels/linux-2.6.27.10-clickport/include/linux/uio.h" -+struct iovec -+{ -+ void *iov_base; -+ __kernel_size_t iov_len; -+}; -+ -+ -+ -+struct kvec { -+ void *iov_base; -+ size_t iov_len; -+}; -+# 45 "/d/kernels/linux-2.6.27.10-clickport/include/linux/uio.h" -+static inline __attribute__((always_inline)) size_t iov_length(const struct iovec *iov, unsigned long nr_segs) -+{ -+ unsigned long seg; -+ size_t ret = 0; -+ -+ for (seg = 0; seg < nr_segs; seg++) -+ ret += iov[seg].iov_len; -+ return ret; -+} -+ -+unsigned long iov_shorten(struct iovec *iov, unsigned long nr_segs, size_t to); -+# 24 "/d/kernels/linux-2.6.27.10-clickport/include/linux/socket.h" 2 -+ -+ -+ -+ -+struct seq_file; -+extern void socket_seq_show(struct seq_file *seq); -+ -+ -+typedef unsigned short sa_family_t; -+ -+ -+ -+ -+ -+struct sockaddr { -+ sa_family_t sa_family; -+ char sa_data[14]; -+}; -+ -+struct linger { -+ int l_onoff; -+ int l_linger; -+}; -+# 56 "/d/kernels/linux-2.6.27.10-clickport/include/linux/socket.h" -+struct msghdr { -+ void * msg_name; -+ int msg_namelen; -+ struct iovec * msg_iov; -+ __kernel_size_t msg_iovlen; -+ void * msg_control; -+ __kernel_size_t msg_controllen; -+ unsigned msg_flags; -+}; -+ -+ -+ -+ -+ -+ -+ -+struct cmsghdr { -+ __kernel_size_t cmsg_len; -+ int cmsg_level; -+ int cmsg_type; -+}; -+# 129 "/d/kernels/linux-2.6.27.10-clickport/include/linux/socket.h" -+static inline __attribute__((always_inline)) struct cmsghdr * __cmsg_nxthdr(void *__ctl, __kernel_size_t __size, -+ struct cmsghdr *__cmsg) -+{ -+ struct cmsghdr * __ptr; -+ -+ __ptr = (struct cmsghdr*)(((unsigned char *) __cmsg) + ( ((__cmsg->cmsg_len)+sizeof(long)-1) & ~(sizeof(long)-1) )); -+ if ((unsigned long)((char*)(__ptr+1) - (char *) __ctl) > __size) -+ return (struct cmsghdr *)0; -+ -+ return __ptr; -+} -+ -+static inline __attribute__((always_inline)) struct cmsghdr * cmsg_nxthdr (struct msghdr *__msg, struct cmsghdr *__cmsg) -+{ -+ return __cmsg_nxthdr(__msg->msg_control, __msg->msg_controllen, __cmsg); -+} -+ -+ -+ -+ -+ -+ -+ -+struct ucred { -+ __u32 pid; -+ __u32 uid; -+ __u32 gid; -+}; -+# 303 "/d/kernels/linux-2.6.27.10-clickport/include/linux/socket.h" -+extern int memcpy_fromiovec(unsigned char *kdata, struct iovec *iov, int len); -+extern int memcpy_fromiovecend(unsigned char *kdata, struct iovec *iov, -+ int offset, int len); -+extern int csum_partial_copy_fromiovecend(unsigned char *kdata, -+ struct iovec *iov, -+ int offset, -+ unsigned int len, __wsum *csump); -+ -+extern int verify_iovec(struct msghdr *m, struct iovec *iov, struct sockaddr *address, int mode); -+extern int memcpy_toiovec(struct iovec *v, unsigned char *kdata, int len); -+extern int move_addr_to_user(struct sockaddr *kaddr, int klen, void *uaddr, int *ulen); -+extern int move_addr_to_kernel(void *uaddr, int ulen, struct sockaddr *kaddr); -+extern int put_cmsg(struct msghdr*, int level, int type, int len, void *data); -+# 22 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h" 2 -+# 45 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h" -+typedef enum { -+ SS_FREE = 0, -+ SS_UNCONNECTED, -+ SS_CONNECTING, -+ SS_CONNECTED, -+ SS_DISCONNECTING -+} socket_state; -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/random.h" 1 -+# 10 "/d/kernels/linux-2.6.27.10-clickport/include/linux/random.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ioctl.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ioctl.h" 1 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/ioctl.h" 1 -+# 73 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/ioctl.h" -+extern unsigned int __invalid_size_argument_for_IOC; -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ioctl.h" 2 -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ioctl.h" 2 -+# 11 "/d/kernels/linux-2.6.27.10-clickport/include/linux/random.h" 2 -+# 35 "/d/kernels/linux-2.6.27.10-clickport/include/linux/random.h" -+struct rand_pool_info { -+ int entropy_count; -+ int buf_size; -+ __u32 buf[0]; -+}; -+ -+ -+ -+ -+ -+extern void rand_initialize_irq(int irq); -+ -+extern void add_input_randomness(unsigned int type, unsigned int code, -+ unsigned int value); -+extern void add_interrupt_randomness(int irq); -+ -+extern void get_random_bytes(void *buf, int nbytes); -+void generate_random_uuid(unsigned char uuid_out[16]); -+ -+extern __u32 secure_ip_id(__be32 daddr); -+extern u32 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport); -+extern u32 secure_ipv6_port_ephemeral(const __be32 *saddr, const __be32 *daddr, -+ __be16 dport); -+extern __u32 secure_tcp_sequence_number(__be32 saddr, __be32 daddr, -+ __be16 sport, __be16 dport); -+extern __u32 secure_tcpv6_sequence_number(__be32 *saddr, __be32 *daddr, -+ __be16 sport, __be16 dport); -+extern u64 secure_dccp_sequence_number(__be32 saddr, __be32 daddr, -+ __be16 sport, __be16 dport); -+ -+ -+ -+ -+ -+unsigned int get_random_int(void); -+unsigned long randomize_range(unsigned long start, unsigned long end, unsigned long len); -+ -+u32 random32(void); -+void srandom32(u32 seed); -+# 58 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h" 1 -+# 28 "/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h" -+typedef struct __wait_queue wait_queue_t; -+typedef int (*wait_queue_func_t)(wait_queue_t *wait, unsigned mode, int sync, void *key); -+int default_wake_function(wait_queue_t *wait, unsigned mode, int sync, void *key); -+ -+struct __wait_queue { -+ unsigned int flags; -+ -+ void *xxx_private; -+ wait_queue_func_t func; -+ struct list_head task_list; -+}; -+ -+struct wait_bit_key { -+ void *flags; -+ int bit_nr; -+}; -+ -+struct wait_bit_queue { -+ struct wait_bit_key key; -+ wait_queue_t wait; -+}; -+ -+struct __wait_queue_head { -+ spinlock_t lock; -+ struct list_head task_list; -+}; -+typedef struct __wait_queue_head wait_queue_head_t; -+ -+struct task_struct; -+# 80 "/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h" -+extern void init_waitqueue_head(wait_queue_head_t *q); -+# 91 "/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h" -+static inline __attribute__((always_inline)) void init_waitqueue_entry(wait_queue_t *q, struct task_struct *p) -+{ -+ q->flags = 0; -+ q->xxx_private = p; -+ q->func = default_wake_function; -+} -+ -+static inline __attribute__((always_inline)) void init_waitqueue_func_entry(wait_queue_t *q, -+ wait_queue_func_t func) -+{ -+ q->flags = 0; -+ q->xxx_private = 0; -+ q->func = func; -+} -+ -+static inline __attribute__((always_inline)) int waitqueue_active(wait_queue_head_t *q) -+{ -+ return !list_empty(&q->task_list); -+} -+# 120 "/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h" -+extern void add_wait_queue(wait_queue_head_t *q, wait_queue_t *wait); -+extern void add_wait_queue_exclusive(wait_queue_head_t *q, wait_queue_t *wait); -+extern void remove_wait_queue(wait_queue_head_t *q, wait_queue_t *wait); -+ -+static inline __attribute__((always_inline)) void __add_wait_queue(wait_queue_head_t *head, wait_queue_t *xxx_new) -+{ -+ list_add(&xxx_new->task_list, &head->task_list); -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void __add_wait_queue_tail(wait_queue_head_t *head, -+ wait_queue_t *xxx_new) -+{ -+ list_add_tail(&xxx_new->task_list, &head->task_list); -+} -+ -+static inline __attribute__((always_inline)) void __remove_wait_queue(wait_queue_head_t *head, -+ wait_queue_t *old) -+{ -+ list_del(&old->task_list); -+} -+ -+void __wake_up(wait_queue_head_t *q, unsigned int mode, int nr, void *key); -+extern void __wake_up_locked(wait_queue_head_t *q, unsigned int mode); -+extern void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr); -+void __wake_up_bit(wait_queue_head_t *, void *, int); -+int __wait_on_bit(wait_queue_head_t *, struct wait_bit_queue *, int (*)(void *), unsigned); -+int __wait_on_bit_lock(wait_queue_head_t *, struct wait_bit_queue *, int (*)(void *), unsigned); -+void wake_up_bit(void *, int); -+int out_of_line_wait_on_bit(void *, int, int (*)(void *), unsigned); -+int out_of_line_wait_on_bit_lock(void *, int, int (*)(void *), unsigned); -+wait_queue_head_t *bit_waitqueue(void *, int); -+# 409 "/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h" -+static inline __attribute__((always_inline)) void add_wait_queue_exclusive_locked(wait_queue_head_t *q, -+ wait_queue_t * wait) -+{ -+ wait->flags |= 0x01; -+ __add_wait_queue_tail(q, wait); -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void remove_wait_queue_locked(wait_queue_head_t *q, -+ wait_queue_t * wait) -+{ -+ __remove_wait_queue(q, wait); -+} -+ -+ -+ -+ -+ -+ -+extern void sleep_on(wait_queue_head_t *q); -+extern long sleep_on_timeout(wait_queue_head_t *q, -+ signed long timeout); -+extern void interruptible_sleep_on(wait_queue_head_t *q); -+extern long interruptible_sleep_on_timeout(wait_queue_head_t *q, -+ signed long timeout); -+ -+ -+ -+ -+void prepare_to_wait(wait_queue_head_t *q, wait_queue_t *wait, int state); -+void prepare_to_wait_exclusive(wait_queue_head_t *q, wait_queue_t *wait, int state); -+void finish_wait(wait_queue_head_t *q, wait_queue_t *wait); -+int autoremove_wake_function(wait_queue_t *wait, unsigned mode, int sync, void *key); -+int wake_bit_function(wait_queue_t *wait, unsigned mode, int sync, void *key); -+# 485 "/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h" -+static inline __attribute__((always_inline)) int wait_on_bit(void *word, int bit, -+ int (*action)(void *), unsigned mode) -+{ -+ if (!(__builtin_constant_p((bit)) ? constant_test_bit((bit), ((volatile unsigned long *) word)) : variable_test_bit((bit), ((volatile unsigned long *) word)))) -+ return 0; -+ return out_of_line_wait_on_bit(word, bit, action, mode); -+} -+# 509 "/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h" -+static inline __attribute__((always_inline)) int wait_on_bit_lock(void *word, int bit, -+ int (*action)(void *), unsigned mode) -+{ -+ if (!test_and_set_bit(bit, (volatile unsigned long *) word)) -+ return 0; -+ return out_of_line_wait_on_bit_lock(word, bit, action, mode); -+} -+# 59 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/fcntl.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fcntl.h" 1 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/fcntl.h" 1 -+# 117 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/fcntl.h" -+struct flock { -+ short l_type; -+ short l_whence; -+ off_t l_start; -+ off_t l_len; -+ pid_t l_pid; -+ -+}; -+# 140 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/fcntl.h" -+struct flock64 { -+ short l_type; -+ short l_whence; -+ loff_t l_start; -+ loff_t l_len; -+ pid_t l_pid; -+ -+}; -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fcntl.h" 2 -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/fcntl.h" 2 -+# 60 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h" 2 -+ -+struct poll_table_struct; -+struct pipe_inode_info; -+struct inode; -+struct net; -+# 89 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h" -+enum sock_type { -+ SOCK_STREAM = 1, -+ SOCK_DGRAM = 2, -+ SOCK_RAW = 3, -+ SOCK_RDM = 4, -+ SOCK_SEQPACKET = 5, -+ SOCK_DCCP = 6, -+ SOCK_PACKET = 10, -+}; -+# 112 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h" -+enum sock_shutdown_cmd { -+ SHUT_RD = 0, -+ SHUT_WR = 1, -+ SHUT_RDWR = 2, -+}; -+# 129 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h" -+struct socket { -+ socket_state state; -+ short type; -+ unsigned long flags; -+ const struct proto_ops *ops; -+ struct fasync_struct *fasync_list; -+ struct file *file; -+ struct sock *sk; -+ wait_queue_head_t wait; -+}; -+ -+struct vm_area_struct; -+struct page; -+struct kiocb; -+struct sockaddr; -+struct msghdr; -+struct module; -+ -+struct proto_ops { -+ int family; -+ struct module *owner; -+ int (*release) (struct socket *sock); -+ int (*bind) (struct socket *sock, -+ struct sockaddr *myaddr, -+ int sockaddr_len); -+ int (*connect) (struct socket *sock, -+ struct sockaddr *vaddr, -+ int sockaddr_len, int flags); -+ int (*socketpair)(struct socket *sock1, -+ struct socket *sock2); -+ int (*accept) (struct socket *sock, -+ struct socket *newsock, int flags); -+ int (*getname) (struct socket *sock, -+ struct sockaddr *addr, -+ int *sockaddr_len, int peer); -+ unsigned int (*poll) (struct file *file, struct socket *sock, -+ struct poll_table_struct *wait); -+ int (*ioctl) (struct socket *sock, unsigned int cmd, -+ unsigned long arg); -+ int (*compat_ioctl) (struct socket *sock, unsigned int cmd, -+ unsigned long arg); -+ int (*listen) (struct socket *sock, int len); -+ int (*shutdown) (struct socket *sock, int flags); -+ int (*setsockopt)(struct socket *sock, int level, -+ int optname, char *optval, int optlen); -+ int (*getsockopt)(struct socket *sock, int level, -+ int optname, char *optval, int *optlen); -+ int (*compat_setsockopt)(struct socket *sock, int level, -+ int optname, char *optval, int optlen); -+ int (*compat_getsockopt)(struct socket *sock, int level, -+ int optname, char *optval, int *optlen); -+ int (*sendmsg) (struct kiocb *iocb, struct socket *sock, -+ struct msghdr *m, size_t total_len); -+ int (*recvmsg) (struct kiocb *iocb, struct socket *sock, -+ struct msghdr *m, size_t total_len, -+ int flags); -+ int (*mmap) (struct file *file, struct socket *sock, -+ struct vm_area_struct * vma); -+ ssize_t (*sendpage) (struct socket *sock, struct page *page, -+ int offset, size_t size, int flags); -+ ssize_t (*splice_read)(struct socket *sock, loff_t *ppos, -+ struct pipe_inode_info *pipe, size_t len, unsigned int flags); -+}; -+ -+struct net_proto_family { -+ int family; -+ int (*create)(struct net *net, struct socket *sock, int protocol); -+ struct module *owner; -+}; -+ -+struct iovec; -+struct kvec; -+ -+enum { -+ SOCK_WAKE_IO, -+ SOCK_WAKE_WAITD, -+ SOCK_WAKE_SPACE, -+ SOCK_WAKE_URG, -+}; -+ -+extern int sock_wake_async(struct socket *sk, int how, int band); -+extern int sock_register(const struct net_proto_family *fam); -+extern void sock_unregister(int family); -+extern int sock_create(int family, int type, int proto, -+ struct socket **res); -+extern int sock_create_kern(int family, int type, int proto, -+ struct socket **res); -+extern int sock_create_lite(int family, int type, int proto, -+ struct socket **res); -+extern void sock_release(struct socket *sock); -+extern int sock_sendmsg(struct socket *sock, struct msghdr *msg, -+ size_t len); -+extern int sock_recvmsg(struct socket *sock, struct msghdr *msg, -+ size_t size, int flags); -+extern int sock_map_fd(struct socket *sock, int flags); -+extern struct socket *sockfd_lookup(int fd, int *err); -+ -+extern int net_ratelimit(void); -+extern long do_accept(int fd, struct sockaddr *upeer_sockaddr, -+ int *upeer_addrlen, int flags); -+ -+ -+ -+ -+extern int kernel_sendmsg(struct socket *sock, struct msghdr *msg, -+ struct kvec *vec, size_t num, size_t len); -+extern int kernel_recvmsg(struct socket *sock, struct msghdr *msg, -+ struct kvec *vec, size_t num, -+ size_t len, int flags); -+ -+extern int kernel_bind(struct socket *sock, struct sockaddr *addr, -+ int addrlen); -+extern int kernel_listen(struct socket *sock, int backlog); -+extern int kernel_accept(struct socket *sock, struct socket **newsock, -+ int flags); -+extern int kernel_connect(struct socket *sock, struct sockaddr *addr, -+ int addrlen, int flags); -+extern int kernel_getsockname(struct socket *sock, struct sockaddr *addr, -+ int *addrlen); -+extern int kernel_getpeername(struct socket *sock, struct sockaddr *addr, -+ int *addrlen); -+extern int kernel_getsockopt(struct socket *sock, int level, int optname, -+ char *optval, int *optlen); -+extern int kernel_setsockopt(struct socket *sock, int level, int optname, -+ char *optval, int optlen); -+extern int kernel_sendpage(struct socket *sock, struct page *page, int offset, -+ size_t size, int flags); -+extern int kernel_sock_ioctl(struct socket *sock, int cmd, unsigned long arg); -+extern int kernel_sock_shutdown(struct socket *sock, -+ enum sock_shutdown_cmd how); -+# 354 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sysctl.h" 1 -+# 32 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sysctl.h" -+struct file; -+struct completion; -+ -+ -+ -+ -+ -+ -+struct __sysctl_args { -+ int *name; -+ int nlen; -+ void *oldval; -+ size_t *oldlenp; -+ void *newval; -+ size_t newlen; -+ unsigned long __unused[4]; -+}; -+# 60 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sysctl.h" -+enum -+{ -+ CTL_KERN=1, -+ CTL_VM=2, -+ CTL_NET=3, -+ CTL_PROC=4, -+ CTL_FS=5, -+ CTL_DEBUG=6, -+ CTL_DEV=7, -+ CTL_BUS=8, -+ CTL_ABI=9, -+ CTL_CPU=10, -+ CTL_ARLAN=254, -+ CTL_VSERVER=4242, -+ CTL_S390DBF=5677, -+ CTL_SUNRPC=7249, -+ CTL_PM=9899, -+ CTL_FRV=9898, -+}; -+ -+ -+enum -+{ -+ CTL_BUS_ISA=1 -+}; -+ -+ -+enum -+{ -+ INOTIFY_MAX_USER_INSTANCES=1, -+ INOTIFY_MAX_USER_WATCHES=2, -+ INOTIFY_MAX_QUEUED_EVENTS=3 -+}; -+ -+ -+enum -+{ -+ KERN_OSTYPE=1, -+ KERN_OSRELEASE=2, -+ KERN_OSREV=3, -+ KERN_VERSION=4, -+ KERN_SECUREMASK=5, -+ KERN_PROF=6, -+ KERN_NODENAME=7, -+ KERN_DOMAINNAME=8, -+ -+ KERN_PANIC=15, -+ KERN_REALROOTDEV=16, -+ KERN_VSHELPER=17, -+ -+ KERN_SPARC_REBOOT=21, -+ KERN_CTLALTDEL=22, -+ KERN_PRINTK=23, -+ KERN_NAMETRANS=24, -+ KERN_PPC_HTABRECLAIM=25, -+ KERN_PPC_ZEROPAGED=26, -+ KERN_PPC_POWERSAVE_NAP=27, -+ KERN_MODPROBE=28, -+ KERN_SG_BIG_BUFF=29, -+ KERN_ACCT=30, -+ KERN_PPC_L2CR=31, -+ -+ KERN_RTSIGNR=32, -+ KERN_RTSIGMAX=33, -+ -+ KERN_SHMMAX=34, -+ KERN_MSGMAX=35, -+ KERN_MSGMNB=36, -+ KERN_MSGPOOL=37, -+ KERN_SYSRQ=38, -+ KERN_MAX_THREADS=39, -+ KERN_RANDOM=40, -+ KERN_SHMALL=41, -+ KERN_MSGMNI=42, -+ KERN_SEM=43, -+ KERN_SPARC_STOP_A=44, -+ KERN_SHMMNI=45, -+ KERN_OVERFLOWUID=46, -+ KERN_OVERFLOWGID=47, -+ KERN_SHMPATH=48, -+ KERN_HOTPLUG=49, -+ KERN_IEEE_EMULATION_WARNINGS=50, -+ KERN_S390_USER_DEBUG_LOGGING=51, -+ KERN_CORE_USES_PID=52, -+ KERN_TAINTED=53, -+ KERN_CADPID=54, -+ KERN_PIDMAX=55, -+ KERN_CORE_PATTERN=56, -+ KERN_PANIC_ON_OOPS=57, -+ KERN_HPPA_PWRSW=58, -+ KERN_HPPA_UNALIGNED=59, -+ KERN_PRINTK_RATELIMIT=60, -+ KERN_PRINTK_RATELIMIT_BURST=61, -+ KERN_PTY=62, -+ KERN_NGROUPS_MAX=63, -+ KERN_SPARC_SCONS_PWROFF=64, -+ KERN_HZ_TIMER=65, -+ KERN_UNKNOWN_NMI_PANIC=66, -+ KERN_BOOTLOADER_TYPE=67, -+ KERN_RANDOMIZE=68, -+ KERN_SETUID_DUMPABLE=69, -+ KERN_SPIN_RETRY=70, -+ KERN_ACPI_VIDEO_FLAGS=71, -+ KERN_IA64_UNALIGNED=72, -+ KERN_COMPAT_LOG=73, -+ KERN_MAX_LOCK_DEPTH=74, -+ KERN_NMI_WATCHDOG=75, -+ KERN_PANIC_ON_NMI=76, -+}; -+ -+ -+ -+ -+enum -+{ -+ VM_UNUSED1=1, -+ VM_UNUSED2=2, -+ VM_UNUSED3=3, -+ VM_UNUSED4=4, -+ VM_OVERCOMMIT_MEMORY=5, -+ VM_UNUSED5=6, -+ VM_UNUSED7=7, -+ VM_UNUSED8=8, -+ VM_UNUSED9=9, -+ VM_PAGE_CLUSTER=10, -+ VM_DIRTY_BACKGROUND=11, -+ VM_DIRTY_RATIO=12, -+ VM_DIRTY_WB_CS=13, -+ VM_DIRTY_EXPIRE_CS=14, -+ VM_NR_PDFLUSH_THREADS=15, -+ VM_OVERCOMMIT_RATIO=16, -+ VM_PAGEBUF=17, -+ VM_HUGETLB_PAGES=18, -+ VM_SWAPPINESS=19, -+ VM_LOWMEM_RESERVE_RATIO=20, -+ VM_MIN_FREE_KBYTES=21, -+ VM_MAX_MAP_COUNT=22, -+ VM_LAPTOP_MODE=23, -+ VM_BLOCK_DUMP=24, -+ VM_HUGETLB_GROUP=25, -+ VM_VFS_CACHE_PRESSURE=26, -+ VM_LEGACY_VA_LAYOUT=27, -+ VM_SWAP_TOKEN_TIMEOUT=28, -+ VM_DROP_PAGECACHE=29, -+ VM_PERCPU_PAGELIST_FRACTION=30, -+ VM_ZONE_RECLAIM_MODE=31, -+ VM_MIN_UNMAPPED=32, -+ VM_PANIC_ON_OOM=33, -+ VM_VDSO_ENABLED=34, -+ VM_MIN_SLAB=35, -+}; -+ -+ -+ -+enum -+{ -+ NET_CORE=1, -+ NET_ETHER=2, -+ NET_802=3, -+ NET_UNIX=4, -+ NET_IPV4=5, -+ NET_IPX=6, -+ NET_ATALK=7, -+ NET_NETROM=8, -+ NET_AX25=9, -+ NET_BRIDGE=10, -+ NET_ROSE=11, -+ NET_IPV6=12, -+ NET_X25=13, -+ NET_TR=14, -+ NET_DECNET=15, -+ NET_ECONET=16, -+ NET_SCTP=17, -+ NET_LLC=18, -+ NET_NETFILTER=19, -+ NET_DCCP=20, -+ NET_IRDA=412, -+}; -+ -+ -+enum -+{ -+ RANDOM_POOLSIZE=1, -+ RANDOM_ENTROPY_COUNT=2, -+ RANDOM_READ_THRESH=3, -+ RANDOM_WRITE_THRESH=4, -+ RANDOM_BOOT_ID=5, -+ RANDOM_UUID=6 -+}; -+ -+ -+enum -+{ -+ PTY_MAX=1, -+ PTY_NR=2 -+}; -+ -+ -+enum -+{ -+ BUS_ISA_MEM_BASE=1, -+ BUS_ISA_PORT_BASE=2, -+ BUS_ISA_PORT_SHIFT=3 -+}; -+ -+ -+enum -+{ -+ NET_CORE_WMEM_MAX=1, -+ NET_CORE_RMEM_MAX=2, -+ NET_CORE_WMEM_DEFAULT=3, -+ NET_CORE_RMEM_DEFAULT=4, -+ -+ NET_CORE_MAX_BACKLOG=6, -+ NET_CORE_FASTROUTE=7, -+ NET_CORE_MSG_COST=8, -+ NET_CORE_MSG_BURST=9, -+ NET_CORE_OPTMEM_MAX=10, -+ NET_CORE_HOT_LIST_LENGTH=11, -+ NET_CORE_DIVERT_VERSION=12, -+ NET_CORE_NO_CONG_THRESH=13, -+ NET_CORE_NO_CONG=14, -+ NET_CORE_LO_CONG=15, -+ NET_CORE_MOD_CONG=16, -+ NET_CORE_DEV_WEIGHT=17, -+ NET_CORE_SOMAXCONN=18, -+ NET_CORE_BUDGET=19, -+ NET_CORE_AEVENT_ETIME=20, -+ NET_CORE_AEVENT_RSEQTH=21, -+ NET_CORE_WARNINGS=22, -+}; -+ -+ -+ -+ -+ -+ -+ -+enum -+{ -+ NET_UNIX_DESTROY_DELAY=1, -+ NET_UNIX_DELETE_DELAY=2, -+ NET_UNIX_MAX_DGRAM_QLEN=3, -+}; -+ -+ -+enum -+{ -+ NET_NF_CONNTRACK_MAX=1, -+ NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT=2, -+ NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV=3, -+ NET_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED=4, -+ NET_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT=5, -+ NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT=6, -+ NET_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK=7, -+ NET_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT=8, -+ NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE=9, -+ NET_NF_CONNTRACK_UDP_TIMEOUT=10, -+ NET_NF_CONNTRACK_UDP_TIMEOUT_STREAM=11, -+ NET_NF_CONNTRACK_ICMP_TIMEOUT=12, -+ NET_NF_CONNTRACK_GENERIC_TIMEOUT=13, -+ NET_NF_CONNTRACK_BUCKETS=14, -+ NET_NF_CONNTRACK_LOG_INVALID=15, -+ NET_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS=16, -+ NET_NF_CONNTRACK_TCP_LOOSE=17, -+ NET_NF_CONNTRACK_TCP_BE_LIBERAL=18, -+ NET_NF_CONNTRACK_TCP_MAX_RETRANS=19, -+ NET_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED=20, -+ NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT=21, -+ NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED=22, -+ NET_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED=23, -+ NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT=24, -+ NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD=25, -+ NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT=26, -+ NET_NF_CONNTRACK_COUNT=27, -+ NET_NF_CONNTRACK_ICMPV6_TIMEOUT=28, -+ NET_NF_CONNTRACK_FRAG6_TIMEOUT=29, -+ NET_NF_CONNTRACK_FRAG6_LOW_THRESH=30, -+ NET_NF_CONNTRACK_FRAG6_HIGH_THRESH=31, -+ NET_NF_CONNTRACK_CHECKSUM=32, -+}; -+ -+ -+enum -+{ -+ -+ NET_IPV4_FORWARD=8, -+ NET_IPV4_DYNADDR=9, -+ -+ NET_IPV4_CONF=16, -+ NET_IPV4_NEIGH=17, -+ NET_IPV4_ROUTE=18, -+ NET_IPV4_FIB_HASH=19, -+ NET_IPV4_NETFILTER=20, -+ -+ NET_IPV4_TCP_TIMESTAMPS=33, -+ NET_IPV4_TCP_WINDOW_SCALING=34, -+ NET_IPV4_TCP_SACK=35, -+ NET_IPV4_TCP_RETRANS_COLLAPSE=36, -+ NET_IPV4_DEFAULT_TTL=37, -+ NET_IPV4_AUTOCONFIG=38, -+ NET_IPV4_NO_PMTU_DISC=39, -+ NET_IPV4_TCP_SYN_RETRIES=40, -+ NET_IPV4_IPFRAG_HIGH_THRESH=41, -+ NET_IPV4_IPFRAG_LOW_THRESH=42, -+ NET_IPV4_IPFRAG_TIME=43, -+ NET_IPV4_TCP_MAX_KA_PROBES=44, -+ NET_IPV4_TCP_KEEPALIVE_TIME=45, -+ NET_IPV4_TCP_KEEPALIVE_PROBES=46, -+ NET_IPV4_TCP_RETRIES1=47, -+ NET_IPV4_TCP_RETRIES2=48, -+ NET_IPV4_TCP_FIN_TIMEOUT=49, -+ NET_IPV4_IP_MASQ_DEBUG=50, -+ NET_TCP_SYNCOOKIES=51, -+ NET_TCP_STDURG=52, -+ NET_TCP_RFC1337=53, -+ NET_TCP_SYN_TAILDROP=54, -+ NET_TCP_MAX_SYN_BACKLOG=55, -+ NET_IPV4_LOCAL_PORT_RANGE=56, -+ NET_IPV4_ICMP_ECHO_IGNORE_ALL=57, -+ NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS=58, -+ NET_IPV4_ICMP_SOURCEQUENCH_RATE=59, -+ NET_IPV4_ICMP_DESTUNREACH_RATE=60, -+ NET_IPV4_ICMP_TIMEEXCEED_RATE=61, -+ NET_IPV4_ICMP_PARAMPROB_RATE=62, -+ NET_IPV4_ICMP_ECHOREPLY_RATE=63, -+ NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES=64, -+ NET_IPV4_IGMP_MAX_MEMBERSHIPS=65, -+ NET_TCP_TW_RECYCLE=66, -+ NET_IPV4_ALWAYS_DEFRAG=67, -+ NET_IPV4_TCP_KEEPALIVE_INTVL=68, -+ NET_IPV4_INET_PEER_THRESHOLD=69, -+ NET_IPV4_INET_PEER_MINTTL=70, -+ NET_IPV4_INET_PEER_MAXTTL=71, -+ NET_IPV4_INET_PEER_GC_MINTIME=72, -+ NET_IPV4_INET_PEER_GC_MAXTIME=73, -+ NET_TCP_ORPHAN_RETRIES=74, -+ NET_TCP_ABORT_ON_OVERFLOW=75, -+ NET_TCP_SYNACK_RETRIES=76, -+ NET_TCP_MAX_ORPHANS=77, -+ NET_TCP_MAX_TW_BUCKETS=78, -+ NET_TCP_FACK=79, -+ NET_TCP_REORDERING=80, -+ NET_TCP_ECN=81, -+ NET_TCP_DSACK=82, -+ NET_TCP_MEM=83, -+ NET_TCP_WMEM=84, -+ NET_TCP_RMEM=85, -+ NET_TCP_APP_WIN=86, -+ NET_TCP_ADV_WIN_SCALE=87, -+ NET_IPV4_NONLOCAL_BIND=88, -+ NET_IPV4_ICMP_RATELIMIT=89, -+ NET_IPV4_ICMP_RATEMASK=90, -+ NET_TCP_TW_REUSE=91, -+ NET_TCP_FRTO=92, -+ NET_TCP_LOW_LATENCY=93, -+ NET_IPV4_IPFRAG_SECRET_INTERVAL=94, -+ NET_IPV4_IGMP_MAX_MSF=96, -+ NET_TCP_NO_METRICS_SAVE=97, -+ NET_TCP_DEFAULT_WIN_SCALE=105, -+ NET_TCP_MODERATE_RCVBUF=106, -+ NET_TCP_TSO_WIN_DIVISOR=107, -+ NET_TCP_BIC_BETA=108, -+ NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR=109, -+ NET_TCP_CONG_CONTROL=110, -+ NET_TCP_ABC=111, -+ NET_IPV4_IPFRAG_MAX_DIST=112, -+ NET_TCP_MTU_PROBING=113, -+ NET_TCP_BASE_MSS=114, -+ NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS=115, -+ NET_TCP_DMA_COPYBREAK=116, -+ NET_TCP_SLOW_START_AFTER_IDLE=117, -+ NET_CIPSOV4_CACHE_ENABLE=118, -+ NET_CIPSOV4_CACHE_BUCKET_SIZE=119, -+ NET_CIPSOV4_RBM_OPTFMT=120, -+ NET_CIPSOV4_RBM_STRICTVALID=121, -+ NET_TCP_AVAIL_CONG_CONTROL=122, -+ NET_TCP_ALLOWED_CONG_CONTROL=123, -+ NET_TCP_MAX_SSTHRESH=124, -+ NET_TCP_FRTO_RESPONSE=125, -+}; -+ -+enum { -+ NET_IPV4_ROUTE_FLUSH=1, -+ NET_IPV4_ROUTE_MIN_DELAY=2, -+ NET_IPV4_ROUTE_MAX_DELAY=3, -+ NET_IPV4_ROUTE_GC_THRESH=4, -+ NET_IPV4_ROUTE_MAX_SIZE=5, -+ NET_IPV4_ROUTE_GC_MIN_INTERVAL=6, -+ NET_IPV4_ROUTE_GC_TIMEOUT=7, -+ NET_IPV4_ROUTE_GC_INTERVAL=8, -+ NET_IPV4_ROUTE_REDIRECT_LOAD=9, -+ NET_IPV4_ROUTE_REDIRECT_NUMBER=10, -+ NET_IPV4_ROUTE_REDIRECT_SILENCE=11, -+ NET_IPV4_ROUTE_ERROR_COST=12, -+ NET_IPV4_ROUTE_ERROR_BURST=13, -+ NET_IPV4_ROUTE_GC_ELASTICITY=14, -+ NET_IPV4_ROUTE_MTU_EXPIRES=15, -+ NET_IPV4_ROUTE_MIN_PMTU=16, -+ NET_IPV4_ROUTE_MIN_ADVMSS=17, -+ NET_IPV4_ROUTE_SECRET_INTERVAL=18, -+ NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS=19, -+}; -+ -+enum -+{ -+ NET_PROTO_CONF_ALL=-2, -+ NET_PROTO_CONF_DEFAULT=-3 -+ -+ -+}; -+ -+enum -+{ -+ NET_IPV4_CONF_FORWARDING=1, -+ NET_IPV4_CONF_MC_FORWARDING=2, -+ NET_IPV4_CONF_PROXY_ARP=3, -+ NET_IPV4_CONF_ACCEPT_REDIRECTS=4, -+ NET_IPV4_CONF_SECURE_REDIRECTS=5, -+ NET_IPV4_CONF_SEND_REDIRECTS=6, -+ NET_IPV4_CONF_SHARED_MEDIA=7, -+ NET_IPV4_CONF_RP_FILTER=8, -+ NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE=9, -+ NET_IPV4_CONF_BOOTP_RELAY=10, -+ NET_IPV4_CONF_LOG_MARTIANS=11, -+ NET_IPV4_CONF_TAG=12, -+ NET_IPV4_CONF_ARPFILTER=13, -+ NET_IPV4_CONF_MEDIUM_ID=14, -+ NET_IPV4_CONF_NOXFRM=15, -+ NET_IPV4_CONF_NOPOLICY=16, -+ NET_IPV4_CONF_FORCE_IGMP_VERSION=17, -+ NET_IPV4_CONF_ARP_ANNOUNCE=18, -+ NET_IPV4_CONF_ARP_IGNORE=19, -+ NET_IPV4_CONF_PROMOTE_SECONDARIES=20, -+ NET_IPV4_CONF_ARP_ACCEPT=21, -+ __NET_IPV4_CONF_MAX -+}; -+ -+ -+enum -+{ -+ NET_IPV4_NF_CONNTRACK_MAX=1, -+ NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT=2, -+ NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV=3, -+ NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED=4, -+ NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT=5, -+ NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT=6, -+ NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK=7, -+ NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT=8, -+ NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE=9, -+ NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT=10, -+ NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT_STREAM=11, -+ NET_IPV4_NF_CONNTRACK_ICMP_TIMEOUT=12, -+ NET_IPV4_NF_CONNTRACK_GENERIC_TIMEOUT=13, -+ NET_IPV4_NF_CONNTRACK_BUCKETS=14, -+ NET_IPV4_NF_CONNTRACK_LOG_INVALID=15, -+ NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS=16, -+ NET_IPV4_NF_CONNTRACK_TCP_LOOSE=17, -+ NET_IPV4_NF_CONNTRACK_TCP_BE_LIBERAL=18, -+ NET_IPV4_NF_CONNTRACK_TCP_MAX_RETRANS=19, -+ NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED=20, -+ NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT=21, -+ NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED=22, -+ NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED=23, -+ NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT=24, -+ NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD=25, -+ NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT=26, -+ NET_IPV4_NF_CONNTRACK_COUNT=27, -+ NET_IPV4_NF_CONNTRACK_CHECKSUM=28, -+}; -+ -+ -+enum { -+ NET_IPV6_CONF=16, -+ NET_IPV6_NEIGH=17, -+ NET_IPV6_ROUTE=18, -+ NET_IPV6_ICMP=19, -+ NET_IPV6_BINDV6ONLY=20, -+ NET_IPV6_IP6FRAG_HIGH_THRESH=21, -+ NET_IPV6_IP6FRAG_LOW_THRESH=22, -+ NET_IPV6_IP6FRAG_TIME=23, -+ NET_IPV6_IP6FRAG_SECRET_INTERVAL=24, -+ NET_IPV6_MLD_MAX_MSF=25, -+}; -+ -+enum { -+ NET_IPV6_ROUTE_FLUSH=1, -+ NET_IPV6_ROUTE_GC_THRESH=2, -+ NET_IPV6_ROUTE_MAX_SIZE=3, -+ NET_IPV6_ROUTE_GC_MIN_INTERVAL=4, -+ NET_IPV6_ROUTE_GC_TIMEOUT=5, -+ NET_IPV6_ROUTE_GC_INTERVAL=6, -+ NET_IPV6_ROUTE_GC_ELASTICITY=7, -+ NET_IPV6_ROUTE_MTU_EXPIRES=8, -+ NET_IPV6_ROUTE_MIN_ADVMSS=9, -+ NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS=10 -+}; -+ -+enum { -+ NET_IPV6_FORWARDING=1, -+ NET_IPV6_HOP_LIMIT=2, -+ NET_IPV6_MTU=3, -+ NET_IPV6_ACCEPT_RA=4, -+ NET_IPV6_ACCEPT_REDIRECTS=5, -+ NET_IPV6_AUTOCONF=6, -+ NET_IPV6_DAD_TRANSMITS=7, -+ NET_IPV6_RTR_SOLICITS=8, -+ NET_IPV6_RTR_SOLICIT_INTERVAL=9, -+ NET_IPV6_RTR_SOLICIT_DELAY=10, -+ NET_IPV6_USE_TEMPADDR=11, -+ NET_IPV6_TEMP_VALID_LFT=12, -+ NET_IPV6_TEMP_PREFERED_LFT=13, -+ NET_IPV6_REGEN_MAX_RETRY=14, -+ NET_IPV6_MAX_DESYNC_FACTOR=15, -+ NET_IPV6_MAX_ADDRESSES=16, -+ NET_IPV6_FORCE_MLD_VERSION=17, -+ NET_IPV6_ACCEPT_RA_DEFRTR=18, -+ NET_IPV6_ACCEPT_RA_PINFO=19, -+ NET_IPV6_ACCEPT_RA_RTR_PREF=20, -+ NET_IPV6_RTR_PROBE_INTERVAL=21, -+ NET_IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN=22, -+ NET_IPV6_PROXY_NDP=23, -+ NET_IPV6_ACCEPT_SOURCE_ROUTE=25, -+ __NET_IPV6_MAX -+}; -+ -+ -+enum { -+ NET_IPV6_ICMP_RATELIMIT=1 -+}; -+ -+ -+enum { -+ NET_NEIGH_MCAST_SOLICIT=1, -+ NET_NEIGH_UCAST_SOLICIT=2, -+ NET_NEIGH_APP_SOLICIT=3, -+ NET_NEIGH_RETRANS_TIME=4, -+ NET_NEIGH_REACHABLE_TIME=5, -+ NET_NEIGH_DELAY_PROBE_TIME=6, -+ NET_NEIGH_GC_STALE_TIME=7, -+ NET_NEIGH_UNRES_QLEN=8, -+ NET_NEIGH_PROXY_QLEN=9, -+ NET_NEIGH_ANYCAST_DELAY=10, -+ NET_NEIGH_PROXY_DELAY=11, -+ NET_NEIGH_LOCKTIME=12, -+ NET_NEIGH_GC_INTERVAL=13, -+ NET_NEIGH_GC_THRESH1=14, -+ NET_NEIGH_GC_THRESH2=15, -+ NET_NEIGH_GC_THRESH3=16, -+ NET_NEIGH_RETRANS_TIME_MS=17, -+ NET_NEIGH_REACHABLE_TIME_MS=18, -+ __NET_NEIGH_MAX -+}; -+ -+ -+enum { -+ NET_DCCP_DEFAULT=1, -+}; -+ -+ -+enum { -+ NET_IPX_PPROP_BROADCASTING=1, -+ NET_IPX_FORWARDING=2 -+}; -+ -+ -+enum { -+ NET_LLC2=1, -+ NET_LLC_STATION=2, -+}; -+ -+ -+enum { -+ NET_LLC2_TIMEOUT=1, -+}; -+ -+ -+enum { -+ NET_LLC_STATION_ACK_TIMEOUT=1, -+}; -+ -+ -+enum { -+ NET_LLC2_ACK_TIMEOUT=1, -+ NET_LLC2_P_TIMEOUT=2, -+ NET_LLC2_REJ_TIMEOUT=3, -+ NET_LLC2_BUSY_TIMEOUT=4, -+}; -+ -+ -+enum { -+ NET_ATALK_AARP_EXPIRY_TIME=1, -+ NET_ATALK_AARP_TICK_TIME=2, -+ NET_ATALK_AARP_RETRANSMIT_LIMIT=3, -+ NET_ATALK_AARP_RESOLVE_TIME=4 -+}; -+ -+ -+ -+enum { -+ NET_NETROM_DEFAULT_PATH_QUALITY=1, -+ NET_NETROM_OBSOLESCENCE_COUNT_INITIALISER=2, -+ NET_NETROM_NETWORK_TTL_INITIALISER=3, -+ NET_NETROM_TRANSPORT_TIMEOUT=4, -+ NET_NETROM_TRANSPORT_MAXIMUM_TRIES=5, -+ NET_NETROM_TRANSPORT_ACKNOWLEDGE_DELAY=6, -+ NET_NETROM_TRANSPORT_BUSY_DELAY=7, -+ NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE=8, -+ NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT=9, -+ NET_NETROM_ROUTING_CONTROL=10, -+ NET_NETROM_LINK_FAILS_COUNT=11, -+ NET_NETROM_RESET=12 -+}; -+ -+ -+enum { -+ NET_AX25_IP_DEFAULT_MODE=1, -+ NET_AX25_DEFAULT_MODE=2, -+ NET_AX25_BACKOFF_TYPE=3, -+ NET_AX25_CONNECT_MODE=4, -+ NET_AX25_STANDARD_WINDOW=5, -+ NET_AX25_EXTENDED_WINDOW=6, -+ NET_AX25_T1_TIMEOUT=7, -+ NET_AX25_T2_TIMEOUT=8, -+ NET_AX25_T3_TIMEOUT=9, -+ NET_AX25_IDLE_TIMEOUT=10, -+ NET_AX25_N2=11, -+ NET_AX25_PACLEN=12, -+ NET_AX25_PROTOCOL=13, -+ NET_AX25_DAMA_SLAVE_TIMEOUT=14 -+}; -+ -+ -+enum { -+ NET_ROSE_RESTART_REQUEST_TIMEOUT=1, -+ NET_ROSE_CALL_REQUEST_TIMEOUT=2, -+ NET_ROSE_RESET_REQUEST_TIMEOUT=3, -+ NET_ROSE_CLEAR_REQUEST_TIMEOUT=4, -+ NET_ROSE_ACK_HOLD_BACK_TIMEOUT=5, -+ NET_ROSE_ROUTING_CONTROL=6, -+ NET_ROSE_LINK_FAIL_TIMEOUT=7, -+ NET_ROSE_MAX_VCS=8, -+ NET_ROSE_WINDOW_SIZE=9, -+ NET_ROSE_NO_ACTIVITY_TIMEOUT=10 -+}; -+ -+ -+enum { -+ NET_X25_RESTART_REQUEST_TIMEOUT=1, -+ NET_X25_CALL_REQUEST_TIMEOUT=2, -+ NET_X25_RESET_REQUEST_TIMEOUT=3, -+ NET_X25_CLEAR_REQUEST_TIMEOUT=4, -+ NET_X25_ACK_HOLD_BACK_TIMEOUT=5, -+ NET_X25_FORWARD=6 -+}; -+ -+ -+enum -+{ -+ NET_TR_RIF_TIMEOUT=1 -+}; -+ -+ -+enum { -+ NET_DECNET_NODE_TYPE = 1, -+ NET_DECNET_NODE_ADDRESS = 2, -+ NET_DECNET_NODE_NAME = 3, -+ NET_DECNET_DEFAULT_DEVICE = 4, -+ NET_DECNET_TIME_WAIT = 5, -+ NET_DECNET_DN_COUNT = 6, -+ NET_DECNET_DI_COUNT = 7, -+ NET_DECNET_DR_COUNT = 8, -+ NET_DECNET_DST_GC_INTERVAL = 9, -+ NET_DECNET_CONF = 10, -+ NET_DECNET_NO_FC_MAX_CWND = 11, -+ NET_DECNET_MEM = 12, -+ NET_DECNET_RMEM = 13, -+ NET_DECNET_WMEM = 14, -+ NET_DECNET_DEBUG_LEVEL = 255 -+}; -+ -+ -+enum { -+ NET_DECNET_CONF_LOOPBACK = -2, -+ NET_DECNET_CONF_DDCMP = -3, -+ NET_DECNET_CONF_PPP = -4, -+ NET_DECNET_CONF_X25 = -5, -+ NET_DECNET_CONF_GRE = -6, -+ NET_DECNET_CONF_ETHER = -7 -+ -+ -+}; -+ -+ -+enum { -+ NET_DECNET_CONF_DEV_PRIORITY = 1, -+ NET_DECNET_CONF_DEV_T1 = 2, -+ NET_DECNET_CONF_DEV_T2 = 3, -+ NET_DECNET_CONF_DEV_T3 = 4, -+ NET_DECNET_CONF_DEV_FORWARDING = 5, -+ NET_DECNET_CONF_DEV_BLKSIZE = 6, -+ NET_DECNET_CONF_DEV_STATE = 7 -+}; -+ -+ -+enum { -+ NET_SCTP_RTO_INITIAL = 1, -+ NET_SCTP_RTO_MIN = 2, -+ NET_SCTP_RTO_MAX = 3, -+ NET_SCTP_RTO_ALPHA = 4, -+ NET_SCTP_RTO_BETA = 5, -+ NET_SCTP_VALID_COOKIE_LIFE = 6, -+ NET_SCTP_ASSOCIATION_MAX_RETRANS = 7, -+ NET_SCTP_PATH_MAX_RETRANS = 8, -+ NET_SCTP_MAX_INIT_RETRANSMITS = 9, -+ NET_SCTP_HB_INTERVAL = 10, -+ NET_SCTP_PRESERVE_ENABLE = 11, -+ NET_SCTP_MAX_BURST = 12, -+ NET_SCTP_ADDIP_ENABLE = 13, -+ NET_SCTP_PRSCTP_ENABLE = 14, -+ NET_SCTP_SNDBUF_POLICY = 15, -+ NET_SCTP_SACK_TIMEOUT = 16, -+ NET_SCTP_RCVBUF_POLICY = 17, -+}; -+ -+ -+enum { -+ NET_BRIDGE_NF_CALL_ARPTABLES = 1, -+ NET_BRIDGE_NF_CALL_IPTABLES = 2, -+ NET_BRIDGE_NF_CALL_IP6TABLES = 3, -+ NET_BRIDGE_NF_FILTER_VLAN_TAGGED = 4, -+ NET_BRIDGE_NF_FILTER_PPPOE_TAGGED = 5, -+}; -+ -+ -+enum { -+ NET_IRDA_DISCOVERY=1, -+ NET_IRDA_DEVNAME=2, -+ NET_IRDA_DEBUG=3, -+ NET_IRDA_FAST_POLL=4, -+ NET_IRDA_DISCOVERY_SLOTS=5, -+ NET_IRDA_DISCOVERY_TIMEOUT=6, -+ NET_IRDA_SLOT_TIMEOUT=7, -+ NET_IRDA_MAX_BAUD_RATE=8, -+ NET_IRDA_MIN_TX_TURN_TIME=9, -+ NET_IRDA_MAX_TX_DATA_SIZE=10, -+ NET_IRDA_MAX_TX_WINDOW=11, -+ NET_IRDA_MAX_NOREPLY_TIME=12, -+ NET_IRDA_WARN_NOREPLY_TIME=13, -+ NET_IRDA_LAP_KEEPALIVE_TIME=14, -+}; -+ -+ -+ -+enum -+{ -+ FS_NRINODE=1, -+ FS_STATINODE=2, -+ FS_MAXINODE=3, -+ FS_NRDQUOT=4, -+ FS_MAXDQUOT=5, -+ FS_NRFILE=6, -+ FS_MAXFILE=7, -+ FS_DENTRY=8, -+ FS_NRSUPER=9, -+ FS_MAXSUPER=10, -+ FS_OVERFLOWUID=11, -+ FS_OVERFLOWGID=12, -+ FS_LEASES=13, -+ FS_DIR_NOTIFY=14, -+ FS_LEASE_TIME=15, -+ FS_DQSTATS=16, -+ FS_XFS=17, -+ FS_AIO_NR=18, -+ FS_AIO_MAX_NR=19, -+ FS_INOTIFY=20, -+ FS_OCFS2=988, -+}; -+ -+ -+enum { -+ FS_DQ_LOOKUPS = 1, -+ FS_DQ_DROPS = 2, -+ FS_DQ_READS = 3, -+ FS_DQ_WRITES = 4, -+ FS_DQ_CACHE_HITS = 5, -+ FS_DQ_ALLOCATED = 6, -+ FS_DQ_FREE = 7, -+ FS_DQ_SYNCS = 8, -+ FS_DQ_WARNINGS = 9, -+}; -+ -+ -+ -+ -+enum { -+ DEV_CDROM=1, -+ DEV_HWMON=2, -+ DEV_PARPORT=3, -+ DEV_RAID=4, -+ DEV_MAC_HID=5, -+ DEV_SCSI=6, -+ DEV_IPMI=7, -+}; -+ -+ -+enum { -+ DEV_CDROM_INFO=1, -+ DEV_CDROM_AUTOCLOSE=2, -+ DEV_CDROM_AUTOEJECT=3, -+ DEV_CDROM_DEBUG=4, -+ DEV_CDROM_LOCK=5, -+ DEV_CDROM_CHECK_MEDIA=6 -+}; -+ -+ -+enum { -+ DEV_PARPORT_DEFAULT=-3 -+}; -+ -+ -+enum { -+ DEV_RAID_SPEED_LIMIT_MIN=1, -+ DEV_RAID_SPEED_LIMIT_MAX=2 -+}; -+ -+ -+enum { -+ DEV_PARPORT_DEFAULT_TIMESLICE=1, -+ DEV_PARPORT_DEFAULT_SPINTIME=2 -+}; -+ -+ -+enum { -+ DEV_PARPORT_SPINTIME=1, -+ DEV_PARPORT_BASE_ADDR=2, -+ DEV_PARPORT_IRQ=3, -+ DEV_PARPORT_DMA=4, -+ DEV_PARPORT_MODES=5, -+ DEV_PARPORT_DEVICES=6, -+ DEV_PARPORT_AUTOPROBE=16 -+}; -+ -+ -+enum { -+ DEV_PARPORT_DEVICES_ACTIVE=-3, -+}; -+ -+ -+enum { -+ DEV_PARPORT_DEVICE_TIMESLICE=1, -+}; -+ -+ -+enum { -+ DEV_MAC_HID_KEYBOARD_SENDS_LINUX_KEYCODES=1, -+ DEV_MAC_HID_KEYBOARD_LOCK_KEYCODES=2, -+ DEV_MAC_HID_MOUSE_BUTTON_EMULATION=3, -+ DEV_MAC_HID_MOUSE_BUTTON2_KEYCODE=4, -+ DEV_MAC_HID_MOUSE_BUTTON3_KEYCODE=5, -+ DEV_MAC_HID_ADB_MOUSE_SENDS_KEYCODES=6 -+}; -+ -+ -+enum { -+ DEV_SCSI_LOGGING_LEVEL=1, -+}; -+ -+ -+enum { -+ DEV_IPMI_POWEROFF_POWERCYCLE=1, -+}; -+ -+ -+enum -+{ -+ ABI_DEFHANDLER_COFF=1, -+ ABI_DEFHANDLER_ELF=2, -+ ABI_DEFHANDLER_LCALL7=3, -+ ABI_DEFHANDLER_LIBCSO=4, -+ ABI_TRACE=5, -+ ABI_FAKE_UTSNAME=6, -+}; -+ -+ -+ -+ -+ -+struct ctl_table; -+struct nsproxy; -+struct ctl_table_root; -+ -+struct ctl_table_set { -+ struct list_head list; -+ struct ctl_table_set *parent; -+ int (*is_seen)(struct ctl_table_set *); -+}; -+ -+extern void setup_sysctl_set(struct ctl_table_set *p, -+ struct ctl_table_set *parent, -+ int (*is_seen)(struct ctl_table_set *)); -+ -+struct ctl_table_header; -+ -+extern void sysctl_head_get(struct ctl_table_header *); -+extern void sysctl_head_put(struct ctl_table_header *); -+extern int sysctl_is_seen(struct ctl_table_header *); -+extern struct ctl_table_header *sysctl_head_grab(struct ctl_table_header *); -+extern struct ctl_table_header *sysctl_head_next(struct ctl_table_header *prev); -+extern struct ctl_table_header *__sysctl_head_next(struct nsproxy *namespaces, -+ struct ctl_table_header *prev); -+extern void sysctl_head_finish(struct ctl_table_header *prev); -+extern int sysctl_perm(struct ctl_table_root *root, -+ struct ctl_table *table, int op); -+ -+typedef struct ctl_table ctl_table; -+ -+typedef int ctl_handler (struct ctl_table *table, int *name, int nlen, -+ void *oldval, size_t *oldlenp, -+ void *newval, size_t newlen); -+ -+typedef int proc_handler_t (struct ctl_table *ctl, int write, struct file * filp, -+ void *buffer, size_t *lenp, loff_t *ppos); -+ -+extern int proc_dostring(struct ctl_table *, int, struct file *, -+ void *, size_t *, loff_t *); -+extern int proc_dointvec(struct ctl_table *, int, struct file *, -+ void *, size_t *, loff_t *); -+extern int proc_dointvec_minmax(struct ctl_table *, int, struct file *, -+ void *, size_t *, loff_t *); -+extern int proc_dointvec_jiffies(struct ctl_table *, int, struct file *, -+ void *, size_t *, loff_t *); -+extern int proc_dointvec_userhz_jiffies(struct ctl_table *, int, struct file *, -+ void *, size_t *, loff_t *); -+extern int proc_dointvec_ms_jiffies(struct ctl_table *, int, struct file *, -+ void *, size_t *, loff_t *); -+extern int proc_doulongvec_minmax(struct ctl_table *, int, struct file *, -+ void *, size_t *, loff_t *); -+extern int proc_doulongvec_ms_jiffies_minmax(struct ctl_table *table, int, -+ struct file *, void *, size_t *, loff_t *); -+ -+extern int do_sysctl (int *name, int nlen, -+ void *oldval, size_t *oldlenp, -+ void *newval, size_t newlen); -+ -+extern ctl_handler sysctl_data; -+extern ctl_handler sysctl_string; -+extern ctl_handler sysctl_intvec; -+extern ctl_handler sysctl_jiffies; -+extern ctl_handler sysctl_ms_jiffies; -+# 1053 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sysctl.h" -+struct ctl_table -+{ -+ int ctl_name; -+ const char *procname; -+ void *data; -+ int maxlen; -+ mode_t mode; -+ struct ctl_table *child; -+ struct ctl_table *parent; -+ proc_handler_t *proc_handler; -+ ctl_handler *strategy; -+ void *extra1; -+ void *extra2; -+}; -+ -+struct ctl_table_root { -+ struct list_head root_list; -+ struct ctl_table_set default_set; -+ struct ctl_table_set *(*lookup)(struct ctl_table_root *root, -+ struct nsproxy *namespaces); -+ int (*permissions)(struct ctl_table_root *root, -+ struct nsproxy *namespaces, struct ctl_table *table); -+}; -+ -+ -+ -+struct ctl_table_header -+{ -+ struct ctl_table *ctl_table; -+ struct list_head ctl_entry; -+ int used; -+ int count; -+ struct completion *unregistering; -+ struct ctl_table *ctl_table_arg; -+ struct ctl_table_root *root; -+ struct ctl_table_set *set; -+ struct ctl_table *attached_by; -+ struct ctl_table *attached_to; -+ struct ctl_table_header *parent; -+}; -+ -+ -+struct ctl_path { -+ const char *procname; -+ int ctl_name; -+}; -+ -+void register_sysctl_root(struct ctl_table_root *root); -+struct ctl_table_header *__register_sysctl_paths( -+ struct ctl_table_root *root, struct nsproxy *namespaces, -+ const struct ctl_path *path, struct ctl_table *table); -+struct ctl_table_header *register_sysctl_table(struct ctl_table * table); -+struct ctl_table_header *register_sysctl_paths(const struct ctl_path *path, -+ struct ctl_table *table); -+ -+void unregister_sysctl_table(struct ctl_table_header * table); -+int sysctl_check_table(struct nsproxy *namespaces, struct ctl_table *table); -+# 355 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h" 2 -+extern struct ratelimit_state net_ratelimit_state; -+# 26 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h" 1 -+ -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" 1 -+# 10 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/stat.h" 1 -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/stat.h" 1 -+ -+ -+ -+ -+ -+ -+struct stat { -+ unsigned long st_dev; -+ unsigned long st_ino; -+ unsigned short st_mode; -+ unsigned short st_nlink; -+ unsigned short st_uid; -+ unsigned short st_gid; -+ unsigned long st_rdev; -+ unsigned long st_size; -+ unsigned long st_blksize; -+ unsigned long st_blocks; -+ unsigned long st_atime; -+ unsigned long st_atime_nsec; -+ unsigned long st_mtime; -+ unsigned long st_mtime_nsec; -+ unsigned long st_ctime; -+ unsigned long st_ctime_nsec; -+ unsigned long __unused4; -+ unsigned long __unused5; -+}; -+ -+ -+ -+ -+ -+ -+struct stat64 { -+ unsigned long long st_dev; -+ unsigned char __pad0[4]; -+ -+ unsigned long __st_ino; -+ -+ unsigned int st_mode; -+ unsigned int st_nlink; -+ -+ unsigned long st_uid; -+ unsigned long st_gid; -+ -+ unsigned long long st_rdev; -+ unsigned char __pad3[4]; -+ -+ long long st_size; -+ unsigned long st_blksize; -+ -+ -+ unsigned long long st_blocks; -+ -+ unsigned long st_atime; -+ unsigned long st_atime_nsec; -+ -+ unsigned long st_mtime; -+ unsigned int st_mtime_nsec; -+ -+ unsigned long st_ctime; -+ unsigned long st_ctime_nsec; -+ -+ unsigned long long st_ino; -+}; -+# 93 "/d/kernels/linux-2.6.27.10-clickport/include/asm/stat.h" -+struct __old_kernel_stat { -+ unsigned short st_dev; -+ unsigned short st_ino; -+ unsigned short st_mode; -+ unsigned short st_nlink; -+ unsigned short st_uid; -+ unsigned short st_gid; -+ unsigned short st_rdev; -+ -+ unsigned long st_size; -+ unsigned long st_atime; -+ unsigned long st_mtime; -+ unsigned long st_ctime; -+ -+ -+ -+ -+ -+ -+}; -+# 7 "/d/kernels/linux-2.6.27.10-clickport/include/linux/stat.h" 2 -+# 62 "/d/kernels/linux-2.6.27.10-clickport/include/linux/stat.h" -+struct kstat { -+ u64 ino; -+ dev_t dev; -+ umode_t mode; -+ unsigned int nlink; -+ uid_t uid; -+ gid_t gid; -+ tag_t tag; -+ dev_t rdev; -+ loff_t size; -+ struct timespec atime; -+ struct timespec mtime; -+ struct timespec ctime; -+ unsigned long blksize; -+ unsigned long long blocks; -+}; -+# 11 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" 2 -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h" 1 -+# 22 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" 1 -+# 13 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/numa.h" 1 -+# 14 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" 2 -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h" 1 -+# 92 "/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h" -+typedef struct { unsigned long bits[((((1 << 0)) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; } nodemask_t; -+extern nodemask_t _unused_nodemask_arg_; -+ -+ -+static inline __attribute__((always_inline)) void __node_set(int node, volatile nodemask_t *dstp) -+{ -+ set_bit(node, dstp->bits); -+} -+ -+ -+static inline __attribute__((always_inline)) void __node_clear(int node, volatile nodemask_t *dstp) -+{ -+ clear_bit(node, dstp->bits); -+} -+ -+ -+static inline __attribute__((always_inline)) void __nodes_setall(nodemask_t *dstp, int nbits) -+{ -+ bitmap_fill(dstp->bits, nbits); -+} -+ -+ -+static inline __attribute__((always_inline)) void __nodes_clear(nodemask_t *dstp, int nbits) -+{ -+ bitmap_zero(dstp->bits, nbits); -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int __node_test_and_set(int node, nodemask_t *addr) -+{ -+ return test_and_set_bit(node, addr->bits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) void __nodes_and(nodemask_t *dstp, const nodemask_t *src1p, -+ const nodemask_t *src2p, int nbits) -+{ -+ bitmap_and(dstp->bits, src1p->bits, src2p->bits, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) void __nodes_or(nodemask_t *dstp, const nodemask_t *src1p, -+ const nodemask_t *src2p, int nbits) -+{ -+ bitmap_or(dstp->bits, src1p->bits, src2p->bits, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) void __nodes_xor(nodemask_t *dstp, const nodemask_t *src1p, -+ const nodemask_t *src2p, int nbits) -+{ -+ bitmap_xor(dstp->bits, src1p->bits, src2p->bits, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) void __nodes_andnot(nodemask_t *dstp, const nodemask_t *src1p, -+ const nodemask_t *src2p, int nbits) -+{ -+ bitmap_andnot(dstp->bits, src1p->bits, src2p->bits, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) void __nodes_complement(nodemask_t *dstp, -+ const nodemask_t *srcp, int nbits) -+{ -+ bitmap_complement(dstp->bits, srcp->bits, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) int __nodes_equal(const nodemask_t *src1p, -+ const nodemask_t *src2p, int nbits) -+{ -+ return bitmap_equal(src1p->bits, src2p->bits, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) int __nodes_intersects(const nodemask_t *src1p, -+ const nodemask_t *src2p, int nbits) -+{ -+ return bitmap_intersects(src1p->bits, src2p->bits, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) int __nodes_subset(const nodemask_t *src1p, -+ const nodemask_t *src2p, int nbits) -+{ -+ return bitmap_subset(src1p->bits, src2p->bits, nbits); -+} -+ -+ -+static inline __attribute__((always_inline)) int __nodes_empty(const nodemask_t *srcp, int nbits) -+{ -+ return bitmap_empty(srcp->bits, nbits); -+} -+ -+ -+static inline __attribute__((always_inline)) int __nodes_full(const nodemask_t *srcp, int nbits) -+{ -+ return bitmap_full(srcp->bits, nbits); -+} -+ -+ -+static inline __attribute__((always_inline)) int __nodes_weight(const nodemask_t *srcp, int nbits) -+{ -+ return bitmap_weight(srcp->bits, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) void __nodes_shift_right(nodemask_t *dstp, -+ const nodemask_t *srcp, int n, int nbits) -+{ -+ bitmap_shift_right(dstp->bits, srcp->bits, n, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) void __nodes_shift_left(nodemask_t *dstp, -+ const nodemask_t *srcp, int n, int nbits) -+{ -+ bitmap_shift_left(dstp->bits, srcp->bits, n, nbits); -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int __first_node(const nodemask_t *srcp) -+{ -+ return ({ int __min1 = ((1 << 0)); int __min2 = (find_first_bit(srcp->bits, (1 << 0))); __min1 < __min2 ? __min1: __min2; }); -+} -+ -+ -+static inline __attribute__((always_inline)) int __next_node(int n, const nodemask_t *srcp) -+{ -+ return ({ int __min1 = ((1 << 0)); int __min2 = (find_next_bit(srcp->bits, (1 << 0), n+1)); __min1 < __min2 ? __min1: __min2; }); -+} -+# 255 "/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h" -+static inline __attribute__((always_inline)) int __first_unset_node(const nodemask_t *maskp) -+{ -+ return ({ int __min1 = ((1 << 0)); int __min2 = (find_first_zero_bit(maskp->bits, (1 << 0))); __min1 < __min2 ? __min1: __min2; }); -+ -+} -+# 289 "/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h" -+static inline __attribute__((always_inline)) int __nodemask_scnprintf(char *buf, int len, -+ const nodemask_t *srcp, int nbits) -+{ -+ return bitmap_scnprintf(buf, len, srcp->bits, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) int __nodemask_parse_user(const char *buf, int len, -+ nodemask_t *dstp, int nbits) -+{ -+ return bitmap_parse_user(buf, len, dstp->bits, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) int __nodelist_scnprintf(char *buf, int len, -+ const nodemask_t *srcp, int nbits) -+{ -+ return bitmap_scnlistprintf(buf, len, srcp->bits, nbits); -+} -+ -+ -+static inline __attribute__((always_inline)) int __nodelist_parse(const char *buf, nodemask_t *dstp, int nbits) -+{ -+ return bitmap_parselist(buf, dstp->bits, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) int __node_remap(int oldbit, -+ const nodemask_t *oldp, const nodemask_t *newp, int nbits) -+{ -+ return bitmap_bitremap(oldbit, oldp->bits, newp->bits, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) void __nodes_remap(nodemask_t *dstp, const nodemask_t *srcp, -+ const nodemask_t *oldp, const nodemask_t *newp, int nbits) -+{ -+ bitmap_remap(dstp->bits, srcp->bits, oldp->bits, newp->bits, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) void __nodes_onto(nodemask_t *dstp, const nodemask_t *origp, -+ const nodemask_t *relmapp, int nbits) -+{ -+ bitmap_onto(dstp->bits, origp->bits, relmapp->bits, nbits); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) void __nodes_fold(nodemask_t *dstp, const nodemask_t *origp, -+ int sz, int nbits) -+{ -+ bitmap_fold(dstp->bits, origp->bits, sz, nbits); -+} -+# 363 "/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h" -+enum node_states { -+ N_POSSIBLE, -+ N_ONLINE, -+ N_NORMAL_MEMORY, -+ -+ N_HIGH_MEMORY, -+ -+ -+ -+ N_CPU, -+ NR_NODE_STATES -+}; -+ -+ -+ -+ -+ -+ -+extern nodemask_t node_states[NR_NODE_STATES]; -+# 413 "/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h" -+static inline __attribute__((always_inline)) int node_state(int node, enum node_states state) -+{ -+ return node == 0; -+} -+ -+static inline __attribute__((always_inline)) void node_set_state(int node, enum node_states state) -+{ -+} -+ -+static inline __attribute__((always_inline)) void node_clear_state(int node, enum node_states state) -+{ -+} -+ -+static inline __attribute__((always_inline)) int num_node_state(enum node_states state) -+{ -+ return 1; -+} -+# 17 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pageblock-flags.h" 1 -+# 29 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pageblock-flags.h" -+enum pageblock_bits { -+ PB_migrate, -+ PB_migrate_end = PB_migrate + 3 - 1, -+ -+ NR_PAGEBLOCK_BITS -+}; -+# 60 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pageblock-flags.h" -+struct page; -+ -+ -+unsigned long get_pageblock_flags_group(struct page *page, -+ int start_bitidx, int end_bitidx); -+void set_pageblock_flags_group(struct page *page, unsigned long flags, -+ int start_bitidx, int end_bitidx); -+# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/bounds.h" 1 -+# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1 -+# 20 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" 2 -+# 49 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+extern int page_group_by_mobility_disabled; -+ -+static inline __attribute__((always_inline)) int get_pageblock_migratetype(struct page *page) -+{ -+ if (__builtin_expect(!!(page_group_by_mobility_disabled), 0)) -+ return 0; -+ -+ return get_pageblock_flags_group(page, PB_migrate, PB_migrate_end); -+} -+ -+struct free_area { -+ struct list_head free_list[5]; -+ unsigned long nr_free; -+}; -+ -+struct pglist_data; -+# 73 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+struct zone_padding { -+ char x[0]; -+} __attribute__((__aligned__(1 << ((7))))); -+ -+ -+ -+ -+ -+enum zone_stat_item { -+ -+ NR_FREE_PAGES, -+ NR_INACTIVE, -+ NR_ACTIVE, -+ NR_ANON_PAGES, -+ NR_FILE_MAPPED, -+ -+ NR_FILE_PAGES, -+ NR_FILE_DIRTY, -+ NR_WRITEBACK, -+ -+ NR_SLAB_RECLAIMABLE, -+ NR_SLAB_UNRECLAIMABLE, -+ NR_PAGETABLE, -+ NR_UNSTABLE_NFS, -+ NR_BOUNCE, -+ NR_VMSCAN_WRITE, -+ NR_WRITEBACK_TEMP, -+# 108 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+ NR_VM_ZONE_STAT_ITEMS }; -+ -+struct per_cpu_pages { -+ int count; -+ int high; -+ int batch; -+ struct list_head list; -+}; -+ -+struct per_cpu_pageset { -+ struct per_cpu_pages pcp; -+ -+ -+ -+ -+ s8 stat_threshold; -+ s8 vm_stat_diff[NR_VM_ZONE_STAT_ITEMS]; -+ -+} __attribute__((__aligned__((1 << (7))))); -+# 136 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+enum zone_type { -+# 156 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+ ZONE_DMA, -+# 171 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+ ZONE_NORMAL, -+# 181 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+ ZONE_HIGHMEM, -+ -+ ZONE_MOVABLE, -+ __MAX_NR_ZONES -+}; -+# 207 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+struct zone { -+ -+ unsigned long pages_min, pages_low, pages_high; -+# 218 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+ unsigned long lowmem_reserve[4]; -+# 229 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+ struct per_cpu_pageset pageset[32]; -+ -+ -+ -+ -+ spinlock_t lock; -+ -+ -+ -+ -+ struct free_area free_area[11]; -+ -+ -+ -+ -+ -+ -+ unsigned long *pageblock_flags; -+ -+ -+ -+ struct zone_padding _pad1_; -+ -+ -+ spinlock_t lru_lock; -+ struct list_head active_list; -+ struct list_head inactive_list; -+ unsigned long nr_scan_active; -+ unsigned long nr_scan_inactive; -+ unsigned long pages_scanned; -+ unsigned long flags; -+ -+ -+ atomic_long_t vm_stat[NR_VM_ZONE_STAT_ITEMS]; -+# 277 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+ int prev_priority; -+ -+ -+ struct zone_padding _pad2_; -+# 307 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+ wait_queue_head_t * wait_table; -+ unsigned long wait_table_hash_nr_entries; -+ unsigned long wait_table_bits; -+ -+ -+ -+ -+ struct pglist_data *zone_pgdat; -+ -+ unsigned long zone_start_pfn; -+# 328 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+ unsigned long spanned_pages; -+ unsigned long present_pages; -+ -+ -+ -+ -+ const char *name; -+} __attribute__((__aligned__(1 << ((7))))); -+ -+typedef enum { -+ ZONE_ALL_UNRECLAIMABLE, -+ ZONE_RECLAIM_LOCKED, -+ ZONE_OOM_LOCKED, -+} zone_flags_t; -+ -+static inline __attribute__((always_inline)) void zone_set_flag(struct zone *zone, zone_flags_t flag) -+{ -+ set_bit(flag, &zone->flags); -+} -+ -+static inline __attribute__((always_inline)) int zone_test_and_set_flag(struct zone *zone, zone_flags_t flag) -+{ -+ return test_and_set_bit(flag, &zone->flags); -+} -+ -+static inline __attribute__((always_inline)) void zone_clear_flag(struct zone *zone, zone_flags_t flag) -+{ -+ clear_bit(flag, &zone->flags); -+} -+ -+static inline __attribute__((always_inline)) int zone_is_all_unreclaimable(const struct zone *zone) -+{ -+ return (__builtin_constant_p((ZONE_ALL_UNRECLAIMABLE)) ? constant_test_bit((ZONE_ALL_UNRECLAIMABLE), (&zone->flags)) : variable_test_bit((ZONE_ALL_UNRECLAIMABLE), (&zone->flags))); -+} -+ -+static inline __attribute__((always_inline)) int zone_is_reclaim_locked(const struct zone *zone) -+{ -+ return (__builtin_constant_p((ZONE_RECLAIM_LOCKED)) ? constant_test_bit((ZONE_RECLAIM_LOCKED), (&zone->flags)) : variable_test_bit((ZONE_RECLAIM_LOCKED), (&zone->flags))); -+} -+ -+static inline __attribute__((always_inline)) int zone_is_oom_locked(const struct zone *zone) -+{ -+ return (__builtin_constant_p((ZONE_OOM_LOCKED)) ? constant_test_bit((ZONE_OOM_LOCKED), (&zone->flags)) : variable_test_bit((ZONE_OOM_LOCKED), (&zone->flags))); -+} -+# 461 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+struct zonelist_cache; -+ -+ -+ -+ -+ -+ -+struct zoneref { -+ struct zone *zone; -+ int zone_idx; -+}; -+# 490 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+struct zonelist { -+ struct zonelist_cache *zlcache_ptr; -+ struct zoneref _zonerefs[((1 << 0) * 4) + 1]; -+ -+ -+ -+}; -+ -+ -+struct node_active_region { -+ unsigned long start_pfn; -+ unsigned long end_pfn; -+ int nid; -+}; -+ -+ -+ -+ -+extern struct page *mem_map; -+# 522 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+struct bootmem_data; -+typedef struct pglist_data { -+ struct zone node_zones[4]; -+ struct zonelist node_zonelists[1]; -+ int nr_zones; -+ -+ struct page *node_mem_map; -+ -+ struct bootmem_data *bdata; -+# 541 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+ unsigned long node_start_pfn; -+ unsigned long node_present_pages; -+ unsigned long node_spanned_pages; -+ -+ int node_id; -+ wait_queue_head_t kswapd_wait; -+ struct task_struct *kswapd; -+ int kswapd_max_order; -+} pg_data_t; -+# 560 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" 1 -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h" 1 -+# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/errno.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/errno.h" 1 -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/errno.h" 2 -+# 13 "/d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mutex.h" 1 -+# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mutex.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1 -+# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mutex.h" 2 -+# 48 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mutex.h" -+struct mutex { -+ -+ atomic_t count; -+ spinlock_t wait_lock; -+ struct list_head wait_list; -+# 61 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mutex.h" -+}; -+ -+ -+ -+ -+ -+struct mutex_waiter { -+ struct list_head list; -+ struct task_struct *task; -+ -+ -+ -+ -+}; -+# 106 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mutex.h" -+extern void __mutex_init(struct mutex *lock, const char *name, -+ struct lock_class_key *key); -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int mutex_is_locked(struct mutex *lock) -+{ -+ return ((&lock->count)->counter) != 1; -+} -+# 135 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mutex.h" -+extern void mutex_lock(struct mutex *lock); -+extern int __attribute__((warn_unused_result)) mutex_lock_interruptible(struct mutex *lock); -+extern int __attribute__((warn_unused_result)) mutex_lock_killable(struct mutex *lock); -+# 148 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mutex.h" -+extern int mutex_trylock(struct mutex *lock); -+extern void mutex_unlock(struct mutex *lock); -+# 14 "/d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h" 1 -+# 15 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1 -+# 16 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h" 2 -+ -+struct rw_semaphore; -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h" 1 -+# 45 "/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h" -+struct rwsem_waiter; -+ -+extern __attribute__((regparm(3))) struct rw_semaphore * -+ rwsem_down_read_failed(struct rw_semaphore *sem); -+extern __attribute__((regparm(3))) struct rw_semaphore * -+ rwsem_down_write_failed(struct rw_semaphore *sem); -+extern __attribute__((regparm(3))) struct rw_semaphore * -+ rwsem_wake(struct rw_semaphore *); -+extern __attribute__((regparm(3))) struct rw_semaphore * -+ rwsem_downgrade_wake(struct rw_semaphore *sem); -+# 67 "/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h" -+struct rw_semaphore { -+ signed long count; -+ spinlock_t wait_lock; -+ struct list_head wait_list; -+ -+ -+ -+}; -+# 92 "/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h" -+extern void __init_rwsem(struct rw_semaphore *sem, const char *name, -+ struct lock_class_key *key); -+# 105 "/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h" -+static inline __attribute__((always_inline)) void __down_read(struct rw_semaphore *sem) -+{ -+ asm volatile("# beginning down_read\n\t" -+ "lock ; " " incl (%%eax)\n\t" -+ -+ " jns 1f\n" -+ " call call_rwsem_down_read_failed\n" -+ "1:\n\t" -+ "# ending down_read\n\t" -+ : "+m" (sem->count) -+ : "a" (sem) -+ : "memory", "cc"); -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int __down_read_trylock(struct rw_semaphore *sem) -+{ -+ __s32 result, tmp; -+ asm volatile("# beginning __down_read_trylock\n\t" -+ " movl %0,%1\n\t" -+ "1:\n\t" -+ " movl %1,%2\n\t" -+ " addl %3,%2\n\t" -+ " jle 2f\n\t" -+ "lock ; " " cmpxchgl %2,%0\n\t" -+ " jnz 1b\n\t" -+ "2:\n\t" -+ "# ending __down_read_trylock\n\t" -+ : "+m" (sem->count), "=&a" (result), "=&r" (tmp) -+ : "i" (0x00000001) -+ : "memory", "cc"); -+ return result >= 0 ? 1 : 0; -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void __down_write_nested(struct rw_semaphore *sem, int subclass) -+{ -+ int tmp; -+ -+ tmp = ((-0x00010000) + 0x00000001); -+ asm volatile("# beginning down_write\n\t" -+ "lock ; " " xadd %%edx,(%%eax)\n\t" -+ -+ " testl %%edx,%%edx\n\t" -+ -+ " jz 1f\n" -+ " call call_rwsem_down_write_failed\n" -+ "1:\n" -+ "# ending down_write" -+ : "+m" (sem->count), "=d" (tmp) -+ : "a" (sem), "1" (tmp) -+ : "memory", "cc"); -+} -+ -+static inline __attribute__((always_inline)) void __down_write(struct rw_semaphore *sem) -+{ -+ __down_write_nested(sem, 0); -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int __down_write_trylock(struct rw_semaphore *sem) -+{ -+ signed long ret = ((__typeof__(*(&sem->count)))__cmpxchg((&sem->count), (unsigned long)(0x00000000), (unsigned long)(((-0x00010000) + 0x00000001)), sizeof(*(&sem->count)))); -+ -+ -+ if (ret == 0x00000000) -+ return 1; -+ return 0; -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void __up_read(struct rw_semaphore *sem) -+{ -+ __s32 tmp = -0x00000001; -+ asm volatile("# beginning __up_read\n\t" -+ "lock ; " " xadd %%edx,(%%eax)\n\t" -+ -+ " jns 1f\n\t" -+ " call call_rwsem_wake\n" -+ "1:\n" -+ "# ending __up_read\n" -+ : "+m" (sem->count), "=d" (tmp) -+ : "a" (sem), "1" (tmp) -+ : "memory", "cc"); -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void __up_write(struct rw_semaphore *sem) -+{ -+ asm volatile("# beginning __up_write\n\t" -+ " movl %2,%%edx\n\t" -+ "lock ; " " xaddl %%edx,(%%eax)\n\t" -+ -+ -+ " jz 1f\n" -+ " call call_rwsem_wake\n" -+ "1:\n\t" -+ "# ending __up_write\n" -+ : "+m" (sem->count) -+ : "a" (sem), "i" (-((-0x00010000) + 0x00000001)) -+ : "memory", "cc", "edx"); -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void __downgrade_write(struct rw_semaphore *sem) -+{ -+ asm volatile("# beginning __downgrade_write\n\t" -+ "lock ; " " addl %2,(%%eax)\n\t" -+ -+ " jns 1f\n\t" -+ " call call_rwsem_downgrade_wake\n" -+ "1:\n\t" -+ "# ending __downgrade_write\n" -+ : "+m" (sem->count) -+ : "a" (sem), "i" (-(-0x00010000)) -+ : "memory", "cc"); -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void rwsem_atomic_add(int delta, struct rw_semaphore *sem) -+{ -+ asm volatile("lock ; " "addl %1,%0" -+ : "+m" (sem->count) -+ : "ir" (delta)); -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int rwsem_atomic_update(int delta, struct rw_semaphore *sem) -+{ -+ int tmp = delta; -+ -+ asm volatile("lock ; " "xadd %0,%1" -+ : "+r" (tmp), "+m" (sem->count) -+ : : "memory"); -+ -+ return tmp + delta; -+} -+ -+static inline __attribute__((always_inline)) int rwsem_is_locked(struct rw_semaphore *sem) -+{ -+ return (sem->count != 0); -+} -+# 23 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h" 2 -+ -+ -+ -+ -+ -+extern void down_read(struct rw_semaphore *sem); -+ -+ -+ -+ -+extern int down_read_trylock(struct rw_semaphore *sem); -+ -+ -+ -+ -+extern void down_write(struct rw_semaphore *sem); -+ -+ -+ -+ -+extern int down_write_trylock(struct rw_semaphore *sem); -+ -+ -+ -+ -+extern void up_read(struct rw_semaphore *sem); -+ -+ -+ -+ -+extern void up_write(struct rw_semaphore *sem); -+ -+ -+ -+ -+extern void downgrade_write(struct rw_semaphore *sem); -+# 15 "/d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/srcu.h" 1 -+# 30 "/d/kernels/linux-2.6.27.10-clickport/include/linux/srcu.h" -+struct srcu_struct_array { -+ int c[2]; -+}; -+ -+struct srcu_struct { -+ int completed; -+ struct srcu_struct_array *per_cpu_ref; -+ struct mutex mutex; -+}; -+ -+ -+ -+ -+ -+ -+ -+int init_srcu_struct(struct srcu_struct *sp); -+void cleanup_srcu_struct(struct srcu_struct *sp); -+int srcu_read_lock(struct srcu_struct *sp) ; -+void srcu_read_unlock(struct srcu_struct *sp, int idx) ; -+void synchronize_srcu(struct srcu_struct *sp); -+long srcu_batches_completed(struct srcu_struct *sp); -+# 16 "/d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h" 2 -+# 50 "/d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h" -+struct notifier_block { -+ int (*notifier_call)(struct notifier_block *, unsigned long, void *); -+ struct notifier_block *next; -+ int priority; -+}; -+ -+struct atomic_notifier_head { -+ spinlock_t lock; -+ struct notifier_block *head; -+}; -+ -+struct blocking_notifier_head { -+ struct rw_semaphore rwsem; -+ struct notifier_block *head; -+}; -+ -+struct raw_notifier_head { -+ struct notifier_block *head; -+}; -+ -+struct srcu_notifier_head { -+ struct mutex mutex; -+ struct srcu_struct srcu; -+ struct notifier_block *head; -+}; -+# 89 "/d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h" -+extern void srcu_init_notifier_head(struct srcu_notifier_head *nh); -+# 115 "/d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h" -+extern int atomic_notifier_chain_register(struct atomic_notifier_head *nh, -+ struct notifier_block *nb); -+extern int blocking_notifier_chain_register(struct blocking_notifier_head *nh, -+ struct notifier_block *nb); -+extern int raw_notifier_chain_register(struct raw_notifier_head *nh, -+ struct notifier_block *nb); -+extern int srcu_notifier_chain_register(struct srcu_notifier_head *nh, -+ struct notifier_block *nb); -+ -+extern int blocking_notifier_chain_cond_register( -+ struct blocking_notifier_head *nh, -+ struct notifier_block *nb); -+ -+extern int atomic_notifier_chain_unregister(struct atomic_notifier_head *nh, -+ struct notifier_block *nb); -+extern int blocking_notifier_chain_unregister(struct blocking_notifier_head *nh, -+ struct notifier_block *nb); -+extern int raw_notifier_chain_unregister(struct raw_notifier_head *nh, -+ struct notifier_block *nb); -+extern int srcu_notifier_chain_unregister(struct srcu_notifier_head *nh, -+ struct notifier_block *nb); -+ -+extern int atomic_notifier_call_chain(struct atomic_notifier_head *nh, -+ unsigned long val, void *v); -+extern int __atomic_notifier_call_chain(struct atomic_notifier_head *nh, -+ unsigned long val, void *v, int nr_to_call, int *nr_calls); -+extern int blocking_notifier_call_chain(struct blocking_notifier_head *nh, -+ unsigned long val, void *v); -+extern int __blocking_notifier_call_chain(struct blocking_notifier_head *nh, -+ unsigned long val, void *v, int nr_to_call, int *nr_calls); -+extern int raw_notifier_call_chain(struct raw_notifier_head *nh, -+ unsigned long val, void *v); -+extern int __raw_notifier_call_chain(struct raw_notifier_head *nh, -+ unsigned long val, void *v, int nr_to_call, int *nr_calls); -+extern int srcu_notifier_call_chain(struct srcu_notifier_head *nh, -+ unsigned long val, void *v); -+extern int __srcu_notifier_call_chain(struct srcu_notifier_head *nh, -+ unsigned long val, void *v, int nr_to_call, int *nr_calls); -+# 165 "/d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h" -+static inline __attribute__((always_inline)) int notifier_from_errno(int err) -+{ -+ return 0x8000 | (0x0001 - err); -+} -+ -+ -+static inline __attribute__((always_inline)) int notifier_to_errno(int ret) -+{ -+ ret &= ~0x8000; -+ return ret > 0x0001 ? 0x0001 - ret : 0; -+} -+# 250 "/d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h" -+extern struct blocking_notifier_head reboot_notifier_list; -+# 7 "/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h" 2 -+ -+struct page; -+struct zone; -+struct pglist_data; -+struct mem_section; -+# 165 "/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h" -+static inline __attribute__((always_inline)) void pgdat_resize_lock(struct pglist_data *p, unsigned long *f) {} -+static inline __attribute__((always_inline)) void pgdat_resize_unlock(struct pglist_data *p, unsigned long *f) {} -+static inline __attribute__((always_inline)) void pgdat_resize_init(struct pglist_data *pgdat) {} -+ -+static inline __attribute__((always_inline)) unsigned zone_span_seqbegin(struct zone *zone) -+{ -+ return 0; -+} -+static inline __attribute__((always_inline)) int zone_span_seqretry(struct zone *zone, unsigned iv) -+{ -+ return 0; -+} -+static inline __attribute__((always_inline)) void zone_span_writelock(struct zone *zone) {} -+static inline __attribute__((always_inline)) void zone_span_writeunlock(struct zone *zone) {} -+static inline __attribute__((always_inline)) void zone_seqlock_init(struct zone *zone) {} -+ -+static inline __attribute__((always_inline)) int mhp_notimplemented(const char *func) -+{ -+ printk("<4>" "%s() called, with CONFIG_MEMORY_HOTPLUG disabled\n", func); -+ dump_stack(); -+ return -38; -+} -+ -+static inline __attribute__((always_inline)) void register_page_bootmem_info_node(struct pglist_data *pgdat) -+{ -+} -+ -+ -+ -+ -+ -+ -+ -+extern int walk_memory_resource(unsigned long start_pfn, -+ unsigned long nr_pages, void *arg, -+ int (*func)(unsigned long, unsigned long, void *)); -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int is_mem_section_removable(unsigned long pfn, -+ unsigned long nr_pages) -+{ -+ return 0; -+} -+ -+ -+extern int add_memory(int nid, u64 start, u64 size); -+extern int arch_add_memory(int nid, u64 start, u64 size); -+extern int remove_memory(u64 start, u64 size); -+extern int sparse_add_one_section(struct zone *zone, unsigned long start_pfn, -+ int nr_pages); -+extern void sparse_remove_one_section(struct zone *zone, struct mem_section *ms); -+extern struct page *sparse_decode_mem_map(unsigned long coded_mem_map, -+ unsigned long pnum); -+# 561 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" 2 -+ -+void get_zone_counts(unsigned long *active, unsigned long *inactive, -+ unsigned long *free); -+void build_all_zonelists(void); -+void wakeup_kswapd(struct zone *zone, int order); -+int zone_watermark_ok(struct zone *z, int order, unsigned long mark, -+ int classzone_idx, int alloc_flags); -+enum memmap_context { -+ MEMMAP_EARLY, -+ MEMMAP_HOTPLUG, -+}; -+extern int init_currently_empty_zone(struct zone *zone, unsigned long start_pfn, -+ unsigned long size, -+ enum memmap_context context); -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void memory_present(int nid, unsigned long start, unsigned long end) {} -+# 591 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+static inline __attribute__((always_inline)) int populated_zone(struct zone *zone) -+{ -+ return (!!zone->present_pages); -+} -+ -+extern int movable_zone; -+ -+static inline __attribute__((always_inline)) int zone_movable_is_highmem(void) -+{ -+ -+ return movable_zone == ZONE_HIGHMEM; -+ -+ -+ -+} -+ -+static inline __attribute__((always_inline)) int is_highmem_idx(enum zone_type idx) -+{ -+ -+ return (idx == ZONE_HIGHMEM || -+ (idx == ZONE_MOVABLE && zone_movable_is_highmem())); -+ -+ -+ -+} -+ -+static inline __attribute__((always_inline)) int is_normal_idx(enum zone_type idx) -+{ -+ return (idx == ZONE_NORMAL); -+} -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int is_highmem(struct zone *zone) -+{ -+ -+ int zone_off = (char *)zone - (char *)zone->zone_pgdat->node_zones; -+ return zone_off == ZONE_HIGHMEM * sizeof(*zone) || -+ (zone_off == ZONE_MOVABLE * sizeof(*zone) && -+ zone_movable_is_highmem()); -+ -+ -+ -+} -+ -+static inline __attribute__((always_inline)) int is_normal(struct zone *zone) -+{ -+ return zone == zone->zone_pgdat->node_zones + ZONE_NORMAL; -+} -+ -+static inline __attribute__((always_inline)) int is_dma32(struct zone *zone) -+{ -+ -+ -+ -+ return 0; -+ -+} -+ -+static inline __attribute__((always_inline)) int is_dma(struct zone *zone) -+{ -+ -+ return zone == zone->zone_pgdat->node_zones + ZONE_DMA; -+ -+ -+ -+} -+ -+ -+struct ctl_table; -+struct file; -+int min_free_kbytes_sysctl_handler(struct ctl_table *, int, struct file *, -+ void *, size_t *, loff_t *); -+extern int sysctl_lowmem_reserve_ratio[4 -1]; -+int lowmem_reserve_ratio_sysctl_handler(struct ctl_table *, int, struct file *, -+ void *, size_t *, loff_t *); -+int percpu_pagelist_fraction_sysctl_handler(struct ctl_table *, int, struct file *, -+ void *, size_t *, loff_t *); -+int sysctl_min_unmapped_ratio_sysctl_handler(struct ctl_table *, int, -+ struct file *, void *, size_t *, loff_t *); -+int sysctl_min_slab_ratio_sysctl_handler(struct ctl_table *, int, -+ struct file *, void *, size_t *, loff_t *); -+ -+extern int numa_zonelist_order_handler(struct ctl_table *, int, -+ struct file *, void *, size_t *, loff_t *); -+extern char numa_zonelist_order[]; -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h" 1 -+# 33 "/d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h" 1 -+# 13 "/d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h" -+extern void cpu_idle(void); -+ -+struct call_single_data { -+ struct list_head list; -+ void (*func) (void *info); -+ void *info; -+ unsigned int flags; -+}; -+ -+ -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h" 1 -+# 12 "/d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mpspec.h" 1 -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mpspec_def.h" 1 -+# 27 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mpspec_def.h" -+struct intel_mp_floating { -+ char mpf_signature[4]; -+ unsigned int mpf_physptr; -+ unsigned char mpf_length; -+ unsigned char mpf_specification; -+ unsigned char mpf_checksum; -+ unsigned char mpf_feature1; -+ unsigned char mpf_feature2; -+ unsigned char mpf_feature3; -+ unsigned char mpf_feature4; -+ unsigned char mpf_feature5; -+}; -+ -+ -+ -+struct mp_config_table { -+ char mpc_signature[4]; -+ unsigned short mpc_length; -+ char mpc_spec; -+ char mpc_checksum; -+ char mpc_oem[8]; -+ char mpc_productid[12]; -+ unsigned int mpc_oemptr; -+ unsigned short mpc_oemsize; -+ unsigned short mpc_oemcount; -+ unsigned int mpc_lapic; -+ unsigned int reserved; -+}; -+# 73 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mpspec_def.h" -+struct mpc_config_processor { -+ unsigned char mpc_type; -+ unsigned char mpc_apicid; -+ unsigned char mpc_apicver; -+ unsigned char mpc_cpuflag; -+ unsigned int mpc_cpufeature; -+ unsigned int mpc_featureflag; -+ unsigned int mpc_reserved[2]; -+}; -+ -+struct mpc_config_bus { -+ unsigned char mpc_type; -+ unsigned char mpc_busid; -+ unsigned char mpc_bustype[6]; -+}; -+# 111 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mpspec_def.h" -+struct mpc_config_ioapic { -+ unsigned char mpc_type; -+ unsigned char mpc_apicid; -+ unsigned char mpc_apicver; -+ unsigned char mpc_flags; -+ unsigned int mpc_apicaddr; -+}; -+ -+struct mpc_config_intsrc { -+ unsigned char mpc_type; -+ unsigned char mpc_irqtype; -+ unsigned short mpc_irqflag; -+ unsigned char mpc_srcbus; -+ unsigned char mpc_srcbusirq; -+ unsigned char mpc_dstapic; -+ unsigned char mpc_dstirq; -+}; -+ -+enum mp_irq_source_types { -+ mp_INT = 0, -+ mp_NMI = 1, -+ mp_SMI = 2, -+ mp_ExtINT = 3 -+}; -+ -+ -+ -+ -+ -+ -+ -+struct mpc_config_lintsrc { -+ unsigned char mpc_type; -+ unsigned char mpc_irqtype; -+ unsigned short mpc_irqflag; -+ unsigned char mpc_srcbusid; -+ unsigned char mpc_srcbusirq; -+ unsigned char mpc_destapic; -+ unsigned char mpc_destapiclint; -+}; -+ -+ -+ -+struct mp_config_oemtable { -+ char oem_signature[4]; -+ unsigned short oem_length; -+ char oem_rev; -+ char oem_checksum; -+ char mpc_oem[8]; -+}; -+# 174 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mpspec_def.h" -+enum mp_bustype { -+ MP_BUS_ISA = 1, -+ MP_BUS_EISA, -+ MP_BUS_PCI, -+ MP_BUS_MCA, -+}; -+# 7 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mpspec.h" 2 -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mach-default/mach_mpspec.h" 1 -+# 10 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mpspec.h" 2 -+ -+extern unsigned int def_to_bigsmp; -+extern int apic_version[256]; -+extern u8 apicid_2_node[]; -+extern int pic_mode; -+# 32 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mpspec.h" -+extern void early_find_smp_config(void); -+extern void early_get_smp_config(void); -+ -+ -+ -+ -+ -+extern unsigned long mp_bus_not_pci[(((256) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; -+ -+extern unsigned int boot_cpu_physical_apicid; -+extern unsigned int max_physical_apicid; -+extern int smp_found_config; -+extern int mpc_default_type; -+extern unsigned long mp_lapic_addr; -+ -+extern void find_smp_config(void); -+extern void get_smp_config(void); -+ -+extern void early_reserve_e820_mpc_new(void); -+ -+ -+ -+ -+void __attribute__ ((__section__(".cpuinit.text"))) generic_processor_info(int apicid, int version); -+ -+extern void mp_register_ioapic(int id, u32 address, u32 gsi_base); -+extern void mp_override_legacy_irq(u8 bus_irq, u8 polarity, u8 trigger, -+ u32 gsi); -+extern void mp_config_acpi_legacy_irqs(void); -+extern int mp_register_gsi(u32 gsi, int edge_level, int active_high_low); -+ -+extern int mp_config_acpi_gsi(unsigned char number, unsigned int devfn, u8 pin, -+ u32 gsi, int triggering, int polarity); -+# 77 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mpspec.h" -+struct physid_mask { -+ unsigned long mask[(((256) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; -+}; -+ -+typedef struct physid_mask physid_mask_t; -+# 133 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mpspec.h" -+static inline __attribute__((always_inline)) void physid_set_mask_of_physid(int physid, physid_mask_t *map) -+{ -+ bitmap_zero((*map).mask, 256); -+ set_bit(physid, (*map).mask); -+} -+ -+ -+ -+ -+extern physid_mask_t phys_cpu_present_map; -+# 13 "/d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pm.h" 1 -+# 29 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pm.h" -+extern void (*pm_idle)(void); -+extern void (*pm_power_off)(void); -+extern void (*pm_power_off_prepare)(void); -+ -+ -+ -+ -+ -+struct device; -+ -+typedef struct pm_message { -+ int event; -+} pm_message_t; -+# 145 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pm.h" -+struct pm_ops { -+ int (*prepare)(struct device *dev); -+ void (*complete)(struct device *dev); -+ int (*suspend)(struct device *dev); -+ int (*resume)(struct device *dev); -+ int (*freeze)(struct device *dev); -+ int (*thaw)(struct device *dev); -+ int (*poweroff)(struct device *dev); -+ int (*restore)(struct device *dev); -+}; -+# 203 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pm.h" -+struct pm_ext_ops { -+ struct pm_ops base; -+ int (*suspend_noirq)(struct device *dev); -+ int (*resume_noirq)(struct device *dev); -+ int (*freeze_noirq)(struct device *dev); -+ int (*thaw_noirq)(struct device *dev); -+ int (*poweroff_noirq)(struct device *dev); -+ int (*restore_noirq)(struct device *dev); -+}; -+# 334 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pm.h" -+enum dpm_state { -+ DPM_INVALID, -+ DPM_ON, -+ DPM_PREPARING, -+ DPM_RESUMING, -+ DPM_SUSPENDING, -+ DPM_OFF, -+ DPM_OFF_IRQ, -+}; -+ -+struct dev_pm_info { -+ pm_message_t power_state; -+ unsigned can_wakeup:1; -+ unsigned should_wakeup:1; -+ enum dpm_state status; -+ -+ struct list_head entry; -+ -+}; -+# 409 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pm.h" -+extern void device_pm_lock(void); -+extern void device_power_up(pm_message_t state); -+extern void device_resume(pm_message_t state); -+ -+extern void device_pm_unlock(void); -+extern int device_power_down(pm_message_t state); -+extern int device_suspend(pm_message_t state); -+extern int device_prepare_suspend(pm_message_t state); -+ -+extern void __suspend_report_result(const char *function, void *fn, int ret); -+# 440 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pm.h" -+extern unsigned int pm_flags; -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/delay.h" 1 -+# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/delay.h" -+extern unsigned long loops_per_jiffy; -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/delay.h" 1 -+# 11 "/d/kernels/linux-2.6.27.10-clickport/include/asm/delay.h" -+extern void __bad_udelay(void); -+extern void __bad_ndelay(void); -+ -+extern void __udelay(unsigned long usecs); -+extern void __ndelay(unsigned long nsecs); -+extern void __const_udelay(unsigned long xloops); -+extern void __delay(unsigned long loops); -+# 29 "/d/kernels/linux-2.6.27.10-clickport/include/asm/delay.h" -+void use_tsc_delay(void); -+# 15 "/d/kernels/linux-2.6.27.10-clickport/include/linux/delay.h" 2 -+# 44 "/d/kernels/linux-2.6.27.10-clickport/include/linux/delay.h" -+extern unsigned long lpj_fine; -+void calibrate_delay(void); -+void msleep(unsigned int msecs); -+unsigned long msleep_interruptible(unsigned int msecs); -+ -+static inline __attribute__((always_inline)) void ssleep(unsigned int seconds) -+{ -+ msleep(seconds * 1000); -+} -+# 6 "/d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h" 2 -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h" 1 -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h" 1 -+# 22 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h" -+extern unsigned long __FIXADDR_TOP; -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h" 1 -+# 26 "/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/acpi/pdc_intel.h" 1 -+# 27 "/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/numa.h" 1 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/numa_32.h" 1 -+ -+ -+ -+extern int pxm_to_nid(int pxm); -+extern void numa_remove_cpu(int cpu); -+# 3 "/d/kernels/linux-2.6.27.10-clickport/include/asm/numa.h" 2 -+# 29 "/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mmu.h" 1 -+# 13 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mmu.h" -+typedef struct { -+ void *ldt; -+ -+ -+ -+ int size; -+ struct mutex lock; -+ void *vdso; -+} mm_context_t; -+ -+ -+void leave_mm(int cpu); -+# 31 "/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h" 2 -+# 57 "/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h" -+int __acpi_acquire_global_lock(unsigned int *lock); -+int __acpi_release_global_lock(unsigned int *lock); -+# 83 "/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h" -+extern int acpi_lapic; -+extern int acpi_ioapic; -+extern int acpi_noirq; -+extern int acpi_strict; -+extern int acpi_disabled; -+extern int acpi_ht; -+extern int acpi_pci_disabled; -+extern int acpi_skip_timer_override; -+extern int acpi_use_timer_override; -+ -+extern u8 acpi_sci_flags; -+extern int acpi_sci_override_gsi; -+void acpi_pic_sci_set_trigger(unsigned int, u16); -+ -+static inline __attribute__((always_inline)) void disable_acpi(void) -+{ -+ acpi_disabled = 1; -+ acpi_ht = 0; -+ acpi_pci_disabled = 1; -+ acpi_noirq = 1; -+} -+ -+ -+ -+ -+extern int acpi_gsi_to_irq(u32 gsi, unsigned int *irq); -+ -+static inline __attribute__((always_inline)) void acpi_noirq_set(void) { acpi_noirq = 1; } -+static inline __attribute__((always_inline)) void acpi_disable_pci(void) -+{ -+ acpi_pci_disabled = 1; -+ acpi_noirq_set(); -+} -+extern int acpi_irq_balance_set(char *str); -+ -+ -+extern int acpi_save_state_mem(void); -+extern void acpi_restore_state_mem(void); -+ -+extern unsigned long acpi_wakeup_address; -+ -+ -+extern void acpi_reserve_bootmem(void); -+ -+ -+ -+ -+static inline __attribute__((always_inline)) unsigned int acpi_processor_cstate_check(unsigned int max_cstate) -+{ -+ -+ -+ -+ -+ -+ -+ if (boot_cpu_data.x86 == 0x0F && -+ boot_cpu_data.x86_vendor == 2 && -+ boot_cpu_data.x86_model <= 0x05 && -+ boot_cpu_data.x86_mask < 0x0A) -+ return 1; -+ else if ((__builtin_constant_p((3*32+21)) && ( ((((3*32+21))>>5)==0 && (1UL<<(((3*32+21))&31) & ((1<<((0*32+ 0) & 31))|0|0|0| 0|0|0|(1<<((0*32+15) & 31))| 0|0))) || ((((3*32+21))>>5)==1 && (1UL<<(((3*32+21))&31) & (0|0))) || ((((3*32+21))>>5)==2 && (1UL<<(((3*32+21))&31) & 0)) || ((((3*32+21))>>5)==3 && (1UL<<(((3*32+21))&31) & (0))) || ((((3*32+21))>>5)==4 && (1UL<<(((3*32+21))&31) & 0)) || ((((3*32+21))>>5)==5 && (1UL<<(((3*32+21))&31) & 0)) || ((((3*32+21))>>5)==6 && (1UL<<(((3*32+21))&31) & 0)) || ((((3*32+21))>>5)==7 && (1UL<<(((3*32+21))&31) & 0)) ) ? 1 : (__builtin_constant_p(((3*32+21))) ? constant_test_bit(((3*32+21)), ((unsigned long *)((&boot_cpu_data)->x86_capability))) : variable_test_bit(((3*32+21)), ((unsigned long *)((&boot_cpu_data)->x86_capability)))))) -+ return 1; -+ else -+ return max_cstate; -+} -+# 161 "/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h" -+struct bootnode; -+# 170 "/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h" -+static inline __attribute__((always_inline)) void acpi_fake_nodes(const struct bootnode *fake_nodes, -+ int num_nodes) -+{ -+} -+# 29 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/apicdef.h" 1 -+# 159 "/d/kernels/linux-2.6.27.10-clickport/include/asm/apicdef.h" -+struct local_apic { -+ -+ struct { unsigned int __reserved[4]; } __reserved_01; -+ -+ struct { unsigned int __reserved[4]; } __reserved_02; -+ -+ struct { -+ unsigned int __reserved_1 : 24, -+ phys_apic_id : 4, -+ __reserved_2 : 4; -+ unsigned int __reserved[3]; -+ } id; -+ -+ const -+ struct { -+ unsigned int version : 8, -+ __reserved_1 : 8, -+ max_lvt : 8, -+ __reserved_2 : 8; -+ unsigned int __reserved[3]; -+ } version; -+ -+ struct { unsigned int __reserved[4]; } __reserved_03; -+ -+ struct { unsigned int __reserved[4]; } __reserved_04; -+ -+ struct { unsigned int __reserved[4]; } __reserved_05; -+ -+ struct { unsigned int __reserved[4]; } __reserved_06; -+ -+ struct { -+ unsigned int priority : 8, -+ __reserved_1 : 24; -+ unsigned int __reserved_2[3]; -+ } tpr; -+ -+ const -+ struct { -+ unsigned int priority : 8, -+ __reserved_1 : 24; -+ unsigned int __reserved_2[3]; -+ } apr; -+ -+ const -+ struct { -+ unsigned int priority : 8, -+ __reserved_1 : 24; -+ unsigned int __reserved_2[3]; -+ } ppr; -+ -+ struct { -+ unsigned int eoi; -+ unsigned int __reserved[3]; -+ } eoi; -+ -+ struct { unsigned int __reserved[4]; } __reserved_07; -+ -+ struct { -+ unsigned int __reserved_1 : 24, -+ logical_dest : 8; -+ unsigned int __reserved_2[3]; -+ } ldr; -+ -+ struct { -+ unsigned int __reserved_1 : 28, -+ model : 4; -+ unsigned int __reserved_2[3]; -+ } dfr; -+ -+ struct { -+ unsigned int spurious_vector : 8, -+ apic_enabled : 1, -+ focus_cpu : 1, -+ __reserved_2 : 22; -+ unsigned int __reserved_3[3]; -+ } svr; -+ -+ struct { -+ unsigned int bitfield; -+ unsigned int __reserved[3]; -+ } isr [8]; -+ -+ struct { -+ unsigned int bitfield; -+ unsigned int __reserved[3]; -+ } tmr [8]; -+ -+ struct { -+ unsigned int bitfield; -+ unsigned int __reserved[3]; -+ } irr [8]; -+ -+ union { -+ struct { -+ unsigned int send_cs_error : 1, -+ receive_cs_error : 1, -+ send_accept_error : 1, -+ receive_accept_error : 1, -+ __reserved_1 : 1, -+ send_illegal_vector : 1, -+ receive_illegal_vector : 1, -+ illegal_register_address : 1, -+ __reserved_2 : 24; -+ unsigned int __reserved_3[3]; -+ } error_bits; -+ struct { -+ unsigned int errors; -+ unsigned int __reserved_3[3]; -+ } all_errors; -+ } esr; -+ -+ struct { unsigned int __reserved[4]; } __reserved_08; -+ -+ struct { unsigned int __reserved[4]; } __reserved_09; -+ -+ struct { unsigned int __reserved[4]; } __reserved_10; -+ -+ struct { unsigned int __reserved[4]; } __reserved_11; -+ -+ struct { unsigned int __reserved[4]; } __reserved_12; -+ -+ struct { unsigned int __reserved[4]; } __reserved_13; -+ -+ struct { unsigned int __reserved[4]; } __reserved_14; -+ -+ struct { -+ unsigned int vector : 8, -+ delivery_mode : 3, -+ destination_mode : 1, -+ delivery_status : 1, -+ __reserved_1 : 1, -+ level : 1, -+ trigger : 1, -+ __reserved_2 : 2, -+ shorthand : 2, -+ __reserved_3 : 12; -+ unsigned int __reserved_4[3]; -+ } icr1; -+ -+ struct { -+ union { -+ unsigned int __reserved_1 : 24, -+ phys_dest : 4, -+ __reserved_2 : 4; -+ unsigned int __reserved_3 : 24, -+ logical_dest : 8; -+ } dest; -+ unsigned int __reserved_4[3]; -+ } icr2; -+ -+ struct { -+ unsigned int vector : 8, -+ __reserved_1 : 4, -+ delivery_status : 1, -+ __reserved_2 : 3, -+ mask : 1, -+ timer_mode : 1, -+ __reserved_3 : 14; -+ unsigned int __reserved_4[3]; -+ } lvt_timer; -+ -+ struct { -+ unsigned int vector : 8, -+ delivery_mode : 3, -+ __reserved_1 : 1, -+ delivery_status : 1, -+ __reserved_2 : 3, -+ mask : 1, -+ __reserved_3 : 15; -+ unsigned int __reserved_4[3]; -+ } lvt_thermal; -+ -+ struct { -+ unsigned int vector : 8, -+ delivery_mode : 3, -+ __reserved_1 : 1, -+ delivery_status : 1, -+ __reserved_2 : 3, -+ mask : 1, -+ __reserved_3 : 15; -+ unsigned int __reserved_4[3]; -+ } lvt_pc; -+ -+ struct { -+ unsigned int vector : 8, -+ delivery_mode : 3, -+ __reserved_1 : 1, -+ delivery_status : 1, -+ polarity : 1, -+ remote_irr : 1, -+ trigger : 1, -+ mask : 1, -+ __reserved_2 : 15; -+ unsigned int __reserved_3[3]; -+ } lvt_lint0; -+ -+ struct { -+ unsigned int vector : 8, -+ delivery_mode : 3, -+ __reserved_1 : 1, -+ delivery_status : 1, -+ polarity : 1, -+ remote_irr : 1, -+ trigger : 1, -+ mask : 1, -+ __reserved_2 : 15; -+ unsigned int __reserved_3[3]; -+ } lvt_lint1; -+ -+ struct { -+ unsigned int vector : 8, -+ __reserved_1 : 4, -+ delivery_status : 1, -+ __reserved_2 : 3, -+ mask : 1, -+ __reserved_3 : 15; -+ unsigned int __reserved_4[3]; -+ } lvt_error; -+ -+ struct { -+ unsigned int initial_count; -+ unsigned int __reserved_2[3]; -+ } timer_icr; -+ -+ const -+ struct { -+ unsigned int curr_count; -+ unsigned int __reserved_2[3]; -+ } timer_ccr; -+ -+ struct { unsigned int __reserved[4]; } __reserved_16; -+ -+ struct { unsigned int __reserved[4]; } __reserved_17; -+ -+ struct { unsigned int __reserved[4]; } __reserved_18; -+ -+ struct { unsigned int __reserved[4]; } __reserved_19; -+ -+ struct { -+ unsigned int divisor : 4, -+ __reserved_1 : 28; -+ unsigned int __reserved_2[3]; -+ } timer_dcr; -+ -+ struct { unsigned int __reserved[4]; } __reserved_20; -+ -+} __attribute__ ((packed)); -+# 30 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h" 2 -+# 54 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h" -+enum fixed_addresses { -+ FIX_HOLE, -+ FIX_VDSO, -+ FIX_DBGP_BASE, -+ FIX_EARLYCON_MEM_BASE, -+ -+ FIX_APIC_BASE, -+ -+ -+ FIX_IO_APIC_BASE_0, -+ FIX_IO_APIC_BASE_END = FIX_IO_APIC_BASE_0 + 64 -1, -+# 76 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h" -+ FIX_CYCLONE_TIMER, -+ -+ -+ FIX_KMAP_BEGIN, -+ FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*32)-1, -+ -+ -+ FIX_PCIE_MCFG, -+ -+ -+ FIX_PARAVIRT_BOOTMAP, -+ -+ __end_of_permanent_fixed_addresses, -+# 98 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h" -+ FIX_BTMAP_END = __end_of_permanent_fixed_addresses + 256 - -+ (__end_of_permanent_fixed_addresses & 255), -+ FIX_BTMAP_BEGIN = FIX_BTMAP_END + 64*4 - 1, -+ FIX_WP_TEST, -+ -+ FIX_ACPI_BEGIN, -+ FIX_ACPI_END = FIX_ACPI_BEGIN + 4 - 1, -+ -+ -+ -+ -+ __end_of_fixed_addresses -+}; -+ -+extern void reserve_top_address(unsigned long reserve); -+# 6 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h" 2 -+ -+ -+ -+ -+extern int fixmaps_set; -+ -+void __native_set_fixmap(enum fixed_addresses idx, pte_t pte); -+void native_set_fixmap(enum fixed_addresses idx, -+ unsigned long phys, pgprot_t flags); -+# 39 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h" -+extern void __this_fixmap_does_not_exist(void); -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) __attribute__((always_inline)) unsigned long fix_to_virt(const unsigned int idx) -+{ -+# 57 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h" -+ if (idx >= __end_of_fixed_addresses) -+ __this_fixmap_does_not_exist(); -+ -+ return (((unsigned long)__FIXADDR_TOP) - ((idx) << 12)); -+} -+ -+static inline __attribute__((always_inline)) unsigned long virt_to_fix(const unsigned long vaddr) -+{ -+ do { if (__builtin_expect(!!(vaddr >= ((unsigned long)__FIXADDR_TOP) || vaddr < (((unsigned long)__FIXADDR_TOP) - (__end_of_permanent_fixed_addresses << 12))), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h"), "i" (65), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ return ((((unsigned long)__FIXADDR_TOP) - ((vaddr)&(~(((1UL) << 12)-1)))) >> 12); -+} -+# 9 "/d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h" 2 -+# 34 "/d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h" -+extern void generic_apic_probe(void); -+ -+ -+ -+extern unsigned int apic_verbosity; -+extern int local_apic_timer_c2_ok; -+ -+extern int ioapic_force; -+ -+extern int disable_apic; -+# 56 "/d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h" -+extern int is_vsmp_box(void); -+ -+static inline __attribute__((always_inline)) void native_apic_write(unsigned long reg, u32 v) -+{ -+ volatile u32 *addr = (volatile u32 *)((fix_to_virt(FIX_APIC_BASE)) + reg); -+ -+ asm volatile ("661:\n\t" "movl %0, %1" "\n662:\n" ".section .altinstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661b\n" " " ".long" " " "663f\n" " .byte %c[feat]\n" " .byte 662b-661b\n" " .byte 664f-663f\n" ".previous\n" ".section .altinstr_replacement,\"ax\"\n" "663:\n\t" "xchgl %0, %1" "\n664:\n" ".previous" : "=r" (v), "=m" (*addr) : [feat] "i" ((3*32+19)), "0" (v), "m" (*addr)); -+ -+ -+} -+ -+static inline __attribute__((always_inline)) u32 native_apic_read(unsigned long reg) -+{ -+ return *((volatile u32 *)((fix_to_virt(FIX_APIC_BASE)) + reg)); -+} -+ -+extern void apic_wait_icr_idle(void); -+extern u32 safe_apic_wait_icr_idle(void); -+extern int get_physical_broadcast(void); -+ -+static inline __attribute__((always_inline)) void ack_APIC_irq(void) -+{ -+# 86 "/d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h" -+ apic_write(0xB0, 0); -+} -+ -+extern int lapic_get_maxlvt(void); -+extern void clear_local_APIC(void); -+extern void connect_bsp_APIC(void); -+extern void disconnect_bsp_APIC(int virt_wire_setup); -+extern void disable_local_APIC(void); -+extern void lapic_shutdown(void); -+extern int verify_local_APIC(void); -+extern void cache_APIC_registers(void); -+extern void sync_Arb_IDs(void); -+extern void init_bsp_APIC(void); -+extern void setup_local_APIC(void); -+extern void end_local_APIC_setup(void); -+extern void init_apic_mappings(void); -+extern void setup_boot_APIC_clock(void); -+extern void setup_secondary_APIC_clock(void); -+extern int APIC_init_uniprocessor(void); -+extern void enable_NMI_through_LVT0(void); -+# 114 "/d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h" -+static inline __attribute__((always_inline)) int apic_is_clustered_box(void) -+{ -+ return 0; -+} -+ -+ -+extern u8 setup_APIC_eilvt_mce(u8 vector, u8 msg_type, u8 mask); -+extern u8 setup_APIC_eilvt_ibs(u8 vector, u8 msg_type, u8 mask); -+# 14 "/d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_apic.h" 1 -+# 26 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_apic.h" -+union IO_APIC_reg_00 { -+ u32 raw; -+ struct { -+ u32 __reserved_2 : 14, -+ LTS : 1, -+ delivery_type : 1, -+ __reserved_1 : 8, -+ ID : 8; -+ } __attribute__ ((packed)) bits; -+}; -+ -+union IO_APIC_reg_01 { -+ u32 raw; -+ struct { -+ u32 version : 8, -+ __reserved_2 : 7, -+ PRQ : 1, -+ entries : 8, -+ __reserved_1 : 8; -+ } __attribute__ ((packed)) bits; -+}; -+ -+union IO_APIC_reg_02 { -+ u32 raw; -+ struct { -+ u32 __reserved_2 : 24, -+ arbitration : 4, -+ __reserved_1 : 4; -+ } __attribute__ ((packed)) bits; -+}; -+ -+union IO_APIC_reg_03 { -+ u32 raw; -+ struct { -+ u32 boot_DT : 1, -+ __reserved_1 : 31; -+ } __attribute__ ((packed)) bits; -+}; -+ -+enum ioapic_irq_destination_types { -+ dest_Fixed = 0, -+ dest_LowestPrio = 1, -+ dest_SMI = 2, -+ dest__reserved_1 = 3, -+ dest_NMI = 4, -+ dest_INIT = 5, -+ dest__reserved_2 = 6, -+ dest_ExtINT = 7 -+}; -+ -+struct IO_APIC_route_entry { -+ __u32 vector : 8, -+ delivery_mode : 3, -+ -+ -+ -+ dest_mode : 1, -+ delivery_status : 1, -+ polarity : 1, -+ irr : 1, -+ trigger : 1, -+ mask : 1, -+ __reserved_2 : 15; -+ -+ -+ union { -+ struct { -+ __u32 __reserved_1 : 24, -+ physical_dest : 4, -+ __reserved_2 : 4; -+ } physical; -+ -+ struct { -+ __u32 __reserved_1 : 24, -+ logical_dest : 8; -+ } logical; -+ } dest; -+ -+ -+ -+ -+ -+} __attribute__ ((packed)); -+ -+ -+ -+ -+ -+ -+extern int nr_ioapics; -+extern int nr_ioapic_registers[64]; -+ -+ -+ -+ -+ -+ -+ -+struct mp_config_ioapic { -+ unsigned long mp_apicaddr; -+ unsigned int mp_apicid; -+ unsigned char mp_type; -+ unsigned char mp_apicver; -+ unsigned char mp_flags; -+}; -+ -+struct mp_config_intsrc { -+ unsigned int mp_dstapic; -+ unsigned char mp_type; -+ unsigned char mp_irqtype; -+ unsigned short mp_irqflag; -+ unsigned char mp_srcbus; -+ unsigned char mp_srcbusirq; -+ unsigned char mp_dstirq; -+}; -+ -+ -+extern struct mp_config_ioapic mp_ioapics[64]; -+ -+ -+extern int mp_irq_entries; -+ -+ -+extern struct mp_config_intsrc mp_irqs[256]; -+ -+ -+extern int mpc_default_type; -+ -+ -+extern int sis_apic_bug; -+ -+ -+extern int skip_ioapic_setup; -+ -+ -+extern int timer_through_8259; -+ -+static inline __attribute__((always_inline)) void disable_ioapic_setup(void) -+{ -+ skip_ioapic_setup = 1; -+} -+# 176 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_apic.h" -+extern int io_apic_get_unique_id(int ioapic, int apic_id); -+extern int io_apic_get_version(int ioapic); -+extern int io_apic_get_redir_entries(int ioapic); -+extern int io_apic_set_pci_routing(int ioapic, int pin, int irq, -+ int edge_level, int active_high_low); -+ -+ -+extern int (*ioapic_renumber_irq)(int ioapic, int irq); -+extern void ioapic_init_mappings(void); -+# 16 "/d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h" 2 -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pda.h" 1 -+# 11 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pda.h" -+struct x8664_pda { -+ struct task_struct *pcurrent; -+ unsigned long data_offset; -+ -+ unsigned long kernelstack; -+ unsigned long oldrsp; -+ int irqcount; -+ unsigned int cpunumber; -+ -+ -+ -+ -+ -+ char *irqstackptr; -+ short nodenumber; -+ short in_bootmem; -+ unsigned int __softirq_pending; -+ unsigned int __nmi_count; -+ short mmu_state; -+ short isidle; -+ struct mm_struct *active_mm; -+ unsigned apic_timer_irqs; -+ unsigned irq0_irqs; -+ unsigned irq_resched_count; -+ unsigned irq_call_count; -+ unsigned irq_tlb_count; -+ unsigned irq_thermal_count; -+ unsigned irq_threshold_count; -+ unsigned irq_spurious_count; -+} __attribute__((__aligned__((1 << (7))))); -+ -+extern struct x8664_pda **_cpu_pda; -+extern void pda_init(int); -+ -+ -+ -+ -+ -+ -+ -+extern void __bad_pda_field(void) __attribute__((noreturn)); -+ -+ -+ -+ -+ -+extern struct x8664_pda _proxy_pda; -+# 19 "/d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h" 2 -+ -+ -+extern cpumask_t cpu_callout_map; -+extern cpumask_t cpu_initialized; -+extern cpumask_t cpu_callin_map; -+ -+extern void (*mtrr_hook)(void); -+extern void zap_low_mappings(void); -+ -+extern int __attribute__ ((__section__(".cpuinit.text"))) get_local_pda(int cpu); -+ -+extern int smp_num_siblings; -+extern unsigned int num_processors; -+extern cpumask_t cpu_initialized; -+ -+extern __typeof__(cpumask_t) per_cpu__cpu_sibling_map; -+extern __typeof__(cpumask_t) per_cpu__cpu_core_map; -+extern __typeof__(u16) per_cpu__cpu_llc_id; -+ -+extern __typeof__(u16) per_cpu__x86_cpu_to_apicid; extern __typeof__(u16) *x86_cpu_to_apicid_early_ptr; extern __typeof__(u16) x86_cpu_to_apicid_early_map[]; -+extern __typeof__(u16) per_cpu__x86_bios_cpu_apicid; extern __typeof__(u16) *x86_bios_cpu_apicid_early_ptr; extern __typeof__(u16) x86_bios_cpu_apicid_early_map[]; -+ -+ -+extern struct { -+ void *sp; -+ unsigned short ss; -+} stack_start; -+ -+struct smp_ops { -+ void (*smp_prepare_boot_cpu)(void); -+ void (*smp_prepare_cpus)(unsigned max_cpus); -+ int (*cpu_up)(unsigned cpu); -+ void (*smp_cpus_done)(unsigned max_cpus); -+ -+ void (*smp_send_stop)(void); -+ void (*smp_send_reschedule)(int cpu); -+ -+ void (*send_call_func_ipi)(cpumask_t mask); -+ void (*send_call_func_single_ipi)(int cpu); -+}; -+ -+ -+extern void set_cpu_sibling_map(int cpu); -+ -+ -+ -+ -+ -+extern struct smp_ops smp_ops; -+ -+static inline __attribute__((always_inline)) void smp_send_stop(void) -+{ -+ smp_ops.smp_send_stop(); -+} -+ -+static inline __attribute__((always_inline)) void smp_prepare_boot_cpu(void) -+{ -+ smp_ops.smp_prepare_boot_cpu(); -+} -+ -+static inline __attribute__((always_inline)) void smp_prepare_cpus(unsigned int max_cpus) -+{ -+ smp_ops.smp_prepare_cpus(max_cpus); -+} -+ -+static inline __attribute__((always_inline)) void smp_cpus_done(unsigned int max_cpus) -+{ -+ smp_ops.smp_cpus_done(max_cpus); -+} -+ -+static inline __attribute__((always_inline)) int __cpu_up(unsigned int cpu) -+{ -+ return smp_ops.cpu_up(cpu); -+} -+ -+static inline __attribute__((always_inline)) void smp_send_reschedule(int cpu) -+{ -+ smp_ops.smp_send_reschedule(cpu); -+} -+ -+static inline __attribute__((always_inline)) void arch_send_call_function_single_ipi(int cpu) -+{ -+ smp_ops.send_call_func_single_ipi(cpu); -+} -+ -+static inline __attribute__((always_inline)) void arch_send_call_function_ipi(cpumask_t mask) -+{ -+ smp_ops.send_call_func_ipi(mask); -+} -+ -+void native_smp_prepare_boot_cpu(void); -+void native_smp_prepare_cpus(unsigned int max_cpus); -+void native_smp_cpus_done(unsigned int max_cpus); -+int native_cpu_up(unsigned int cpunum); -+void native_send_call_func_ipi(cpumask_t mask); -+void native_send_call_func_single_ipi(int cpu); -+ -+extern int __cpu_disable(void); -+extern void __cpu_die(unsigned int cpu); -+ -+void smp_store_cpu_info(int id); -+ -+ -+ -+static inline __attribute__((always_inline)) int num_booting_cpus(void) -+{ -+ return __cpus_weight(&(cpu_callout_map), 32); -+} -+ -+ -+ -+extern void prefill_possible_map(void); -+ -+ -+ -+ -+ -+ -+extern unsigned disabled_cpus __attribute__ ((__section__(".cpuinit.data"))); -+ -+ -+ -+ -+ -+ -+ -+extern __typeof__(int) per_cpu__cpu_number; -+ -+extern int safe_smp_processor_id(void); -+# 168 "/d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h" -+static inline __attribute__((always_inline)) int logical_smp_processor_id(void) -+{ -+ -+ return (((*(u32 *)((fix_to_virt(FIX_APIC_BASE)) + 0xD0)) >> 24) & 0xFFu); -+} -+ -+ -+static inline __attribute__((always_inline)) unsigned int read_apic_id(void) -+{ -+ return *(u32 *)((fix_to_virt(FIX_APIC_BASE)) + 0x20); -+} -+# 187 "/d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mach-default/mach_apicdef.h" 1 -+# 12 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mach-default/mach_apicdef.h" -+static inline __attribute__((always_inline)) unsigned get_apic_id(unsigned long x) -+{ -+ unsigned int ver = ((apic_read(0x30)) & 0xFFu); -+ if (((ver) >= 0x14)) -+ return (((x)>>24)&0xFF); -+ else -+ return (((x)>>24)&0xF); -+} -+# 188 "/d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h" 2 -+static inline __attribute__((always_inline)) int hard_smp_processor_id(void) -+{ -+ -+ return get_apic_id(read_apic_id()); -+} -+# 204 "/d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h" -+extern void cpu_uninit(void); -+# 29 "/d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h" 2 -+# 38 "/d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h" -+extern void smp_send_stop(void); -+ -+ -+ -+ -+extern void smp_send_reschedule(int cpu); -+ -+ -+ -+ -+ -+extern void smp_prepare_cpus(unsigned int max_cpus); -+ -+ -+ -+ -+extern int __cpu_up(unsigned int cpunum); -+ -+ -+ -+ -+extern void smp_cpus_done(unsigned int max_cpus); -+ -+ -+ -+ -+int smp_call_function(void(*func)(void *info), void *info, int wait); -+int smp_call_function_mask(cpumask_t mask, void(*func)(void *info), void *info, -+ int wait); -+int smp_call_function_single(int cpuid, void (*func) (void *info), void *info, -+ int wait); -+void __smp_call_function_single(int cpuid, struct call_single_data *data); -+ -+ -+ -+ -+ -+void generic_smp_call_function_single_interrupt(void); -+void generic_smp_call_function_interrupt(void); -+void ipi_call_lock(void); -+void ipi_call_unlock(void); -+void ipi_call_lock_irq(void); -+void ipi_call_unlock_irq(void); -+ -+ -+ -+ -+ -+int on_each_cpu(void (*func) (void *info), void *info, int wait); -+# 102 "/d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h" -+void smp_prepare_boot_cpu(void); -+ -+extern unsigned int setup_max_cpus; -+# 169 "/d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h" -+void smp_setup_processor_id(void); -+# 34 "/d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h" 1 -+# 189 "/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h" -+static inline __attribute__((always_inline)) const cpumask_t *_node_to_cpumask_ptr(int node) -+{ -+ return &cpu_online_map; -+} -+static inline __attribute__((always_inline)) cpumask_t node_to_cpumask(int node) -+{ -+ return cpu_online_map; -+} -+static inline __attribute__((always_inline)) int node_to_first_cpu(int node) -+{ -+ return __first_cpu(&(cpu_online_map)); -+} -+# 210 "/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/topology.h" 1 -+# 211 "/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h" 2 -+# 221 "/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h" -+extern cpumask_t cpu_coregroup_map(int cpu); -+# 233 "/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h" -+static inline __attribute__((always_inline)) void arch_fix_phys_package_id(int num, u32 slot) -+{ -+} -+ -+struct pci_bus; -+void set_pci_bus_resources_arch_default(struct pci_bus *b); -+# 249 "/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h" -+static inline __attribute__((always_inline)) int get_mp_bus_to_node(int busnum) -+{ -+ return 0; -+} -+static inline __attribute__((always_inline)) void set_mp_bus_to_node(int busnum, int node) -+{ -+} -+# 35 "/d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h" 2 -+# 52 "/d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h" -+void arch_update_cpu_topology(void); -+# 684 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" 2 -+ -+ -+ -+ -+ -+ -+ -+extern struct pglist_data contig_page_data; -+# 701 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+extern struct pglist_data *first_online_pgdat(void); -+extern struct pglist_data *next_online_pgdat(struct pglist_data *pgdat); -+extern struct zone *next_zone(struct zone *zone); -+# 725 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+static inline __attribute__((always_inline)) struct zone *zonelist_zone(struct zoneref *zoneref) -+{ -+ return zoneref->zone; -+} -+ -+static inline __attribute__((always_inline)) int zonelist_zone_idx(struct zoneref *zoneref) -+{ -+ return zoneref->zone_idx; -+} -+ -+static inline __attribute__((always_inline)) int zonelist_node_idx(struct zoneref *zoneref) -+{ -+ -+ -+ -+ -+ return 0; -+ -+} -+# 758 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+struct zoneref *next_zones_zonelist(struct zoneref *z, -+ enum zone_type highest_zoneidx, -+ nodemask_t *nodes, -+ struct zone **zone); -+# 775 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+static inline __attribute__((always_inline)) struct zoneref *first_zones_zonelist(struct zonelist *zonelist, -+ enum zone_type highest_zoneidx, -+ nodemask_t *nodes, -+ struct zone **zone) -+{ -+ return next_zones_zonelist(zonelist->_zonerefs, highest_zoneidx, nodes, -+ zone); -+} -+# 990 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" -+void memory_present(int nid, unsigned long start, unsigned long end); -+unsigned long __attribute__ ((__section__(".init.text"))) node_memmap_size_bytes(int, unsigned long, unsigned long); -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h" 2 -+ -+ -+ -+struct vm_area_struct; -+# 108 "/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h" -+static inline __attribute__((always_inline)) int allocflags_to_migratetype(gfp_t gfp_flags) -+{ -+ ({ int __ret_warn_on = !!((gfp_flags & ((( gfp_t)0x80000u)|(( gfp_t)0x100000u))) == ((( gfp_t)0x80000u)|(( gfp_t)0x100000u))); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_on_slowpath("/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h", 110); __builtin_expect(!!(__ret_warn_on), 0); }); -+ -+ if (__builtin_expect(!!(page_group_by_mobility_disabled), 0)) -+ return 0; -+ -+ -+ return (((gfp_flags & (( gfp_t)0x100000u)) != 0) << 1) | -+ ((gfp_flags & (( gfp_t)0x80000u)) != 0); -+} -+ -+static inline __attribute__((always_inline)) enum zone_type gfp_zone(gfp_t flags) -+{ -+ -+ if (flags & (( gfp_t)0x01u)) -+ return ZONE_DMA; -+ -+ -+ -+ -+ -+ if ((flags & ((( gfp_t)0x02u) | (( gfp_t)0x100000u))) == -+ ((( gfp_t)0x02u) | (( gfp_t)0x100000u))) -+ return ZONE_MOVABLE; -+ -+ if (flags & (( gfp_t)0x02u)) -+ return ZONE_HIGHMEM; -+ -+ return ZONE_NORMAL; -+} -+# 147 "/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h" -+static inline __attribute__((always_inline)) int gfp_zonelist(gfp_t flags) -+{ -+ if (0 && __builtin_expect(!!(flags & (( gfp_t)0x40000u)), 0)) -+ return 1; -+ -+ return 0; -+} -+# 164 "/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h" -+static inline __attribute__((always_inline)) struct zonelist *node_zonelist(int nid, gfp_t flags) -+{ -+ return (&contig_page_data)->node_zonelists + gfp_zonelist(flags); -+} -+ -+ -+static inline __attribute__((always_inline)) void arch_free_page(struct page *page, int order) { } -+ -+ -+static inline __attribute__((always_inline)) void arch_alloc_page(struct page *page, int order) { } -+ -+ -+struct page * -+__alloc_pages_internal(gfp_t gfp_mask, unsigned int order, -+ struct zonelist *zonelist, nodemask_t *nodemask); -+ -+static inline __attribute__((always_inline)) struct page * -+__alloc_pages(gfp_t gfp_mask, unsigned int order, -+ struct zonelist *zonelist) -+{ -+ return __alloc_pages_internal(gfp_mask, order, zonelist, 0); -+} -+ -+static inline __attribute__((always_inline)) struct page * -+__alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order, -+ struct zonelist *zonelist, nodemask_t *nodemask) -+{ -+ return __alloc_pages_internal(gfp_mask, order, zonelist, nodemask); -+} -+ -+ -+static inline __attribute__((always_inline)) struct page *alloc_pages_node(int nid, gfp_t gfp_mask, -+ unsigned int order) -+{ -+ if (__builtin_expect(!!(order >= 11), 0)) -+ return 0; -+ -+ -+ if (nid < 0) -+ nid = 0; -+ -+ return __alloc_pages(gfp_mask, order, node_zonelist(nid, gfp_mask)); -+} -+# 228 "/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h" -+extern unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order); -+extern unsigned long get_zeroed_page(gfp_t gfp_mask); -+ -+void *alloc_pages_exact(size_t size, gfp_t gfp_mask); -+void free_pages_exact(void *virt, size_t size); -+ -+ -+ -+ -+ -+ -+ -+extern void __free_pages(struct page *page, unsigned int order); -+extern void free_pages(unsigned long addr, unsigned int order); -+extern void free_hot_page(struct page *page); -+extern void free_cold_page(struct page *page); -+ -+ -+ -+ -+void page_alloc_init(void); -+void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp); -+void drain_all_pages(void); -+void drain_local_pages(void *dummy); -+# 23 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h" 2 -+# 32 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h" -+extern int request_module(const char * name, ...) __attribute__ ((format (printf, 1, 2))); -+ -+ -+ -+ -+ -+ -+ -+struct key; -+struct file; -+struct subprocess_info; -+ -+ -+struct subprocess_info *call_usermodehelper_setup(char *path, char **argv, -+ char **envp, gfp_t gfp_mask); -+ -+ -+void call_usermodehelper_setkeys(struct subprocess_info *info, -+ struct key *session_keyring); -+int call_usermodehelper_stdinpipe(struct subprocess_info *sub_info, -+ struct file **filp); -+void call_usermodehelper_setcleanup(struct subprocess_info *info, -+ void (*cleanup)(char **argv, char **envp)); -+ -+enum umh_wait { -+ UMH_NO_WAIT = -1, -+ UMH_WAIT_EXEC = 0, -+ UMH_WAIT_PROC = 1, -+}; -+ -+ -+int call_usermodehelper_exec(struct subprocess_info *info, enum umh_wait wait); -+ -+ -+ -+void call_usermodehelper_freeinfo(struct subprocess_info *info); -+ -+static inline __attribute__((always_inline)) int -+call_usermodehelper(char *path, char **argv, char **envp, enum umh_wait wait) -+{ -+ struct subprocess_info *info; -+ gfp_t gfp_mask = (wait == UMH_NO_WAIT) ? ((( gfp_t)0x20u)) : ((( gfp_t)0x10u) | (( gfp_t)0x40u) | (( gfp_t)0x80u)); -+ -+ info = call_usermodehelper_setup(path, argv, envp, gfp_mask); -+ if (info == 0) -+ return -12; -+ return call_usermodehelper_exec(info, wait); -+} -+ -+static inline __attribute__((always_inline)) int -+call_usermodehelper_keys(char *path, char **argv, char **envp, -+ struct key *session_keyring, enum umh_wait wait) -+{ -+ struct subprocess_info *info; -+ gfp_t gfp_mask = (wait == UMH_NO_WAIT) ? ((( gfp_t)0x20u)) : ((( gfp_t)0x10u) | (( gfp_t)0x40u) | (( gfp_t)0x80u)); -+ -+ info = call_usermodehelper_setup(path, argv, envp, gfp_mask); -+ if (info == 0) -+ return -12; -+ -+ call_usermodehelper_setkeys(info, session_keyring); -+ return call_usermodehelper_exec(info, wait); -+} -+ -+extern void usermodehelper_init(void); -+ -+struct file; -+extern int call_usermodehelper_pipe(char *path, char *argv[], char *envp[], -+ struct file **filp); -+# 14 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h" 1 -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/elf-em.h" 1 -+# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h" 1 -+# 9 "/d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/user.h" 1 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/user_32.h" 1 -+# 44 "/d/kernels/linux-2.6.27.10-clickport/include/asm/user_32.h" -+struct user_i387_struct { -+ long cwd; -+ long swd; -+ long twd; -+ long fip; -+ long fcs; -+ long foo; -+ long fos; -+ long st_space[20]; -+}; -+ -+struct user_fxsr_struct { -+ unsigned short cwd; -+ unsigned short swd; -+ unsigned short twd; -+ unsigned short fop; -+ long fip; -+ long fcs; -+ long foo; -+ long fos; -+ long mxcsr; -+ long reserved; -+ long st_space[32]; -+ long xmm_space[32]; -+ long padding[56]; -+}; -+ -+ -+ -+ -+ -+ -+ -+struct user_regs_struct { -+ unsigned long bx; -+ unsigned long cx; -+ unsigned long dx; -+ unsigned long si; -+ unsigned long di; -+ unsigned long bp; -+ unsigned long ax; -+ unsigned long ds; -+ unsigned long es; -+ unsigned long fs; -+ unsigned long gs; -+ unsigned long orig_ax; -+ unsigned long ip; -+ unsigned long cs; -+ unsigned long flags; -+ unsigned long sp; -+ unsigned long ss; -+}; -+ -+ -+ -+ -+struct user{ -+ -+ -+ struct user_regs_struct regs; -+ -+ int u_fpvalid; -+ -+ struct user_i387_struct i387; -+ -+ unsigned long int u_tsize; -+ unsigned long int u_dsize; -+ unsigned long int u_ssize; -+ unsigned long start_code; -+ unsigned long start_stack; -+ -+ -+ -+ long int signal; -+ int reserved; -+ unsigned long u_ar0; -+ -+ struct user_i387_struct *u_fpstate; -+ unsigned long magic; -+ char u_comm[32]; -+ int u_debugreg[8]; -+}; -+# 3 "/d/kernels/linux-2.6.27.10-clickport/include/asm/user.h" 2 -+# 10 "/d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/auxvec.h" 1 -+# 11 "/d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h" 2 -+ -+typedef unsigned long elf_greg_t; -+ -+ -+typedef elf_greg_t elf_gregset_t[(sizeof(struct user_regs_struct) / sizeof(elf_greg_t))]; -+ -+typedef struct user_i387_struct elf_fpregset_t; -+ -+ -+ -+typedef struct user_fxsr_struct elf_fpxregset_t; -+# 75 "/d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/vdso.h" 1 -+# 19 "/d/kernels/linux-2.6.27.10-clickport/include/asm/vdso.h" -+extern const char VDSO32_PRELINK[]; -+# 36 "/d/kernels/linux-2.6.27.10-clickport/include/asm/vdso.h" -+extern void* __kernel_sigreturn; -+extern void* __kernel_rt_sigreturn; -+ -+ -+ -+ -+ -+extern const char vdso32_int80_start, vdso32_int80_end; -+extern const char vdso32_syscall_start, vdso32_syscall_end; -+extern const char vdso32_sysenter_start, vdso32_sysenter_end; -+# 76 "/d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h" 2 -+ -+extern unsigned int vdso_enabled; -+# 89 "/d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h" 1 -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ldt.h" 1 -+# 20 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ldt.h" -+struct user_desc { -+ unsigned int entry_number; -+ unsigned int base_addr; -+ unsigned int limit; -+ unsigned int seg_32bit:1; -+ unsigned int contents:2; -+ unsigned int read_exec_only:1; -+ unsigned int limit_in_pages:1; -+ unsigned int seg_not_present:1; -+ unsigned int useable:1; -+ -+ -+ -+}; -+# 7 "/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h" 2 -+ -+ -+ -+static inline __attribute__((always_inline)) void fill_ldt(struct desc_struct *desc, -+ const struct user_desc *info) -+{ -+ desc->limit0 = info->limit & 0x0ffff; -+ desc->base0 = info->base_addr & 0x0000ffff; -+ -+ desc->base1 = (info->base_addr & 0x00ff0000) >> 16; -+ desc->type = (info->read_exec_only ^ 1) << 1; -+ desc->type |= info->contents << 2; -+ desc->s = 1; -+ desc->dpl = 0x3; -+ desc->p = info->seg_not_present ^ 1; -+ desc->limit = (info->limit & 0xf0000) >> 16; -+ desc->avl = info->useable; -+ desc->d = info->seg_32bit; -+ desc->g = info->limit_in_pages; -+ desc->base2 = (info->base_addr & 0xff000000) >> 24; -+} -+ -+extern struct desc_ptr idt_descr; -+extern gate_desc idt_table[]; -+ -+struct gdt_page { -+ struct desc_struct gdt[32]; -+} __attribute__((aligned(((1UL) << 12)))); -+extern __typeof__(struct gdt_page) per_cpu__gdt_page; -+ -+static inline __attribute__((always_inline)) struct desc_struct *get_cpu_gdt_table(unsigned int cpu) -+{ -+ return (*({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((&per_cpu__gdt_page))); (typeof((&per_cpu__gdt_page))) (__ptr + (((__per_cpu_offset[cpu])))); })).gdt; -+} -+# 60 "/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h" -+static inline __attribute__((always_inline)) void pack_gate(gate_desc *gate, unsigned char type, -+ unsigned long base, unsigned dpl, unsigned flags, -+ unsigned short seg) -+{ -+ gate->a = (seg << 16) | (base & 0xffff); -+ gate->b = (base & 0xffff0000) | -+ (((0x80 | type | (dpl << 5)) & 0xff) << 8); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) int desc_empty(const void *ptr) -+{ -+ const u32 *desc = (const u32 *) ptr; -+ return !(desc[0] | desc[1]); -+} -+# 102 "/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h" -+static inline __attribute__((always_inline)) void native_write_idt_entry(gate_desc *idt, int entry, -+ const gate_desc *gate) -+{ -+ (__builtin_constant_p((sizeof(*gate))) ? __constant_memcpy((&idt[entry]), (gate), (sizeof(*gate))) : __memcpy((&idt[entry]), (gate), (sizeof(*gate)))); -+} -+ -+static inline __attribute__((always_inline)) void native_write_ldt_entry(struct desc_struct *ldt, int entry, -+ const void *desc) -+{ -+ (__builtin_constant_p((8)) ? __constant_memcpy((&ldt[entry]), (desc), (8)) : __memcpy((&ldt[entry]), (desc), (8))); -+} -+ -+static inline __attribute__((always_inline)) void native_write_gdt_entry(struct desc_struct *gdt, int entry, -+ const void *desc, int type) -+{ -+ unsigned int size; -+ switch (type) { -+ case DESC_TSS: -+ size = sizeof(tss_desc); -+ break; -+ case DESC_LDT: -+ size = sizeof(ldt_desc); -+ break; -+ default: -+ size = sizeof(struct desc_struct); -+ break; -+ } -+ (__builtin_constant_p((size)) ? __constant_memcpy((&gdt[entry]), (desc), (size)) : __memcpy((&gdt[entry]), (desc), (size))); -+} -+ -+static inline __attribute__((always_inline)) void pack_descriptor(struct desc_struct *desc, unsigned long base, -+ unsigned long limit, unsigned char type, -+ unsigned char flags) -+{ -+ desc->a = ((base & 0xffff) << 16) | (limit & 0xffff); -+ desc->b = (base & 0xff000000) | ((base & 0xff0000) >> 16) | -+ (limit & 0x000f0000) | ((type & 0xff) << 8) | -+ ((flags & 0xf) << 20); -+ desc->p = 1; -+} -+ -+ -+static inline __attribute__((always_inline)) void set_tssldt_descriptor(void *d, unsigned long addr, -+ unsigned type, unsigned size) -+{ -+# 159 "/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h" -+ pack_descriptor((struct desc_struct *)d, addr, size, 0x80 | type, 0); -+ -+} -+ -+static inline __attribute__((always_inline)) void __set_tss_desc(unsigned cpu, unsigned int entry, void *addr) -+{ -+ struct desc_struct *d = get_cpu_gdt_table(cpu); -+ tss_desc tss; -+# 175 "/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h" -+ set_tssldt_descriptor(&tss, (unsigned long)addr, DESC_TSS, -+ __builtin_offsetof(struct tss_struct,io_bitmap) + (65536/8) + -+ sizeof(unsigned long) - 1); -+ write_gdt_entry(d, entry, &tss, DESC_TSS); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) void native_set_ldt(const void *addr, unsigned int entries) -+{ -+ if (__builtin_expect(!!(entries == 0), 1)) -+ asm volatile("lldt %w0"::"q" (0)); -+ else { -+ unsigned cpu = (({ typeof(per_cpu__cpu_number) ret__; switch (sizeof(per_cpu__cpu_number)) { case 1: asm("mov" "b ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__cpu_number)); break; case 2: asm("mov" "w ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__cpu_number)); break; case 4: asm("mov" "l ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__cpu_number)); break; default: __bad_percpu_size(); } ret__; })); -+ ldt_desc ldt; -+ -+ set_tssldt_descriptor(&ldt, (unsigned long)addr, DESC_LDT, -+ entries * 8 - 1); -+ write_gdt_entry(get_cpu_gdt_table(cpu), (12 + 5), -+ &ldt, DESC_LDT); -+ asm volatile("lldt %w0"::"q" ((12 + 5)*8)); -+ } -+} -+ -+static inline __attribute__((always_inline)) void native_load_tr_desc(void) -+{ -+ asm volatile("ltr %w0"::"q" ((12 + 4)*8)); -+} -+ -+static inline __attribute__((always_inline)) void native_load_gdt(const struct desc_ptr *dtr) -+{ -+ asm volatile("lgdt %0"::"m" (*dtr)); -+} -+ -+static inline __attribute__((always_inline)) void native_load_idt(const struct desc_ptr *dtr) -+{ -+ asm volatile("lidt %0"::"m" (*dtr)); -+} -+ -+static inline __attribute__((always_inline)) void native_store_gdt(struct desc_ptr *dtr) -+{ -+ asm volatile("sgdt %0":"=m" (*dtr)); -+} -+ -+static inline __attribute__((always_inline)) void native_store_idt(struct desc_ptr *dtr) -+{ -+ asm volatile("sidt %0":"=m" (*dtr)); -+} -+ -+static inline __attribute__((always_inline)) unsigned long native_store_tr(void) -+{ -+ unsigned long tr; -+ asm volatile("str %0":"=r" (tr)); -+ return tr; -+} -+ -+static inline __attribute__((always_inline)) void native_load_tls(struct thread_struct *t, unsigned int cpu) -+{ -+ unsigned int i; -+ struct desc_struct *gdt = get_cpu_gdt_table(cpu); -+ -+ for (i = 0; i < 3; i++) -+ gdt[6 + i] = t->tls_array[i]; -+} -+# 256 "/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h" -+static inline __attribute__((always_inline)) void clear_LDT(void) -+{ -+ set_ldt(0, 0); -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void load_LDT_nolock(mm_context_t *pc) -+{ -+ set_ldt(pc->ldt, pc->size); -+} -+ -+static inline __attribute__((always_inline)) void load_LDT(mm_context_t *pc) -+{ -+ do { } while (0); -+ load_LDT_nolock(pc); -+ do { } while (0); -+} -+ -+static inline __attribute__((always_inline)) unsigned long get_desc_base(const struct desc_struct *desc) -+{ -+ return desc->base0 | ((desc->base1) << 16) | ((desc->base2) << 24); -+} -+ -+static inline __attribute__((always_inline)) unsigned long get_desc_limit(const struct desc_struct *desc) -+{ -+ return desc->limit0 | (desc->limit << 16); -+} -+ -+static inline __attribute__((always_inline)) void _set_gate(int gate, unsigned type, void *addr, -+ unsigned dpl, unsigned ist, unsigned seg) -+{ -+ gate_desc s; -+ pack_gate(&s, type, (unsigned long)addr, dpl, ist, seg); -+ -+ -+ -+ -+ write_idt_entry(idt_table, gate, &s); -+} -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void set_intr_gate(unsigned int n, void *addr) -+{ -+ do { if (__builtin_expect(!!((unsigned)n > 0xFF), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h"), "i" (306), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ _set_gate(n, GATE_INTERRUPT, addr, 0, 0, ((12 + 0) * 8)); -+} -+ -+ -+ -+ -+extern int first_system_vector; -+extern char system_vectors[]; -+ -+static inline __attribute__((always_inline)) void alloc_system_vector(int vector) -+{ -+ if (system_vectors[vector] == 0) { -+ system_vectors[vector] = 1; -+ if (first_system_vector > vector) -+ first_system_vector = vector; -+ } else -+ do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h"), "i" (323), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); -+} -+ -+static inline __attribute__((always_inline)) void alloc_intr_gate(unsigned int n, void *addr) -+{ -+ alloc_system_vector(n); -+ set_intr_gate(n, addr); -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void set_system_intr_gate(unsigned int n, void *addr) -+{ -+ do { if (__builtin_expect(!!((unsigned)n > 0xFF), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h"), "i" (337), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ _set_gate(n, GATE_INTERRUPT, addr, 0x3, 0, ((12 + 0) * 8)); -+} -+ -+static inline __attribute__((always_inline)) void set_trap_gate(unsigned int n, void *addr) -+{ -+ do { if (__builtin_expect(!!((unsigned)n > 0xFF), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h"), "i" (343), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ _set_gate(n, GATE_TRAP, addr, 0, 0, ((12 + 0) * 8)); -+} -+ -+static inline __attribute__((always_inline)) void set_system_gate(unsigned int n, void *addr) -+{ -+ do { if (__builtin_expect(!!((unsigned)n > 0xFF), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h"), "i" (349), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ -+ _set_gate(n, GATE_TRAP, addr, 0x3, 0, ((12 + 0) * 8)); -+ -+ -+ -+} -+ -+static inline __attribute__((always_inline)) void set_task_gate(unsigned int n, unsigned int gdt_entry) -+{ -+ do { if (__builtin_expect(!!((unsigned)n > 0xFF), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h"), "i" (359), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ _set_gate(n, GATE_TASK, (void *)0, 0, 0, (gdt_entry<<3)); -+} -+ -+static inline __attribute__((always_inline)) void set_intr_gate_ist(int n, void *addr, unsigned ist) -+{ -+ do { if (__builtin_expect(!!((unsigned)n > 0xFF), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h"), "i" (365), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ _set_gate(n, GATE_INTERRUPT, addr, 0, ist, ((12 + 0) * 8)); -+} -+ -+static inline __attribute__((always_inline)) void set_system_gate_ist(int n, void *addr, unsigned ist) -+{ -+ do { if (__builtin_expect(!!((unsigned)n > 0xFF), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h"), "i" (371), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ _set_gate(n, GATE_INTERRUPT, addr, 0x3, ist, ((12 + 0) * 8)); -+} -+# 90 "/d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h" 2 -+# 278 "/d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h" -+struct task_struct; -+# 323 "/d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h" -+struct linux_binprm; -+ -+ -+extern int arch_setup_additional_pages(struct linux_binprm *bprm, -+ int executable_stack); -+ -+extern int syscall32_setup_pages(struct linux_binprm *, int exstack); -+ -+ -+extern unsigned long arch_randomize_brk(struct mm_struct *mm); -+# 8 "/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h" 2 -+ -+ -+struct file; -+# 20 "/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h" -+typedef __u32 Elf32_Addr; -+typedef __u16 Elf32_Half; -+typedef __u32 Elf32_Off; -+typedef __s32 Elf32_Sword; -+typedef __u32 Elf32_Word; -+ -+ -+typedef __u64 Elf64_Addr; -+typedef __u16 Elf64_Half; -+typedef __s16 Elf64_SHalf; -+typedef __u64 Elf64_Off; -+typedef __s32 Elf64_Sword; -+typedef __u32 Elf64_Word; -+typedef __u64 Elf64_Xword; -+typedef __s64 Elf64_Sxword; -+# 127 "/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h" -+typedef struct dynamic{ -+ Elf32_Sword d_tag; -+ union{ -+ Elf32_Sword d_val; -+ Elf32_Addr d_ptr; -+ } d_un; -+} Elf32_Dyn; -+ -+typedef struct { -+ Elf64_Sxword d_tag; -+ union { -+ Elf64_Xword d_val; -+ Elf64_Addr d_ptr; -+ } d_un; -+} Elf64_Dyn; -+# 150 "/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h" -+typedef struct elf32_rel { -+ Elf32_Addr r_offset; -+ Elf32_Word r_info; -+} Elf32_Rel; -+ -+typedef struct elf64_rel { -+ Elf64_Addr r_offset; -+ Elf64_Xword r_info; -+} Elf64_Rel; -+ -+typedef struct elf32_rela{ -+ Elf32_Addr r_offset; -+ Elf32_Word r_info; -+ Elf32_Sword r_addend; -+} Elf32_Rela; -+ -+typedef struct elf64_rela { -+ Elf64_Addr r_offset; -+ Elf64_Xword r_info; -+ Elf64_Sxword r_addend; -+} Elf64_Rela; -+ -+typedef struct elf32_sym{ -+ Elf32_Word st_name; -+ Elf32_Addr st_value; -+ Elf32_Word st_size; -+ unsigned char st_info; -+ unsigned char st_other; -+ Elf32_Half st_shndx; -+} Elf32_Sym; -+ -+typedef struct elf64_sym { -+ Elf64_Word st_name; -+ unsigned char st_info; -+ unsigned char st_other; -+ Elf64_Half st_shndx; -+ Elf64_Addr st_value; -+ Elf64_Xword st_size; -+} Elf64_Sym; -+ -+ -+ -+ -+typedef struct elf32_hdr{ -+ unsigned char e_ident[16]; -+ Elf32_Half e_type; -+ Elf32_Half e_machine; -+ Elf32_Word e_version; -+ Elf32_Addr e_entry; -+ Elf32_Off e_phoff; -+ Elf32_Off e_shoff; -+ Elf32_Word e_flags; -+ Elf32_Half e_ehsize; -+ Elf32_Half e_phentsize; -+ Elf32_Half e_phnum; -+ Elf32_Half e_shentsize; -+ Elf32_Half e_shnum; -+ Elf32_Half e_shstrndx; -+} Elf32_Ehdr; -+ -+typedef struct elf64_hdr { -+ unsigned char e_ident[16]; -+ Elf64_Half e_type; -+ Elf64_Half e_machine; -+ Elf64_Word e_version; -+ Elf64_Addr e_entry; -+ Elf64_Off e_phoff; -+ Elf64_Off e_shoff; -+ Elf64_Word e_flags; -+ Elf64_Half e_ehsize; -+ Elf64_Half e_phentsize; -+ Elf64_Half e_phnum; -+ Elf64_Half e_shentsize; -+ Elf64_Half e_shnum; -+ Elf64_Half e_shstrndx; -+} Elf64_Ehdr; -+ -+ -+ -+ -+ -+ -+ -+typedef struct elf32_phdr{ -+ Elf32_Word p_type; -+ Elf32_Off p_offset; -+ Elf32_Addr p_vaddr; -+ Elf32_Addr p_paddr; -+ Elf32_Word p_filesz; -+ Elf32_Word p_memsz; -+ Elf32_Word p_flags; -+ Elf32_Word p_align; -+} Elf32_Phdr; -+ -+typedef struct elf64_phdr { -+ Elf64_Word p_type; -+ Elf64_Word p_flags; -+ Elf64_Off p_offset; -+ Elf64_Addr p_vaddr; -+ Elf64_Addr p_paddr; -+ Elf64_Xword p_filesz; -+ Elf64_Xword p_memsz; -+ Elf64_Xword p_align; -+} Elf64_Phdr; -+# 289 "/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h" -+typedef struct { -+ Elf32_Word sh_name; -+ Elf32_Word sh_type; -+ Elf32_Word sh_flags; -+ Elf32_Addr sh_addr; -+ Elf32_Off sh_offset; -+ Elf32_Word sh_size; -+ Elf32_Word sh_link; -+ Elf32_Word sh_info; -+ Elf32_Word sh_addralign; -+ Elf32_Word sh_entsize; -+} Elf32_Shdr; -+ -+typedef struct elf64_shdr { -+ Elf64_Word sh_name; -+ Elf64_Word sh_type; -+ Elf64_Xword sh_flags; -+ Elf64_Addr sh_addr; -+ Elf64_Off sh_offset; -+ Elf64_Xword sh_size; -+ Elf64_Word sh_link; -+ Elf64_Word sh_info; -+ Elf64_Xword sh_addralign; -+ Elf64_Xword sh_entsize; -+} Elf64_Shdr; -+# 366 "/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h" -+typedef struct elf32_note { -+ Elf32_Word n_namesz; -+ Elf32_Word n_descsz; -+ Elf32_Word n_type; -+} Elf32_Nhdr; -+ -+ -+typedef struct elf64_note { -+ Elf64_Word n_namesz; -+ Elf64_Word n_descsz; -+ Elf64_Word n_type; -+} Elf64_Nhdr; -+ -+ -+ -+extern Elf32_Dyn _DYNAMIC []; -+# 399 "/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h" -+static inline __attribute__((always_inline)) int elf_coredump_extra_notes_size(void) { return 0; } -+static inline __attribute__((always_inline)) int elf_coredump_extra_notes_write(struct file *file, -+ loff_t *foffset) { return 0; } -+# 15 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kobject.h" 1 -+# 21 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kobject.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sysfs.h" 1 -+# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sysfs.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1 -+# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sysfs.h" 2 -+ -+ -+ -+struct kobject; -+struct module; -+ -+ -+ -+ -+ -+struct attribute { -+ const char *name; -+ struct module *owner; -+ mode_t mode; -+}; -+ -+struct attribute_group { -+ const char *name; -+ mode_t (*is_visible)(struct kobject *, -+ struct attribute *, int); -+ struct attribute **attrs; -+}; -+# 64 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sysfs.h" -+struct vm_area_struct; -+ -+struct bin_attribute { -+ struct attribute attr; -+ size_t size; -+ void *xxx_private; -+ ssize_t (*read)(struct kobject *, struct bin_attribute *, -+ char *, loff_t, size_t); -+ ssize_t (*write)(struct kobject *, struct bin_attribute *, -+ char *, loff_t, size_t); -+ int (*mmap)(struct kobject *, struct bin_attribute *attr, -+ struct vm_area_struct *vma); -+}; -+ -+struct sysfs_ops { -+ ssize_t (*show)(struct kobject *, struct attribute *,char *); -+ ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t); -+}; -+ -+ -+ -+int sysfs_schedule_callback(struct kobject *kobj, void (*func)(void *), -+ void *data, struct module *owner); -+ -+int __attribute__((warn_unused_result)) sysfs_create_dir(struct kobject *kobj); -+void sysfs_remove_dir(struct kobject *kobj); -+int __attribute__((warn_unused_result)) sysfs_rename_dir(struct kobject *kobj, const char *new_name); -+int __attribute__((warn_unused_result)) sysfs_move_dir(struct kobject *kobj, -+ struct kobject *new_parent_kobj); -+ -+int __attribute__((warn_unused_result)) sysfs_create_file(struct kobject *kobj, -+ const struct attribute *attr); -+int __attribute__((warn_unused_result)) sysfs_chmod_file(struct kobject *kobj, struct attribute *attr, -+ mode_t mode); -+void sysfs_remove_file(struct kobject *kobj, const struct attribute *attr); -+ -+int __attribute__((warn_unused_result)) sysfs_create_bin_file(struct kobject *kobj, -+ struct bin_attribute *attr); -+void sysfs_remove_bin_file(struct kobject *kobj, struct bin_attribute *attr); -+ -+int __attribute__((warn_unused_result)) sysfs_create_link(struct kobject *kobj, struct kobject *target, -+ const char *name); -+int __attribute__((warn_unused_result)) sysfs_create_link_nowarn(struct kobject *kobj, -+ struct kobject *target, -+ const char *name); -+void sysfs_remove_link(struct kobject *kobj, const char *name); -+ -+int __attribute__((warn_unused_result)) sysfs_create_group(struct kobject *kobj, -+ const struct attribute_group *grp); -+int sysfs_update_group(struct kobject *kobj, -+ const struct attribute_group *grp); -+void sysfs_remove_group(struct kobject *kobj, -+ const struct attribute_group *grp); -+int sysfs_add_file_to_group(struct kobject *kobj, -+ const struct attribute *attr, const char *group); -+void sysfs_remove_file_from_group(struct kobject *kobj, -+ const struct attribute *attr, const char *group); -+ -+void sysfs_notify(struct kobject *kobj, char *dir, char *attr); -+ -+extern int __attribute__((warn_unused_result)) sysfs_init(void); -+# 22 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kobject.h" 2 -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kref.h" 1 -+# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kref.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1 -+# 20 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kref.h" 2 -+ -+struct kref { -+ atomic_t refcount; -+}; -+ -+void kref_set(struct kref *kref, int num); -+void kref_init(struct kref *kref); -+void kref_get(struct kref *kref); -+int kref_put(struct kref *kref, void (*release) (struct kref *kref)); -+# 25 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kobject.h" 2 -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1 -+# 28 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kobject.h" 2 -+ -+ -+ -+ -+ -+ -+extern char uevent_helper[]; -+ -+ -+extern u64 uevent_seqnum; -+# 49 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kobject.h" -+enum kobject_action { -+ KOBJ_ADD, -+ KOBJ_REMOVE, -+ KOBJ_CHANGE, -+ KOBJ_MOVE, -+ KOBJ_ONLINE, -+ KOBJ_OFFLINE, -+ KOBJ_MAX -+}; -+ -+struct kobject { -+ const char *name; -+ struct list_head entry; -+ struct kobject *parent; -+ struct kset *kset; -+ struct kobj_type *ktype; -+ struct sysfs_dirent *sd; -+ struct kref kref; -+ unsigned int state_initialized:1; -+ unsigned int state_in_sysfs:1; -+ unsigned int state_add_uevent_sent:1; -+ unsigned int state_remove_uevent_sent:1; -+}; -+ -+extern int kobject_set_name(struct kobject *kobj, const char *name, ...) -+ __attribute__((format(printf, 2, 3))); -+ -+static inline __attribute__((always_inline)) const char *kobject_name(const struct kobject *kobj) -+{ -+ return kobj->name; -+} -+ -+extern void kobject_init(struct kobject *kobj, struct kobj_type *ktype); -+extern int __attribute__((warn_unused_result)) kobject_add(struct kobject *kobj, -+ struct kobject *parent, -+ const char *fmt, ...); -+extern int __attribute__((warn_unused_result)) kobject_init_and_add(struct kobject *kobj, -+ struct kobj_type *ktype, -+ struct kobject *parent, -+ const char *fmt, ...); -+ -+extern void kobject_del(struct kobject *kobj); -+ -+extern struct kobject * __attribute__((warn_unused_result)) kobject_create(void); -+extern struct kobject * __attribute__((warn_unused_result)) kobject_create_and_add(const char *name, -+ struct kobject *parent); -+ -+extern int __attribute__((warn_unused_result)) kobject_rename(struct kobject *, const char *new_name); -+extern int __attribute__((warn_unused_result)) kobject_move(struct kobject *, struct kobject *); -+ -+extern struct kobject *kobject_get(struct kobject *kobj); -+extern void kobject_put(struct kobject *kobj); -+ -+extern char *kobject_get_path(struct kobject *kobj, gfp_t flag); -+ -+struct kobj_type { -+ void (*release)(struct kobject *kobj); -+ struct sysfs_ops *sysfs_ops; -+ struct attribute **default_attrs; -+}; -+ -+struct kobj_uevent_env { -+ char *envp[32]; -+ int envp_idx; -+ char buf[2048]; -+ int buflen; -+}; -+ -+struct kset_uevent_ops { -+ int (*filter)(struct kset *kset, struct kobject *kobj); -+ const char *(*name)(struct kset *kset, struct kobject *kobj); -+ int (*uevent)(struct kset *kset, struct kobject *kobj, -+ struct kobj_uevent_env *env); -+}; -+ -+struct kobj_attribute { -+ struct attribute attr; -+ ssize_t (*show)(struct kobject *kobj, struct kobj_attribute *attr, -+ char *buf); -+ ssize_t (*store)(struct kobject *kobj, struct kobj_attribute *attr, -+ const char *buf, size_t count); -+}; -+ -+extern struct sysfs_ops kobj_sysfs_ops; -+# 151 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kobject.h" -+struct kset { -+ struct list_head list; -+ spinlock_t list_lock; -+ struct kobject kobj; -+ struct kset_uevent_ops *uevent_ops; -+}; -+ -+extern void kset_init(struct kset *kset); -+extern int __attribute__((warn_unused_result)) kset_register(struct kset *kset); -+extern void kset_unregister(struct kset *kset); -+extern struct kset * __attribute__((warn_unused_result)) kset_create_and_add(const char *name, -+ struct kset_uevent_ops *u, -+ struct kobject *parent_kobj); -+ -+static inline __attribute__((always_inline)) struct kset *to_kset(struct kobject *kobj) -+{ -+ return kobj ? ({ const typeof( ((struct kset *)0)->kobj ) *__mptr = (kobj); (struct kset *)( (char *)__mptr - __builtin_offsetof(struct kset,kobj) );}) : 0; -+} -+ -+static inline __attribute__((always_inline)) struct kset *kset_get(struct kset *k) -+{ -+ return k ? to_kset(kobject_get(&k->kobj)) : 0; -+} -+ -+static inline __attribute__((always_inline)) void kset_put(struct kset *k) -+{ -+ kobject_put(&k->kobj); -+} -+ -+static inline __attribute__((always_inline)) struct kobj_type *get_ktype(struct kobject *kobj) -+{ -+ return kobj->ktype; -+} -+ -+extern struct kobject *kset_find_obj(struct kset *, const char *); -+ -+ -+extern struct kobject *kernel_kobj; -+ -+extern struct kobject *mm_kobj; -+ -+extern struct kobject *hypervisor_kobj; -+ -+extern struct kobject *power_kobj; -+ -+extern struct kobject *firmware_kobj; -+ -+ -+int kobject_uevent(struct kobject *kobj, enum kobject_action action); -+int kobject_uevent_env(struct kobject *kobj, enum kobject_action action, -+ char *envp[]); -+ -+int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...) -+ __attribute__((format (printf, 2, 3))); -+ -+int kobject_action_type(const char *buf, size_t count, -+ enum kobject_action *type); -+# 17 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/moduleparam.h" 1 -+# 29 "/d/kernels/linux-2.6.27.10-clickport/include/linux/moduleparam.h" -+struct kernel_param; -+ -+ -+typedef int (*param_set_fn)(const char *val, struct kernel_param *kp); -+ -+typedef int (*param_get_fn)(char *buffer, struct kernel_param *kp); -+ -+struct kernel_param { -+ const char *name; -+ unsigned int perm; -+ param_set_fn set; -+ param_get_fn get; -+ union { -+ void *arg; -+ const struct kparam_string *str; -+ const struct kparam_array *arr; -+ }; -+}; -+ -+ -+struct kparam_string { -+ unsigned int maxlen; -+ char *string; -+}; -+ -+ -+struct kparam_array -+{ -+ unsigned int max; -+ unsigned int *num; -+ param_set_fn set; -+ param_get_fn get; -+ unsigned int elemsize; -+ void *elem; -+}; -+# 112 "/d/kernels/linux-2.6.27.10-clickport/include/linux/moduleparam.h" -+extern int parse_args(const char *name, -+ char *args, -+ struct kernel_param *params, -+ unsigned num, -+ int (*unknown)(char *param, char *val)); -+ -+ -+ -+ -+ -+ -+ -+extern int param_set_byte(const char *val, struct kernel_param *kp); -+extern int param_get_byte(char *buffer, struct kernel_param *kp); -+ -+ -+extern int param_set_short(const char *val, struct kernel_param *kp); -+extern int param_get_short(char *buffer, struct kernel_param *kp); -+ -+ -+extern int param_set_ushort(const char *val, struct kernel_param *kp); -+extern int param_get_ushort(char *buffer, struct kernel_param *kp); -+ -+ -+extern int param_set_int(const char *val, struct kernel_param *kp); -+extern int param_get_int(char *buffer, struct kernel_param *kp); -+ -+ -+extern int param_set_uint(const char *val, struct kernel_param *kp); -+extern int param_get_uint(char *buffer, struct kernel_param *kp); -+ -+ -+extern int param_set_long(const char *val, struct kernel_param *kp); -+extern int param_get_long(char *buffer, struct kernel_param *kp); -+ -+ -+extern int param_set_ulong(const char *val, struct kernel_param *kp); -+extern int param_get_ulong(char *buffer, struct kernel_param *kp); -+ -+ -+extern int param_set_charp(const char *val, struct kernel_param *kp); -+extern int param_get_charp(char *buffer, struct kernel_param *kp); -+ -+ -+extern int param_set_bool(const char *val, struct kernel_param *kp); -+extern int param_get_bool(char *buffer, struct kernel_param *kp); -+ -+ -+extern int param_set_invbool(const char *val, struct kernel_param *kp); -+extern int param_get_invbool(char *buffer, struct kernel_param *kp); -+# 176 "/d/kernels/linux-2.6.27.10-clickport/include/linux/moduleparam.h" -+extern int param_array_set(const char *val, struct kernel_param *kp); -+extern int param_array_get(char *buffer, struct kernel_param *kp); -+ -+extern int param_set_copystring(const char *val, struct kernel_param *kp); -+extern int param_get_string(char *buffer, struct kernel_param *kp); -+ -+ -+ -+struct module; -+ -+ -+extern int module_param_sysfs_setup(struct module *mod, -+ struct kernel_param *kparam, -+ unsigned int num_params); -+ -+extern void module_param_sysfs_remove(struct module *mod); -+# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h" 1 -+# 17 "/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h" -+struct module; -+struct marker; -+# 32 "/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h" -+typedef void marker_probe_func(void *probe_private, void *call_private, -+ const char *fmt, va_list *args); -+ -+struct marker_probe_closure { -+ marker_probe_func *func; -+ void *probe_private; -+}; -+ -+struct marker { -+ const char *name; -+ const char *format; -+ -+ -+ char state; -+ char ptype; -+ -+ void (*call)(const struct marker *mdata, void *call_private, ...); -+ struct marker_probe_closure single; -+ struct marker_probe_closure *multi; -+} __attribute__((aligned(8))); -+# 88 "/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h" -+static inline __attribute__((always_inline)) void marker_update_probe_range(struct marker *begin, -+ struct marker *end) -+{ } -+# 125 "/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h" -+static inline __attribute__((always_inline)) void __attribute__((format(printf,1,2))) ___mark_check_format(const char *fmt, ...) -+{ -+} -+ -+ -+ -+ -+ -+ -+ -+extern marker_probe_func __mark_empty_function; -+ -+extern void marker_probe_cb(const struct marker *mdata, -+ void *call_private, ...); -+extern void marker_probe_cb_noarg(const struct marker *mdata, -+ void *call_private, ...); -+ -+ -+ -+ -+ -+extern int marker_probe_register(const char *name, const char *format, -+ marker_probe_func *probe, void *probe_private); -+ -+ -+ -+ -+extern int marker_probe_unregister(const char *name, -+ marker_probe_func *probe, void *probe_private); -+ -+ -+ -+extern int marker_probe_unregister_private_data(marker_probe_func *probe, -+ void *probe_private); -+ -+extern void *marker_get_private_data(const char *name, marker_probe_func *probe, -+ int num); -+# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/local.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h" 1 -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h" 1 -+# 56 "/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h" -+void __attribute__ ((__section__(".init.text"))) kmem_cache_init(void); -+int slab_is_available(void); -+ -+struct kmem_cache *kmem_cache_create(const char *, size_t, size_t, -+ unsigned long, -+ void (*)(void *)); -+void kmem_cache_destroy(struct kmem_cache *); -+int kmem_cache_shrink(struct kmem_cache *); -+void kmem_cache_free(struct kmem_cache *, void *); -+unsigned int kmem_cache_size(struct kmem_cache *); -+const char *kmem_cache_name(struct kmem_cache *); -+int kmem_ptr_validate(struct kmem_cache *cachep, const void *ptr); -+# 99 "/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h" -+void * __attribute__((warn_unused_result)) __krealloc(const void *, size_t, gfp_t); -+void * __attribute__((warn_unused_result)) krealloc(const void *, size_t, gfp_t); -+void kfree(const void *); -+size_t ksize(const void *); -+# 128 "/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/slab_def.h" 1 -+# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/slab_def.h" -+struct cache_sizes { -+ size_t cs_size; -+ struct kmem_cache *cs_cachep; -+ -+ struct kmem_cache *cs_dmacachep; -+ -+}; -+extern struct cache_sizes malloc_sizes[]; -+ -+void *kmem_cache_alloc(struct kmem_cache *, gfp_t); -+void *__kmalloc(size_t size, gfp_t flags); -+ -+static inline __attribute__((always_inline)) void *kmalloc(size_t size, gfp_t flags) -+{ -+ if (__builtin_constant_p(size)) { -+ int i = 0; -+ -+ if (!size) -+ return ((void *)16); -+ -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kmalloc_sizes.h" 1 -+ -+ if (size <= 32) goto found; else i++; -+ -+ if (size <= 64) goto found; else i++; -+ -+ -+ -+ if (size <= 128) goto found; else i++; -+ -+ -+ -+ if (size <= 256) goto found; else i++; -+ if (size <= 512) goto found; else i++; -+ if (size <= 1024) goto found; else i++; -+ if (size <= 2048) goto found; else i++; -+ if (size <= 4096) goto found; else i++; -+ if (size <= 8192) goto found; else i++; -+ if (size <= 16384) goto found; else i++; -+ if (size <= 32768) goto found; else i++; -+ if (size <= 65536) goto found; else i++; -+ if (size <= 131072) goto found; else i++; -+ -+ if (size <= 262144) goto found; else i++; -+ -+ -+ if (size <= 524288) goto found; else i++; -+ -+ -+ if (size <= 1048576) goto found; else i++; -+ -+ -+ if (size <= 2097152) goto found; else i++; -+ -+ -+ if (size <= 4194304) goto found; else i++; -+# 45 "/d/kernels/linux-2.6.27.10-clickport/include/linux/slab_def.h" 2 -+ -+ { -+ extern void __you_cannot_kmalloc_that_much(void); -+ __you_cannot_kmalloc_that_much(); -+ } -+found: -+ -+ if (flags & (( gfp_t)0x01u)) -+ return kmem_cache_alloc(malloc_sizes[i].cs_dmacachep, -+ flags); -+ -+ return kmem_cache_alloc(malloc_sizes[i].cs_cachep, flags); -+ } -+ return __kmalloc(size, flags); -+} -+# 129 "/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h" 2 -+# 182 "/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h" -+static inline __attribute__((always_inline)) void *kcalloc(size_t n, size_t size, gfp_t flags) -+{ -+ if (size != 0 && n > (~0UL) / size) -+ return 0; -+ return __kmalloc(n * size, flags | (( gfp_t)0x8000u)); -+} -+# 200 "/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h" -+static inline __attribute__((always_inline)) void *kmalloc_node(size_t size, gfp_t flags, int node) -+{ -+ return kmalloc(size, flags); -+} -+ -+static inline __attribute__((always_inline)) void *__kmalloc_node(size_t size, gfp_t flags, int node) -+{ -+ return __kmalloc(size, flags); -+} -+ -+void *kmem_cache_alloc(struct kmem_cache *, gfp_t); -+ -+static inline __attribute__((always_inline)) void *kmem_cache_alloc_node(struct kmem_cache *cachep, -+ gfp_t flags, int node) -+{ -+ return kmem_cache_alloc(cachep, flags); -+} -+# 265 "/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h" -+static inline __attribute__((always_inline)) void *kmem_cache_zalloc(struct kmem_cache *k, gfp_t flags) -+{ -+ return kmem_cache_alloc(k, flags | (( gfp_t)0x8000u)); -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void *kzalloc(size_t size, gfp_t flags) -+{ -+ return kmalloc(size, flags | (( gfp_t)0x8000u)); -+} -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void *kzalloc_node(size_t size, gfp_t flags, int node) -+{ -+ return kmalloc_node(size, flags | (( gfp_t)0x8000u), node); -+} -+ -+ -+extern const struct seq_operations slabinfo_op; -+ssize_t slabinfo_write(struct file *, const char *, size_t, loff_t *); -+# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h" 2 -+# 61 "/d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h" -+struct percpu_data { -+ void *ptrs[1]; -+}; -+# 77 "/d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h" -+extern void *__percpu_alloc_mask(size_t size, gfp_t gfp, cpumask_t *mask); -+extern void percpu_free(void *__pdata); -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm/local.h" 2 -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1 -+# 8 "/d/kernels/linux-2.6.27.10-clickport/include/asm/local.h" 2 -+ -+ -+typedef struct { -+ atomic_long_t a; -+} local_t; -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void local_inc(local_t *l) -+{ -+ asm volatile(" " "incl" " " "%0" -+ : "+m" (l->a.counter)); -+} -+ -+static inline __attribute__((always_inline)) void local_dec(local_t *l) -+{ -+ asm volatile(" " "decl" " " "%0" -+ : "+m" (l->a.counter)); -+} -+ -+static inline __attribute__((always_inline)) void local_add(long i, local_t *l) -+{ -+ asm volatile(" " "addl" " " "%1,%0" -+ : "+m" (l->a.counter) -+ : "ir" (i)); -+} -+ -+static inline __attribute__((always_inline)) void local_sub(long i, local_t *l) -+{ -+ asm volatile(" " "subl" " " "%1,%0" -+ : "+m" (l->a.counter) -+ : "ir" (i)); -+} -+# 54 "/d/kernels/linux-2.6.27.10-clickport/include/asm/local.h" -+static inline __attribute__((always_inline)) int local_sub_and_test(long i, local_t *l) -+{ -+ unsigned char c; -+ -+ asm volatile(" " "subl" " " "%2,%0; sete %1" -+ : "+m" (l->a.counter), "=qm" (c) -+ : "ir" (i) : "memory"); -+ return c; -+} -+# 72 "/d/kernels/linux-2.6.27.10-clickport/include/asm/local.h" -+static inline __attribute__((always_inline)) int local_dec_and_test(local_t *l) -+{ -+ unsigned char c; -+ -+ asm volatile(" " "decl" " " "%0; sete %1" -+ : "+m" (l->a.counter), "=qm" (c) -+ : : "memory"); -+ return c != 0; -+} -+# 90 "/d/kernels/linux-2.6.27.10-clickport/include/asm/local.h" -+static inline __attribute__((always_inline)) int local_inc_and_test(local_t *l) -+{ -+ unsigned char c; -+ -+ asm volatile(" " "incl" " " "%0; sete %1" -+ : "+m" (l->a.counter), "=qm" (c) -+ : : "memory"); -+ return c != 0; -+} -+# 109 "/d/kernels/linux-2.6.27.10-clickport/include/asm/local.h" -+static inline __attribute__((always_inline)) int local_add_negative(long i, local_t *l) -+{ -+ unsigned char c; -+ -+ asm volatile(" " "addl" " " "%2,%0; sets %1" -+ : "+m" (l->a.counter), "=qm" (c) -+ : "ir" (i) : "memory"); -+ return c; -+} -+# 126 "/d/kernels/linux-2.6.27.10-clickport/include/asm/local.h" -+static inline __attribute__((always_inline)) long local_add_return(long i, local_t *l) -+{ -+ long __i; -+ -+ -+ -+ -+ -+ -+ __i = i; -+ asm volatile(" " "xaddl" " " "%0, %1;" -+ : "+r" (i), "+m" (l->a.counter) -+ : : "memory"); -+ return i + __i; -+# 149 "/d/kernels/linux-2.6.27.10-clickport/include/asm/local.h" -+} -+ -+static inline __attribute__((always_inline)) long local_sub_return(long i, local_t *l) -+{ -+ return local_add_return(-i, l); -+} -+# 20 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/module.h" 1 -+ -+ -+ -+ -+struct mod_arch_specific {}; -+# 22 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" 2 -+# 33 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" -+struct kernel_symbol -+{ -+ unsigned long value; -+ const char *name; -+}; -+ -+struct modversion_info -+{ -+ unsigned long crc; -+ char name[(64 - sizeof(unsigned long))]; -+}; -+ -+struct module; -+ -+struct module_attribute { -+ struct attribute attr; -+ ssize_t (*show)(struct module_attribute *, struct module *, char *); -+ ssize_t (*store)(struct module_attribute *, struct module *, -+ const char *, size_t count); -+ void (*setup)(struct module *, const char *); -+ int (*test)(struct module *); -+ void (*free)(struct module *); -+}; -+ -+struct module_kobject -+{ -+ struct kobject kobj; -+ struct module *mod; -+ struct kobject *drivers_dir; -+}; -+ -+ -+extern int init_module(void); -+extern void cleanup_module(void); -+ -+ -+struct exception_table_entry; -+ -+const struct exception_table_entry * -+search_extable(const struct exception_table_entry *first, -+ const struct exception_table_entry *last, -+ unsigned long value); -+void sort_extable(struct exception_table_entry *start, -+ struct exception_table_entry *finish); -+void sort_main_extable(void); -+ -+ -+ -+ -+ -+ -+extern struct module __this_module; -+# 163 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" -+const struct exception_table_entry *search_exception_tables(unsigned long add); -+ -+struct notifier_block; -+ -+ -+ -+ -+void *__symbol_get(const char *symbol); -+void *__symbol_get_gpl(const char *symbol); -+# 220 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" -+struct module_ref -+{ -+ local_t count; -+} __attribute__((__aligned__((1 << (7))))); -+ -+enum module_state -+{ -+ MODULE_STATE_LIVE, -+ MODULE_STATE_COMING, -+ MODULE_STATE_GOING, -+}; -+ -+struct module -+{ -+ enum module_state state; -+ -+ -+ struct list_head list; -+ -+ -+ char name[(64 - sizeof(unsigned long))]; -+ -+ -+ struct module_kobject mkobj; -+ struct module_param_attrs *param_attrs; -+ struct module_attribute *modinfo_attrs; -+ const char *version; -+ const char *srcversion; -+ struct kobject *holders_dir; -+ -+ -+ const struct kernel_symbol *syms; -+ const unsigned long *crcs; -+ unsigned int num_syms; -+ -+ -+ unsigned int num_gpl_syms; -+ const struct kernel_symbol *gpl_syms; -+ const unsigned long *gpl_crcs; -+# 273 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" -+ const struct kernel_symbol *gpl_future_syms; -+ const unsigned long *gpl_future_crcs; -+ unsigned int num_gpl_future_syms; -+ -+ -+ unsigned int num_exentries; -+ const struct exception_table_entry *extable; -+ -+ -+ int (*init)(void); -+ -+ -+ void *module_init; -+ -+ -+ void *module_core; -+ -+ -+ unsigned int init_size, core_size; -+ -+ -+ unsigned int init_text_size, core_text_size; -+ -+ -+ void *unwind_info; -+ -+ -+ struct mod_arch_specific arch; -+ -+ unsigned int taints; -+ -+ -+ -+ unsigned num_bugs; -+ struct list_head bug_list; -+ struct bug_entry *bug_table; -+ -+ -+ -+ -+ Elf32_Sym *symtab; -+ unsigned int num_symtab; -+ char *strtab; -+ -+ -+ struct module_sect_attrs *sect_attrs; -+ -+ -+ struct module_notes_attrs *notes_attrs; -+ -+ -+ -+ void *percpu; -+ -+ -+ -+ char *args; -+ -+ -+ -+ -+ -+ -+ -+ struct list_head modules_which_use_me; -+ -+ -+ struct task_struct *waiter; -+ -+ -+ void (*exit)(void); -+ -+ -+ struct module_ref ref[32]; -+ -+ -+}; -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int module_is_live(struct module *mod) -+{ -+ return mod->state != MODULE_STATE_GOING; -+} -+ -+ -+struct module *module_text_address(unsigned long addr); -+struct module *__module_text_address(unsigned long addr); -+int is_module_address(unsigned long addr); -+ -+ -+ -+int module_get_kallsym(unsigned int symnum, unsigned long *value, char *type, -+ char *name, char *module_name, int *exported); -+ -+ -+unsigned long module_kallsyms_lookup_name(const char *name); -+ -+extern void __module_put_and_exit(struct module *mod, long code) -+ __attribute__((noreturn)); -+ -+ -+ -+unsigned int module_refcount(struct module *mod); -+void __symbol_put(const char *symbol); -+ -+void symbol_put_addr(void *addr); -+ -+ -+ -+static inline __attribute__((always_inline)) void __module_get(struct module *module) -+{ -+ if (module) { -+ do { if (__builtin_expect(!!(module_refcount(module) == 0), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h"), "i" (390), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ local_inc(&module->ref[({ do { } while (0); (({ typeof(per_cpu__cpu_number) ret__; switch (sizeof(per_cpu__cpu_number)) { case 1: asm("mov" "b ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__cpu_number)); break; case 2: asm("mov" "w ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__cpu_number)); break; case 4: asm("mov" "l ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__cpu_number)); break; default: __bad_percpu_size(); } ret__; })); })].count); -+ do { } while (0); -+ } -+} -+ -+static inline __attribute__((always_inline)) int try_module_get(struct module *module) -+{ -+ int ret = 1; -+ -+ if (module) { -+ unsigned int cpu = ({ do { } while (0); (({ typeof(per_cpu__cpu_number) ret__; switch (sizeof(per_cpu__cpu_number)) { case 1: asm("mov" "b ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__cpu_number)); break; case 2: asm("mov" "w ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__cpu_number)); break; case 4: asm("mov" "l ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__cpu_number)); break; default: __bad_percpu_size(); } ret__; })); }); -+ if (__builtin_expect(!!(module_is_live(module)), 1)) -+ local_inc(&module->ref[cpu].count); -+ else -+ ret = 0; -+ do { } while (0); -+ } -+ return ret; -+} -+ -+extern void module_put(struct module *module); -+# 439 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" -+const char *module_address_lookup(unsigned long addr, -+ unsigned long *symbolsize, -+ unsigned long *offset, -+ char **modname, -+ char *namebuf); -+int lookup_module_symbol_name(unsigned long addr, char *symname); -+int lookup_module_symbol_attrs(unsigned long addr, unsigned long *size, unsigned long *offset, char *modname, char *name); -+ -+ -+const struct exception_table_entry *search_module_extables(unsigned long addr); -+ -+int register_module_notifier(struct notifier_block * nb); -+int unregister_module_notifier(struct notifier_block * nb); -+ -+extern void print_modules(void); -+ -+extern void module_update_markers(void); -+# 563 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" -+struct device_driver; -+ -+struct module; -+ -+extern struct kset *module_kset; -+extern struct kobj_type module_ktype; -+extern int module_sysfs_initialized; -+ -+int mod_sysfs_init(struct module *mod); -+int mod_sysfs_setup(struct module *mod, -+ struct kernel_param *kparam, -+ unsigned int num_params); -+int module_add_modinfo_attrs(struct module *mod); -+void module_remove_modinfo_attrs(struct module *mod); -+# 8 "/d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/err.h" 1 -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/errno.h" 1 -+# 7 "/d/kernels/linux-2.6.27.10-clickport/include/linux/err.h" 2 -+# 22 "/d/kernels/linux-2.6.27.10-clickport/include/linux/err.h" -+static inline __attribute__((always_inline)) void *ERR_PTR(long error) -+{ -+ return (void *) error; -+} -+ -+static inline __attribute__((always_inline)) long PTR_ERR(const void *ptr) -+{ -+ return (long) ptr; -+} -+ -+static inline __attribute__((always_inline)) long IS_ERR(const void *ptr) -+{ -+ return __builtin_expect(!!(((unsigned long)ptr) >= (unsigned long)-4095), 0); -+} -+# 44 "/d/kernels/linux-2.6.27.10-clickport/include/linux/err.h" -+static inline __attribute__((always_inline)) void *ERR_CAST(const void *ptr) -+{ -+ -+ return (void *) ptr; -+} -+# 9 "/d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h" 2 -+ -+ -+struct ts_config; -+# 21 "/d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h" -+struct ts_state -+{ -+ unsigned int offset; -+ char cb[40]; -+}; -+# 37 "/d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h" -+struct ts_ops -+{ -+ const char *name; -+ struct ts_config * (*init)(const void *, unsigned int, gfp_t, int); -+ unsigned int (*find)(struct ts_config *, -+ struct ts_state *); -+ void (*destroy)(struct ts_config *); -+ void * (*get_pattern)(struct ts_config *); -+ unsigned int (*get_pattern_len)(struct ts_config *); -+ struct module *owner; -+ struct list_head list; -+}; -+# 57 "/d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h" -+struct ts_config -+{ -+ struct ts_ops *ops; -+ int flags; -+# 74 "/d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h" -+ unsigned int (*get_next_block)(unsigned int consumed, -+ const u8 **dst, -+ struct ts_config *conf, -+ struct ts_state *state); -+# 87 "/d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h" -+ void (*finish)(struct ts_config *conf, -+ struct ts_state *state); -+}; -+# 103 "/d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h" -+static inline __attribute__((always_inline)) unsigned int textsearch_next(struct ts_config *conf, -+ struct ts_state *state) -+{ -+ unsigned int ret = conf->ops->find(conf, state); -+ -+ if (conf->finish) -+ conf->finish(conf, state); -+ -+ return ret; -+} -+# 122 "/d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h" -+static inline __attribute__((always_inline)) unsigned int textsearch_find(struct ts_config *conf, -+ struct ts_state *state) -+{ -+ state->offset = 0; -+ return textsearch_next(conf, state); -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void *textsearch_get_pattern(struct ts_config *conf) -+{ -+ return conf->ops->get_pattern(conf); -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) unsigned int textsearch_get_pattern_len(struct ts_config *conf) -+{ -+ return conf->ops->get_pattern_len(conf); -+} -+ -+extern int textsearch_register(struct ts_ops *); -+extern int textsearch_unregister(struct ts_ops *); -+extern struct ts_config *textsearch_prepare(const char *, const void *, -+ unsigned int, gfp_t, int); -+extern void textsearch_destroy(struct ts_config *conf); -+extern unsigned int textsearch_find_continuous(struct ts_config *, -+ struct ts_state *, -+ const void *, unsigned int); -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) struct ts_config *alloc_ts_config(size_t payload, -+ gfp_t gfp_mask) -+{ -+ struct ts_config *conf; -+ -+ conf = (struct ts_config *) kzalloc((((sizeof(*conf)) + 8 -1) & ~(8 -1)) + payload, gfp_mask); -+ if (conf == 0) -+ return (struct ts_config *) ERR_PTR(-12); -+ -+ return conf; -+} -+ -+static inline __attribute__((always_inline)) void *ts_config_priv(struct ts_config *conf) -+{ -+ return ((u8 *) conf + (((sizeof(struct ts_config)) + 8 -1) & ~(8 -1))); -+} -+# 27 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/net/checksum.h" 1 -+# 25 "/d/kernels/linux-2.6.27.10-clickport/include/net/checksum.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess.h" 1 -+# 95 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess.h" -+struct exception_table_entry { -+ unsigned long insn, fixup; -+}; -+ -+extern int fixup_exception(struct pt_regs *regs); -+# 116 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess.h" -+extern int __get_user_1(void); -+extern int __get_user_2(void); -+extern int __get_user_4(void); -+extern int __get_user_8(void); -+extern int __get_user_bad(void); -+# 210 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess.h" -+extern void __put_user_bad(void); -+ -+ -+ -+ -+ -+extern void __put_user_1(void); -+extern void __put_user_2(void); -+extern void __put_user_4(void); -+extern void __put_user_8(void); -+# 368 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess.h" -+struct __large_struct { unsigned long buf[100]; }; -+# 439 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess.h" -+extern struct movsl_mask { -+ int mask; -+} __attribute__((__aligned__((1 << (7))))) movsl_mask; -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess_32.h" 1 -+# 14 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess_32.h" -+unsigned long __attribute__((warn_unused_result)) __copy_to_user_ll -+ (void *to, const void *from, unsigned long n); -+unsigned long __attribute__((warn_unused_result)) __copy_from_user_ll -+ (void *to, const void *from, unsigned long n); -+unsigned long __attribute__((warn_unused_result)) __copy_from_user_ll_nozero -+ (void *to, const void *from, unsigned long n); -+unsigned long __attribute__((warn_unused_result)) __copy_from_user_ll_nocache -+ (void *to, const void *from, unsigned long n); -+unsigned long __attribute__((warn_unused_result)) __copy_from_user_ll_nocache_nozero -+ (void *to, const void *from, unsigned long n); -+# 44 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess_32.h" -+static inline __attribute__((always_inline)) __attribute__((always_inline)) unsigned long __attribute__((warn_unused_result)) -+__copy_to_user_inatomic(void *to, const void *from, unsigned long n) -+{ -+ if (__builtin_constant_p(n)) { -+ unsigned long ret; -+ -+ switch (n) { -+ case 1: -+ do { ret = 0; (void)0; switch (1) { case 1: asm volatile("1: mov""b"" %""b""1,%2\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r"(ret) : "iq"(*(u8 *)from), "m" ((*(struct __large_struct *)((u8 *)to))), "i" (1), "0" (ret)); break; case 2: asm volatile("1: mov""w"" %""w""1,%2\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r"(ret) : "ir"(*(u8 *)from), "m" ((*(struct __large_struct *)((u8 *)to))), "i" (1), "0" (ret)); break; case 4: asm volatile("1: mov""l"" %""k""1,%2\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r"(ret) : "ir"(*(u8 *)from), "m" ((*(struct __large_struct *)((u8 *)to))), "i" (1), "0" (ret)); break; case 8: asm volatile("1: movl %%eax,0(%2)\n" "2: movl %%edx,4(%2)\n" "3:\n" ".section .fixup,\"ax\"\n" "4: movl %3,%0\n" " jmp 3b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "4b" "\n" " .previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "2b" "," "4b" "\n" " .previous\n" : "=r" (ret) : "A" ((__typeof__(*(u8 *)to))(*(u8 *)from)), "r" ((u8 *)to), "i" (-14), "0" (ret)); break; default: __put_user_bad(); } } while (0); -+ -+ return ret; -+ case 2: -+ do { ret = 0; (void)0; switch (2) { case 1: asm volatile("1: mov""b"" %""b""1,%2\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r"(ret) : "iq"(*(u16 *)from), "m" ((*(struct __large_struct *)((u16 *)to))), "i" (2), "0" (ret)); break; case 2: asm volatile("1: mov""w"" %""w""1,%2\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r"(ret) : "ir"(*(u16 *)from), "m" ((*(struct __large_struct *)((u16 *)to))), "i" (2), "0" (ret)); break; case 4: asm volatile("1: mov""l"" %""k""1,%2\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r"(ret) : "ir"(*(u16 *)from), "m" ((*(struct __large_struct *)((u16 *)to))), "i" (2), "0" (ret)); break; case 8: asm volatile("1: movl %%eax,0(%2)\n" "2: movl %%edx,4(%2)\n" "3:\n" ".section .fixup,\"ax\"\n" "4: movl %3,%0\n" " jmp 3b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "4b" "\n" " .previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "2b" "," "4b" "\n" " .previous\n" : "=r" (ret) : "A" ((__typeof__(*(u16 *)to))(*(u16 *)from)), "r" ((u16 *)to), "i" (-14), "0" (ret)); break; default: __put_user_bad(); } } while (0); -+ -+ return ret; -+ case 4: -+ do { ret = 0; (void)0; switch (4) { case 1: asm volatile("1: mov""b"" %""b""1,%2\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r"(ret) : "iq"(*(u32 *)from), "m" ((*(struct __large_struct *)((u32 *)to))), "i" (4), "0" (ret)); break; case 2: asm volatile("1: mov""w"" %""w""1,%2\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r"(ret) : "ir"(*(u32 *)from), "m" ((*(struct __large_struct *)((u32 *)to))), "i" (4), "0" (ret)); break; case 4: asm volatile("1: mov""l"" %""k""1,%2\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r"(ret) : "ir"(*(u32 *)from), "m" ((*(struct __large_struct *)((u32 *)to))), "i" (4), "0" (ret)); break; case 8: asm volatile("1: movl %%eax,0(%2)\n" "2: movl %%edx,4(%2)\n" "3:\n" ".section .fixup,\"ax\"\n" "4: movl %3,%0\n" " jmp 3b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "4b" "\n" " .previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "2b" "," "4b" "\n" " .previous\n" : "=r" (ret) : "A" ((__typeof__(*(u32 *)to))(*(u32 *)from)), "r" ((u32 *)to), "i" (-14), "0" (ret)); break; default: __put_user_bad(); } } while (0); -+ -+ return ret; -+ } -+ } -+ return __copy_to_user_ll(to, from, n); -+} -+# 82 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess_32.h" -+static inline __attribute__((always_inline)) __attribute__((always_inline)) unsigned long __attribute__((warn_unused_result)) -+__copy_to_user(void *to, const void *from, unsigned long n) -+{ -+ do { __might_sleep("/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess_32.h", 85); do { } while (0); } while (0); -+ return __copy_to_user_inatomic(to, from, n); -+} -+ -+static inline __attribute__((always_inline)) __attribute__((always_inline)) unsigned long -+__copy_from_user_inatomic(void *to, const void *from, unsigned long n) -+{ -+ -+ -+ -+ -+ -+ if (__builtin_constant_p(n)) { -+ unsigned long ret; -+ -+ switch (n) { -+ case 1: -+ do { ret = 0; (void)0; switch (1) { case 1: asm volatile("1: mov""b"" %2,%""b""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""b"" %""b""1,%""b""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=q"(*(u8 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (1), "0" (ret)); break; case 2: asm volatile("1: mov""w"" %2,%""w""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""w"" %""w""1,%""w""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u8 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (1), "0" (ret)); break; case 4: asm volatile("1: mov""l"" %2,%""k""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""l"" %""k""1,%""k""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u8 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (1), "0" (ret)); break; case 8: (*(u8 *)to) = __get_user_bad(); break; default: (*(u8 *)to) = __get_user_bad(); } } while (0); -+ return ret; -+ case 2: -+ do { ret = 0; (void)0; switch (2) { case 1: asm volatile("1: mov""b"" %2,%""b""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""b"" %""b""1,%""b""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=q"(*(u16 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (2), "0" (ret)); break; case 2: asm volatile("1: mov""w"" %2,%""w""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""w"" %""w""1,%""w""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u16 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (2), "0" (ret)); break; case 4: asm volatile("1: mov""l"" %2,%""k""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""l"" %""k""1,%""k""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u16 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (2), "0" (ret)); break; case 8: (*(u16 *)to) = __get_user_bad(); break; default: (*(u16 *)to) = __get_user_bad(); } } while (0); -+ return ret; -+ case 4: -+ do { ret = 0; (void)0; switch (4) { case 1: asm volatile("1: mov""b"" %2,%""b""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""b"" %""b""1,%""b""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=q"(*(u32 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (4), "0" (ret)); break; case 2: asm volatile("1: mov""w"" %2,%""w""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""w"" %""w""1,%""w""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u32 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (4), "0" (ret)); break; case 4: asm volatile("1: mov""l"" %2,%""k""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""l"" %""k""1,%""k""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u32 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (4), "0" (ret)); break; case 8: (*(u32 *)to) = __get_user_bad(); break; default: (*(u32 *)to) = __get_user_bad(); } } while (0); -+ return ret; -+ } -+ } -+ return __copy_from_user_ll_nozero(to, from, n); -+} -+# 137 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess_32.h" -+static inline __attribute__((always_inline)) __attribute__((always_inline)) unsigned long -+__copy_from_user(void *to, const void *from, unsigned long n) -+{ -+ do { __might_sleep("/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess_32.h", 140); do { } while (0); } while (0); -+ if (__builtin_constant_p(n)) { -+ unsigned long ret; -+ -+ switch (n) { -+ case 1: -+ do { ret = 0; (void)0; switch (1) { case 1: asm volatile("1: mov""b"" %2,%""b""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""b"" %""b""1,%""b""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=q"(*(u8 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (1), "0" (ret)); break; case 2: asm volatile("1: mov""w"" %2,%""w""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""w"" %""w""1,%""w""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u8 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (1), "0" (ret)); break; case 4: asm volatile("1: mov""l"" %2,%""k""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""l"" %""k""1,%""k""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u8 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (1), "0" (ret)); break; case 8: (*(u8 *)to) = __get_user_bad(); break; default: (*(u8 *)to) = __get_user_bad(); } } while (0); -+ return ret; -+ case 2: -+ do { ret = 0; (void)0; switch (2) { case 1: asm volatile("1: mov""b"" %2,%""b""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""b"" %""b""1,%""b""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=q"(*(u16 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (2), "0" (ret)); break; case 2: asm volatile("1: mov""w"" %2,%""w""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""w"" %""w""1,%""w""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u16 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (2), "0" (ret)); break; case 4: asm volatile("1: mov""l"" %2,%""k""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""l"" %""k""1,%""k""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u16 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (2), "0" (ret)); break; case 8: (*(u16 *)to) = __get_user_bad(); break; default: (*(u16 *)to) = __get_user_bad(); } } while (0); -+ return ret; -+ case 4: -+ do { ret = 0; (void)0; switch (4) { case 1: asm volatile("1: mov""b"" %2,%""b""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""b"" %""b""1,%""b""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=q"(*(u32 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (4), "0" (ret)); break; case 2: asm volatile("1: mov""w"" %2,%""w""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""w"" %""w""1,%""w""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u32 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (4), "0" (ret)); break; case 4: asm volatile("1: mov""l"" %2,%""k""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""l"" %""k""1,%""k""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u32 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (4), "0" (ret)); break; case 8: (*(u32 *)to) = __get_user_bad(); break; default: (*(u32 *)to) = __get_user_bad(); } } while (0); -+ return ret; -+ } -+ } -+ return __copy_from_user_ll(to, from, n); -+} -+ -+static inline __attribute__((always_inline)) __attribute__((always_inline)) unsigned long __copy_from_user_nocache(void *to, -+ const void *from, unsigned long n) -+{ -+ do { __might_sleep("/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess_32.h", 162); do { } while (0); } while (0); -+ if (__builtin_constant_p(n)) { -+ unsigned long ret; -+ -+ switch (n) { -+ case 1: -+ do { ret = 0; (void)0; switch (1) { case 1: asm volatile("1: mov""b"" %2,%""b""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""b"" %""b""1,%""b""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=q"(*(u8 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (1), "0" (ret)); break; case 2: asm volatile("1: mov""w"" %2,%""w""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""w"" %""w""1,%""w""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u8 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (1), "0" (ret)); break; case 4: asm volatile("1: mov""l"" %2,%""k""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""l"" %""k""1,%""k""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u8 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (1), "0" (ret)); break; case 8: (*(u8 *)to) = __get_user_bad(); break; default: (*(u8 *)to) = __get_user_bad(); } } while (0); -+ return ret; -+ case 2: -+ do { ret = 0; (void)0; switch (2) { case 1: asm volatile("1: mov""b"" %2,%""b""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""b"" %""b""1,%""b""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=q"(*(u16 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (2), "0" (ret)); break; case 2: asm volatile("1: mov""w"" %2,%""w""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""w"" %""w""1,%""w""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u16 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (2), "0" (ret)); break; case 4: asm volatile("1: mov""l"" %2,%""k""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""l"" %""k""1,%""k""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u16 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (2), "0" (ret)); break; case 8: (*(u16 *)to) = __get_user_bad(); break; default: (*(u16 *)to) = __get_user_bad(); } } while (0); -+ return ret; -+ case 4: -+ do { ret = 0; (void)0; switch (4) { case 1: asm volatile("1: mov""b"" %2,%""b""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""b"" %""b""1,%""b""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=q"(*(u32 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (4), "0" (ret)); break; case 2: asm volatile("1: mov""w"" %2,%""w""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""w"" %""w""1,%""w""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u32 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (4), "0" (ret)); break; case 4: asm volatile("1: mov""l"" %2,%""k""1\n" "2:\n" ".section .fixup,\"ax\"\n" "3: mov %3,%0\n" " xor""l"" %""k""1,%""k""1\n" " jmp 2b\n" ".previous\n" " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "3b" "\n" " .previous\n" : "=r" (ret), "=r"(*(u32 *)to) : "m" ((*(struct __large_struct *)(from))), "i" (4), "0" (ret)); break; case 8: (*(u32 *)to) = __get_user_bad(); break; default: (*(u32 *)to) = __get_user_bad(); } } while (0); -+ return ret; -+ } -+ } -+ return __copy_from_user_ll_nocache(to, from, n); -+} -+ -+static inline __attribute__((always_inline)) __attribute__((always_inline)) unsigned long -+__copy_from_user_inatomic_nocache(void *to, const void *from, -+ unsigned long n) -+{ -+ return __copy_from_user_ll_nocache_nozero(to, from, n); -+} -+ -+unsigned long __attribute__((warn_unused_result)) copy_to_user(void *to, -+ const void *from, unsigned long n); -+unsigned long __attribute__((warn_unused_result)) copy_from_user(void *to, -+ const void *from, -+ unsigned long n); -+long __attribute__((warn_unused_result)) strncpy_from_user(char *dst, const char *src, -+ long count); -+long __attribute__((warn_unused_result)) __strncpy_from_user(char *dst, -+ const char *src, long count); -+# 214 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess_32.h" -+long strnlen_user(const char *str, long n); -+unsigned long __attribute__((warn_unused_result)) clear_user(void *mem, unsigned long len); -+unsigned long __attribute__((warn_unused_result)) __clear_user(void *mem, unsigned long len); -+# 448 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess.h" 2 -+# 26 "/d/kernels/linux-2.6.27.10-clickport/include/net/checksum.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/checksum.h" 1 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/checksum_32.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/in6.h" 1 -+# 30 "/d/kernels/linux-2.6.27.10-clickport/include/linux/in6.h" -+struct in6_addr -+{ -+ union -+ { -+ __u8 u6_addr8[16]; -+ __be16 u6_addr16[8]; -+ __be32 u6_addr32[4]; -+ } in6_u; -+ -+ -+ -+}; -+ -+ -+ -+ -+ -+extern const struct in6_addr in6addr_any; -+ -+extern const struct in6_addr in6addr_loopback; -+ -+ -+extern const struct in6_addr in6addr_linklocal_allnodes; -+ -+ -+extern const struct in6_addr in6addr_linklocal_allrouters; -+ -+ -+ -+ -+struct sockaddr_in6 { -+ unsigned short int sin6_family; -+ __be16 sin6_port; -+ __be32 sin6_flowinfo; -+ struct in6_addr sin6_addr; -+ __u32 sin6_scope_id; -+}; -+ -+struct ipv6_mreq { -+ -+ struct in6_addr ipv6mr_multiaddr; -+ -+ -+ int ipv6mr_ifindex; -+}; -+ -+ -+ -+struct in6_flowlabel_req -+{ -+ struct in6_addr flr_dst; -+ __be32 flr_label; -+ __u8 flr_action; -+ __u8 flr_share; -+ __u16 flr_flags; -+ __u16 flr_expires; -+ __u16 flr_linger; -+ __u32 __flr_pad; -+ -+}; -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm/checksum_32.h" 2 -+# 20 "/d/kernels/linux-2.6.27.10-clickport/include/asm/checksum_32.h" -+extern "C" __attribute__((regparm(0))) __wsum csum_partial(const void *buff, int len, __wsum sum); -+# 30 "/d/kernels/linux-2.6.27.10-clickport/include/asm/checksum_32.h" -+extern "C" __attribute__((regparm(0))) __wsum csum_partial_copy_generic(const void *src, void *dst, -+ int len, __wsum sum, -+ int *src_err_ptr, int *dst_err_ptr); -+# 41 "/d/kernels/linux-2.6.27.10-clickport/include/asm/checksum_32.h" -+static inline __attribute__((always_inline)) __wsum csum_partial_copy_nocheck(const void *src, void *dst, -+ int len, __wsum sum) -+{ -+ return csum_partial_copy_generic(src, dst, len, sum, 0, 0); -+} -+ -+static inline __attribute__((always_inline)) __wsum csum_partial_copy_from_user(const void *src, -+ void *dst, -+ int len, __wsum sum, -+ int *err_ptr) -+{ -+ do { __might_sleep("/d/kernels/linux-2.6.27.10-clickport/include/asm/checksum_32.h", 52); do { } while (0); } while (0); -+ return csum_partial_copy_generic(( void *)src, dst, -+ len, sum, err_ptr, 0); -+} -+# 64 "/d/kernels/linux-2.6.27.10-clickport/include/asm/checksum_32.h" -+static inline __attribute__((always_inline)) __sum16 ip_fast_csum(const void *iph, unsigned int ihl) -+{ -+ unsigned int sum; -+ -+ asm volatile("movl (%1), %0 ;\n" -+ "subl $4, %2 ;\n" -+ "jbe 2f ;\n" -+ "addl 4(%1), %0 ;\n" -+ "adcl 8(%1), %0 ;\n" -+ "adcl 12(%1), %0;\n" -+ "1: adcl 16(%1), %0 ;\n" -+ "lea 4(%1), %1 ;\n" -+ "decl %2 ;\n" -+ "jne 1b ;\n" -+ "adcl $0, %0 ;\n" -+ "movl %0, %2 ;\n" -+ "shrl $16, %0 ;\n" -+ "addw %w2, %w0 ;\n" -+ "adcl $0, %0 ;\n" -+ "notl %0 ;\n" -+ "2: ;\n" -+ -+ -+ -+ : "=r" (sum), "=r" (iph), "=r" (ihl) -+ : "1" (iph), "2" (ihl) -+ : "memory"); -+ return ( __sum16)sum; -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) __sum16 csum_fold(__wsum sum) -+{ -+ asm("addl %1, %0 ;\n" -+ "adcl $0xffff, %0 ;\n" -+ : "=r" (sum) -+ : "r" (( u32)sum << 16), -+ "0" (( u32)sum & 0xffff0000)); -+ return ( __sum16)(~( u32)sum >> 16); -+} -+ -+static inline __attribute__((always_inline)) __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr, -+ unsigned short len, -+ unsigned short proto, -+ __wsum sum) -+{ -+ asm("addl %1, %0 ;\n" -+ "adcl %2, %0 ;\n" -+ "adcl %3, %0 ;\n" -+ "adcl $0, %0 ;\n" -+ : "=r" (sum) -+ : "g" (daddr), "g"(saddr), -+ "g" ((len + proto) << 8), "0" (sum)); -+ return sum; -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) __sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr, -+ unsigned short len, -+ unsigned short proto, -+ __wsum sum) -+{ -+ return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum)); -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) __sum16 ip_compute_csum(const void *buff, int len) -+{ -+ return csum_fold(csum_partial(buff, len, 0)); -+} -+ -+ -+static inline __attribute__((always_inline)) __sum16 csum_ipv6_magic(const struct in6_addr *saddr, -+ const struct in6_addr *daddr, -+ __u32 len, unsigned short proto, -+ __wsum sum) -+{ -+ asm("addl 0(%1), %0 ;\n" -+ "adcl 4(%1), %0 ;\n" -+ "adcl 8(%1), %0 ;\n" -+ "adcl 12(%1), %0 ;\n" -+ "adcl 0(%2), %0 ;\n" -+ "adcl 4(%2), %0 ;\n" -+ "adcl 8(%2), %0 ;\n" -+ "adcl 12(%2), %0 ;\n" -+ "adcl %3, %0 ;\n" -+ "adcl %4, %0 ;\n" -+ "adcl $0, %0 ;\n" -+ : "=&r" (sum) -+ : "r" (saddr), "r" (daddr), -+ "r" ((( __be32)(__builtin_constant_p((__u32)((len))) ? ((__u32)( (((__u32)(((len))) & (__u32)0x000000ffUL) << 24) | (((__u32)(((len))) & (__u32)0x0000ff00UL) << 8) | (((__u32)(((len))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(((len))) & (__u32)0xff000000UL) >> 24) )) : __fswab32(((len)))))), "r" ((( __be32)(__builtin_constant_p((__u32)((proto))) ? ((__u32)( (((__u32)(((proto))) & (__u32)0x000000ffUL) << 24) | (((__u32)(((proto))) & (__u32)0x0000ff00UL) << 8) | (((__u32)(((proto))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(((proto))) & (__u32)0xff000000UL) >> 24) )) : __fswab32(((proto)))))), "0" (sum)); -+ -+ return csum_fold(sum); -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) __wsum csum_and_copy_to_user(const void *src, -+ void *dst, -+ int len, __wsum sum, -+ int *err_ptr) -+{ -+ do { __might_sleep("/d/kernels/linux-2.6.27.10-clickport/include/asm/checksum_32.h", 178); do { } while (0); } while (0); -+ if ((__builtin_expect(!!(({ unsigned long flag, roksum; (void)0; asm("add %3,%1 ; sbb %0,%0 ; cmp %1,%4 ; sbb $0,%0" : "=&r" (flag), "=r" (roksum) : "1" (dst), "g" ((long)(len)), "rm" (current_thread_info()->addr_limit.seg)); flag; }) == 0), 1))) -+ return csum_partial_copy_generic(src, ( void *)dst, -+ len, sum, 0, err_ptr); -+ -+ if (len) -+ *err_ptr = -14; -+ -+ return ( __wsum)-1; -+} -+# 3 "/d/kernels/linux-2.6.27.10-clickport/include/asm/checksum.h" 2 -+# 27 "/d/kernels/linux-2.6.27.10-clickport/include/net/checksum.h" 2 -+ -+ -+static inline __attribute__((always_inline)) -+__wsum csum_and_copy_from_user (const void *src, void *dst, -+ int len, __wsum sum, int *err_ptr) -+{ -+ if ((__builtin_expect(!!(({ unsigned long flag, roksum; (void)0; asm("add %3,%1 ; sbb %0,%0 ; cmp %1,%4 ; sbb $0,%0" : "=&r" (flag), "=r" (roksum) : "1" (src), "g" ((long)(len)), "rm" (current_thread_info()->addr_limit.seg)); flag; }) == 0), 1))) -+ return csum_partial_copy_from_user(src, dst, len, sum, err_ptr); -+ -+ if (len) -+ *err_ptr = -14; -+ -+ return sum; -+} -+# 60 "/d/kernels/linux-2.6.27.10-clickport/include/net/checksum.h" -+static inline __attribute__((always_inline)) __wsum csum_add(__wsum csum, __wsum addend) -+{ -+ u32 res = ( u32)csum; -+ res += ( u32)addend; -+ return ( __wsum)(res + (res < ( u32)addend)); -+} -+ -+static inline __attribute__((always_inline)) __wsum csum_sub(__wsum csum, __wsum addend) -+{ -+ return csum_add(csum, ~addend); -+} -+ -+static inline __attribute__((always_inline)) __wsum -+csum_block_add(__wsum csum, __wsum csum2, int offset) -+{ -+ u32 sum = ( u32)csum2; -+ if (offset&1) -+ sum = ((sum&0xFF00FF)<<8)+((sum>>8)&0xFF00FF); -+ return csum_add(csum, ( __wsum)sum); -+} -+ -+static inline __attribute__((always_inline)) __wsum -+csum_block_sub(__wsum csum, __wsum csum2, int offset) -+{ -+ u32 sum = ( u32)csum2; -+ if (offset&1) -+ sum = ((sum&0xFF00FF)<<8)+((sum>>8)&0xFF00FF); -+ return csum_sub(csum, ( __wsum)sum); -+} -+ -+static inline __attribute__((always_inline)) __wsum csum_unfold(__sum16 n) -+{ -+ return ( __wsum)n; -+} -+ -+ -+ -+static inline __attribute__((always_inline)) void csum_replace4(__sum16 *sum, __be32 from, __be32 to) -+{ -+ __be32 diff[] = { ~from, to }; -+ -+ *sum = csum_fold(csum_partial((char *)diff, sizeof(diff), ~csum_unfold(*sum))); -+} -+ -+static inline __attribute__((always_inline)) void csum_replace2(__sum16 *sum, __be16 from, __be16 to) -+{ -+ csum_replace4(sum, ( __be32)from, ( __be32)to); -+} -+ -+struct sk_buff; -+extern void inet_proto_csum_replace4(__sum16 *sum, struct sk_buff *skb, -+ __be32 from, __be32 to, int pseudohdr); -+ -+static inline __attribute__((always_inline)) void inet_proto_csum_replace2(__sum16 *sum, struct sk_buff *skb, -+ __be16 from, __be16 to, -+ int pseudohdr) -+{ -+ inet_proto_csum_replace4(sum, skb, ( __be32)from, -+ ( __be32)to, pseudohdr); -+} -+# 28 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rcupdate.h" 1 -+# 43 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rcupdate.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/completion.h" 1 -+# 13 "/d/kernels/linux-2.6.27.10-clickport/include/linux/completion.h" -+struct completion { -+ unsigned int done; -+ wait_queue_head_t wait; -+}; -+# 39 "/d/kernels/linux-2.6.27.10-clickport/include/linux/completion.h" -+static inline __attribute__((always_inline)) void init_completion(struct completion *x) -+{ -+ x->done = 0; -+ init_waitqueue_head(&x->wait); -+} -+ -+extern void wait_for_completion(struct completion *); -+extern int wait_for_completion_interruptible(struct completion *x); -+extern int wait_for_completion_killable(struct completion *x); -+extern unsigned long wait_for_completion_timeout(struct completion *x, -+ unsigned long timeout); -+extern unsigned long wait_for_completion_interruptible_timeout( -+ struct completion *x, unsigned long timeout); -+extern bool try_wait_for_completion(struct completion *x); -+extern bool completion_done(struct completion *x); -+ -+extern void complete(struct completion *); -+extern void complete_all(struct completion *); -+# 44 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rcupdate.h" 2 -+ -+ -+ -+ -+ -+ -+struct rcu_head { -+ struct rcu_head *next; -+ void (*func)(struct rcu_head *head); -+}; -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rcuclassic.h" 1 -+# 45 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rcuclassic.h" -+struct rcu_ctrlblk { -+ long cur; -+ long completed; -+ int next_pending; -+ -+ int signaled; -+ -+ spinlock_t lock __attribute__((__aligned__(1 << ((7))))); -+ cpumask_t cpumask; -+ -+} __attribute__((__aligned__(1 << ((7))))); -+ -+ -+static inline __attribute__((always_inline)) int rcu_batch_before(long a, long b) -+{ -+ return (a - b) < 0; -+} -+ -+ -+static inline __attribute__((always_inline)) int rcu_batch_after(long a, long b) -+{ -+ return (a - b) > 0; -+} -+ -+ -+ -+ -+ -+ -+struct rcu_data { -+ -+ long quiescbatch; -+ int passed_quiesc; -+ int qs_pending; -+ -+ -+ long batch; -+ struct rcu_head *nxtlist; -+ struct rcu_head **nxttail; -+ long qlen; -+ struct rcu_head *curlist; -+ struct rcu_head **curtail; -+ struct rcu_head *donelist; -+ struct rcu_head **donetail; -+ long blimit; -+ int cpu; -+ struct rcu_head barrier; -+}; -+ -+extern __typeof__(struct rcu_data) per_cpu__rcu_data; -+extern __typeof__(struct rcu_data) per_cpu__rcu_bh_data; -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void rcu_qsctr_inc(int cpu) -+{ -+ struct rcu_data *rdp = &(*({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((&per_cpu__rcu_data))); (typeof((&per_cpu__rcu_data))) (__ptr + (((__per_cpu_offset[cpu])))); })); -+ rdp->passed_quiesc = 1; -+} -+static inline __attribute__((always_inline)) void rcu_bh_qsctr_inc(int cpu) -+{ -+ struct rcu_data *rdp = &(*({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((&per_cpu__rcu_bh_data))); (typeof((&per_cpu__rcu_bh_data))) (__ptr + (((__per_cpu_offset[cpu])))); })); -+ rdp->passed_quiesc = 1; -+} -+ -+extern int rcu_pending(int cpu); -+extern int rcu_needs_cpu(int cpu); -+# 156 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rcuclassic.h" -+extern void __rcu_init(void); -+ -+extern void rcu_check_callbacks(int cpu, int user); -+extern void rcu_restart_cpu(int cpu); -+ -+extern long rcu_batches_completed(void); -+extern long rcu_batches_completed_bh(void); -+# 57 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rcupdate.h" 2 -+# 174 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rcupdate.h" -+struct rcu_synchronize { -+ struct rcu_head head; -+ struct completion completion; -+}; -+ -+extern void wakeme_after_rcu(struct rcu_head *head); -+# 222 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rcupdate.h" -+extern void call_rcu(struct rcu_head *head, -+ void (*func)(struct rcu_head *head)); -+# 243 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rcupdate.h" -+extern void call_rcu_bh(struct rcu_head *head, -+ void (*func)(struct rcu_head *head)); -+ -+ -+extern void synchronize_rcu(void); -+extern void rcu_barrier(void); -+extern void rcu_barrier_bh(void); -+extern void rcu_barrier_sched(void); -+ -+ -+extern void rcu_init(void); -+extern int rcu_needs_cpu(int cpu); -+# 29 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h" 1 -+# 24 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h" 1 -+# 15 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ioport.h" 1 -+# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ioport.h" -+struct resource { -+ resource_size_t start; -+ resource_size_t end; -+ const char *name; -+ unsigned long flags; -+ struct resource *parent, *sibling, *child; -+}; -+ -+struct resource_list { -+ struct resource_list *next; -+ struct resource *res; -+ struct pci_dev *dev; -+}; -+# 106 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ioport.h" -+extern struct resource ioport_resource; -+extern struct resource iomem_resource; -+ -+extern int request_resource(struct resource *root, struct resource *xxx_new); -+extern int release_resource(struct resource *xxx_new); -+extern int insert_resource(struct resource *parent, struct resource *xxx_new); -+extern void insert_resource_expand_to_fit(struct resource *root, struct resource *xxx_new); -+extern int allocate_resource(struct resource *root, struct resource *xxx_new, -+ resource_size_t size, resource_size_t min, -+ resource_size_t max, resource_size_t align, -+ void (*alignf)(void *, struct resource *, -+ resource_size_t, resource_size_t), -+ void *alignf_data); -+int adjust_resource(struct resource *res, resource_size_t start, -+ resource_size_t size); -+resource_size_t resource_alignment(struct resource *res); -+static inline __attribute__((always_inline)) resource_size_t resource_size(struct resource *res) -+{ -+ return res->end - res->start + 1; -+} -+ -+ -+ -+ -+ -+ -+extern struct resource * __request_region(struct resource *, -+ resource_size_t start, -+ resource_size_t n, const char *name); -+ -+ -+ -+ -+ -+ -+extern int __check_region(struct resource *, resource_size_t, resource_size_t); -+extern void __release_region(struct resource *, resource_size_t, -+ resource_size_t); -+ -+static inline __attribute__((always_inline)) int __attribute__((deprecated)) check_region(resource_size_t s, -+ resource_size_t n) -+{ -+ return __check_region(&ioport_resource, s, n); -+} -+ -+ -+struct device; -+ -+ -+ -+ -+ -+extern struct resource * __devm_request_region(struct device *dev, -+ struct resource *parent, resource_size_t start, -+ resource_size_t n, const char *name); -+ -+ -+ -+ -+ -+ -+extern void __devm_release_region(struct device *dev, struct resource *parent, -+ resource_size_t start, resource_size_t n); -+# 16 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/klist.h" 1 -+# 20 "/d/kernels/linux-2.6.27.10-clickport/include/linux/klist.h" -+struct klist_node; -+struct klist { -+ spinlock_t k_lock; -+ struct list_head k_list; -+ void (*get)(struct klist_node *); -+ void (*put)(struct klist_node *); -+}; -+# 37 "/d/kernels/linux-2.6.27.10-clickport/include/linux/klist.h" -+extern void klist_init(struct klist *k, void (*get)(struct klist_node *), -+ void (*put)(struct klist_node *)); -+ -+struct klist_node { -+ struct klist *n_klist; -+ struct list_head n_node; -+ struct kref n_ref; -+ struct completion n_removed; -+}; -+ -+extern void klist_add_tail(struct klist_node *n, struct klist *k); -+extern void klist_add_head(struct klist_node *n, struct klist *k); -+extern void klist_add_after(struct klist_node *n, struct klist_node *pos); -+extern void klist_add_before(struct klist_node *n, struct klist_node *pos); -+ -+extern void klist_del(struct klist_node *n); -+extern void klist_remove(struct klist_node *n); -+ -+extern int klist_node_attached(struct klist_node *n); -+ -+ -+struct klist_iter { -+ struct klist *i_klist; -+ struct list_head *i_head; -+ struct klist_node *i_cur; -+}; -+ -+ -+extern void klist_iter_init(struct klist *k, struct klist_iter *i); -+extern void klist_iter_init_node(struct klist *k, struct klist_iter *i, -+ struct klist_node *n); -+extern void klist_iter_exit(struct klist_iter *i); -+extern struct klist_node *klist_next(struct klist_iter *i); -+# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h" 2 -+ -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/semaphore.h" 1 -+# 16 "/d/kernels/linux-2.6.27.10-clickport/include/linux/semaphore.h" -+struct semaphore { -+ spinlock_t lock; -+ unsigned int count; -+ struct list_head wait_list; -+}; -+# 41 "/d/kernels/linux-2.6.27.10-clickport/include/linux/semaphore.h" -+static inline __attribute__((always_inline)) void sema_init(struct semaphore *sem, int val) -+{ -+ static struct lock_class_key __key; -+ *sem = (struct semaphore) ({ struct semaphore duh; duh.lock = (spinlock_t) { ({raw_spinlock_t duh; duh.slock=0;duh;}), }, duh.count = val, duh.wait_list = ({struct list_head duh;duh.next=&((*sem).wait_list);duh.prev=&((*sem).wait_list);duh;}), duh;}); -+ do { (void)(&__key); } while (0); -+} -+ -+ -+ -+ -+extern void down(struct semaphore *sem); -+extern int __attribute__((warn_unused_result)) down_interruptible(struct semaphore *sem); -+extern int __attribute__((warn_unused_result)) down_killable(struct semaphore *sem); -+extern int __attribute__((warn_unused_result)) down_trylock(struct semaphore *sem); -+extern int __attribute__((warn_unused_result)) down_timeout(struct semaphore *sem, long jiffies); -+extern void up(struct semaphore *sem); -+# 25 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1 -+# 26 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/device.h" 1 -+ -+ -+ -+struct dev_archdata { -+ -+ void *acpi_handle; -+ -+ -+ -+ -+ -+ -+ -+}; -+# 27 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h" 2 -+ -+ -+ -+struct device; -+struct device_driver; -+struct driver_private; -+struct xxx_class; -+struct class_private; -+struct bus_type; -+struct bus_type_private; -+ -+struct bus_attribute { -+ struct attribute attr; -+ ssize_t (*show)(struct bus_type *bus, char *buf); -+ ssize_t (*store)(struct bus_type *bus, const char *buf, size_t count); -+}; -+ -+ -+ -+ -+extern int __attribute__((warn_unused_result)) bus_create_file(struct bus_type *, -+ struct bus_attribute *); -+extern void bus_remove_file(struct bus_type *, struct bus_attribute *); -+ -+struct bus_type { -+ const char *name; -+ struct bus_attribute *bus_attrs; -+ struct device_attribute *dev_attrs; -+ struct driver_attribute *drv_attrs; -+ -+ int (*match)(struct device *dev, struct device_driver *drv); -+ int (*uevent)(struct device *dev, struct kobj_uevent_env *env); -+ int (*probe)(struct device *dev); -+ int (*remove)(struct device *dev); -+ void (*shutdown)(struct device *dev); -+ -+ int (*suspend)(struct device *dev, pm_message_t state); -+ int (*suspend_late)(struct device *dev, pm_message_t state); -+ int (*resume_early)(struct device *dev); -+ int (*resume)(struct device *dev); -+ -+ struct pm_ext_ops *pm; -+ -+ struct bus_type_private *p; -+}; -+ -+extern int __attribute__((warn_unused_result)) bus_register(struct bus_type *bus); -+extern void bus_unregister(struct bus_type *bus); -+ -+extern int __attribute__((warn_unused_result)) bus_rescan_devices(struct bus_type *bus); -+ -+ -+ -+int bus_for_each_dev(struct bus_type *bus, struct device *start, void *data, -+ int (*fn)(struct device *dev, void *data)); -+struct device *bus_find_device(struct bus_type *bus, struct device *start, -+ void *data, -+ int (*match)(struct device *dev, void *data)); -+struct device *bus_find_device_by_name(struct bus_type *bus, -+ struct device *start, -+ const char *name); -+ -+int __attribute__((warn_unused_result)) bus_for_each_drv(struct bus_type *bus, -+ struct device_driver *start, void *data, -+ int (*fn)(struct device_driver *, void *)); -+ -+ -+ -+ -+ -+ -+ -+struct notifier_block; -+ -+extern int bus_register_notifier(struct bus_type *bus, -+ struct notifier_block *nb); -+extern int bus_unregister_notifier(struct bus_type *bus, -+ struct notifier_block *nb); -+# 116 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h" -+extern struct kset *bus_get_kset(struct bus_type *bus); -+extern struct klist *bus_get_device_klist(struct bus_type *bus); -+ -+struct device_driver { -+ const char *name; -+ struct bus_type *bus; -+ -+ struct module *owner; -+ const char *mod_name; -+ -+ int (*probe) (struct device *dev); -+ int (*remove) (struct device *dev); -+ void (*shutdown) (struct device *dev); -+ int (*suspend) (struct device *dev, pm_message_t state); -+ int (*resume) (struct device *dev); -+ struct attribute_group **groups; -+ -+ struct pm_ops *pm; -+ -+ struct driver_private *p; -+}; -+ -+ -+extern int __attribute__((warn_unused_result)) driver_register(struct device_driver *drv); -+extern void driver_unregister(struct device_driver *drv); -+ -+extern struct device_driver *get_driver(struct device_driver *drv); -+extern void put_driver(struct device_driver *drv); -+extern struct device_driver *driver_find(const char *name, -+ struct bus_type *bus); -+extern int driver_probe_done(void); -+ -+ -+ -+struct driver_attribute { -+ struct attribute attr; -+ ssize_t (*show)(struct device_driver *driver, char *buf); -+ ssize_t (*store)(struct device_driver *driver, const char *buf, -+ size_t count); -+}; -+ -+ -+ -+ -+ -+extern int __attribute__((warn_unused_result)) driver_create_file(struct device_driver *driver, -+ struct driver_attribute *attr); -+extern void driver_remove_file(struct device_driver *driver, -+ struct driver_attribute *attr); -+ -+extern int __attribute__((warn_unused_result)) driver_add_kobj(struct device_driver *drv, -+ struct kobject *kobj, -+ const char *fmt, ...); -+ -+extern int __attribute__((warn_unused_result)) driver_for_each_device(struct device_driver *drv, -+ struct device *start, -+ void *data, -+ int (*fn)(struct device *dev, -+ void *)); -+struct device *driver_find_device(struct device_driver *drv, -+ struct device *start, void *data, -+ int (*match)(struct device *dev, void *data)); -+ -+ -+ -+ -+struct xxx_class { -+ const char *name; -+ struct module *owner; -+ -+ struct class_attribute *class_attrs; -+ struct device_attribute *dev_attrs; -+ struct kobject *dev_kobj; -+ -+ int (*dev_uevent)(struct device *dev, struct kobj_uevent_env *env); -+ -+ void (*class_release)(struct xxx_class *xxx_class); -+ void (*dev_release)(struct device *dev); -+ -+ int (*suspend)(struct device *dev, pm_message_t state); -+ int (*resume)(struct device *dev); -+ -+ struct pm_ops *pm; -+ struct class_private *p; -+}; -+ -+extern struct kobject *sysfs_dev_block_kobj; -+extern struct kobject *sysfs_dev_char_kobj; -+extern int __attribute__((warn_unused_result)) __class_register(struct xxx_class *xxx_class, -+ struct lock_class_key *key); -+extern void class_unregister(struct xxx_class *xxx_class); -+# 216 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h" -+extern int class_for_each_device(struct xxx_class *xxx_class, struct device *start, -+ void *data, -+ int (*fn)(struct device *dev, void *data)); -+extern struct device *class_find_device(struct xxx_class *xxx_class, -+ struct device *start, void *data, -+ int (*match)(struct device *, void *)); -+ -+struct class_attribute { -+ struct attribute attr; -+ ssize_t (*show)(struct xxx_class *xxx_class, char *buf); -+ ssize_t (*store)(struct xxx_class *xxx_class, const char *buf, size_t count); -+}; -+ -+ -+ -+ -+extern int __attribute__((warn_unused_result)) class_create_file(struct xxx_class *xxx_class, -+ const struct class_attribute *attr); -+extern void class_remove_file(struct xxx_class *xxx_class, -+ const struct class_attribute *attr); -+ -+struct class_interface { -+ struct list_head node; -+ struct xxx_class *xxx_class; -+ -+ int (*add_dev) (struct device *, struct class_interface *); -+ void (*remove_dev) (struct device *, struct class_interface *); -+}; -+ -+extern int __attribute__((warn_unused_result)) class_interface_register(struct class_interface *); -+extern void class_interface_unregister(struct class_interface *); -+ -+extern struct xxx_class * __attribute__((warn_unused_result)) __class_create(struct module *owner, -+ const char *name, -+ struct lock_class_key *key); -+extern void class_destroy(struct xxx_class *cls); -+# 270 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h" -+struct device_type { -+ const char *name; -+ struct attribute_group **groups; -+ int (*uevent)(struct device *dev, struct kobj_uevent_env *env); -+ void (*release)(struct device *dev); -+ -+ int (*suspend)(struct device *dev, pm_message_t state); -+ int (*resume)(struct device *dev); -+ -+ struct pm_ops *pm; -+}; -+ -+ -+struct device_attribute { -+ struct attribute attr; -+ ssize_t (*show)(struct device *dev, struct device_attribute *attr, -+ char *buf); -+ ssize_t (*store)(struct device *dev, struct device_attribute *attr, -+ const char *buf, size_t count); -+}; -+ -+ -+ -+ -+extern int __attribute__((warn_unused_result)) device_create_file(struct device *device, -+ struct device_attribute *entry); -+extern void device_remove_file(struct device *dev, -+ struct device_attribute *attr); -+extern int __attribute__((warn_unused_result)) device_create_bin_file(struct device *dev, -+ struct bin_attribute *attr); -+extern void device_remove_bin_file(struct device *dev, -+ struct bin_attribute *attr); -+extern int device_schedule_callback_owner(struct device *dev, -+ void (*func)(struct device *dev), struct module *owner); -+ -+ -+ -+ -+ -+ -+typedef void (*dr_release_t)(struct device *dev, void *res); -+typedef int (*dr_match_t)(struct device *dev, void *res, void *match_data); -+ -+ -+extern void *__devres_alloc(dr_release_t release, size_t size, gfp_t gfp, -+ const char *name); -+ -+ -+ -+ -+ -+extern void devres_free(void *res); -+extern void devres_add(struct device *dev, void *res); -+extern void *devres_find(struct device *dev, dr_release_t release, -+ dr_match_t match, void *match_data); -+extern void *devres_get(struct device *dev, void *new_res, -+ dr_match_t match, void *match_data); -+extern void *devres_remove(struct device *dev, dr_release_t release, -+ dr_match_t match, void *match_data); -+extern int devres_destroy(struct device *dev, dr_release_t release, -+ dr_match_t match, void *match_data); -+ -+ -+extern void * __attribute__((warn_unused_result)) devres_open_group(struct device *dev, void *id, -+ gfp_t gfp); -+extern void devres_close_group(struct device *dev, void *id); -+extern void devres_remove_group(struct device *dev, void *id); -+extern int devres_release_group(struct device *dev, void *id); -+ -+ -+extern void *devm_kzalloc(struct device *dev, size_t size, gfp_t gfp); -+extern void devm_kfree(struct device *dev, void *p); -+ -+struct device_dma_parameters { -+ -+ -+ -+ -+ unsigned int max_segment_size; -+ unsigned long segment_boundary_mask; -+}; -+ -+struct device { -+ struct klist klist_children; -+ struct klist_node knode_parent; -+ struct klist_node knode_driver; -+ struct klist_node knode_bus; -+ struct device *parent; -+ -+ struct kobject kobj; -+ char bus_id[20]; -+ const char *init_name; -+ struct device_type *type; -+ unsigned uevent_suppress:1; -+ -+ struct semaphore sem; -+ -+ -+ -+ struct bus_type *bus; -+ struct device_driver *driver; -+ -+ void *driver_data; -+ void *platform_data; -+ -+ struct dev_pm_info power; -+ -+ -+ -+ -+ u64 *dma_mask; -+ u64 coherent_dma_mask; -+ -+ -+ -+ -+ -+ struct device_dma_parameters *dma_parms; -+ -+ struct list_head dma_pools; -+ -+ struct dma_coherent_mem *dma_mem; -+ -+ -+ struct dev_archdata archdata; -+ -+ spinlock_t devres_lock; -+ struct list_head devres_head; -+ -+ struct list_head node; -+ struct xxx_class *xxx_class; -+ dev_t devt; -+ struct attribute_group **groups; -+ -+ void (*release)(struct device *dev); -+}; -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pm_wakeup.h" 1 -+# 33 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pm_wakeup.h" -+static inline __attribute__((always_inline)) void device_init_wakeup(struct device *dev, int val) -+{ -+ dev->power.can_wakeup = dev->power.should_wakeup = !!val; -+} -+ -+static inline __attribute__((always_inline)) void device_set_wakeup_capable(struct device *dev, int val) -+{ -+ dev->power.can_wakeup = !!val; -+} -+ -+static inline __attribute__((always_inline)) int device_can_wakeup(struct device *dev) -+{ -+ return dev->power.can_wakeup; -+} -+ -+static inline __attribute__((always_inline)) void device_set_wakeup_enable(struct device *dev, int val) -+{ -+ dev->power.should_wakeup = !!val; -+} -+ -+static inline __attribute__((always_inline)) int device_may_wakeup(struct device *dev) -+{ -+ return dev->power.can_wakeup && dev->power.should_wakeup; -+} -+# 409 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h" 2 -+ -+static inline __attribute__((always_inline)) const char *dev_name(const struct device *dev) -+{ -+ -+ return dev->bus_id; -+} -+ -+extern int dev_set_name(struct device *dev, const char *name, ...) -+ __attribute__((format(printf, 2, 3))); -+# 429 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h" -+static inline __attribute__((always_inline)) int dev_to_node(struct device *dev) -+{ -+ return -1; -+} -+static inline __attribute__((always_inline)) void set_dev_node(struct device *dev, int node) -+{ -+} -+ -+ -+static inline __attribute__((always_inline)) void *dev_get_drvdata(struct device *dev) -+{ -+ return dev->driver_data; -+} -+ -+static inline __attribute__((always_inline)) void dev_set_drvdata(struct device *dev, void *data) -+{ -+ dev->driver_data = data; -+} -+ -+static inline __attribute__((always_inline)) int device_is_registered(struct device *dev) -+{ -+ return dev->kobj.state_in_sysfs; -+} -+ -+void driver_init(void); -+ -+ -+ -+ -+extern int __attribute__((warn_unused_result)) device_register(struct device *dev); -+extern void device_unregister(struct device *dev); -+extern void device_initialize(struct device *dev); -+extern int __attribute__((warn_unused_result)) device_add(struct device *dev); -+extern void device_del(struct device *dev); -+extern int device_for_each_child(struct device *dev, void *data, -+ int (*fn)(struct device *dev, void *data)); -+extern struct device *device_find_child(struct device *dev, void *data, -+ int (*match)(struct device *dev, void *data)); -+extern int device_rename(struct device *dev, char *new_name); -+extern int device_move(struct device *dev, struct device *new_parent); -+ -+ -+ -+ -+ -+extern int __attribute__((warn_unused_result)) device_bind_driver(struct device *dev); -+extern void device_release_driver(struct device *dev); -+extern int __attribute__((warn_unused_result)) device_attach(struct device *dev); -+extern int __attribute__((warn_unused_result)) driver_attach(struct device_driver *drv); -+extern int __attribute__((warn_unused_result)) device_reprobe(struct device *dev); -+ -+ -+ -+ -+extern struct device *device_create_vargs(struct xxx_class *cls, -+ struct device *parent, -+ dev_t devt, -+ void *drvdata, -+ const char *fmt, -+ va_list vargs); -+extern struct device *device_create(struct xxx_class *cls, struct device *parent, -+ dev_t devt, void *drvdata, -+ const char *fmt, ...) -+ __attribute__((format(printf, 5, 6))); -+ -+extern void device_destroy(struct xxx_class *cls, dev_t devt); -+ -+ -+ -+ -+ -+ -+ -+extern int (*platform_notify)(struct device *dev); -+ -+extern int (*platform_notify_remove)(struct device *dev); -+ -+ -+ -+ -+ -+ -+extern struct device *get_device(struct device *dev); -+extern void put_device(struct device *dev); -+ -+ -+ -+extern void device_shutdown(void); -+ -+ -+extern void sysdev_shutdown(void); -+ -+ -+extern const char *dev_driver_string(const struct device *dev); -+# 25 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h" 2 -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h" 1 -+# 9 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h" -+enum dma_data_direction { -+ DMA_BIDIRECTIONAL = 0, -+ DMA_TO_DEVICE = 1, -+ DMA_FROM_DEVICE = 2, -+ DMA_NONE = 3, -+}; -+# 39 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h" -+static inline __attribute__((always_inline)) int valid_dma_direction(int dma_direction) -+{ -+ return ((dma_direction == DMA_BIDIRECTIONAL) || -+ (dma_direction == DMA_TO_DEVICE) || -+ (dma_direction == DMA_FROM_DEVICE)); -+} -+ -+static inline __attribute__((always_inline)) int is_device_dma_capable(struct device *dev) -+{ -+ return dev->dma_mask != 0 && *dev->dma_mask != 0x0ULL; -+} -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h" 1 -+# 9 "/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h" 1 -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/scatterlist.h" 1 -+ -+ -+ -+ -+ -+struct scatterlist { -+ -+ -+ -+ unsigned long page_link; -+ unsigned int offset; -+ unsigned int length; -+ dma_addr_t dma_address; -+ unsigned int dma_length; -+}; -+# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" 1 -+# 11 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rbtree.h" 1 -+# 100 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rbtree.h" -+struct rb_node -+{ -+ unsigned long rb_parent_color; -+ -+ -+ struct rb_node *rb_right; -+ struct rb_node *rb_left; -+} __attribute__((aligned(sizeof(long)))); -+ -+ -+struct rb_root -+{ -+ struct rb_node *rb_node; -+}; -+# 123 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rbtree.h" -+static inline __attribute__((always_inline)) void rb_set_parent(struct rb_node *rb, struct rb_node *p) -+{ -+ rb->rb_parent_color = (rb->rb_parent_color & 3) | (unsigned long)p; -+} -+static inline __attribute__((always_inline)) void rb_set_color(struct rb_node *rb, int color) -+{ -+ rb->rb_parent_color = (rb->rb_parent_color & ~1) | color; -+} -+# 139 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rbtree.h" -+extern void rb_insert_color(struct rb_node *, struct rb_root *); -+extern void rb_erase(struct rb_node *, struct rb_root *); -+ -+ -+extern struct rb_node *rb_next(struct rb_node *); -+extern struct rb_node *rb_prev(struct rb_node *); -+extern struct rb_node *rb_first(struct rb_root *); -+extern struct rb_node *rb_last(struct rb_root *); -+ -+ -+extern void rb_replace_node(struct rb_node *victim, struct rb_node *xxx_new, -+ struct rb_root *root); -+ -+static inline __attribute__((always_inline)) void rb_link_node(struct rb_node * node, struct rb_node * parent, -+ struct rb_node ** rb_link) -+{ -+ node->rb_parent_color = (unsigned long )parent; -+ node->rb_left = node->rb_right = 0; -+ -+ *rb_link = node; -+} -+# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/prio_tree.h" 1 -+# 14 "/d/kernels/linux-2.6.27.10-clickport/include/linux/prio_tree.h" -+struct raw_prio_tree_node { -+ struct prio_tree_node *left; -+ struct prio_tree_node *right; -+ struct prio_tree_node *parent; -+}; -+ -+struct prio_tree_node { -+ struct prio_tree_node *left; -+ struct prio_tree_node *right; -+ struct prio_tree_node *parent; -+ unsigned long start; -+ unsigned long last; -+}; -+ -+struct prio_tree_root { -+ struct prio_tree_node *prio_tree_node; -+ unsigned short index_bits; -+ unsigned short raw; -+ -+ -+ -+ -+}; -+ -+struct prio_tree_iter { -+ struct prio_tree_node *cur; -+ unsigned long mask; -+ unsigned long value; -+ int size_level; -+ -+ struct prio_tree_root *root; -+ unsigned long r_index; -+ unsigned long h_index; -+}; -+ -+static inline __attribute__((always_inline)) void prio_tree_iter_init(struct prio_tree_iter *iter, -+ struct prio_tree_root *root, unsigned long r_index, unsigned long h_index) -+{ -+ iter->root = root; -+ iter->r_index = r_index; -+ iter->h_index = h_index; -+ iter->cur = 0; -+} -+# 84 "/d/kernels/linux-2.6.27.10-clickport/include/linux/prio_tree.h" -+static inline __attribute__((always_inline)) int prio_tree_empty(const struct prio_tree_root *root) -+{ -+ return root->prio_tree_node == 0; -+} -+ -+static inline __attribute__((always_inline)) int prio_tree_root(const struct prio_tree_node *node) -+{ -+ return node->parent == node; -+} -+ -+static inline __attribute__((always_inline)) int prio_tree_left_empty(const struct prio_tree_node *node) -+{ -+ return node->left == node; -+} -+ -+static inline __attribute__((always_inline)) int prio_tree_right_empty(const struct prio_tree_node *node) -+{ -+ return node->right == node; -+} -+ -+ -+struct prio_tree_node *prio_tree_replace(struct prio_tree_root *root, -+ struct prio_tree_node *old, struct prio_tree_node *node); -+struct prio_tree_node *prio_tree_insert(struct prio_tree_root *root, -+ struct prio_tree_node *node); -+void prio_tree_remove(struct prio_tree_root *root, struct prio_tree_node *node); -+struct prio_tree_node *prio_tree_next(struct prio_tree_iter *iter); -+# 13 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h" 1 -+ -+ -+ -+ -+ -+struct task_struct; -+ -+extern int debug_locks; -+extern int debug_locks_silent; -+ -+ -+ -+ -+extern int debug_locks_off(void); -+# 40 "/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h" -+struct task_struct; -+# 49 "/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h" -+static inline __attribute__((always_inline)) void debug_show_all_locks(void) -+{ -+} -+ -+static inline __attribute__((always_inline)) void __debug_show_held_locks(struct task_struct *task) -+{ -+} -+ -+static inline __attribute__((always_inline)) void debug_show_held_locks(struct task_struct *task) -+{ -+} -+ -+static inline __attribute__((always_inline)) void -+debug_check_no_locks_freed(const void *from, unsigned long len) -+{ -+} -+ -+static inline __attribute__((always_inline)) void -+debug_check_no_locks_held(struct task_struct *task) -+{ -+} -+# 14 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm_types.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/auxvec.h" 1 -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm_types.h" 2 -+# 22 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm_types.h" -+struct address_space; -+ -+ -+typedef atomic_long_t mm_counter_t; -+# 37 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm_types.h" -+struct page { -+ unsigned long flags; -+ -+ atomic_t _count; -+ union { -+ atomic_t _mapcount; -+ -+ -+ -+ struct { -+ u16 inuse; -+ u16 objects; -+ }; -+ }; -+ union { -+ struct { -+ unsigned long xxx_private; -+ -+ -+ -+ -+ -+ -+ struct address_space *mapping; -+ -+ -+ -+ -+ -+ -+ }; -+ -+ spinlock_t ptl; -+ -+ struct kmem_cache *slab; -+ struct page *first_page; -+ }; -+ union { -+ unsigned long index; -+ void *freelist; -+ }; -+ struct list_head lru; -+# 98 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm_types.h" -+}; -+ -+ -+ -+ -+ -+ -+ -+struct vm_area_struct { -+ struct mm_struct * vm_mm; -+ unsigned long vm_start; -+ unsigned long vm_end; -+ -+ -+ -+ struct vm_area_struct *vm_next; -+ -+ pgprot_t vm_page_prot; -+ unsigned long vm_flags; -+ -+ struct rb_node vm_rb; -+ -+ -+ -+ -+ -+ -+ -+ union { -+ struct { -+ struct list_head list; -+ void *parent; -+ struct vm_area_struct *head; -+ } vm_set; -+ -+ struct raw_prio_tree_node prio_tree_node; -+ } shared; -+ -+ -+ -+ -+ -+ -+ -+ struct list_head anon_vma_node; -+ struct anon_vma *anon_vma; -+ -+ -+ struct vm_operations_struct * vm_ops; -+ -+ -+ unsigned long vm_pgoff; -+ -+ struct file * vm_file; -+ void * vm_private_data; -+ unsigned long vm_truncate_count; -+ -+ -+ -+ -+ -+ -+ -+}; -+ -+struct core_thread { -+ struct task_struct *task; -+ struct core_thread *next; -+}; -+ -+struct core_state { -+ atomic_t nr_threads; -+ struct core_thread dumper; -+ struct completion startup; -+}; -+ -+struct mm_struct { -+ struct vm_area_struct * mmap; -+ struct rb_root mm_rb; -+ struct vm_area_struct * mmap_cache; -+ unsigned long (*get_unmapped_area) (struct file *filp, -+ unsigned long addr, unsigned long len, -+ unsigned long pgoff, unsigned long flags); -+ void (*unmap_area) (struct mm_struct *mm, unsigned long addr); -+ unsigned long mmap_base; -+ unsigned long task_size; -+ unsigned long cached_hole_size; -+ unsigned long free_area_cache; -+ pgd_t * pgd; -+ atomic_t mm_users; -+ atomic_t mm_count; -+ int map_count; -+ struct rw_semaphore mmap_sem; -+ spinlock_t page_table_lock; -+ -+ struct list_head mmlist; -+ -+ -+ -+ -+ -+ -+ -+ mm_counter_t _file_rss; -+ mm_counter_t _anon_rss; -+ -+ unsigned long hiwater_rss; -+ unsigned long hiwater_vm; -+ -+ unsigned long total_vm, locked_vm, shared_vm, exec_vm; -+ unsigned long stack_vm, reserved_vm, def_flags, nr_ptes; -+ unsigned long start_code, end_code, start_data, end_data; -+ unsigned long start_brk, brk, start_stack; -+ unsigned long arg_start, arg_end, env_start, env_end; -+ -+ unsigned long saved_auxv[(2*(1 + 18 + 1))]; -+ -+ cpumask_t cpu_vm_mask; -+ -+ -+ mm_context_t context; -+ struct vx_info *mm_vx_info; -+# 228 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm_types.h" -+ unsigned int faultstamp; -+ unsigned int token_priority; -+ unsigned int last_interval; -+ -+ unsigned long flags; -+ -+ struct core_state *core_state; -+ -+ -+ rwlock_t ioctx_list_lock; -+ struct kioctx *ioctx_list; -+# 255 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm_types.h" -+ struct file *exe_file; -+ unsigned long num_exe_file_vmas; -+ -+ -+ struct mmu_notifier_mm *mmu_notifier_mm; -+ -+}; -+# 15 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" 2 -+ -+struct mempolicy; -+struct anon_vma; -+struct file_ra_state; -+struct user_struct; -+struct writeback_control; -+ -+ -+extern unsigned long max_mapnr; -+ -+ -+extern unsigned long num_physpages; -+extern void * high_memory; -+extern int page_cluster; -+ -+ -+extern int sysctl_legacy_va_layout; -+ -+ -+ -+ -+extern unsigned long mmap_min_addr; -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h" 1 -+# 139 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h" -+extern unsigned long empty_zero_page[((1UL) << 12) / sizeof(unsigned long)]; -+ -+ -+extern spinlock_t pgd_lock; -+extern struct list_head pgd_list; -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int pte_dirty(pte_t pte) -+{ -+ return pte_flags(pte) & (((pteval_t)(1)) << 6); -+} -+ -+static inline __attribute__((always_inline)) int pte_young(pte_t pte) -+{ -+ return pte_flags(pte) & (((pteval_t)(1)) << 5); -+} -+ -+static inline __attribute__((always_inline)) int pte_write(pte_t pte) -+{ -+ return pte_flags(pte) & (((pteval_t)(1)) << 1); -+} -+ -+static inline __attribute__((always_inline)) int pte_file(pte_t pte) -+{ -+ return pte_flags(pte) & (((pteval_t)(1)) << 6); -+} -+ -+static inline __attribute__((always_inline)) int pte_huge(pte_t pte) -+{ -+ return pte_flags(pte) & (((pteval_t)(1)) << 7); -+} -+ -+static inline __attribute__((always_inline)) int pte_global(pte_t pte) -+{ -+ return pte_flags(pte) & (((pteval_t)(1)) << 8); -+} -+ -+static inline __attribute__((always_inline)) int pte_exec(pte_t pte) -+{ -+ return !(pte_flags(pte) & (((pteval_t)(0)))); -+} -+ -+static inline __attribute__((always_inline)) int pte_special(pte_t pte) -+{ -+ return pte_val(pte) & (((pteval_t)(1)) << 9); -+} -+ -+static inline __attribute__((always_inline)) int pmd_large(pmd_t pte) -+{ -+ return (((pgd_val(((pte).pud).pgd))) & ((((pteval_t)(1)) << 7) | (((pteval_t)(1)) << 0))) == -+ ((((pteval_t)(1)) << 7) | (((pteval_t)(1)) << 0)); -+} -+ -+static inline __attribute__((always_inline)) pte_t pte_mkclean(pte_t pte) -+{ -+ return __pte(pte_val(pte) & ~(((pteval_t)(1)) << 6)); -+} -+ -+static inline __attribute__((always_inline)) pte_t pte_mkold(pte_t pte) -+{ -+ return __pte(pte_val(pte) & ~(((pteval_t)(1)) << 5)); -+} -+ -+static inline __attribute__((always_inline)) pte_t pte_wrprotect(pte_t pte) -+{ -+ return __pte(pte_val(pte) & ~(((pteval_t)(1)) << 1)); -+} -+ -+static inline __attribute__((always_inline)) pte_t pte_mkexec(pte_t pte) -+{ -+ return __pte(pte_val(pte) & ~(((pteval_t)(0)))); -+} -+ -+static inline __attribute__((always_inline)) pte_t pte_mkdirty(pte_t pte) -+{ -+ return __pte(pte_val(pte) | (((pteval_t)(1)) << 6)); -+} -+ -+static inline __attribute__((always_inline)) pte_t pte_mkyoung(pte_t pte) -+{ -+ return __pte(pte_val(pte) | (((pteval_t)(1)) << 5)); -+} -+ -+static inline __attribute__((always_inline)) pte_t pte_mkwrite(pte_t pte) -+{ -+ return __pte(pte_val(pte) | (((pteval_t)(1)) << 1)); -+} -+ -+static inline __attribute__((always_inline)) pte_t pte_mkhuge(pte_t pte) -+{ -+ return __pte(pte_val(pte) | (((pteval_t)(1)) << 7)); -+} -+ -+static inline __attribute__((always_inline)) pte_t pte_clrhuge(pte_t pte) -+{ -+ return __pte(pte_val(pte) & ~(((pteval_t)(1)) << 7)); -+} -+ -+static inline __attribute__((always_inline)) pte_t pte_mkglobal(pte_t pte) -+{ -+ return __pte(pte_val(pte) | (((pteval_t)(1)) << 8)); -+} -+ -+static inline __attribute__((always_inline)) pte_t pte_clrglobal(pte_t pte) -+{ -+ return __pte(pte_val(pte) & ~(((pteval_t)(1)) << 8)); -+} -+ -+static inline __attribute__((always_inline)) pte_t pte_mkspecial(pte_t pte) -+{ -+ return __pte(pte_val(pte) | (((pteval_t)(1)) << 9)); -+} -+ -+extern pteval_t __supported_pte_mask; -+ -+static inline __attribute__((always_inline)) pte_t pfn_pte(unsigned long page_nr, pgprot_t pgprot) -+{ -+ return __pte((((phys_addr_t)page_nr << 12) | -+ ((pgprot).pgprot)) & __supported_pte_mask); -+} -+# 271 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h" -+static inline __attribute__((always_inline)) pte_t pte_modify(pte_t pte, pgprot_t newprot) -+{ -+ pteval_t val = pte_val(pte); -+ -+ -+ -+ -+ -+ val &= (((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & ((phys_addr_t)(1ULL << 32) - 1))) | (((pteval_t)(1)) << 4) | (((pteval_t)(1)) << 3) | (((pteval_t)(1)) << 9) | (((pteval_t)(1)) << 5) | (((pteval_t)(1)) << 6)); -+ val |= ((newprot).pgprot) & (~(((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & ((phys_addr_t)(1ULL << 32) - 1))) | (((pteval_t)(1)) << 4) | (((pteval_t)(1)) << 3) | (((pteval_t)(1)) << 9) | (((pteval_t)(1)) << 5) | (((pteval_t)(1)) << 6))) & __supported_pte_mask; -+ -+ return __pte(val); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot) -+{ -+ pgprotval_t preservebits = ((oldprot).pgprot) & (((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & ((phys_addr_t)(1ULL << 32) - 1))) | (((pteval_t)(1)) << 4) | (((pteval_t)(1)) << 3) | (((pteval_t)(1)) << 9) | (((pteval_t)(1)) << 5) | (((pteval_t)(1)) << 6)); -+ pgprotval_t addbits = ((newprot).pgprot); -+ return ((pgprot_t) { (preservebits | addbits) } ); -+} -+ -+ -+ -+ -+ -+ -+ -+struct file; -+pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn, -+ unsigned long size, pgprot_t vma_prot); -+int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn, -+ unsigned long size, pgprot_t *vma_prot); -+ -+ -+ -+void set_pte_vaddr(unsigned long vaddr, pte_t pte); -+ -+ -+extern void native_pagetable_setup_start(pgd_t *base); -+extern void native_pagetable_setup_done(pgd_t *base); -+# 364 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h" 1 -+# 25 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h" -+struct mm_struct; -+struct vm_area_struct; -+ -+extern pgd_t swapper_pg_dir[1024]; -+ -+static inline __attribute__((always_inline)) void pgtable_cache_init(void) { } -+static inline __attribute__((always_inline)) void check_pgt_cache(void) { } -+void paging_init(void); -+# 45 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level-defs.h" 1 -+# 46 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h" 2 -+# 84 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h" -+extern unsigned long pg0[]; -+# 98 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h" 1 -+# 14 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h" -+static inline __attribute__((always_inline)) void native_set_pte(pte_t *ptep , pte_t pte) -+{ -+ *ptep = pte; -+} -+ -+static inline __attribute__((always_inline)) void native_set_pmd(pmd_t *pmdp, pmd_t pmd) -+{ -+ *pmdp = pmd; -+} -+ -+static inline __attribute__((always_inline)) void native_set_pte_atomic(pte_t *ptep, pte_t pte) -+{ -+ native_set_pte(ptep, pte); -+} -+ -+static inline __attribute__((always_inline)) void native_set_pte_present(struct mm_struct *mm, -+ unsigned long addr, -+ pte_t *ptep, pte_t pte) -+{ -+ native_set_pte(ptep, pte); -+} -+# 43 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h" -+static inline __attribute__((always_inline)) void native_pte_clear(struct mm_struct *mm, -+ unsigned long addr, pte_t *xp) -+{ -+ *xp = native_make_pte(0); -+} -+ -+ -+static inline __attribute__((always_inline)) pte_t native_ptep_get_and_clear(pte_t *xp) -+{ -+ return __pte(((__typeof__(*(&xp->pte_low)))__xchg((unsigned long)(0), (&xp->pte_low), sizeof(*(&xp->pte_low))))); -+} -+# 99 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h" 2 -+# 117 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h" -+static inline __attribute__((always_inline)) int pud_large(pud_t pud) { return 0; } -+# 365 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h" 2 -+# 394 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h" -+enum { -+ PG_LEVEL_NONE, -+ PG_LEVEL_4K, -+ PG_LEVEL_2M, -+ PG_LEVEL_1G, -+ PG_LEVEL_NUM -+}; -+ -+ -+extern void update_page_count(int level, unsigned long pages); -+# 414 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h" -+extern pte_t *lookup_address(unsigned long address, unsigned int *level); -+ -+ -+static inline __attribute__((always_inline)) pte_t native_local_ptep_get_and_clear(pte_t *ptep) -+{ -+ pte_t res = *ptep; -+ -+ -+ native_pte_clear(0, 0, ptep); -+ return res; -+} -+ -+static inline __attribute__((always_inline)) void native_set_pte_at(struct mm_struct *mm, unsigned long addr, -+ pte_t *ptep , pte_t pte) -+{ -+ native_set_pte(ptep, pte); -+} -+# 457 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h" -+struct vm_area_struct; -+ -+ -+extern int ptep_set_access_flags(struct vm_area_struct *vma, -+ unsigned long address, pte_t *ptep, -+ pte_t entry, int dirty); -+ -+ -+extern int ptep_test_and_clear_young(struct vm_area_struct *vma, -+ unsigned long addr, pte_t *ptep); -+ -+ -+extern int ptep_clear_flush_young(struct vm_area_struct *vma, -+ unsigned long address, pte_t *ptep); -+ -+ -+static inline __attribute__((always_inline)) pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, -+ pte_t *ptep) -+{ -+ pte_t pte = native_ptep_get_and_clear(ptep); -+ pte_update(mm, addr, ptep); -+ return pte; -+} -+ -+ -+static inline __attribute__((always_inline)) pte_t ptep_get_and_clear_full(struct mm_struct *mm, -+ unsigned long addr, pte_t *ptep, -+ int full) -+{ -+ pte_t pte; -+ if (full) { -+ -+ -+ -+ -+ pte = native_local_ptep_get_and_clear(ptep); -+ } else { -+ pte = ptep_get_and_clear(mm, addr, ptep); -+ } -+ return pte; -+} -+ -+ -+static inline __attribute__((always_inline)) void ptep_set_wrprotect(struct mm_struct *mm, -+ unsigned long addr, pte_t *ptep) -+{ -+ clear_bit(1, (unsigned long *)&ptep->pte); -+ pte_update(mm, addr, ptep); -+} -+# 517 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h" -+static inline __attribute__((always_inline)) void clone_pgd_range(pgd_t *dst, pgd_t *src, int count) -+{ -+ (__builtin_constant_p((count * sizeof(pgd_t))) ? __constant_memcpy((dst), (src), (count * sizeof(pgd_t))) : __memcpy((dst), (src), (count * sizeof(pgd_t)))); -+} -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable.h" 1 -+# 162 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable.h" -+void pgd_clear_bad(pgd_t *); -+void pud_clear_bad(pud_t *); -+void pmd_clear_bad(pmd_t *); -+ -+static inline __attribute__((always_inline)) int pgd_none_or_clear_bad(pgd_t *pgd) -+{ -+ if (pgd_none(*pgd)) -+ return 1; -+ if (__builtin_expect(!!(pgd_bad(*pgd)), 0)) { -+ pgd_clear_bad(pgd); -+ return 1; -+ } -+ return 0; -+} -+ -+static inline __attribute__((always_inline)) int pud_none_or_clear_bad(pud_t *pud) -+{ -+ if (pud_none(*pud)) -+ return 1; -+ if (__builtin_expect(!!(pud_bad(*pud)), 0)) { -+ pud_clear_bad(pud); -+ return 1; -+ } -+ return 0; -+} -+ -+static inline __attribute__((always_inline)) int pmd_none_or_clear_bad(pmd_t *pmd) -+{ -+ if ((!(unsigned long)((pgd_val((((*pmd)).pud).pgd))))) -+ return 1; -+ if (__builtin_expect(!!(((((pgd_val(((*pmd).pud).pgd))) & ((~((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & ((phys_addr_t)(1ULL << 32) - 1)))) & ~(((pteval_t)(1)) << 2))) != ((((pteval_t)(1)) << 0) | (((pteval_t)(1)) << 1) | (((pteval_t)(1)) << 5) | (((pteval_t)(1)) << 6)))), 0)) { -+ pmd_clear_bad(pmd); -+ return 1; -+ } -+ return 0; -+} -+ -+static inline __attribute__((always_inline)) pte_t __ptep_modify_prot_start(struct mm_struct *mm, -+ unsigned long addr, -+ pte_t *ptep) -+{ -+ -+ -+ -+ -+ -+ return ptep_get_and_clear(mm, addr, ptep); -+} -+ -+static inline __attribute__((always_inline)) void __ptep_modify_prot_commit(struct mm_struct *mm, -+ unsigned long addr, -+ pte_t *ptep, pte_t pte) -+{ -+ -+ -+ -+ -+ set_pte_at(mm, addr, ptep, pte); -+} -+# 524 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h" 2 -+# 40 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" 2 -+# 56 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+extern struct kmem_cache *vm_area_cachep; -+ -+ -+ -+ -+ -+ -+struct vm_list_struct { -+ struct vm_list_struct *next; -+ struct vm_area_struct *vma; -+}; -+# 137 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+extern pgprot_t protection_map[16]; -+# 152 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+struct vm_fault { -+ unsigned int flags; -+ unsigned long pgoff; -+ void *virtual_address; -+ -+ struct page *page; -+ -+ -+ -+ -+}; -+ -+ -+ -+ -+ -+ -+struct vm_operations_struct { -+ void (*open)(struct vm_area_struct * area); -+ void (*close)(struct vm_area_struct * area); -+ int (*fault)(struct vm_area_struct *vma, struct vm_fault *vmf); -+ -+ -+ -+ int (*page_mkwrite)(struct vm_area_struct *vma, struct page *page); -+ -+ -+ -+ -+ int (*access)(struct vm_area_struct *vma, unsigned long addr, -+ void *buf, int len, int write); -+# 208 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+}; -+ -+struct mmu_gather; -+struct inode; -+# 220 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h" 1 -+# 72 "/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h" -+enum pageflags { -+ PG_locked, -+ PG_error, -+ PG_referenced, -+ PG_uptodate, -+ PG_dirty, -+ PG_lru, -+ PG_active, -+ PG_slab, -+ PG_owner_priv_1, -+ PG_arch_1, -+ PG_reserved, -+ PG_private, -+ PG_writeback, -+ -+ PG_head, -+ PG_tail, -+ -+ -+ -+ PG_swapcache, -+ PG_mappedtodisk, -+ PG_reclaim, -+ PG_buddy, -+ -+ -+ -+ __NR_PAGEFLAGS, -+ -+ -+ PG_checked = PG_owner_priv_1, -+ -+ -+ PG_pinned = PG_owner_priv_1, -+ PG_savepinned = PG_dirty, -+ -+ -+ PG_slob_page = PG_active, -+ PG_slob_free = PG_private, -+ -+ -+ PG_slub_frozen = PG_active, -+ PG_slub_debug = PG_error, -+}; -+# 164 "/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h" -+struct page; -+ -+static inline __attribute__((always_inline)) int PageLocked(struct page *page) { return (__builtin_constant_p((PG_locked)) ? constant_test_bit((PG_locked), (&page->flags)) : variable_test_bit((PG_locked), (&page->flags))); } -+static inline __attribute__((always_inline)) int PageError(struct page *page) { return (__builtin_constant_p((PG_error)) ? constant_test_bit((PG_error), (&page->flags)) : variable_test_bit((PG_error), (&page->flags))); } static inline __attribute__((always_inline)) void SetPageError(struct page *page) { set_bit(PG_error, &page->flags); } static inline __attribute__((always_inline)) void ClearPageError(struct page *page) { clear_bit(PG_error, &page->flags); } -+static inline __attribute__((always_inline)) int PageReferenced(struct page *page) { return (__builtin_constant_p((PG_referenced)) ? constant_test_bit((PG_referenced), (&page->flags)) : variable_test_bit((PG_referenced), (&page->flags))); } static inline __attribute__((always_inline)) void SetPageReferenced(struct page *page) { set_bit(PG_referenced, &page->flags); } static inline __attribute__((always_inline)) void ClearPageReferenced(struct page *page) { clear_bit(PG_referenced, &page->flags); } static inline __attribute__((always_inline)) int TestClearPageReferenced(struct page *page) { return test_and_clear_bit(PG_referenced, &page->flags); } -+static inline __attribute__((always_inline)) int PageDirty(struct page *page) { return (__builtin_constant_p((PG_dirty)) ? constant_test_bit((PG_dirty), (&page->flags)) : variable_test_bit((PG_dirty), (&page->flags))); } static inline __attribute__((always_inline)) void SetPageDirty(struct page *page) { set_bit(PG_dirty, &page->flags); } static inline __attribute__((always_inline)) void ClearPageDirty(struct page *page) { clear_bit(PG_dirty, &page->flags); } static inline __attribute__((always_inline)) int TestSetPageDirty(struct page *page) { return test_and_set_bit(PG_dirty, &page->flags); } static inline __attribute__((always_inline)) int TestClearPageDirty(struct page *page) { return test_and_clear_bit(PG_dirty, &page->flags); } static inline __attribute__((always_inline)) void __ClearPageDirty(struct page *page) { __clear_bit(PG_dirty, &page->flags); } -+static inline __attribute__((always_inline)) int PageLRU(struct page *page) { return (__builtin_constant_p((PG_lru)) ? constant_test_bit((PG_lru), (&page->flags)) : variable_test_bit((PG_lru), (&page->flags))); } static inline __attribute__((always_inline)) void SetPageLRU(struct page *page) { set_bit(PG_lru, &page->flags); } static inline __attribute__((always_inline)) void ClearPageLRU(struct page *page) { clear_bit(PG_lru, &page->flags); } static inline __attribute__((always_inline)) void __ClearPageLRU(struct page *page) { __clear_bit(PG_lru, &page->flags); } -+static inline __attribute__((always_inline)) int PageActive(struct page *page) { return (__builtin_constant_p((PG_active)) ? constant_test_bit((PG_active), (&page->flags)) : variable_test_bit((PG_active), (&page->flags))); } static inline __attribute__((always_inline)) void SetPageActive(struct page *page) { set_bit(PG_active, &page->flags); } static inline __attribute__((always_inline)) void ClearPageActive(struct page *page) { clear_bit(PG_active, &page->flags); } static inline __attribute__((always_inline)) void __ClearPageActive(struct page *page) { __clear_bit(PG_active, &page->flags); } -+static inline __attribute__((always_inline)) int PageSlab(struct page *page) { return (__builtin_constant_p((PG_slab)) ? constant_test_bit((PG_slab), (&page->flags)) : variable_test_bit((PG_slab), (&page->flags))); } static inline __attribute__((always_inline)) void __SetPageSlab(struct page *page) { __set_bit(PG_slab, &page->flags); } static inline __attribute__((always_inline)) void __ClearPageSlab(struct page *page) { __clear_bit(PG_slab, &page->flags); } -+static inline __attribute__((always_inline)) int PageChecked(struct page *page) { return (__builtin_constant_p((PG_checked)) ? constant_test_bit((PG_checked), (&page->flags)) : variable_test_bit((PG_checked), (&page->flags))); } static inline __attribute__((always_inline)) void SetPageChecked(struct page *page) { set_bit(PG_checked, &page->flags); } static inline __attribute__((always_inline)) void ClearPageChecked(struct page *page) { clear_bit(PG_checked, &page->flags); } -+static inline __attribute__((always_inline)) int PagePinned(struct page *page) { return (__builtin_constant_p((PG_pinned)) ? constant_test_bit((PG_pinned), (&page->flags)) : variable_test_bit((PG_pinned), (&page->flags))); } static inline __attribute__((always_inline)) void SetPagePinned(struct page *page) { set_bit(PG_pinned, &page->flags); } static inline __attribute__((always_inline)) void ClearPagePinned(struct page *page) { clear_bit(PG_pinned, &page->flags); } static inline __attribute__((always_inline)) int TestSetPagePinned(struct page *page) { return test_and_set_bit(PG_pinned, &page->flags); } static inline __attribute__((always_inline)) int TestClearPagePinned(struct page *page) { return test_and_clear_bit(PG_pinned, &page->flags); } -+static inline __attribute__((always_inline)) int PageSavePinned(struct page *page) { return (__builtin_constant_p((PG_savepinned)) ? constant_test_bit((PG_savepinned), (&page->flags)) : variable_test_bit((PG_savepinned), (&page->flags))); } static inline __attribute__((always_inline)) void SetPageSavePinned(struct page *page) { set_bit(PG_savepinned, &page->flags); } static inline __attribute__((always_inline)) void ClearPageSavePinned(struct page *page) { clear_bit(PG_savepinned, &page->flags); }; -+static inline __attribute__((always_inline)) int PageReserved(struct page *page) { return (__builtin_constant_p((PG_reserved)) ? constant_test_bit((PG_reserved), (&page->flags)) : variable_test_bit((PG_reserved), (&page->flags))); } static inline __attribute__((always_inline)) void SetPageReserved(struct page *page) { set_bit(PG_reserved, &page->flags); } static inline __attribute__((always_inline)) void ClearPageReserved(struct page *page) { clear_bit(PG_reserved, &page->flags); } static inline __attribute__((always_inline)) void __ClearPageReserved(struct page *page) { __clear_bit(PG_reserved, &page->flags); } -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int PageSlobPage(struct page *page) { return (__builtin_constant_p((PG_slob_page)) ? constant_test_bit((PG_slob_page), (&page->flags)) : variable_test_bit((PG_slob_page), (&page->flags))); } static inline __attribute__((always_inline)) void __SetPageSlobPage(struct page *page) { __set_bit(PG_slob_page, &page->flags); } static inline __attribute__((always_inline)) void __ClearPageSlobPage(struct page *page) { __clear_bit(PG_slob_page, &page->flags); } -+static inline __attribute__((always_inline)) int PageSlobFree(struct page *page) { return (__builtin_constant_p((PG_slob_free)) ? constant_test_bit((PG_slob_free), (&page->flags)) : variable_test_bit((PG_slob_free), (&page->flags))); } static inline __attribute__((always_inline)) void __SetPageSlobFree(struct page *page) { __set_bit(PG_slob_free, &page->flags); } static inline __attribute__((always_inline)) void __ClearPageSlobFree(struct page *page) { __clear_bit(PG_slob_free, &page->flags); } -+ -+static inline __attribute__((always_inline)) int PageSlubFrozen(struct page *page) { return (__builtin_constant_p((PG_slub_frozen)) ? constant_test_bit((PG_slub_frozen), (&page->flags)) : variable_test_bit((PG_slub_frozen), (&page->flags))); } static inline __attribute__((always_inline)) void __SetPageSlubFrozen(struct page *page) { __set_bit(PG_slub_frozen, &page->flags); } static inline __attribute__((always_inline)) void __ClearPageSlubFrozen(struct page *page) { __clear_bit(PG_slub_frozen, &page->flags); } -+static inline __attribute__((always_inline)) int PageSlubDebug(struct page *page) { return (__builtin_constant_p((PG_slub_debug)) ? constant_test_bit((PG_slub_debug), (&page->flags)) : variable_test_bit((PG_slub_debug), (&page->flags))); } static inline __attribute__((always_inline)) void __SetPageSlubDebug(struct page *page) { __set_bit(PG_slub_debug, &page->flags); } static inline __attribute__((always_inline)) void __ClearPageSlubDebug(struct page *page) { __clear_bit(PG_slub_debug, &page->flags); } -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int PageWriteback(struct page *page) { return (__builtin_constant_p((PG_writeback)) ? constant_test_bit((PG_writeback), (&page->flags)) : variable_test_bit((PG_writeback), (&page->flags))); } static inline __attribute__((always_inline)) int TestSetPageWriteback(struct page *page) { return test_and_set_bit(PG_writeback, &page->flags); } static inline __attribute__((always_inline)) int TestClearPageWriteback(struct page *page) { return test_and_clear_bit(PG_writeback, &page->flags); } -+static inline __attribute__((always_inline)) int PageBuddy(struct page *page) { return (__builtin_constant_p((PG_buddy)) ? constant_test_bit((PG_buddy), (&page->flags)) : variable_test_bit((PG_buddy), (&page->flags))); } static inline __attribute__((always_inline)) void __SetPageBuddy(struct page *page) { __set_bit(PG_buddy, &page->flags); } static inline __attribute__((always_inline)) void __ClearPageBuddy(struct page *page) { __clear_bit(PG_buddy, &page->flags); } -+static inline __attribute__((always_inline)) int PageMappedToDisk(struct page *page) { return (__builtin_constant_p((PG_mappedtodisk)) ? constant_test_bit((PG_mappedtodisk), (&page->flags)) : variable_test_bit((PG_mappedtodisk), (&page->flags))); } static inline __attribute__((always_inline)) void SetPageMappedToDisk(struct page *page) { set_bit(PG_mappedtodisk, &page->flags); } static inline __attribute__((always_inline)) void ClearPageMappedToDisk(struct page *page) { clear_bit(PG_mappedtodisk, &page->flags); } -+ -+ -+static inline __attribute__((always_inline)) int PageReclaim(struct page *page) { return (__builtin_constant_p((PG_reclaim)) ? constant_test_bit((PG_reclaim), (&page->flags)) : variable_test_bit((PG_reclaim), (&page->flags))); } static inline __attribute__((always_inline)) void SetPageReclaim(struct page *page) { set_bit(PG_reclaim, &page->flags); } static inline __attribute__((always_inline)) void ClearPageReclaim(struct page *page) { clear_bit(PG_reclaim, &page->flags); } static inline __attribute__((always_inline)) int TestClearPageReclaim(struct page *page) { return test_and_clear_bit(PG_reclaim, &page->flags); } -+static inline __attribute__((always_inline)) int PageReadahead(struct page *page) { return (__builtin_constant_p((PG_reclaim)) ? constant_test_bit((PG_reclaim), (&page->flags)) : variable_test_bit((PG_reclaim), (&page->flags))); } static inline __attribute__((always_inline)) void SetPageReadahead(struct page *page) { set_bit(PG_reclaim, &page->flags); } static inline __attribute__((always_inline)) void ClearPageReadahead(struct page *page) { clear_bit(PG_reclaim, &page->flags); } -+# 211 "/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h" -+static inline __attribute__((always_inline)) int PageSwapCache(struct page *page) { return (__builtin_constant_p((PG_swapcache)) ? constant_test_bit((PG_swapcache), (&page->flags)) : variable_test_bit((PG_swapcache), (&page->flags))); } static inline __attribute__((always_inline)) void SetPageSwapCache(struct page *page) { set_bit(PG_swapcache, &page->flags); } static inline __attribute__((always_inline)) void ClearPageSwapCache(struct page *page) { clear_bit(PG_swapcache, &page->flags); } -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int PageUncached(struct page *page) { return 0; } -+ -+ -+static inline __attribute__((always_inline)) int PageUptodate(struct page *page) -+{ -+ int ret = (__builtin_constant_p((PG_uptodate)) ? constant_test_bit((PG_uptodate), (&(page)->flags)) : variable_test_bit((PG_uptodate), (&(page)->flags))); -+# 234 "/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h" -+ if (ret) -+ asm volatile ("661:\n\t" "lock; addl $0,0(%%esp)" "\n662:\n" ".section .altinstructions,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661b\n" " " ".long" " " "663f\n" " .byte %c0\n" " .byte 662b-661b\n" " .byte 664f-663f\n" ".previous\n" ".section .altinstr_replacement,\"ax\"\n" "663:\n\t" "lfence" "\n664:\n" ".previous" :: "i" ((0*32+26)) : "memory"); -+ -+ return ret; -+} -+ -+static inline __attribute__((always_inline)) void __SetPageUptodate(struct page *page) -+{ -+ __asm__ __volatile__("": : :"memory"); -+ __set_bit(PG_uptodate, &(page)->flags); -+} -+ -+static inline __attribute__((always_inline)) void SetPageUptodate(struct page *page) -+{ -+# 260 "/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h" -+ __asm__ __volatile__("": : :"memory"); -+ set_bit(PG_uptodate, &(page)->flags); -+ -+} -+ -+static inline __attribute__((always_inline)) void ClearPageUptodate(struct page *page) { clear_bit(PG_uptodate, &page->flags); } -+ -+extern void cancel_dirty_page(struct page *page, unsigned int account_size); -+ -+int test_clear_page_writeback(struct page *page); -+int test_set_page_writeback(struct page *page); -+ -+static inline __attribute__((always_inline)) void set_page_writeback(struct page *page) -+{ -+ test_set_page_writeback(page); -+} -+# 284 "/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h" -+static inline __attribute__((always_inline)) int PageHead(struct page *page) { return (__builtin_constant_p((PG_head)) ? constant_test_bit((PG_head), (&page->flags)) : variable_test_bit((PG_head), (&page->flags))); } static inline __attribute__((always_inline)) void __SetPageHead(struct page *page) { __set_bit(PG_head, &page->flags); } static inline __attribute__((always_inline)) void __ClearPageHead(struct page *page) { __clear_bit(PG_head, &page->flags); } -+static inline __attribute__((always_inline)) int PageTail(struct page *page) { return (__builtin_constant_p((PG_tail)) ? constant_test_bit((PG_tail), (&page->flags)) : variable_test_bit((PG_tail), (&page->flags))); } static inline __attribute__((always_inline)) void __SetPageTail(struct page *page) { __set_bit(PG_tail, &page->flags); } static inline __attribute__((always_inline)) void __ClearPageTail(struct page *page) { __clear_bit(PG_tail, &page->flags); } -+ -+static inline __attribute__((always_inline)) int PageCompound(struct page *page) -+{ -+ return page->flags & ((1L << PG_head) | (1L << PG_tail)); -+ -+} -+# 221 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" 2 -+# 244 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+static inline __attribute__((always_inline)) int put_page_testzero(struct page *page) -+{ -+ do { } while(0); -+ return atomic_dec_and_test(&page->_count); -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int get_page_unless_zero(struct page *page) -+{ -+ do { } while(0); -+ return atomic_add_unless((&page->_count), 1, 0); -+} -+ -+ -+struct page *vmalloc_to_page(const void *addr); -+unsigned long vmalloc_to_pfn(const void *addr); -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int is_vmalloc_addr(const void *x) -+{ -+ -+ unsigned long addr = (unsigned long)x; -+ -+ return addr >= (((unsigned long)high_memory + 2 * (8 * 1024 * 1024) - 1) & ~((8 * 1024 * 1024) - 1)) && addr < ((((((unsigned long)__FIXADDR_TOP) - (__end_of_fixed_addresses << 12)) - ((1UL) << 12) * (1024 + 1)) & (~((1UL << 22)-1))) - 2 * ((1UL) << 12)); -+ -+ -+ -+} -+ -+static inline __attribute__((always_inline)) struct page *compound_head(struct page *page) -+{ -+ if (__builtin_expect(!!(PageTail(page)), 0)) -+ return page->first_page; -+ return page; -+} -+ -+static inline __attribute__((always_inline)) int page_count(struct page *page) -+{ -+ return ((&compound_head(page)->_count)->counter); -+} -+ -+static inline __attribute__((always_inline)) void get_page(struct page *page) -+{ -+ page = compound_head(page); -+ do { } while(0); -+ atomic_inc(&page->_count); -+} -+ -+static inline __attribute__((always_inline)) struct page *virt_to_head_page(const void *x) -+{ -+ struct page *page = (mem_map + (((((unsigned long)(x)) - ((unsigned long)(0xC0000000UL))) >> 12) - (0UL))); -+ return compound_head(page); -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void init_page_count(struct page *page) -+{ -+ (((&page->_count)->counter) = (1)); -+} -+ -+void put_page(struct page *page); -+void put_pages_list(struct list_head *pages); -+ -+void split_page(struct page *page, unsigned int order); -+ -+ -+ -+ -+ -+ -+typedef void compound_page_dtor(struct page *); -+ -+static inline __attribute__((always_inline)) void set_compound_page_dtor(struct page *page, -+ compound_page_dtor *dtor) -+{ -+ page[1].lru.next = (struct list_head *)dtor; -+} -+ -+static inline __attribute__((always_inline)) compound_page_dtor *get_compound_page_dtor(struct page *page) -+{ -+ return (compound_page_dtor *)page[1].lru.next; -+} -+ -+static inline __attribute__((always_inline)) int compound_order(struct page *page) -+{ -+ if (!PageHead(page)) -+ return 0; -+ return (unsigned long)page[1].lru.prev; -+} -+ -+static inline __attribute__((always_inline)) void set_compound_order(struct page *page, unsigned long order) -+{ -+ page[1].lru.prev = (struct list_head *)order; -+} -+# 495 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+static inline __attribute__((always_inline)) enum zone_type page_zonenum(struct page *page) -+{ -+ return (enum zone_type) ((page->flags >> (((((sizeof(unsigned long)*8) - 0) - 0) - 2) * (2 != 0))) & ((1UL << 2) - 1)); -+} -+# 508 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+static inline __attribute__((always_inline)) int page_zone_id(struct page *page) -+{ -+ return (page->flags >> ((((((sizeof(unsigned long)*8) - 0) - 0) < ((((sizeof(unsigned long)*8) - 0) - 0) - 2))? (((sizeof(unsigned long)*8) - 0) - 0) : ((((sizeof(unsigned long)*8) - 0) - 0) - 2)) * ((0 + 2) != 0))) & ((1UL << (0 + 2)) - 1); -+} -+ -+static inline __attribute__((always_inline)) int zone_to_nid(struct zone *zone) -+{ -+ -+ -+ -+ return 0; -+ -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int page_to_nid(struct page *page) -+{ -+ return (page->flags >> ((((sizeof(unsigned long)*8) - 0) - 0) * (0 != 0))) & ((1UL << 0) - 1); -+} -+ -+ -+static inline __attribute__((always_inline)) struct zone *page_zone(struct page *page) -+{ -+ return &(&contig_page_data)->node_zones[page_zonenum(page)]; -+} -+# 543 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+static inline __attribute__((always_inline)) void set_page_zone(struct page *page, enum zone_type zone) -+{ -+ page->flags &= ~(((1UL << 2) - 1) << (((((sizeof(unsigned long)*8) - 0) - 0) - 2) * (2 != 0))); -+ page->flags |= (zone & ((1UL << 2) - 1)) << (((((sizeof(unsigned long)*8) - 0) - 0) - 2) * (2 != 0)); -+} -+ -+static inline __attribute__((always_inline)) void set_page_node(struct page *page, unsigned long node) -+{ -+ page->flags &= ~(((1UL << 0) - 1) << ((((sizeof(unsigned long)*8) - 0) - 0) * (0 != 0))); -+ page->flags |= (node & ((1UL << 0) - 1)) << ((((sizeof(unsigned long)*8) - 0) - 0) * (0 != 0)); -+} -+ -+static inline __attribute__((always_inline)) void set_page_section(struct page *page, unsigned long section) -+{ -+ page->flags &= ~(((1UL << 0) - 1) << (((sizeof(unsigned long)*8) - 0) * (0 != 0))); -+ page->flags |= (section & ((1UL << 0) - 1)) << (((sizeof(unsigned long)*8) - 0) * (0 != 0)); -+} -+ -+static inline __attribute__((always_inline)) void set_page_links(struct page *page, enum zone_type zone, -+ unsigned long node, unsigned long pfn) -+{ -+ set_page_zone(page, zone); -+ set_page_node(page, node); -+ set_page_section(page, ((pfn) >> 0)); -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) unsigned long round_hint_to_min(unsigned long hint) -+{ -+ -+ hint &= (~(((1UL) << 12)-1)); -+ if (((void *)hint != 0) && -+ (hint < mmap_min_addr)) -+ return (((mmap_min_addr)+((typeof(mmap_min_addr))(((1UL) << 12))-1))&~((typeof(mmap_min_addr))(((1UL) << 12))-1)); -+ -+ return hint; -+} -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vmstat.h" 1 -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" 1 -+# 7 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vmstat.h" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1 -+# 9 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vmstat.h" 2 -+# 31 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vmstat.h" -+enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT, -+ PGALLOC_DMA, PGALLOC_NORMAL , PGALLOC_HIGH , PGALLOC_MOVABLE, -+ PGFREE, PGACTIVATE, PGDEACTIVATE, -+ PGFAULT, PGMAJFAULT, -+ PGREFILL_DMA, PGREFILL_NORMAL , PGREFILL_HIGH , PGREFILL_MOVABLE, -+ PGSTEAL_DMA, PGSTEAL_NORMAL , PGSTEAL_HIGH , PGSTEAL_MOVABLE, -+ PGSCAN_KSWAPD_DMA, PGSCAN_KSWAPD_NORMAL , PGSCAN_KSWAPD_HIGH , PGSCAN_KSWAPD_MOVABLE, -+ PGSCAN_DIRECT_DMA, PGSCAN_DIRECT_NORMAL , PGSCAN_DIRECT_HIGH , PGSCAN_DIRECT_MOVABLE, -+ PGINODESTEAL, SLABS_SCANNED, KSWAPD_STEAL, KSWAPD_INODESTEAL, -+ PAGEOUTRUN, ALLOCSTALL, PGROTATED, -+ -+ HTLB_BUDDY_PGALLOC, HTLB_BUDDY_PGALLOC_FAIL, -+ -+ NR_VM_EVENT_ITEMS -+}; -+ -+extern const struct seq_operations fragmentation_op; -+extern const struct seq_operations pagetypeinfo_op; -+extern const struct seq_operations zoneinfo_op; -+extern const struct seq_operations vmstat_op; -+extern int sysctl_stat_interval; -+# 64 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vmstat.h" -+struct vm_event_state { -+ unsigned long event[NR_VM_EVENT_ITEMS]; -+}; -+ -+extern __typeof__(struct vm_event_state) per_cpu__vm_event_states; -+ -+static inline __attribute__((always_inline)) void __count_vm_event(enum vm_event_item item) -+{ -+ (*({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((&per_cpu__vm_event_states))); (typeof((&per_cpu__vm_event_states))) (__ptr + ((({ typeof(per_cpu__this_cpu_off) ret__; switch (sizeof(per_cpu__this_cpu_off)) { case 1: asm("mov" "b ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__this_cpu_off)); break; case 2: asm("mov" "w ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__this_cpu_off)); break; case 4: asm("mov" "l ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__this_cpu_off)); break; default: __bad_percpu_size(); } ret__; })))); })).event[item]++; -+} -+ -+static inline __attribute__((always_inline)) void count_vm_event(enum vm_event_item item) -+{ -+ (*({ extern int simple_identifier_vm_event_states(void); do { } while (0); &(*({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((&per_cpu__vm_event_states))); (typeof((&per_cpu__vm_event_states))) (__ptr + ((({ typeof(per_cpu__this_cpu_off) ret__; switch (sizeof(per_cpu__this_cpu_off)) { case 1: asm("mov" "b ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__this_cpu_off)); break; case 2: asm("mov" "w ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__this_cpu_off)); break; case 4: asm("mov" "l ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__this_cpu_off)); break; default: __bad_percpu_size(); } ret__; })))); })); })).event[item]++; -+ do { } while (0); -+} -+ -+static inline __attribute__((always_inline)) void __count_vm_events(enum vm_event_item item, long delta) -+{ -+ (*({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((&per_cpu__vm_event_states))); (typeof((&per_cpu__vm_event_states))) (__ptr + ((({ typeof(per_cpu__this_cpu_off) ret__; switch (sizeof(per_cpu__this_cpu_off)) { case 1: asm("mov" "b ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__this_cpu_off)); break; case 2: asm("mov" "w ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__this_cpu_off)); break; case 4: asm("mov" "l ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__this_cpu_off)); break; default: __bad_percpu_size(); } ret__; })))); })).event[item] += delta; -+} -+ -+static inline __attribute__((always_inline)) void count_vm_events(enum vm_event_item item, long delta) -+{ -+ (*({ extern int simple_identifier_vm_event_states(void); do { } while (0); &(*({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((&per_cpu__vm_event_states))); (typeof((&per_cpu__vm_event_states))) (__ptr + ((({ typeof(per_cpu__this_cpu_off) ret__; switch (sizeof(per_cpu__this_cpu_off)) { case 1: asm("mov" "b ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__this_cpu_off)); break; case 2: asm("mov" "w ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__this_cpu_off)); break; case 4: asm("mov" "l ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__this_cpu_off)); break; default: __bad_percpu_size(); } ret__; })))); })); })).event[item] += delta; -+ do { } while (0); -+} -+ -+extern void all_vm_events(unsigned long *); -+ -+extern void vm_events_fold_cpu(int cpu); -+# 132 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vmstat.h" -+extern atomic_long_t vm_stat[NR_VM_ZONE_STAT_ITEMS]; -+ -+static inline __attribute__((always_inline)) void zone_page_state_add(long x, struct zone *zone, -+ enum zone_stat_item item) -+{ -+ atomic_long_add(x, &zone->vm_stat[item]); -+ atomic_long_add(x, &vm_stat[item]); -+} -+ -+static inline __attribute__((always_inline)) unsigned long global_page_state(enum zone_stat_item item) -+{ -+ long x = atomic_long_read(&vm_stat[item]); -+ -+ if (x < 0) -+ x = 0; -+ -+ return x; -+} -+ -+static inline __attribute__((always_inline)) unsigned long zone_page_state(struct zone *zone, -+ enum zone_stat_item item) -+{ -+ long x = atomic_long_read(&zone->vm_stat[item]); -+ -+ if (x < 0) -+ x = 0; -+ -+ return x; -+} -+# 204 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vmstat.h" -+static inline __attribute__((always_inline)) void zap_zone_vm_stats(struct zone *zone) -+{ -+ (__builtin_constant_p(0) ? (__builtin_constant_p((sizeof(zone->vm_stat))) ? __constant_c_and_count_memset(((zone->vm_stat)), ((0x01010101UL * (unsigned char)(0))), ((sizeof(zone->vm_stat)))) : __constant_c_memset(((zone->vm_stat)), ((0x01010101UL * (unsigned char)(0))), ((sizeof(zone->vm_stat))))) : (__builtin_constant_p((sizeof(zone->vm_stat))) ? __memset_generic((((zone->vm_stat))), (((0))), (((sizeof(zone->vm_stat))))) : __memset_generic(((zone->vm_stat)), ((0)), ((sizeof(zone->vm_stat)))))); -+} -+ -+extern void inc_zone_state(struct zone *, enum zone_stat_item); -+ -+ -+void __mod_zone_page_state(struct zone *, enum zone_stat_item item, int); -+void __inc_zone_page_state(struct page *, enum zone_stat_item); -+void __dec_zone_page_state(struct page *, enum zone_stat_item); -+ -+void mod_zone_page_state(struct zone *, enum zone_stat_item, int); -+void inc_zone_page_state(struct page *, enum zone_stat_item); -+void dec_zone_page_state(struct page *, enum zone_stat_item); -+ -+extern void inc_zone_state(struct zone *, enum zone_stat_item); -+extern void __inc_zone_state(struct zone *, enum zone_stat_item); -+extern void dec_zone_state(struct zone *, enum zone_stat_item); -+extern void __dec_zone_state(struct zone *, enum zone_stat_item); -+ -+void refresh_cpu_vm_stats(int); -+# 588 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" 2 -+ -+static inline __attribute__((always_inline)) __attribute__((always_inline)) void *lowmem_page_address(struct page *page) -+{ -+ return ((void *)((unsigned long)(((unsigned long)((page) - mem_map) + (0UL)) << 12)+((unsigned long)(0xC0000000UL)))); -+} -+# 608 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+void *page_address(struct page *page); -+void set_page_address(struct page *page, void *xxx_virtual); -+void page_address_init(void); -+# 630 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+extern struct address_space swapper_space; -+static inline __attribute__((always_inline)) struct address_space *page_mapping(struct page *page) -+{ -+ struct address_space *mapping = page->mapping; -+ -+ do { } while(0); -+ -+ if (__builtin_expect(!!(PageSwapCache(page)), 0)) -+ mapping = &swapper_space; -+ else -+ -+ if (__builtin_expect(!!((unsigned long)mapping & 1), 0)) -+ mapping = 0; -+ return mapping; -+} -+ -+static inline __attribute__((always_inline)) int PageAnon(struct page *page) -+{ -+ return ((unsigned long)page->mapping & 1) != 0; -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) unsigned long page_index(struct page *page) -+{ -+ if (__builtin_expect(!!(PageSwapCache(page)), 0)) -+ return ((page)->xxx_private); -+ return page->index; -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void reset_page_mapcount(struct page *page) -+{ -+ (((&(page)->_mapcount)->counter) = (-1)); -+} -+ -+static inline __attribute__((always_inline)) int page_mapcount(struct page *page) -+{ -+ return ((&(page)->_mapcount)->counter) + 1; -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int page_mapped(struct page *page) -+{ -+ return ((&(page)->_mapcount)->counter) >= 0; -+} -+# 705 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+extern void show_free_areas(void); -+ -+ -+int shmem_lock(struct file *file, int lock, struct user_struct *user); -+ -+ -+ -+ -+ -+ -+ -+struct file *shmem_file_setup(char *name, loff_t size, unsigned long flags); -+ -+int shmem_zero_setup(struct vm_area_struct *); -+# 728 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+extern int can_do_mlock(void); -+extern int user_shm_lock(size_t, struct user_struct *); -+extern void user_shm_unlock(size_t, struct user_struct *); -+ -+ -+ -+ -+struct zap_details { -+ struct vm_area_struct *nonlinear_vma; -+ struct address_space *check_mapping; -+ unsigned long first_index; -+ unsigned long last_index; -+ spinlock_t *i_mmap_lock; -+ unsigned long truncate_count; -+}; -+ -+struct page *vm_normal_page(struct vm_area_struct *vma, unsigned long addr, -+ pte_t pte); -+ -+int zap_vma_ptes(struct vm_area_struct *vma, unsigned long address, -+ unsigned long size); -+unsigned long zap_page_range(struct vm_area_struct *vma, unsigned long address, -+ unsigned long size, struct zap_details *); -+unsigned long unmap_vmas(struct mmu_gather **tlb, -+ struct vm_area_struct *start_vma, unsigned long start_addr, -+ unsigned long end_addr, unsigned long *nr_accounted, -+ struct zap_details *); -+# 766 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+struct mm_walk { -+ int (*pgd_entry)(pgd_t *, unsigned long, unsigned long, struct mm_walk *); -+ int (*pud_entry)(pud_t *, unsigned long, unsigned long, struct mm_walk *); -+ int (*pmd_entry)(pmd_t *, unsigned long, unsigned long, struct mm_walk *); -+ int (*pte_entry)(pte_t *, unsigned long, unsigned long, struct mm_walk *); -+ int (*pte_hole)(unsigned long, unsigned long, struct mm_walk *); -+ struct mm_struct *mm; -+ void *xxx_private; -+}; -+ -+int walk_page_range(unsigned long addr, unsigned long end, -+ struct mm_walk *walk); -+void free_pgd_range(struct mmu_gather *tlb, unsigned long addr, -+ unsigned long end, unsigned long floor, unsigned long ceiling); -+int copy_page_range(struct mm_struct *dst, struct mm_struct *src, -+ struct vm_area_struct *vma); -+void unmap_mapping_range(struct address_space *mapping, -+ loff_t const holebegin, loff_t const holelen, int even_cows); -+int generic_access_phys(struct vm_area_struct *vma, unsigned long addr, -+ void *buf, int len, int write); -+ -+static inline __attribute__((always_inline)) void unmap_shared_mapping_range(struct address_space *mapping, -+ loff_t const holebegin, loff_t const holelen) -+{ -+ unmap_mapping_range(mapping, holebegin, holelen, 0); -+} -+ -+extern int vmtruncate(struct inode * inode, loff_t offset); -+extern int vmtruncate_range(struct inode * inode, loff_t offset, loff_t end); -+ -+ -+extern int handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma, -+ unsigned long address, int write_access); -+# 810 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+extern int make_pages_present(unsigned long addr, unsigned long end); -+extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, int write); -+ -+int get_user_pages(struct task_struct *tsk, struct mm_struct *mm, unsigned long start, -+ int len, int write, int force, struct page **pages, struct vm_area_struct **vmas); -+ -+extern int try_to_release_page(struct page * page, gfp_t gfp_mask); -+extern void do_invalidatepage(struct page *page, unsigned long offset); -+ -+int __set_page_dirty_nobuffers(struct page *page); -+int __set_page_dirty_no_writeback(struct page *page); -+int redirty_page_for_writepage(struct writeback_control *wbc, -+ struct page *page); -+int set_page_dirty(struct page *page); -+int set_page_dirty_lock(struct page *page); -+int clear_page_dirty_for_io(struct page *page); -+ -+extern unsigned long move_page_tables(struct vm_area_struct *vma, -+ unsigned long old_addr, struct vm_area_struct *new_vma, -+ unsigned long new_addr, unsigned long len); -+extern unsigned long do_mremap(unsigned long addr, -+ unsigned long old_len, unsigned long new_len, -+ unsigned long flags, unsigned long new_addr); -+extern int mprotect_fixup(struct vm_area_struct *vma, -+ struct vm_area_struct **pprev, unsigned long start, -+ unsigned long end, unsigned long newflags); -+# 847 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+int get_user_pages_fast(unsigned long start, int nr_pages, int write, -+ struct page **pages); -+# 865 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+struct shrinker { -+ int (*shrink)(int nr_to_scan, gfp_t gfp_mask); -+ int seeks; -+ -+ -+ struct list_head list; -+ long nr; -+}; -+ -+extern void register_shrinker(struct shrinker *); -+extern void unregister_shrinker(struct shrinker *); -+ -+int vma_wants_writenotify(struct vm_area_struct *vma); -+ -+extern pte_t *get_locked_pte(struct mm_struct *mm, unsigned long addr, spinlock_t **ptl); -+ -+ -+static inline __attribute__((always_inline)) int __pud_alloc(struct mm_struct *mm, pgd_t *pgd, -+ unsigned long address) -+{ -+ return 0; -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int __pmd_alloc(struct mm_struct *mm, pud_t *pud, -+ unsigned long address) -+{ -+ return 0; -+} -+ -+ -+ -+ -+int __pte_alloc(struct mm_struct *mm, pmd_t *pmd, unsigned long address); -+int __pte_alloc_kernel(pmd_t *pmd, unsigned long address); -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address) -+{ -+ return (__builtin_expect(!!(pgd_none(*pgd)), 0) && __pud_alloc(mm, pgd, address))? -+ 0: pud_offset(pgd, address); -+} -+ -+static inline __attribute__((always_inline)) pmd_t *pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address) -+{ -+ return (__builtin_expect(!!(pud_none(*pud)), 0) && __pmd_alloc(mm, pud, address))? -+ 0: pmd_offset(pud, address); -+} -+# 944 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+static inline __attribute__((always_inline)) void pgtable_page_ctor(struct page *page) -+{ -+ do { do { *(&((page)->ptl)) = (spinlock_t) { ({raw_spinlock_t duh; duh.slock=0;duh;}), }; } while (0); } while (0); -+ inc_zone_page_state(page, NR_PAGETABLE); -+} -+ -+static inline __attribute__((always_inline)) void pgtable_page_dtor(struct page *page) -+{ -+ ((page)->mapping = 0); -+ dec_zone_page_state(page, NR_PAGETABLE); -+} -+# 982 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+extern void free_area_init(unsigned long * zones_size); -+extern void free_area_init_node(int nid, unsigned long * zones_size, -+ unsigned long zone_start_pfn, unsigned long *zholes_size); -+# 1013 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+extern void free_area_init_nodes(unsigned long *max_zone_pfn); -+extern void add_active_range(unsigned int nid, unsigned long start_pfn, -+ unsigned long end_pfn); -+extern void remove_active_range(unsigned int nid, unsigned long start_pfn, -+ unsigned long end_pfn); -+extern void push_node_boundaries(unsigned int nid, unsigned long start_pfn, -+ unsigned long end_pfn); -+extern void remove_all_active_ranges(void); -+extern unsigned long absent_pages_in_range(unsigned long start_pfn, -+ unsigned long end_pfn); -+extern void get_pfn_range_for_nid(unsigned int nid, -+ unsigned long *start_pfn, unsigned long *end_pfn); -+extern unsigned long find_min_pfn_with_active_regions(void); -+extern void free_bootmem_with_active_regions(int nid, -+ unsigned long max_low_pfn); -+typedef int (*work_fn_t)(unsigned long, unsigned long, void *); -+extern void work_with_active_regions(int nid, work_fn_t work_fn, void *data); -+extern void sparse_memory_present_with_active_regions(int nid); -+ -+extern int early_pfn_to_nid(unsigned long pfn); -+ -+ -+extern void set_dma_reserve(unsigned long new_dma_reserve); -+extern void memmap_init_zone(unsigned long, int, unsigned long, -+ unsigned long, enum memmap_context); -+extern void setup_per_zone_pages_min(void); -+extern void mem_init(void); -+extern void show_mem(void); -+extern void si_meminfo(struct sysinfo * val); -+extern void si_meminfo_node(struct sysinfo *val, int nid); -+extern int after_bootmem; -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void setup_per_cpu_pageset(void) {} -+ -+ -+ -+void vma_prio_tree_add(struct vm_area_struct *, struct vm_area_struct *old); -+void vma_prio_tree_insert(struct vm_area_struct *, struct prio_tree_root *); -+void vma_prio_tree_remove(struct vm_area_struct *, struct prio_tree_root *); -+struct vm_area_struct *vma_prio_tree_next(struct vm_area_struct *vma, -+ struct prio_tree_iter *iter); -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void vma_nonlinear_insert(struct vm_area_struct *vma, -+ struct list_head *list) -+{ -+ vma->shared.vm_set.parent = 0; -+ list_add_tail(&vma->shared.vm_set.list, list); -+} -+ -+ -+extern int __vm_enough_memory(struct mm_struct *mm, long pages, int cap_sys_admin); -+extern void vma_adjust(struct vm_area_struct *vma, unsigned long start, -+ unsigned long end, unsigned long pgoff, struct vm_area_struct *insert); -+extern struct vm_area_struct *vma_merge(struct mm_struct *, -+ struct vm_area_struct *prev, unsigned long addr, unsigned long end, -+ unsigned long vm_flags, struct anon_vma *, struct file *, unsigned long, -+ struct mempolicy *); -+extern struct anon_vma *find_mergeable_anon_vma(struct vm_area_struct *); -+extern int split_vma(struct mm_struct *, -+ struct vm_area_struct *, unsigned long addr, int new_below); -+extern int insert_vm_struct(struct mm_struct *, struct vm_area_struct *); -+extern void __vma_link_rb(struct mm_struct *, struct vm_area_struct *, -+ struct rb_node **, struct rb_node *); -+extern void unlink_file_vma(struct vm_area_struct *); -+extern struct vm_area_struct *copy_vma(struct vm_area_struct **, -+ unsigned long addr, unsigned long len, unsigned long pgoff); -+extern void exit_mmap(struct mm_struct *); -+ -+extern int mm_take_all_locks(struct mm_struct *mm); -+extern void mm_drop_all_locks(struct mm_struct *mm); -+ -+ -+ -+extern void added_exe_file_vma(struct mm_struct *mm); -+extern void removed_exe_file_vma(struct mm_struct *mm); -+# 1103 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+extern int may_expand_vm(struct mm_struct *mm, unsigned long npages); -+extern int install_special_mapping(struct mm_struct *mm, -+ unsigned long addr, unsigned long len, -+ unsigned long flags, struct page **pages); -+ -+extern unsigned long get_unmapped_area(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); -+ -+extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr, -+ unsigned long len, unsigned long prot, -+ unsigned long flag, unsigned long pgoff); -+extern unsigned long mmap_region(struct file *file, unsigned long addr, -+ unsigned long len, unsigned long flags, -+ unsigned int vm_flags, unsigned long pgoff, -+ int accountable); -+ -+static inline __attribute__((always_inline)) unsigned long do_mmap(struct file *file, unsigned long addr, -+ unsigned long len, unsigned long prot, -+ unsigned long flag, unsigned long offset) -+{ -+ unsigned long ret = -22; -+ if ((offset + (((len)+((typeof(len))(((1UL) << 12))-1))&~((typeof(len))(((1UL) << 12))-1))) < offset) -+ goto out; -+ if (!(offset & ~(~(((1UL) << 12)-1)))) -+ ret = do_mmap_pgoff(file, addr, len, prot, flag, offset >> 12); -+out: -+ return ret; -+} -+ -+extern int do_munmap(struct mm_struct *, unsigned long, size_t); -+ -+extern unsigned long do_brk(unsigned long, unsigned long); -+ -+ -+extern unsigned long page_unuse(struct page *); -+extern void truncate_inode_pages(struct address_space *, loff_t); -+extern void truncate_inode_pages_range(struct address_space *, -+ loff_t lstart, loff_t lend); -+ -+ -+extern int filemap_fault(struct vm_area_struct *, struct vm_fault *); -+ -+ -+int write_one_page(struct page *page, int wait); -+ -+ -+ -+ -+ -+int do_page_cache_readahead(struct address_space *mapping, struct file *filp, -+ unsigned long offset, unsigned long nr_to_read); -+int force_page_cache_readahead(struct address_space *mapping, struct file *filp, -+ unsigned long offset, unsigned long nr_to_read); -+ -+void page_cache_sync_readahead(struct address_space *mapping, -+ struct file_ra_state *ra, -+ struct file *filp, -+ unsigned long offset, -+ unsigned long size); -+ -+void page_cache_async_readahead(struct address_space *mapping, -+ struct file_ra_state *ra, -+ struct file *filp, -+ struct page *pg, -+ unsigned long offset, -+ unsigned long size); -+ -+unsigned long max_sane_readahead(unsigned long nr); -+ -+ -+extern int expand_stack(struct vm_area_struct *vma, unsigned long address); -+ -+ -+ -+extern int expand_stack_downwards(struct vm_area_struct *vma, -+ unsigned long address); -+ -+ -+extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long addr); -+extern struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigned long addr, -+ struct vm_area_struct **pprev); -+ -+ -+ -+static inline __attribute__((always_inline)) struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr) -+{ -+ struct vm_area_struct * vma = find_vma(mm,start_addr); -+ -+ if (vma && end_addr <= vma->vm_start) -+ vma = 0; -+ return vma; -+} -+ -+static inline __attribute__((always_inline)) unsigned long vma_pages(struct vm_area_struct *vma) -+{ -+ return (vma->vm_end - vma->vm_start) >> 12; -+} -+ -+pgprot_t vm_get_page_prot(unsigned long vm_flags); -+struct vm_area_struct *find_extend_vma(struct mm_struct *, unsigned long addr); -+int remap_pfn_range(struct vm_area_struct *, unsigned long addr, -+ unsigned long pfn, unsigned long size, pgprot_t); -+int vm_insert_page(struct vm_area_struct *, unsigned long addr, struct page *); -+int vm_insert_pfn(struct vm_area_struct *vma, unsigned long addr, -+ unsigned long pfn); -+int vm_insert_mixed(struct vm_area_struct *vma, unsigned long addr, -+ unsigned long pfn); -+ -+struct page *follow_page(struct vm_area_struct *, unsigned long address, -+ unsigned int foll_flags); -+ -+ -+ -+ -+ -+typedef int (*pte_fn_t)(pte_t *pte, pgtable_t token, unsigned long addr, -+ void *data); -+extern int apply_to_page_range(struct mm_struct *mm, unsigned long address, -+ unsigned long size, pte_fn_t fn, void *data); -+ -+ -+void vm_stat_account(struct mm_struct *, unsigned long, struct file *, long); -+# 1244 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" -+static inline __attribute__((always_inline)) void -+kernel_map_pages(struct page *page, int numpages, int enable) {} -+static inline __attribute__((always_inline)) void enable_debug_pagealloc(void) -+{ -+} -+ -+ -+ -+ -+ -+extern struct vm_area_struct *get_gate_vma(struct task_struct *tsk); -+ -+int in_gate_area_no_task(unsigned long addr); -+int in_gate_area(struct task_struct *task, unsigned long addr); -+ -+ -+ -+ -+ -+int drop_caches_sysctl_handler(struct ctl_table *, int, struct file *, -+ void *, size_t *, loff_t *); -+unsigned long shrink_slab(unsigned long scanned, gfp_t gfp_mask, -+ unsigned long lru_pages); -+ -+ -+ -+ -+extern int randomize_va_space; -+ -+ -+const char * arch_vma_name(struct vm_area_struct *vma); -+void print_vma_addr(char *prefix, unsigned long rip); -+ -+struct page *sparse_mem_map_populate(unsigned long pnum, int nid); -+pgd_t *vmemmap_pgd_populate(unsigned long addr, int node); -+pud_t *vmemmap_pud_populate(pgd_t *pgd, unsigned long addr, int node); -+pmd_t *vmemmap_pmd_populate(pud_t *pud, unsigned long addr, int node); -+pte_t *vmemmap_pte_populate(pmd_t *pmd, unsigned long addr, int node); -+void *vmemmap_alloc_block(unsigned long size, int node); -+void vmemmap_verify(pte_t *, int, unsigned long, unsigned long); -+int vmemmap_populate_basepages(struct page *start_page, -+ unsigned long pages, int node); -+int vmemmap_populate(struct page *start_page, unsigned long pages, int node); -+void vmemmap_populate_print_last(void); -+# 7 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io.h" 1 -+# 14 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io.h" -+extern void early_ioremap_init(void); -+extern void early_ioremap_clear(void); -+extern void early_ioremap_reset(void); -+extern void *early_ioremap(unsigned long offset, unsigned long size); -+extern void early_iounmap(void *addr, unsigned long size); -+extern void *fix_ioremap(unsigned idx, unsigned long phys); -+# 32 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io.h" -+static inline __attribute__((always_inline)) unsigned char readb(const volatile void *addr) { unsigned char ret; asm volatile("mov" "b" " %1,%0":"=q" (ret) :"m" (*(volatile unsigned char *)addr) :"memory"); return ret; } -+static inline __attribute__((always_inline)) unsigned short readw(const volatile void *addr) { unsigned short ret; asm volatile("mov" "w" " %1,%0":"=r" (ret) :"m" (*(volatile unsigned short *)addr) :"memory"); return ret; } -+static inline __attribute__((always_inline)) unsigned int readl(const volatile void *addr) { unsigned int ret; asm volatile("mov" "l" " %1,%0":"=r" (ret) :"m" (*(volatile unsigned int *)addr) :"memory"); return ret; } -+ -+static inline __attribute__((always_inline)) unsigned char __readb(const volatile void *addr) { unsigned char ret; asm volatile("mov" "b" " %1,%0":"=q" (ret) :"m" (*(volatile unsigned char *)addr) ); return ret; } -+static inline __attribute__((always_inline)) unsigned short __readw(const volatile void *addr) { unsigned short ret; asm volatile("mov" "w" " %1,%0":"=r" (ret) :"m" (*(volatile unsigned short *)addr) ); return ret; } -+static inline __attribute__((always_inline)) unsigned int __readl(const volatile void *addr) { unsigned int ret; asm volatile("mov" "l" " %1,%0":"=r" (ret) :"m" (*(volatile unsigned int *)addr) ); return ret; } -+ -+static inline __attribute__((always_inline)) void writeb(unsigned char val, volatile void *addr) { asm volatile("mov" "b" " %0,%1": :"q" (val), "m" (*(volatile unsigned char *)addr) :"memory"); } -+static inline __attribute__((always_inline)) void writew(unsigned short val, volatile void *addr) { asm volatile("mov" "w" " %0,%1": :"r" (val), "m" (*(volatile unsigned short *)addr) :"memory"); } -+static inline __attribute__((always_inline)) void writel(unsigned int val, volatile void *addr) { asm volatile("mov" "l" " %0,%1": :"r" (val), "m" (*(volatile unsigned int *)addr) :"memory"); } -+ -+static inline __attribute__((always_inline)) void __writeb(unsigned char val, volatile void *addr) { asm volatile("mov" "b" " %0,%1": :"q" (val), "m" (*(volatile unsigned char *)addr) ); } -+static inline __attribute__((always_inline)) void __writew(unsigned short val, volatile void *addr) { asm volatile("mov" "w" " %0,%1": :"r" (val), "m" (*(volatile unsigned short *)addr) ); } -+static inline __attribute__((always_inline)) void __writel(unsigned int val, volatile void *addr) { asm volatile("mov" "l" " %0,%1": :"r" (val), "m" (*(volatile unsigned int *)addr) ); } -+# 77 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_32.h" 1 -+# 47 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_32.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/iomap.h" 1 -+# 28 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/iomap.h" -+extern unsigned int ioread8(void *); -+extern unsigned int ioread16(void *); -+extern unsigned int ioread16be(void *); -+extern unsigned int ioread32(void *); -+extern unsigned int ioread32be(void *); -+ -+extern void iowrite8(u8, void *); -+extern void iowrite16(u16, void *); -+extern void iowrite16be(u16, void *); -+extern void iowrite32(u32, void *); -+extern void iowrite32be(u32, void *); -+# 51 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/iomap.h" -+extern void ioread8_rep(void *port, void *buf, unsigned long count); -+extern void ioread16_rep(void *port, void *buf, unsigned long count); -+extern void ioread32_rep(void *port, void *buf, unsigned long count); -+ -+extern void iowrite8_rep(void *port, const void *buf, unsigned long count); -+extern void iowrite16_rep(void *port, const void *buf, unsigned long count); -+extern void iowrite32_rep(void *port, const void *buf, unsigned long count); -+ -+ -+extern void *ioport_map(unsigned long port, unsigned int nr); -+extern void ioport_unmap(void *); -+ -+ -+ -+ -+ -+ -+struct pci_dev; -+extern void *pci_iomap(struct pci_dev *dev, int bar, unsigned long max); -+extern void pci_iounmap(struct pci_dev *dev, void *); -+# 48 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_32.h" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vmalloc.h" 1 -+ -+ -+ -+ -+ -+ -+struct vm_area_struct; -+# 25 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vmalloc.h" -+struct vm_struct { -+ -+ struct vm_struct *next; -+ void *addr; -+ unsigned long size; -+ unsigned long flags; -+ struct page **pages; -+ unsigned int nr_pages; -+ unsigned long phys_addr; -+ void *caller; -+}; -+ -+ -+ -+ -+extern void *vmalloc(unsigned long size); -+extern void *vmalloc_user(unsigned long size); -+extern void *vmalloc_node(unsigned long size, int node); -+extern void *vmalloc_exec(unsigned long size); -+extern void *vmalloc_32(unsigned long size); -+extern void *vmalloc_32_user(unsigned long size); -+extern void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot); -+extern void *__vmalloc_area(struct vm_struct *area, gfp_t gfp_mask, -+ pgprot_t prot); -+extern void vfree(const void *addr); -+ -+extern void *vmap(struct page **pages, unsigned int count, -+ unsigned long flags, pgprot_t prot); -+extern void vunmap(const void *addr); -+ -+extern int remap_vmalloc_range(struct vm_area_struct *vma, void *addr, -+ unsigned long pgoff); -+void vmalloc_sync_all(void); -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) size_t get_vm_area_size(const struct vm_struct *area) -+{ -+ -+ return area->size - ((1UL) << 12); -+} -+ -+extern struct vm_struct *get_vm_area(unsigned long size, unsigned long flags); -+extern struct vm_struct *get_vm_area_caller(unsigned long size, -+ unsigned long flags, void *caller); -+extern struct vm_struct *__get_vm_area(unsigned long size, unsigned long flags, -+ unsigned long start, unsigned long end); -+extern struct vm_struct *get_vm_area_node(unsigned long size, -+ unsigned long flags, int node, -+ gfp_t gfp_mask); -+extern struct vm_struct *remove_vm_area(const void *addr); -+ -+extern int map_vm_area(struct vm_struct *area, pgprot_t prot, -+ struct page ***pages); -+extern void unmap_kernel_range(unsigned long addr, unsigned long size); -+ -+ -+extern struct vm_struct *alloc_vm_area(size_t size); -+extern void free_vm_area(struct vm_struct *area); -+ -+ -+ -+ -+extern rwlock_t vmlist_lock; -+extern struct vm_struct *vmlist; -+ -+extern const struct seq_operations vmalloc_op; -+# 50 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_32.h" 2 -+# 69 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_32.h" -+static inline __attribute__((always_inline)) unsigned long virt_to_phys(volatile void *address) -+{ -+ return (((unsigned long)(address)) - ((unsigned long)(0xC0000000UL))); -+} -+# 87 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_32.h" -+static inline __attribute__((always_inline)) void *phys_to_virt(unsigned long address) -+{ -+ return ((void *)((unsigned long)(address)+((unsigned long)(0xC0000000UL)))); -+} -+# 111 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_32.h" -+extern void *ioremap_nocache(resource_size_t offset, unsigned long size); -+extern void *ioremap_cache(resource_size_t offset, unsigned long size); -+extern void *ioremap_prot(resource_size_t offset, unsigned long size, -+ unsigned long prot_val); -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void *ioremap(resource_size_t offset, unsigned long size) -+{ -+ return ioremap_nocache(offset, size); -+} -+ -+extern void iounmap(volatile void *addr); -+# 142 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_32.h" -+static inline __attribute__((always_inline)) void -+memset_io(volatile void *addr, unsigned char val, int count) -+{ -+ (__builtin_constant_p(val) ? (__builtin_constant_p((count)) ? __constant_c_and_count_memset((((void *)addr)), ((0x01010101UL * (unsigned char)(val))), ((count))) : __constant_c_memset((((void *)addr)), ((0x01010101UL * (unsigned char)(val))), ((count)))) : (__builtin_constant_p((count)) ? __memset_generic(((((void *)addr))), (((val))), (((count)))) : __memset_generic((((void *)addr)), ((val)), ((count))))); -+} -+ -+static inline __attribute__((always_inline)) void -+memcpy_fromio(void *dst, const volatile void *src, int count) -+{ -+ __memcpy(dst, (const void *)src, count); -+} -+ -+static inline __attribute__((always_inline)) void -+memcpy_toio(volatile void *dst, const void *src, int count) -+{ -+ __memcpy((void *)dst, src, count); -+} -+# 180 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_32.h" -+static inline __attribute__((always_inline)) void flush_write_buffers(void) -+{ -+ asm volatile("lock; addl $0,0(%%esp)": : :"memory"); -+} -+# 193 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_32.h" -+extern void native_io_delay(void); -+ -+extern int io_delay_type; -+extern void io_delay_init(void); -+# 280 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_32.h" -+static inline __attribute__((always_inline)) void outb_local(unsigned char value, int port) { asm volatile("out" "b" " %" "b" "0, %w1" : : "a"(value), "Nd"(port)); } static inline __attribute__((always_inline)) unsigned char inb_local(int port) { unsigned char value; asm volatile("in" "b" " %w1, %" "b" "0" : "=a"(value) : "Nd"(port)); return value; } static inline __attribute__((always_inline)) void outb_local_p(unsigned char value, int port) { outb_local(value, port); slow_down_io(); } static inline __attribute__((always_inline)) unsigned char inb_local_p(int port) { unsigned char value = inb_local(port); slow_down_io(); return value; } static inline __attribute__((always_inline)) void outb(unsigned char value, int port) { outb_local(value, port); } static inline __attribute__((always_inline)) unsigned char inb(int port) { return inb_local(port); } static inline __attribute__((always_inline)) void outb_p(unsigned char value, int port) { outb(value, port); slow_down_io(); } static inline __attribute__((always_inline)) unsigned char inb_p(int port) { unsigned char value = inb(port); slow_down_io(); return value; } static inline __attribute__((always_inline)) void outsb(int port, const void *addr, unsigned long count) { asm volatile("rep; outs" "b" : "+S"(addr), "+c"(count) : "d"(port)); } static inline __attribute__((always_inline)) void insb(int port, void *addr, unsigned long count) { asm volatile("rep; ins" "b" : "+D"(addr), "+c"(count) : "d"(port)); } -+static inline __attribute__((always_inline)) void outw_local(unsigned short value, int port) { asm volatile("out" "w" " %" "w" "0, %w1" : : "a"(value), "Nd"(port)); } static inline __attribute__((always_inline)) unsigned short inw_local(int port) { unsigned short value; asm volatile("in" "w" " %w1, %" "w" "0" : "=a"(value) : "Nd"(port)); return value; } static inline __attribute__((always_inline)) void outw_local_p(unsigned short value, int port) { outw_local(value, port); slow_down_io(); } static inline __attribute__((always_inline)) unsigned short inw_local_p(int port) { unsigned short value = inw_local(port); slow_down_io(); return value; } static inline __attribute__((always_inline)) void outw(unsigned short value, int port) { outw_local(value, port); } static inline __attribute__((always_inline)) unsigned short inw(int port) { return inw_local(port); } static inline __attribute__((always_inline)) void outw_p(unsigned short value, int port) { outw(value, port); slow_down_io(); } static inline __attribute__((always_inline)) unsigned short inw_p(int port) { unsigned short value = inw(port); slow_down_io(); return value; } static inline __attribute__((always_inline)) void outsw(int port, const void *addr, unsigned long count) { asm volatile("rep; outs" "w" : "+S"(addr), "+c"(count) : "d"(port)); } static inline __attribute__((always_inline)) void insw(int port, void *addr, unsigned long count) { asm volatile("rep; ins" "w" : "+D"(addr), "+c"(count) : "d"(port)); } -+static inline __attribute__((always_inline)) void outl_local(unsigned int value, int port) { asm volatile("out" "l" " %" "" "0, %w1" : : "a"(value), "Nd"(port)); } static inline __attribute__((always_inline)) unsigned int inl_local(int port) { unsigned int value; asm volatile("in" "l" " %w1, %" "" "0" : "=a"(value) : "Nd"(port)); return value; } static inline __attribute__((always_inline)) void outl_local_p(unsigned int value, int port) { outl_local(value, port); slow_down_io(); } static inline __attribute__((always_inline)) unsigned int inl_local_p(int port) { unsigned int value = inl_local(port); slow_down_io(); return value; } static inline __attribute__((always_inline)) void outl(unsigned int value, int port) { outl_local(value, port); } static inline __attribute__((always_inline)) unsigned int inl(int port) { return inl_local(port); } static inline __attribute__((always_inline)) void outl_p(unsigned int value, int port) { outl(value, port); slow_down_io(); } static inline __attribute__((always_inline)) unsigned int inl_p(int port) { unsigned int value = inl(port); slow_down_io(); return value; } static inline __attribute__((always_inline)) void outsl(int port, const void *addr, unsigned long count) { asm volatile("rep; outs" "l" : "+S"(addr), "+c"(count) : "d"(port)); } static inline __attribute__((always_inline)) void insl(int port, void *addr, unsigned long count) { asm volatile("rep; ins" "l" : "+D"(addr), "+c"(count) : "d"(port)); } -+# 78 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io.h" 2 -+ -+ -+ -+ -+extern void *xlate_dev_mem_ptr(unsigned long phys); -+extern void unxlate_dev_mem_ptr(unsigned long phys, void *addr); -+ -+extern int ioremap_change_attr(unsigned long vaddr, unsigned long size, -+ unsigned long prot_val); -+extern void *ioremap_wc(unsigned long offset, unsigned long size); -+ -+ -+ -+ -+ -+ -+extern void early_ioremap_init(void); -+extern void early_ioremap_clear(void); -+extern void early_ioremap_reset(void); -+extern void *early_ioremap(unsigned long offset, unsigned long size); -+extern void early_iounmap(void *addr, unsigned long size); -+extern void *fix_ioremap(unsigned idx, unsigned long phys); -+# 9 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h" 2 -+ -+struct sg_table { -+ struct scatterlist *sgl; -+ unsigned int nents; -+ unsigned int orig_nents; -+}; -+# 55 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h" -+static inline __attribute__((always_inline)) void sg_assign_page(struct scatterlist *sg, struct page *page) -+{ -+ unsigned long page_link = sg->page_link & 0x3; -+ -+ -+ -+ -+ -+ do { if (__builtin_expect(!!((unsigned long) page & 0x03), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h"), "i" (63), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ -+ -+ -+ -+ sg->page_link = page_link | (unsigned long) page; -+} -+# 85 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h" -+static inline __attribute__((always_inline)) void sg_set_page(struct scatterlist *sg, struct page *page, -+ unsigned int len, unsigned int offset) -+{ -+ sg_assign_page(sg, page); -+ sg->offset = offset; -+ sg->length = len; -+} -+ -+static inline __attribute__((always_inline)) struct page *sg_page(struct scatterlist *sg) -+{ -+ -+ -+ -+ -+ return (struct page *)((sg)->page_link & ~0x3); -+} -+# 109 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h" -+static inline __attribute__((always_inline)) void sg_set_buf(struct scatterlist *sg, const void *buf, -+ unsigned int buflen) -+{ -+ sg_set_page(sg, (mem_map + (((((unsigned long)(buf)) - ((unsigned long)(0xC0000000UL))) >> 12) - (0UL))), buflen, ((unsigned long)(buf) & ~(~(((1UL) << 12)-1)))); -+} -+# 131 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h" -+static inline __attribute__((always_inline)) void sg_chain(struct scatterlist *prv, unsigned int prv_nents, -+ struct scatterlist *sgl) -+{ -+ -+ -+ -+ -+ -+ -+ -+ prv[prv_nents - 1].offset = 0; -+ prv[prv_nents - 1].length = 0; -+ -+ -+ -+ -+ -+ prv[prv_nents - 1].page_link = ((unsigned long) sgl | 0x01) & ~0x02; -+} -+# 160 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h" -+static inline __attribute__((always_inline)) void sg_mark_end(struct scatterlist *sg) -+{ -+ -+ -+ -+ -+ -+ -+ sg->page_link |= 0x02; -+ sg->page_link &= ~0x01; -+} -+# 182 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h" -+static inline __attribute__((always_inline)) dma_addr_t sg_phys(struct scatterlist *sg) -+{ -+ return ((dma_addr_t)((unsigned long)((sg_page(sg)) - mem_map) + (0UL)) << 12) + sg->offset; -+} -+# 197 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h" -+static inline __attribute__((always_inline)) void *sg_virt(struct scatterlist *sg) -+{ -+ return (char *) page_address(sg_page(sg)) + sg->offset; -+} -+ -+struct scatterlist *sg_next(struct scatterlist *); -+struct scatterlist *sg_last(struct scatterlist *s, unsigned int); -+void sg_init_table(struct scatterlist *, unsigned int); -+void sg_init_one(struct scatterlist *, const void *, unsigned int); -+ -+typedef struct scatterlist *(sg_alloc_fn)(unsigned int, gfp_t); -+typedef void (sg_free_fn)(struct scatterlist *, unsigned int); -+ -+void __sg_free_table(struct sg_table *, unsigned int, sg_free_fn *); -+void sg_free_table(struct sg_table *); -+int __sg_alloc_table(struct sg_table *, unsigned int, unsigned int, gfp_t, -+ sg_alloc_fn *); -+int sg_alloc_table(struct sg_table *, unsigned int, gfp_t); -+ -+size_t sg_copy_from_buffer(struct scatterlist *sgl, unsigned int nents, -+ void *buf, size_t buflen); -+size_t sg_copy_to_buffer(struct scatterlist *sgl, unsigned int nents, -+ void *buf, size_t buflen); -+# 246 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h" -+struct sg_mapping_iter { -+ -+ struct page *page; -+ void *addr; -+ size_t length; -+ size_t consumed; -+ -+ -+ struct scatterlist *__sg; -+ unsigned int __nents; -+ unsigned int __offset; -+ unsigned int __flags; -+}; -+ -+void sg_miter_start(struct sg_mapping_iter *miter, struct scatterlist *sgl, -+ unsigned int nents, unsigned int flags); -+bool sg_miter_next(struct sg_mapping_iter *miter); -+void sg_miter_stop(struct sg_mapping_iter *miter); -+# 10 "/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h" 1 -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h" 2 -+ -+ -+ -+extern dma_addr_t swiotlb_map_single(struct device *hwdev, void *ptr, -+ size_t size, int dir); -+extern void *swiotlb_alloc_coherent(struct device *hwdev, size_t size, -+ dma_addr_t *dma_handle, gfp_t flags); -+extern void swiotlb_unmap_single(struct device *hwdev, dma_addr_t dev_addr, -+ size_t size, int dir); -+extern void swiotlb_sync_single_for_cpu(struct device *hwdev, -+ dma_addr_t dev_addr, -+ size_t size, int dir); -+extern void swiotlb_sync_single_for_device(struct device *hwdev, -+ dma_addr_t dev_addr, -+ size_t size, int dir); -+extern void swiotlb_sync_single_range_for_cpu(struct device *hwdev, -+ dma_addr_t dev_addr, -+ unsigned long offset, -+ size_t size, int dir); -+extern void swiotlb_sync_single_range_for_device(struct device *hwdev, -+ dma_addr_t dev_addr, -+ unsigned long offset, -+ size_t size, int dir); -+extern void swiotlb_sync_sg_for_cpu(struct device *hwdev, -+ struct scatterlist *sg, int nelems, -+ int dir); -+extern void swiotlb_sync_sg_for_device(struct device *hwdev, -+ struct scatterlist *sg, int nelems, -+ int dir); -+extern int swiotlb_map_sg(struct device *hwdev, struct scatterlist *sg, -+ int nents, int direction); -+extern void swiotlb_unmap_sg(struct device *hwdev, struct scatterlist *sg, -+ int nents, int direction); -+extern int swiotlb_dma_mapping_error(struct device *hwdev, dma_addr_t dma_addr); -+extern void swiotlb_free_coherent(struct device *hwdev, size_t size, -+ void *vaddr, dma_addr_t dma_handle); -+extern int swiotlb_dma_supported(struct device *hwdev, u64 mask); -+extern void swiotlb_init(void); -+ -+extern int swiotlb_force; -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void pci_swiotlb_init(void) -+{ -+} -+ -+ -+static inline __attribute__((always_inline)) void dma_mark_clean(void *addr, size_t size) {} -+# 12 "/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h" 2 -+ -+extern dma_addr_t bad_dma_address; -+extern int iommu_merge; -+extern struct device fallback_dev; -+extern int panic_on_overflow; -+extern int force_iommu; -+ -+struct dma_mapping_ops { -+ int (*mapping_error)(struct device *dev, -+ dma_addr_t dma_addr); -+ void* (*alloc_coherent)(struct device *dev, size_t size, -+ dma_addr_t *dma_handle, gfp_t gfp); -+ void (*free_coherent)(struct device *dev, size_t size, -+ void *vaddr, dma_addr_t dma_handle); -+ dma_addr_t (*map_single)(struct device *hwdev, phys_addr_t ptr, -+ size_t size, int direction); -+ -+ dma_addr_t (*map_simple)(struct device *hwdev, phys_addr_t ptr, -+ size_t size, int direction); -+ void (*unmap_single)(struct device *dev, dma_addr_t addr, -+ size_t size, int direction); -+ void (*sync_single_for_cpu)(struct device *hwdev, -+ dma_addr_t dma_handle, size_t size, -+ int direction); -+ void (*sync_single_for_device)(struct device *hwdev, -+ dma_addr_t dma_handle, size_t size, -+ int direction); -+ void (*sync_single_range_for_cpu)(struct device *hwdev, -+ dma_addr_t dma_handle, unsigned long offset, -+ size_t size, int direction); -+ void (*sync_single_range_for_device)(struct device *hwdev, -+ dma_addr_t dma_handle, unsigned long offset, -+ size_t size, int direction); -+ void (*sync_sg_for_cpu)(struct device *hwdev, -+ struct scatterlist *sg, int nelems, -+ int direction); -+ void (*sync_sg_for_device)(struct device *hwdev, -+ struct scatterlist *sg, int nelems, -+ int direction); -+ int (*map_sg)(struct device *hwdev, struct scatterlist *sg, -+ int nents, int direction); -+ void (*unmap_sg)(struct device *hwdev, -+ struct scatterlist *sg, int nents, -+ int direction); -+ int (*dma_supported)(struct device *hwdev, u64 mask); -+ int is_phys; -+}; -+ -+extern struct dma_mapping_ops *dma_ops; -+ -+static inline __attribute__((always_inline)) struct dma_mapping_ops *get_dma_ops(struct device *dev) -+{ -+ -+ return dma_ops; -+ -+ -+ -+ -+ -+ -+} -+ -+ -+static inline __attribute__((always_inline)) int dma_mapping_error(struct device *dev, dma_addr_t dma_addr) -+{ -+ -+ return 0; -+ -+ -+ -+ -+ -+ -+ -+} -+ -+ -+ -+ -+void *dma_alloc_coherent(struct device *dev, size_t size, -+ dma_addr_t *dma_handle, gfp_t flag); -+ -+void dma_free_coherent(struct device *dev, size_t size, -+ void *vaddr, dma_addr_t dma_handle); -+ -+ -+extern int dma_supported(struct device *hwdev, u64 mask); -+extern int dma_set_mask(struct device *dev, u64 mask); -+ -+static inline __attribute__((always_inline)) dma_addr_t -+dma_map_single(struct device *hwdev, void *ptr, size_t size, -+ int direction) -+{ -+ struct dma_mapping_ops *ops = get_dma_ops(hwdev); -+ -+ do { if (__builtin_expect(!!(!valid_dma_direction(direction)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h"), "i" (107), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ return ops->map_single(hwdev, virt_to_phys(ptr), size, direction); -+} -+ -+static inline __attribute__((always_inline)) void -+dma_unmap_single(struct device *dev, dma_addr_t addr, size_t size, -+ int direction) -+{ -+ struct dma_mapping_ops *ops = get_dma_ops(dev); -+ -+ do { if (__builtin_expect(!!(!valid_dma_direction(direction)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h"), "i" (117), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ if (ops->unmap_single) -+ ops->unmap_single(dev, addr, size, direction); -+} -+ -+static inline __attribute__((always_inline)) int -+dma_map_sg(struct device *hwdev, struct scatterlist *sg, -+ int nents, int direction) -+{ -+ struct dma_mapping_ops *ops = get_dma_ops(hwdev); -+ -+ do { if (__builtin_expect(!!(!valid_dma_direction(direction)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h"), "i" (128), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ return ops->map_sg(hwdev, sg, nents, direction); -+} -+ -+static inline __attribute__((always_inline)) void -+dma_unmap_sg(struct device *hwdev, struct scatterlist *sg, int nents, -+ int direction) -+{ -+ struct dma_mapping_ops *ops = get_dma_ops(hwdev); -+ -+ do { if (__builtin_expect(!!(!valid_dma_direction(direction)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h"), "i" (138), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ if (ops->unmap_sg) -+ ops->unmap_sg(hwdev, sg, nents, direction); -+} -+ -+static inline __attribute__((always_inline)) void -+dma_sync_single_for_cpu(struct device *hwdev, dma_addr_t dma_handle, -+ size_t size, int direction) -+{ -+ struct dma_mapping_ops *ops = get_dma_ops(hwdev); -+ -+ do { if (__builtin_expect(!!(!valid_dma_direction(direction)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h"), "i" (149), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ if (ops->sync_single_for_cpu) -+ ops->sync_single_for_cpu(hwdev, dma_handle, size, direction); -+ flush_write_buffers(); -+} -+ -+static inline __attribute__((always_inline)) void -+dma_sync_single_for_device(struct device *hwdev, dma_addr_t dma_handle, -+ size_t size, int direction) -+{ -+ struct dma_mapping_ops *ops = get_dma_ops(hwdev); -+ -+ do { if (__builtin_expect(!!(!valid_dma_direction(direction)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h"), "i" (161), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ if (ops->sync_single_for_device) -+ ops->sync_single_for_device(hwdev, dma_handle, size, direction); -+ flush_write_buffers(); -+} -+ -+static inline __attribute__((always_inline)) void -+dma_sync_single_range_for_cpu(struct device *hwdev, dma_addr_t dma_handle, -+ unsigned long offset, size_t size, int direction) -+{ -+ struct dma_mapping_ops *ops = get_dma_ops(hwdev); -+ -+ do { if (__builtin_expect(!!(!valid_dma_direction(direction)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h"), "i" (173), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ if (ops->sync_single_range_for_cpu) -+ ops->sync_single_range_for_cpu(hwdev, dma_handle, offset, -+ size, direction); -+ flush_write_buffers(); -+} -+ -+static inline __attribute__((always_inline)) void -+dma_sync_single_range_for_device(struct device *hwdev, dma_addr_t dma_handle, -+ unsigned long offset, size_t size, -+ int direction) -+{ -+ struct dma_mapping_ops *ops = get_dma_ops(hwdev); -+ -+ do { if (__builtin_expect(!!(!valid_dma_direction(direction)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h"), "i" (187), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ if (ops->sync_single_range_for_device) -+ ops->sync_single_range_for_device(hwdev, dma_handle, -+ offset, size, direction); -+ flush_write_buffers(); -+} -+ -+static inline __attribute__((always_inline)) void -+dma_sync_sg_for_cpu(struct device *hwdev, struct scatterlist *sg, -+ int nelems, int direction) -+{ -+ struct dma_mapping_ops *ops = get_dma_ops(hwdev); -+ -+ do { if (__builtin_expect(!!(!valid_dma_direction(direction)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h"), "i" (200), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ if (ops->sync_sg_for_cpu) -+ ops->sync_sg_for_cpu(hwdev, sg, nelems, direction); -+ flush_write_buffers(); -+} -+ -+static inline __attribute__((always_inline)) void -+dma_sync_sg_for_device(struct device *hwdev, struct scatterlist *sg, -+ int nelems, int direction) -+{ -+ struct dma_mapping_ops *ops = get_dma_ops(hwdev); -+ -+ do { if (__builtin_expect(!!(!valid_dma_direction(direction)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h"), "i" (212), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ if (ops->sync_sg_for_device) -+ ops->sync_sg_for_device(hwdev, sg, nelems, direction); -+ -+ flush_write_buffers(); -+} -+ -+static inline __attribute__((always_inline)) dma_addr_t dma_map_page(struct device *dev, struct page *page, -+ size_t offset, size_t size, -+ int direction) -+{ -+ struct dma_mapping_ops *ops = get_dma_ops(dev); -+ -+ do { if (__builtin_expect(!!(!valid_dma_direction(direction)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h"), "i" (225), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ return ops->map_single(dev, ((dma_addr_t)((unsigned long)((page) - mem_map) + (0UL)) << 12) + offset, -+ size, direction); -+} -+ -+static inline __attribute__((always_inline)) void dma_unmap_page(struct device *dev, dma_addr_t addr, -+ size_t size, int direction) -+{ -+ dma_unmap_single(dev, addr, size, direction); -+} -+ -+static inline __attribute__((always_inline)) void -+dma_cache_sync(struct device *dev, void *vaddr, size_t size, -+ enum dma_data_direction dir) -+{ -+ flush_write_buffers(); -+} -+ -+static inline __attribute__((always_inline)) int dma_get_cache_alignment(void) -+{ -+ -+ -+ return boot_cpu_data.x86_clflush_size; -+} -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/dma-coherent.h" 1 -+# 9 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/dma-coherent.h" -+int dma_alloc_from_coherent(struct device *dev, ssize_t size, -+ dma_addr_t *dma_handle, void **ret); -+int dma_release_from_coherent(struct device *dev, int order, void *vaddr); -+ -+ -+ -+ -+ -+extern int -+dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr, -+ dma_addr_t device_addr, size_t size, int flags); -+ -+extern void -+dma_release_declared_memory(struct device *dev); -+ -+extern void * -+dma_mark_declared_memory_occupied(struct device *dev, -+ dma_addr_t device_addr, size_t size); -+# 253 "/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h" 2 -+# 53 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h" 2 -+# 61 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h" -+extern u64 dma_get_required_mask(struct device *dev); -+ -+static inline __attribute__((always_inline)) unsigned int dma_get_max_seg_size(struct device *dev) -+{ -+ return dev->dma_parms ? dev->dma_parms->max_segment_size : 65536; -+} -+ -+static inline __attribute__((always_inline)) unsigned int dma_set_max_seg_size(struct device *dev, -+ unsigned int size) -+{ -+ if (dev->dma_parms) { -+ dev->dma_parms->max_segment_size = size; -+ return 0; -+ } else -+ return -5; -+} -+ -+static inline __attribute__((always_inline)) unsigned long dma_get_seg_boundary(struct device *dev) -+{ -+ return dev->dma_parms ? -+ dev->dma_parms->segment_boundary_mask : 0xffffffff; -+} -+ -+static inline __attribute__((always_inline)) int dma_set_seg_boundary(struct device *dev, unsigned long mask) -+{ -+ if (dev->dma_parms) { -+ dev->dma_parms->segment_boundary_mask = mask; -+ return 0; -+ } else -+ return -5; -+} -+# 123 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h" -+extern void *dmam_alloc_coherent(struct device *dev, size_t size, -+ dma_addr_t *dma_handle, gfp_t gfp); -+extern void dmam_free_coherent(struct device *dev, size_t size, void *vaddr, -+ dma_addr_t dma_handle); -+extern void *dmam_alloc_noncoherent(struct device *dev, size_t size, -+ dma_addr_t *dma_handle, gfp_t gfp); -+extern void dmam_free_noncoherent(struct device *dev, size_t size, void *vaddr, -+ dma_addr_t dma_handle); -+ -+extern int dmam_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr, -+ dma_addr_t device_addr, size_t size, -+ int flags); -+extern void dmam_release_declared_memory(struct device *dev); -+# 150 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h" -+struct dma_attrs; -+# 30 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h" 2 -+# 38 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h" -+enum dma_state { -+ DMA_RESOURCE_SUSPEND, -+ DMA_RESOURCE_RESUME, -+ DMA_RESOURCE_AVAILABLE, -+ DMA_RESOURCE_REMOVED, -+}; -+ -+ -+ -+ -+ -+ -+ -+enum dma_state_client { -+ DMA_ACK, -+ DMA_DUP, -+ DMA_NAK, -+}; -+ -+ -+ -+ -+ -+ -+typedef s32 dma_cookie_t; -+# 72 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h" -+enum dma_status { -+ DMA_SUCCESS, -+ DMA_IN_PROGRESS, -+ DMA_ERROR, -+}; -+ -+ -+ -+ -+enum dma_transaction_type { -+ DMA_MEMCPY, -+ DMA_XOR, -+ DMA_PQ_XOR, -+ DMA_DUAL_XOR, -+ DMA_PQ_UPDATE, -+ DMA_ZERO_SUM, -+ DMA_PQ_ZERO_SUM, -+ DMA_MEMSET, -+ DMA_MEMCPY_CRC32C, -+ DMA_INTERRUPT, -+ DMA_SLAVE, -+}; -+# 104 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h" -+enum dma_slave_width { -+ DMA_SLAVE_WIDTH_8BIT, -+ DMA_SLAVE_WIDTH_16BIT, -+ DMA_SLAVE_WIDTH_32BIT, -+}; -+# 121 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h" -+enum dma_ctrl_flags { -+ DMA_PREP_INTERRUPT = (1 << 0), -+ DMA_CTRL_ACK = (1 << 1), -+ DMA_COMPL_SKIP_SRC_UNMAP = (1 << 2), -+ DMA_COMPL_SKIP_DEST_UNMAP = (1 << 3), -+}; -+ -+ -+ -+ -+ -+typedef struct { unsigned long bits[((((DMA_SLAVE + 1)) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; } dma_cap_mask_t; -+# 152 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h" -+struct dma_slave { -+ struct device *dev; -+ struct device *dma_dev; -+ dma_addr_t tx_reg; -+ dma_addr_t rx_reg; -+ enum dma_slave_width reg_width; -+}; -+# 167 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h" -+struct dma_chan_percpu { -+ local_t refcount; -+ -+ unsigned long memcpy_count; -+ unsigned long bytes_transferred; -+}; -+# 187 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h" -+struct dma_chan { -+ struct dma_device *device; -+ dma_cookie_t cookie; -+ -+ -+ int chan_id; -+ struct device dev; -+ -+ struct kref refcount; -+ int slow_ref; -+ struct rcu_head rcu; -+ -+ struct list_head device_node; -+ struct dma_chan_percpu *local; -+ int client_count; -+}; -+ -+ -+ -+void dma_chan_cleanup(struct kref *kref); -+ -+static inline __attribute__((always_inline)) void dma_chan_get(struct dma_chan *chan) -+{ -+ if (__builtin_expect(!!(chan->slow_ref), 0)) -+ kref_get(&chan->refcount); -+ else { -+ local_inc(&(({ struct percpu_data *__p = (struct percpu_data *)~(unsigned long)((chan->local)); (__typeof__((chan->local)))__p->ptrs[((({ do { } while (0); (({ typeof(per_cpu__cpu_number) ret__; switch (sizeof(per_cpu__cpu_number)) { case 1: asm("mov" "b ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__cpu_number)); break; case 2: asm("mov" "w ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__cpu_number)); break; case 4: asm("mov" "l ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__cpu_number)); break; default: __bad_percpu_size(); } ret__; })); })))]; })->refcount)); -+ do { } while (0); -+ } -+} -+ -+static inline __attribute__((always_inline)) void dma_chan_put(struct dma_chan *chan) -+{ -+ if (__builtin_expect(!!(chan->slow_ref), 0)) -+ kref_put(&chan->refcount, dma_chan_cleanup); -+ else { -+ local_dec(&(({ struct percpu_data *__p = (struct percpu_data *)~(unsigned long)((chan->local)); (__typeof__((chan->local)))__p->ptrs[((({ do { } while (0); (({ typeof(per_cpu__cpu_number) ret__; switch (sizeof(per_cpu__cpu_number)) { case 1: asm("mov" "b ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__cpu_number)); break; case 2: asm("mov" "w ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__cpu_number)); break; case 4: asm("mov" "l ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__cpu_number)); break; default: __bad_percpu_size(); } ret__; })); })))]; })->refcount)); -+ do { } while (0); -+ } -+} -+# 241 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h" -+struct dma_client; -+typedef enum dma_state_client (*dma_event_callback) (struct dma_client *client, -+ struct dma_chan *chan, enum dma_state state); -+# 254 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h" -+struct dma_client { -+ dma_event_callback event_callback; -+ dma_cap_mask_t cap_mask; -+ struct dma_slave *slave; -+ struct list_head global_node; -+}; -+ -+typedef void (*dma_async_tx_callback)(void *dma_async_param); -+# 281 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h" -+struct dma_async_tx_descriptor { -+ dma_cookie_t cookie; -+ enum dma_ctrl_flags flags; -+ dma_addr_t phys; -+ struct list_head tx_list; -+ struct dma_chan *chan; -+ dma_cookie_t (*tx_submit)(struct dma_async_tx_descriptor *tx); -+ dma_async_tx_callback callback; -+ void *callback_param; -+ struct dma_async_tx_descriptor *next; -+ struct dma_async_tx_descriptor *parent; -+ spinlock_t lock; -+}; -+# 318 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h" -+struct dma_device { -+ -+ unsigned int chancnt; -+ struct list_head channels; -+ struct list_head global_node; -+ dma_cap_mask_t cap_mask; -+ int max_xor; -+ -+ struct kref refcount; -+ struct completion done; -+ -+ int dev_id; -+ struct device *dev; -+ -+ int (*device_alloc_chan_resources)(struct dma_chan *chan, -+ struct dma_client *client); -+ void (*device_free_chan_resources)(struct dma_chan *chan); -+ -+ struct dma_async_tx_descriptor *(*device_prep_dma_memcpy)( -+ struct dma_chan *chan, dma_addr_t dest, dma_addr_t src, -+ size_t len, unsigned long flags); -+ struct dma_async_tx_descriptor *(*device_prep_dma_xor)( -+ struct dma_chan *chan, dma_addr_t dest, dma_addr_t *src, -+ unsigned int src_cnt, size_t len, unsigned long flags); -+ struct dma_async_tx_descriptor *(*device_prep_dma_zero_sum)( -+ struct dma_chan *chan, dma_addr_t *src, unsigned int src_cnt, -+ size_t len, u32 *result, unsigned long flags); -+ struct dma_async_tx_descriptor *(*device_prep_dma_memset)( -+ struct dma_chan *chan, dma_addr_t dest, int value, size_t len, -+ unsigned long flags); -+ struct dma_async_tx_descriptor *(*device_prep_dma_interrupt)( -+ struct dma_chan *chan, unsigned long flags); -+ -+ struct dma_async_tx_descriptor *(*device_prep_slave_sg)( -+ struct dma_chan *chan, struct scatterlist *sgl, -+ unsigned int sg_len, enum dma_data_direction direction, -+ unsigned long flags); -+ void (*device_terminate_all)(struct dma_chan *chan); -+ -+ enum dma_status (*device_is_tx_complete)(struct dma_chan *chan, -+ dma_cookie_t cookie, dma_cookie_t *last, -+ dma_cookie_t *used); -+ void (*device_issue_pending)(struct dma_chan *chan); -+}; -+ -+ -+ -+void dma_async_client_register(struct dma_client *client); -+void dma_async_client_unregister(struct dma_client *client); -+void dma_async_client_chan_request(struct dma_client *client); -+dma_cookie_t dma_async_memcpy_buf_to_buf(struct dma_chan *chan, -+ void *dest, void *src, size_t len); -+dma_cookie_t dma_async_memcpy_buf_to_pg(struct dma_chan *chan, -+ struct page *page, unsigned int offset, void *kdata, size_t len); -+dma_cookie_t dma_async_memcpy_pg_to_pg(struct dma_chan *chan, -+ struct page *dest_pg, unsigned int dest_off, struct page *src_pg, -+ unsigned int src_off, size_t len); -+void dma_async_tx_descriptor_init(struct dma_async_tx_descriptor *tx, -+ struct dma_chan *chan); -+ -+static inline __attribute__((always_inline)) void async_tx_ack(struct dma_async_tx_descriptor *tx) -+{ -+ tx->flags = (enum dma_ctrl_flags) (tx->flags | DMA_CTRL_ACK); -+} -+ -+static inline __attribute__((always_inline)) bool async_tx_test_ack(struct dma_async_tx_descriptor *tx) -+{ -+ return (tx->flags & DMA_CTRL_ACK) == DMA_CTRL_ACK; -+} -+ -+ -+static inline __attribute__((always_inline)) int __first_dma_cap(const dma_cap_mask_t *srcp) -+{ -+ return ({ int __min1 = ((DMA_SLAVE + 1)); int __min2 = (find_first_bit(srcp->bits, (DMA_SLAVE + 1))); __min1 < __min2 ? __min1: __min2; }); -+ -+} -+ -+ -+static inline __attribute__((always_inline)) int __next_dma_cap(int n, const dma_cap_mask_t *srcp) -+{ -+ return ({ int __min1 = ((DMA_SLAVE + 1)); int __min2 = (find_next_bit(srcp->bits, (DMA_SLAVE + 1), n+1)); __min1 < __min2 ? __min1: __min2; }); -+ -+} -+ -+ -+static inline __attribute__((always_inline)) void -+__dma_cap_set(enum dma_transaction_type tx_type, dma_cap_mask_t *dstp) -+{ -+ set_bit(tx_type, dstp->bits); -+} -+ -+ -+static inline __attribute__((always_inline)) int -+__dma_has_cap(enum dma_transaction_type tx_type, dma_cap_mask_t *srcp) -+{ -+ return (__builtin_constant_p((tx_type)) ? constant_test_bit((tx_type), (srcp->bits)) : variable_test_bit((tx_type), (srcp->bits))); -+} -+# 428 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h" -+static inline __attribute__((always_inline)) void dma_async_issue_pending(struct dma_chan *chan) -+{ -+ chan->device->device_issue_pending(chan); -+} -+# 446 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h" -+static inline __attribute__((always_inline)) enum dma_status dma_async_is_tx_complete(struct dma_chan *chan, -+ dma_cookie_t cookie, dma_cookie_t *last, dma_cookie_t *used) -+{ -+ return chan->device->device_is_tx_complete(chan, cookie, last, used); -+} -+# 464 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h" -+static inline __attribute__((always_inline)) enum dma_status dma_async_is_complete(dma_cookie_t cookie, -+ dma_cookie_t last_complete, dma_cookie_t last_used) -+{ -+ if (last_complete <= last_used) { -+ if ((cookie <= last_complete) || (cookie > last_used)) -+ return DMA_SUCCESS; -+ } else { -+ if ((cookie <= last_complete) && (cookie > last_used)) -+ return DMA_SUCCESS; -+ } -+ return DMA_IN_PROGRESS; -+} -+ -+enum dma_status dma_sync_wait(struct dma_chan *chan, dma_cookie_t cookie); -+ -+ -+ -+int dma_async_device_register(struct dma_device *device); -+void dma_async_device_unregister(struct dma_device *device); -+ -+ -+ -+struct dma_page_list { -+ char *base_address; -+ int nr_pages; -+ struct page **pages; -+}; -+ -+struct dma_pinned_list { -+ int nr_iovecs; -+ struct dma_page_list page_list[0]; -+}; -+ -+struct dma_pinned_list *dma_pin_iovec_pages(struct iovec *iov, size_t len); -+void dma_unpin_iovec_pages(struct dma_pinned_list* pinned_list); -+ -+dma_cookie_t dma_memcpy_to_iovec(struct dma_chan *chan, struct iovec *iov, -+ struct dma_pinned_list *pinned_list, unsigned char *kdata, size_t len); -+dma_cookie_t dma_memcpy_pg_to_iovec(struct dma_chan *chan, struct iovec *iov, -+ struct dma_pinned_list *pinned_list, struct page *page, -+ unsigned int offset, size_t len); -+# 30 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h" 1 -+# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ktime.h" 1 -+# 25 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ktime.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/jiffies.h" 1 -+ -+ -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timex.h" 1 -+# 100 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timex.h" -+struct timex { -+ unsigned int modes; -+ long offset; -+ long freq; -+ long maxerror; -+ long esterror; -+ int status; -+ long constant; -+ long precision; -+ long tolerance; -+ -+ -+ struct timeval time; -+ long tick; -+ -+ long ppsfreq; -+ long jitter; -+ int shift; -+ long stabil; -+ long jitcnt; -+ long calcnt; -+ long errcnt; -+ long stbcnt; -+ -+ int tai; -+ -+ int :32; int :32; int :32; int :32; -+ int :32; int :32; int :32; int :32; -+ int :32; int :32; int :32; -+}; -+# 195 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timex.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/timex.h" 1 -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/tsc.h" 1 -+# 15 "/d/kernels/linux-2.6.27.10-clickport/include/asm/tsc.h" -+typedef unsigned long long cycles_t; -+ -+extern unsigned int cpu_khz; -+extern unsigned int tsc_khz; -+ -+extern void disable_TSC(void); -+ -+static inline __attribute__((always_inline)) cycles_t get_cycles(void) -+{ -+ unsigned long long ret = 0; -+ -+ -+ -+ -+ -+ (ret = paravirt_read_tsc()); -+ -+ return ret; -+} -+ -+static inline __attribute__((always_inline)) __attribute__((always_inline)) cycles_t vget_cycles(void) -+{ -+# 45 "/d/kernels/linux-2.6.27.10-clickport/include/asm/tsc.h" -+ return (cycles_t)__native_read_tsc(); -+} -+ -+extern void tsc_init(void); -+extern void mark_tsc_unstable(char *reason); -+extern int unsynchronized_tsc(void); -+int check_tsc_unstable(void); -+ -+ -+ -+ -+ -+extern void check_tsc_sync_source(int cpu); -+extern void check_tsc_sync_target(void); -+ -+extern int notsc_setup(char *); -+# 7 "/d/kernels/linux-2.6.27.10-clickport/include/asm/timex.h" 2 -+# 196 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timex.h" 2 -+ -+ -+ -+ -+ -+ -+extern unsigned long tick_usec; -+extern unsigned long tick_nsec; -+extern int tickadj; -+ -+ -+ -+ -+extern int time_status; -+extern long time_maxerror; -+extern long time_esterror; -+ -+extern long time_adjust; -+ -+extern void ntp_init(void); -+extern void ntp_clear(void); -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int ntp_synced(void) -+{ -+ return !(time_status & 0x0040); -+} -+# 244 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timex.h" -+extern u64 tick_length; -+ -+extern void second_overflow(void); -+extern void update_ntp_one_tick(void); -+extern int do_adjtimex(struct timex *); -+ -+ -+ -+ -+int read_current_timer(unsigned long *timer_val); -+# 9 "/d/kernels/linux-2.6.27.10-clickport/include/linux/jiffies.h" 2 -+# 81 "/d/kernels/linux-2.6.27.10-clickport/include/linux/jiffies.h" -+extern u64 __attribute__((section(".data"))) jiffies_64; -+extern unsigned long volatile __attribute__((section(".data"))) jiffies; -+ -+ -+u64 get_jiffies_64(void); -+# 173 "/d/kernels/linux-2.6.27.10-clickport/include/linux/jiffies.h" -+extern unsigned long preset_lpj; -+# 286 "/d/kernels/linux-2.6.27.10-clickport/include/linux/jiffies.h" -+extern unsigned int jiffies_to_msecs(const unsigned long j); -+extern unsigned int jiffies_to_usecs(const unsigned long j); -+extern unsigned long msecs_to_jiffies(const unsigned int m); -+extern unsigned long usecs_to_jiffies(const unsigned int u); -+extern unsigned long timespec_to_jiffies(const struct timespec *value); -+extern void jiffies_to_timespec(const unsigned long jiffies, -+ struct timespec *value); -+extern unsigned long timeval_to_jiffies(const struct timeval *value); -+extern void jiffies_to_timeval(const unsigned long jiffies, -+ struct timeval *value); -+extern clock_t jiffies_to_clock_t(long x); -+extern unsigned long clock_t_to_jiffies(unsigned long x); -+extern u64 jiffies_64_to_clock_t(u64 x); -+extern u64 nsec_to_clock_t(u64 x); -+# 26 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ktime.h" 2 -+# 46 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ktime.h" -+union ktime { -+ s64 tv64; -+# 57 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ktime.h" -+}; -+ -+typedef union ktime ktime_t; -+# 87 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ktime.h" -+static inline __attribute__((always_inline)) ktime_t ktime_set(const long secs, const unsigned long nsecs) -+{ -+ -+ -+ -+ -+ return ({ ktime_t __kt; __kt.tv64 = ((s64)secs * 1000000000L + (s64)nsecs); __kt; }); -+} -+# 124 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ktime.h" -+static inline __attribute__((always_inline)) ktime_t timespec_to_ktime(struct timespec ts) -+{ -+ return ktime_set(ts.tv_sec, ts.tv_nsec); -+} -+ -+ -+static inline __attribute__((always_inline)) ktime_t timeval_to_ktime(struct timeval tv) -+{ -+ return ktime_set(tv.tv_sec, tv.tv_usec * 1000L); -+} -+# 306 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ktime.h" -+static inline __attribute__((always_inline)) int ktime_equal(const ktime_t cmp1, const ktime_t cmp2) -+{ -+ return cmp1.tv64 == cmp2.tv64; -+} -+ -+static inline __attribute__((always_inline)) s64 ktime_to_us(const ktime_t kt) -+{ -+ struct timeval tv = ns_to_timeval((kt).tv64); -+ return (s64) tv.tv_sec * 1000000L + tv.tv_usec; -+} -+ -+static inline __attribute__((always_inline)) s64 ktime_us_delta(const ktime_t later, const ktime_t earlier) -+{ -+ return ktime_to_us(({ ktime_t __kt; __kt.tv64 = ((later).tv64 - (earlier).tv64); __kt; })); -+} -+ -+static inline __attribute__((always_inline)) ktime_t ktime_add_us(const ktime_t kt, const u64 usec) -+{ -+ return ({ ktime_t __kt; __kt.tv64 = ((kt).tv64 + (usec * 1000)); __kt; }); -+} -+ -+static inline __attribute__((always_inline)) ktime_t ktime_sub_us(const ktime_t kt, const u64 usec) -+{ -+ return ({ktime_t duh; duh.tv64 = (kt).tv64 - (usec * 1000); duh; }); -+} -+ -+extern ktime_t ktime_add_safe(const ktime_t lhs, const ktime_t rhs); -+# 344 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ktime.h" -+extern void ktime_get_ts(struct timespec *ts); -+ -+ -+ -+ -+static inline __attribute__((always_inline)) ktime_t ns_to_ktime(u64 ns) -+{ -+ static ktime_t ktime_zero; -+ ktime_zero = ({ktime_t duh; duh.tv64 = 0;duh;}); -+ return ({ ktime_t __kt; __kt.tv64 = ((ktime_zero).tv64 + (ns)); __kt; }); -+} -+# 20 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h" 2 -+ -+ -+ -+ -+struct hrtimer_clock_base; -+struct hrtimer_cpu_base; -+ -+ -+ -+ -+enum hrtimer_mode { -+ HRTIMER_MODE_ABS, -+ HRTIMER_MODE_REL, -+}; -+ -+ -+ -+ -+enum hrtimer_restart { -+ HRTIMER_NORESTART, -+ HRTIMER_RESTART, -+}; -+# 60 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h" -+enum hrtimer_cb_mode { -+ HRTIMER_CB_SOFTIRQ, -+ HRTIMER_CB_IRQSAFE, -+ HRTIMER_CB_IRQSAFE_NO_RESTART, -+ HRTIMER_CB_IRQSAFE_PERCPU, -+ HRTIMER_CB_IRQSAFE_UNLOCKED, -+}; -+# 122 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h" -+struct hrtimer { -+ struct rb_node node; -+ ktime_t expires; -+ enum hrtimer_restart (*function)(struct hrtimer *); -+ struct hrtimer_clock_base *base; -+ unsigned long state; -+ enum hrtimer_cb_mode cb_mode; -+ struct list_head cb_entry; -+ -+ void *start_site; -+ char start_comm[16]; -+ int start_pid; -+ -+}; -+# 144 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h" -+struct hrtimer_sleeper { -+ struct hrtimer timer; -+ struct task_struct *task; -+}; -+# 163 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h" -+struct hrtimer_clock_base { -+ struct hrtimer_cpu_base *cpu_base; -+ clockid_t index; -+ struct rb_root active; -+ struct rb_node *first; -+ ktime_t resolution; -+ ktime_t (*get_time)(void); -+ ktime_t (*get_softirq_time)(void); -+ ktime_t softirq_time; -+ -+ ktime_t offset; -+ int (*reprogram)(struct hrtimer *t, -+ struct hrtimer_clock_base *b, -+ ktime_t n); -+ -+}; -+# 199 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h" -+struct hrtimer_cpu_base { -+ spinlock_t lock; -+ struct hrtimer_clock_base clock_base[2]; -+ struct list_head cb_pending; -+ -+ ktime_t expires_next; -+ int hres_active; -+ unsigned long nr_events; -+ -+}; -+ -+ -+struct clock_event_device; -+ -+extern void clock_was_set(void); -+extern void hres_timers_resume(void); -+extern void hrtimer_interrupt(struct clock_event_device *dev); -+ -+ -+ -+ -+static inline __attribute__((always_inline)) ktime_t hrtimer_cb_get_time(struct hrtimer *timer) -+{ -+ return timer->base->get_time(); -+} -+ -+static inline __attribute__((always_inline)) int hrtimer_is_hres_active(struct hrtimer *timer) -+{ -+ return timer->base->cpu_base->hres_active; -+} -+# 270 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h" -+extern ktime_t ktime_get(void); -+extern ktime_t ktime_get_real(void); -+ -+ -+ -+ -+extern void hrtimer_init(struct hrtimer *timer, clockid_t which_clock, -+ enum hrtimer_mode mode); -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void hrtimer_init_on_stack(struct hrtimer *timer, -+ clockid_t which_clock, -+ enum hrtimer_mode mode) -+{ -+ hrtimer_init(timer, which_clock, mode); -+} -+static inline __attribute__((always_inline)) void destroy_hrtimer_on_stack(struct hrtimer *timer) { } -+ -+ -+ -+extern int hrtimer_start(struct hrtimer *timer, ktime_t tim, -+ const enum hrtimer_mode mode); -+extern int hrtimer_cancel(struct hrtimer *timer); -+extern int hrtimer_try_to_cancel(struct hrtimer *timer); -+ -+static inline __attribute__((always_inline)) int hrtimer_restart(struct hrtimer *timer) -+{ -+ return hrtimer_start(timer, timer->expires, HRTIMER_MODE_ABS); -+} -+ -+ -+extern ktime_t hrtimer_get_remaining(const struct hrtimer *timer); -+extern int hrtimer_get_res(const clockid_t which_clock, struct timespec *tp); -+ -+extern ktime_t hrtimer_get_next_event(void); -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int hrtimer_active(const struct hrtimer *timer) -+{ -+ return timer->state != 0x00; -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int hrtimer_is_queued(struct hrtimer *timer) -+{ -+ return timer->state & -+ (0x01 | 0x04); -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int hrtimer_callback_running(struct hrtimer *timer) -+{ -+ return timer->state & 0x02; -+} -+ -+ -+extern u64 -+hrtimer_forward(struct hrtimer *timer, ktime_t now, ktime_t interval); -+ -+ -+static inline __attribute__((always_inline)) u64 hrtimer_forward_now(struct hrtimer *timer, -+ ktime_t interval) -+{ -+ return hrtimer_forward(timer, timer->base->get_time(), interval); -+} -+ -+ -+extern long hrtimer_nanosleep(struct timespec *rqtp, -+ struct timespec *rmtp, -+ const enum hrtimer_mode mode, -+ const clockid_t clockid); -+extern long hrtimer_nanosleep_restart(struct restart_block *restart_block); -+ -+extern void hrtimer_init_sleeper(struct hrtimer_sleeper *sl, -+ struct task_struct *tsk); -+ -+ -+extern void hrtimer_run_queues(void); -+extern void hrtimer_run_pending(void); -+ -+ -+extern void __attribute__ ((__section__(".init.text"))) hrtimers_init(void); -+ -+ -+extern u64 ktime_divns(const ktime_t kt, s64 div); -+ -+ -+ -+ -+ -+extern void sysrq_timer_list_show(void); -+ -+ -+ -+ -+ -+ -+extern void timer_stats_update_stats(void *timer, pid_t pid, void *startf, -+ void *timerf, char *comm, -+ unsigned int timer_flag); -+ -+static inline __attribute__((always_inline)) void timer_stats_account_hrtimer(struct hrtimer *timer) -+{ -+ timer_stats_update_stats(timer, timer->start_pid, timer->start_site, -+ (void *) timer->function, timer->start_comm, 0); -+} -+ -+extern void __timer_stats_hrtimer_set_start_info(struct hrtimer *timer, -+ void *addr); -+ -+static inline __attribute__((always_inline)) void timer_stats_hrtimer_set_start_info(struct hrtimer *timer) -+{ -+ __timer_stats_hrtimer_set_start_info(timer, __builtin_return_address(0)); -+} -+ -+static inline __attribute__((always_inline)) void timer_stats_hrtimer_clear_start_info(struct hrtimer *timer) -+{ -+ timer->start_site = 0; -+} -+# 31 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" 2 -+# 96 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+struct net_device; -+struct scatterlist; -+struct pipe_inode_info; -+ -+ -+struct nf_conntrack { -+ atomic_t use; -+}; -+ -+ -+ -+struct nf_bridge_info { -+ atomic_t use; -+ struct net_device *physindev; -+ struct net_device *physoutdev; -+ unsigned int mask; -+ unsigned long data[32 / sizeof(unsigned long)]; -+}; -+ -+ -+struct sk_buff_head { -+ -+ struct sk_buff *next; -+ struct sk_buff *prev; -+ -+ __u32 qlen; -+ spinlock_t lock; -+}; -+ -+struct sk_buff; -+ -+ -+ -+ -+typedef struct skb_frag_struct skb_frag_t; -+ -+struct skb_frag_struct { -+ struct page *page; -+ __u32 page_offset; -+ __u32 size; -+}; -+ -+ -+ -+ -+struct skb_shared_info { -+ atomic_t dataref; -+ unsigned short nr_frags; -+ unsigned short gso_size; -+ -+ unsigned short gso_segs; -+ unsigned short gso_type; -+ __be32 ip6_frag_id; -+ struct sk_buff *frag_list; -+ skb_frag_t frags[(65536/((1UL) << 12) + 2)]; -+}; -+# 168 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+enum { -+ SKB_FCLONE_UNAVAILABLE, -+ SKB_FCLONE_ORIG, -+ SKB_FCLONE_CLONE, -+}; -+ -+enum { -+ SKB_GSO_TCPV4 = 1 << 0, -+ SKB_GSO_UDP = 1 << 1, -+ -+ -+ SKB_GSO_DODGY = 1 << 2, -+ -+ -+ SKB_GSO_TCP_ECN = 1 << 3, -+ -+ SKB_GSO_TCPV6 = 1 << 4, -+}; -+# 194 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+typedef unsigned char *sk_buff_data_t; -+# 259 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+struct sk_buff { -+ -+ struct sk_buff *next; -+ struct sk_buff *prev; -+ -+ struct sock *sk; -+ ktime_t tstamp; -+ struct net_device *dev; -+ -+ union { -+ struct dst_entry *dst; -+ struct rtable *rtable; -+ }; -+ struct sec_path *sp; -+ -+ -+ -+ -+ -+ -+ -+ char cb[48]; -+ -+ unsigned int len, -+ data_len; -+ __u16 mac_len, -+ hdr_len; -+ union { -+ __wsum csum; -+ struct { -+ __u16 csum_start; -+ __u16 csum_offset; -+ }; -+ }; -+ __u32 priority; -+ __u8 local_df:1, -+ cloned:1, -+ ip_summed:2, -+ nohdr:1, -+ nfctinfo:3; -+ __u8 pkt_type:3, -+ fclone:2, -+ ipvs_property:1, -+ peeked:1, -+ nf_trace:1; -+ __be16 protocol; -+ -+ void (*destructor)(struct sk_buff *skb); -+ -+ struct nf_conntrack *nfct; -+ struct sk_buff *nfct_reasm; -+ -+ -+ struct nf_bridge_info *nf_bridge; -+ -+ -+ int iif; -+ __u16 queue_mapping; -+ -+ __u16 tc_index; -+ -+ __u16 tc_verd; -+ -+ -+ -+ __u8 ndisc_nodetype:2; -+ -+ -+ __u8 do_not_encrypt:1; -+ -+ -+ -+ -+ -+ -+ -+ __u32 secmark; -+ -+ -+ __u32 mark; -+ -+ __u16 vlan_tci; -+ -+ sk_buff_data_t transport_header; -+ sk_buff_data_t network_header; -+ sk_buff_data_t mac_header; -+ -+ sk_buff_data_t tail; -+ sk_buff_data_t end; -+ unsigned char *head, -+ *data; -+ unsigned int truesize; -+ atomic_t users; -+}; -+# 362 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+extern void kfree_skb(struct sk_buff *skb); -+extern void __kfree_skb(struct sk_buff *skb); -+extern struct sk_buff *__alloc_skb(unsigned int size, -+ gfp_t priority, int fclone, int node); -+static inline __attribute__((always_inline)) struct sk_buff *alloc_skb(unsigned int size, -+ gfp_t priority) -+{ -+ return __alloc_skb(size, priority, 0, -1); -+} -+ -+static inline __attribute__((always_inline)) struct sk_buff *alloc_skb_fclone(unsigned int size, -+ gfp_t priority) -+{ -+ return __alloc_skb(size, priority, 1, -1); -+} -+ -+extern struct sk_buff *skb_morph(struct sk_buff *dst, struct sk_buff *src); -+extern struct sk_buff *skb_clone(struct sk_buff *skb, -+ gfp_t priority); -+extern struct sk_buff *skb_copy(const struct sk_buff *skb, -+ gfp_t priority); -+extern struct sk_buff *pskb_copy(struct sk_buff *skb, -+ gfp_t gfp_mask); -+extern struct sk_buff *skb_recycle(struct sk_buff *skb); -+extern int pskb_expand_head(struct sk_buff *skb, -+ int nhead, int ntail, -+ gfp_t gfp_mask); -+extern struct sk_buff *skb_realloc_headroom(struct sk_buff *skb, -+ unsigned int headroom); -+extern struct sk_buff *skb_copy_expand(const struct sk_buff *skb, -+ int newheadroom, int newtailroom, -+ gfp_t priority); -+extern int skb_to_sgvec(struct sk_buff *skb, -+ struct scatterlist *sg, int offset, -+ int len); -+extern int skb_cow_data(struct sk_buff *skb, int tailbits, -+ struct sk_buff **trailer); -+extern int skb_pad(struct sk_buff *skb, int pad); -+ -+extern void skb_over_panic(struct sk_buff *skb, int len, -+ void *here); -+extern void skb_under_panic(struct sk_buff *skb, int len, -+ void *here); -+extern void skb_truesize_bug(struct sk_buff *skb); -+ -+static inline __attribute__((always_inline)) void skb_truesize_check(struct sk_buff *skb) -+{ -+ int len = sizeof(struct sk_buff) + skb->len; -+ -+ if (__builtin_expect(!!((int)skb->truesize < len), 0)) -+ skb_truesize_bug(skb); -+} -+ -+extern int skb_append_datato_frags(struct sock *sk, struct sk_buff *skb, -+ int getfrag(void *from, char *to, int offset, -+ int len,int odd, struct sk_buff *skb), -+ void *from, int length); -+ -+struct skb_seq_state -+{ -+ __u32 lower_offset; -+ __u32 upper_offset; -+ __u32 frag_idx; -+ __u32 stepped_offset; -+ struct sk_buff *root_skb; -+ struct sk_buff *cur_skb; -+ __u8 *frag_data; -+}; -+ -+extern void skb_prepare_seq_read(struct sk_buff *skb, -+ unsigned int from, unsigned int to, -+ struct skb_seq_state *st); -+extern unsigned int skb_seq_read(unsigned int consumed, const u8 **data, -+ struct skb_seq_state *st); -+extern void skb_abort_seq_read(struct skb_seq_state *st); -+ -+extern unsigned int skb_find_text(struct sk_buff *skb, unsigned int from, -+ unsigned int to, struct ts_config *config, -+ struct ts_state *state); -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) unsigned char *skb_end_pointer(const struct sk_buff *skb) -+{ -+ return skb->end; -+} -+# 463 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) int skb_queue_empty(const struct sk_buff_head *list) -+{ -+ return list->next == (struct sk_buff *)list; -+} -+# 475 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) struct sk_buff *skb_get(struct sk_buff *skb) -+{ -+ atomic_inc(&skb->users); -+ return skb; -+} -+# 494 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) int skb_cloned(const struct sk_buff *skb) -+{ -+ return skb->cloned && -+ (((&((struct skb_shared_info *)(skb_end_pointer(skb)))->dataref)->counter) & ((1 << 16) - 1)) != 1; -+} -+# 507 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) int skb_header_cloned(const struct sk_buff *skb) -+{ -+ int dataref; -+ -+ if (!skb->cloned) -+ return 0; -+ -+ dataref = ((&((struct skb_shared_info *)(skb_end_pointer(skb)))->dataref)->counter); -+ dataref = (dataref & ((1 << 16) - 1)) - (dataref >> 16); -+ return dataref != 1; -+} -+# 527 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) void skb_header_release(struct sk_buff *skb) -+{ -+ do { if (__builtin_expect(!!(skb->nohdr), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"), "i" (529), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ skb->nohdr = 1; -+ atomic_add(1 << 16, &((struct skb_shared_info *)(skb_end_pointer(skb)))->dataref); -+} -+# 541 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) int skb_shared(const struct sk_buff *skb) -+{ -+ return ((&skb->users)->counter) != 1; -+} -+# 559 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) struct sk_buff *skb_share_check(struct sk_buff *skb, -+ gfp_t pri) -+{ -+ do { if (pri & (( gfp_t)0x10u)) do { __might_sleep("/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h", 562); do { } while (0); } while (0); } while (0); -+ if (skb_shared(skb)) { -+ struct sk_buff *nskb = skb_clone(skb, pri); -+ kfree_skb(skb); -+ skb = nskb; -+ } -+ return skb; -+} -+# 591 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) struct sk_buff *skb_unshare(struct sk_buff *skb, -+ gfp_t pri) -+{ -+ do { if (pri & (( gfp_t)0x10u)) do { __might_sleep("/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h", 594); do { } while (0); } while (0); } while (0); -+ if (skb_cloned(skb)) { -+ struct sk_buff *nskb = skb_copy(skb, pri); -+ kfree_skb(skb); -+ skb = nskb; -+ } -+ return skb; -+} -+# 616 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) struct sk_buff *skb_peek(struct sk_buff_head *list_) -+{ -+ struct sk_buff *list = ((struct sk_buff *)list_)->next; -+ if (list == (struct sk_buff *)list_) -+ list = 0; -+ return list; -+} -+# 637 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) struct sk_buff *skb_peek_tail(struct sk_buff_head *list_) -+{ -+ struct sk_buff *list = ((struct sk_buff *)list_)->prev; -+ if (list == (struct sk_buff *)list_) -+ list = 0; -+ return list; -+} -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) __u32 skb_queue_len(const struct sk_buff_head *list_) -+{ -+ return list_->qlen; -+} -+# 664 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) void skb_queue_head_init(struct sk_buff_head *list) -+{ -+ do { *(&list->lock) = (spinlock_t) { ({raw_spinlock_t duh; duh.slock=0;duh;}), }; } while (0); -+ list->prev = list->next = (struct sk_buff *)list; -+ list->qlen = 0; -+} -+ -+static inline __attribute__((always_inline)) void skb_queue_head_init_class(struct sk_buff_head *list, -+ struct lock_class_key *xxx_class) -+{ -+ skb_queue_head_init(list); -+ do { (void)(xxx_class); } while (0); -+} -+ -+ -+ -+ -+ -+ -+ -+extern void skb_insert(struct sk_buff *old, struct sk_buff *newsk, struct sk_buff_head *list); -+static inline __attribute__((always_inline)) void __skb_insert(struct sk_buff *newsk, -+ struct sk_buff *prev, struct sk_buff *next, -+ struct sk_buff_head *list) -+{ -+ newsk->next = next; -+ newsk->prev = prev; -+ next->prev = prev->next = newsk; -+ list->qlen++; -+} -+# 706 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) void __skb_queue_after(struct sk_buff_head *list, -+ struct sk_buff *prev, -+ struct sk_buff *newsk) -+{ -+ __skb_insert(newsk, prev, prev->next, list); -+} -+ -+extern void skb_append(struct sk_buff *old, struct sk_buff *newsk, -+ struct sk_buff_head *list); -+ -+static inline __attribute__((always_inline)) void __skb_queue_before(struct sk_buff_head *list, -+ struct sk_buff *next, -+ struct sk_buff *newsk) -+{ -+ __skb_insert(newsk, next->prev, next, list); -+} -+# 733 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+extern void skb_queue_head(struct sk_buff_head *list, struct sk_buff *newsk); -+static inline __attribute__((always_inline)) void __skb_queue_head(struct sk_buff_head *list, -+ struct sk_buff *newsk) -+{ -+ __skb_queue_after(list, (struct sk_buff *)list, newsk); -+} -+# 750 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+extern void skb_queue_tail(struct sk_buff_head *list, struct sk_buff *newsk); -+static inline __attribute__((always_inline)) void __skb_queue_tail(struct sk_buff_head *list, -+ struct sk_buff *newsk) -+{ -+ __skb_queue_before(list, (struct sk_buff *)list, newsk); -+} -+ -+ -+ -+ -+ -+extern void skb_unlink(struct sk_buff *skb, struct sk_buff_head *list); -+static inline __attribute__((always_inline)) void __skb_unlink(struct sk_buff *skb, struct sk_buff_head *list) -+{ -+ struct sk_buff *next, *prev; -+ -+ list->qlen--; -+ next = skb->next; -+ prev = skb->prev; -+ skb->next = skb->prev = 0; -+ next->prev = prev; -+ prev->next = next; -+} -+# 782 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+extern struct sk_buff *skb_dequeue(struct sk_buff_head *list); -+static inline __attribute__((always_inline)) struct sk_buff *__skb_dequeue(struct sk_buff_head *list) -+{ -+ struct sk_buff *skb = skb_peek(list); -+ if (skb) -+ __skb_unlink(skb, list); -+ return skb; -+} -+# 799 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+extern struct sk_buff *skb_dequeue_tail(struct sk_buff_head *list); -+static inline __attribute__((always_inline)) struct sk_buff *__skb_dequeue_tail(struct sk_buff_head *list) -+{ -+ struct sk_buff *skb = skb_peek_tail(list); -+ if (skb) -+ __skb_unlink(skb, list); -+ return skb; -+} -+ -+ -+static inline __attribute__((always_inline)) int skb_is_nonlinear(const struct sk_buff *skb) -+{ -+ return skb->data_len; -+} -+ -+static inline __attribute__((always_inline)) unsigned int skb_headlen(const struct sk_buff *skb) -+{ -+ return skb->len - skb->data_len; -+} -+ -+static inline __attribute__((always_inline)) int skb_pagelen(const struct sk_buff *skb) -+{ -+ int i, len = 0; -+ -+ for (i = (int)((struct skb_shared_info *)(skb_end_pointer(skb)))->nr_frags - 1; i >= 0; i--) -+ len += ((struct skb_shared_info *)(skb_end_pointer(skb)))->frags[i].size; -+ return len + skb_headlen(skb); -+} -+ -+static inline __attribute__((always_inline)) void skb_fill_page_desc(struct sk_buff *skb, int i, -+ struct page *page, int off, int size) -+{ -+ skb_frag_t *frag = &((struct skb_shared_info *)(skb_end_pointer(skb)))->frags[i]; -+ -+ frag->page = page; -+ frag->page_offset = off; -+ frag->size = size; -+ ((struct skb_shared_info *)(skb_end_pointer(skb)))->nr_frags = i + 1; -+} -+# 860 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) unsigned char *skb_tail_pointer(const struct sk_buff *skb) -+{ -+ return skb->tail; -+} -+ -+static inline __attribute__((always_inline)) void skb_reset_tail_pointer(struct sk_buff *skb) -+{ -+ skb->tail = skb->data; -+} -+ -+static inline __attribute__((always_inline)) void skb_set_tail_pointer(struct sk_buff *skb, const int offset) -+{ -+ skb->tail = skb->data + offset; -+} -+ -+ -+ -+ -+ -+ -+extern unsigned char *skb_put(struct sk_buff *skb, unsigned int len); -+static inline __attribute__((always_inline)) unsigned char *__skb_put(struct sk_buff *skb, unsigned int len) -+{ -+ unsigned char *tmp = skb_tail_pointer(skb); -+ do { if (__builtin_expect(!!(skb_is_nonlinear(skb)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"), "i" (884), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ skb->tail += len; -+ skb->len += len; -+ return tmp; -+} -+ -+extern unsigned char *skb_push(struct sk_buff *skb, unsigned int len); -+static inline __attribute__((always_inline)) unsigned char *__skb_push(struct sk_buff *skb, unsigned int len) -+{ -+ skb->data -= len; -+ skb->len += len; -+ return skb->data; -+} -+ -+extern unsigned char *skb_pull(struct sk_buff *skb, unsigned int len); -+static inline __attribute__((always_inline)) unsigned char *__skb_pull(struct sk_buff *skb, unsigned int len) -+{ -+ skb->len -= len; -+ do { if (__builtin_expect(!!(skb->len < skb->data_len), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"), "i" (902), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ return skb->data += len; -+} -+ -+extern unsigned char *__pskb_pull_tail(struct sk_buff *skb, int delta); -+ -+static inline __attribute__((always_inline)) unsigned char *__pskb_pull(struct sk_buff *skb, unsigned int len) -+{ -+ if (len > skb_headlen(skb) && -+ !__pskb_pull_tail(skb, len - skb_headlen(skb))) -+ return 0; -+ skb->len -= len; -+ return skb->data += len; -+} -+ -+static inline __attribute__((always_inline)) unsigned char *pskb_pull(struct sk_buff *skb, unsigned int len) -+{ -+ return __builtin_expect(!!(len > skb->len), 0) ? 0 : __pskb_pull(skb, len); -+} -+ -+static inline __attribute__((always_inline)) int pskb_may_pull(struct sk_buff *skb, unsigned int len) -+{ -+ if (__builtin_expect(!!(len <= skb_headlen(skb)), 1)) -+ return 1; -+ if (__builtin_expect(!!(len > skb->len), 0)) -+ return 0; -+ return __pskb_pull_tail(skb, len - skb_headlen(skb)) != 0; -+} -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) unsigned int skb_headroom(const struct sk_buff *skb) -+{ -+ return skb->data - skb->head; -+} -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int skb_tailroom(const struct sk_buff *skb) -+{ -+ return skb_is_nonlinear(skb) ? 0 : skb->end - skb->tail; -+} -+# 961 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) void skb_reserve(struct sk_buff *skb, int len) -+{ -+ skb->data += len; -+ skb->tail += len; -+} -+# 1024 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) unsigned char *skb_transport_header(const struct sk_buff *skb) -+{ -+ return skb->transport_header; -+} -+ -+static inline __attribute__((always_inline)) void skb_reset_transport_header(struct sk_buff *skb) -+{ -+ skb->transport_header = skb->data; -+} -+ -+static inline __attribute__((always_inline)) void skb_set_transport_header(struct sk_buff *skb, -+ const int offset) -+{ -+ skb->transport_header = skb->data + offset; -+} -+ -+static inline __attribute__((always_inline)) unsigned char *skb_network_header(const struct sk_buff *skb) -+{ -+ return skb->network_header; -+} -+ -+static inline __attribute__((always_inline)) void skb_reset_network_header(struct sk_buff *skb) -+{ -+ skb->network_header = skb->data; -+} -+ -+static inline __attribute__((always_inline)) void skb_set_network_header(struct sk_buff *skb, const int offset) -+{ -+ skb->network_header = skb->data + offset; -+} -+ -+static inline __attribute__((always_inline)) unsigned char *skb_mac_header(const struct sk_buff *skb) -+{ -+ return skb->mac_header; -+} -+ -+static inline __attribute__((always_inline)) int skb_mac_header_was_set(const struct sk_buff *skb) -+{ -+ return skb->mac_header != 0; -+} -+ -+static inline __attribute__((always_inline)) void skb_reset_mac_header(struct sk_buff *skb) -+{ -+ skb->mac_header = skb->data; -+} -+ -+static inline __attribute__((always_inline)) void skb_set_mac_header(struct sk_buff *skb, const int offset) -+{ -+ skb->mac_header = skb->data + offset; -+} -+ -+ -+static inline __attribute__((always_inline)) int skb_transport_offset(const struct sk_buff *skb) -+{ -+ return skb_transport_header(skb) - skb->data; -+} -+ -+static inline __attribute__((always_inline)) u32 skb_network_header_len(const struct sk_buff *skb) -+{ -+ return skb->transport_header - skb->network_header; -+} -+ -+static inline __attribute__((always_inline)) int skb_network_offset(const struct sk_buff *skb) -+{ -+ return skb_network_header(skb) - skb->data; -+} -+# 1134 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+extern int ___pskb_trim(struct sk_buff *skb, unsigned int len); -+ -+static inline __attribute__((always_inline)) void __skb_trim(struct sk_buff *skb, unsigned int len) -+{ -+ if (__builtin_expect(!!(skb->data_len), 0)) { -+ ({ int __ret_warn_on = !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) warn_on_slowpath("/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h", 1139); __builtin_expect(!!(__ret_warn_on), 0); }); -+ return; -+ } -+ skb->len = len; -+ skb_set_tail_pointer(skb, len); -+} -+ -+extern void skb_trim(struct sk_buff *skb, unsigned int len); -+ -+static inline __attribute__((always_inline)) int __pskb_trim(struct sk_buff *skb, unsigned int len) -+{ -+ if (skb->data_len) -+ return ___pskb_trim(skb, len); -+ __skb_trim(skb, len); -+ return 0; -+} -+ -+static inline __attribute__((always_inline)) int pskb_trim(struct sk_buff *skb, unsigned int len) -+{ -+ return (len < skb->len) ? __pskb_trim(skb, len) : 0; -+} -+# 1170 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) void pskb_trim_unique(struct sk_buff *skb, unsigned int len) -+{ -+ int err = pskb_trim(skb, len); -+ do { if (__builtin_expect(!!(err), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"), "i" (1173), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+} -+# 1184 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) void skb_orphan(struct sk_buff *skb) -+{ -+ if (skb->destructor) -+ skb->destructor(skb); -+ skb->destructor = 0; -+ skb->sk = 0; -+} -+# 1200 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+extern void skb_queue_purge(struct sk_buff_head *list); -+static inline __attribute__((always_inline)) void __skb_queue_purge(struct sk_buff_head *list) -+{ -+ struct sk_buff *skb; -+ while ((skb = __skb_dequeue(list)) != 0) -+ kfree_skb(skb); -+} -+# 1220 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) struct sk_buff *__dev_alloc_skb(unsigned int length, -+ gfp_t gfp_mask) -+{ -+ struct sk_buff *skb = alloc_skb(length + 16, gfp_mask); -+ if (__builtin_expect(!!(skb), 1)) -+ skb_reserve(skb, 16); -+ return skb; -+} -+ -+extern struct sk_buff *dev_alloc_skb(unsigned int length); -+ -+extern struct sk_buff *__netdev_alloc_skb(struct net_device *dev, -+ unsigned int length, gfp_t gfp_mask); -+# 1247 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) struct sk_buff *netdev_alloc_skb(struct net_device *dev, -+ unsigned int length) -+{ -+ return __netdev_alloc_skb(dev, length, ((( gfp_t)0x20u))); -+} -+# 1261 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) int skb_clone_writable(struct sk_buff *skb, unsigned int len) -+{ -+ return !skb_header_cloned(skb) && -+ skb_headroom(skb) + len <= skb->hdr_len; -+} -+ -+static inline __attribute__((always_inline)) int __skb_cow(struct sk_buff *skb, unsigned int headroom, -+ int cloned) -+{ -+ int delta = 0; -+ -+ if (headroom < 16) -+ headroom = 16; -+ if (headroom > skb_headroom(skb)) -+ delta = headroom - skb_headroom(skb); -+ -+ if (delta || cloned) -+ return pskb_expand_head(skb, (((delta)+((typeof(delta))(16)-1))&~((typeof(delta))(16)-1)), 0, -+ ((( gfp_t)0x20u))); -+ return 0; -+} -+# 1295 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) int skb_cow(struct sk_buff *skb, unsigned int headroom) -+{ -+ return __skb_cow(skb, headroom, skb_cloned(skb)); -+} -+# 1310 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) int skb_cow_head(struct sk_buff *skb, unsigned int headroom) -+{ -+ return __skb_cow(skb, headroom, skb_header_cloned(skb)); -+} -+# 1326 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) int skb_padto(struct sk_buff *skb, unsigned int len) -+{ -+ unsigned int size = skb->len; -+ if (__builtin_expect(!!(size >= len), 1)) -+ return 0; -+ return skb_pad(skb, len - size); -+} -+ -+static inline __attribute__((always_inline)) int skb_add_data(struct sk_buff *skb, -+ unsigned char *from, int copy) -+{ -+ const int off = skb->len; -+ -+ if (skb->ip_summed == 0) { -+ int err = 0; -+ __wsum csum = csum_and_copy_from_user(from, skb_put(skb, copy), -+ copy, 0, &err); -+ if (!err) { -+ skb->csum = csum_block_add(skb->csum, csum, off); -+ return 0; -+ } -+ } else if (!copy_from_user(skb_put(skb, copy), from, copy)) -+ return 0; -+ -+ __skb_trim(skb, off); -+ return -14; -+} -+ -+static inline __attribute__((always_inline)) int skb_can_coalesce(struct sk_buff *skb, int i, -+ struct page *page, int off) -+{ -+ if (i) { -+ struct skb_frag_struct *frag = &((struct skb_shared_info *)(skb_end_pointer(skb)))->frags[i - 1]; -+ -+ return page == frag->page && -+ off == frag->page_offset + frag->size; -+ } -+ return 0; -+} -+ -+static inline __attribute__((always_inline)) int __skb_linearize(struct sk_buff *skb) -+{ -+ return __pskb_pull_tail(skb, skb->data_len) ? 0 : -12; -+} -+# 1378 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) int skb_linearize(struct sk_buff *skb) -+{ -+ return skb_is_nonlinear(skb) ? __skb_linearize(skb) : 0; -+} -+# 1390 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) int skb_linearize_cow(struct sk_buff *skb) -+{ -+ return skb_is_nonlinear(skb) || skb_cloned(skb) ? -+ __skb_linearize(skb) : 0; -+} -+# 1407 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) void skb_postpull_rcsum(struct sk_buff *skb, -+ const void *start, unsigned int len) -+{ -+ if (skb->ip_summed == 2) -+ skb->csum = csum_sub(skb->csum, csum_partial((const unsigned char *) start, len, 0)); -+} -+ -+unsigned char *skb_pull_rcsum(struct sk_buff *skb, unsigned int len); -+# 1425 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) int pskb_trim_rcsum(struct sk_buff *skb, unsigned int len) -+{ -+ if (__builtin_expect(!!(len >= skb->len), 1)) -+ return 0; -+ if (skb->ip_summed == 2) -+ skb->ip_summed = 0; -+ return __pskb_trim(skb, len); -+} -+# 1450 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+extern struct sk_buff *__skb_recv_datagram(struct sock *sk, unsigned flags, -+ int *peeked, int *err); -+extern struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, -+ int noblock, int *err); -+extern unsigned int datagram_poll(struct file *file, struct socket *sock, -+ struct poll_table_struct *wait); -+extern int skb_copy_datagram_iovec(const struct sk_buff *from, -+ int offset, struct iovec *to, -+ int size); -+extern int skb_copy_and_csum_datagram_iovec(struct sk_buff *skb, -+ int hlen, -+ struct iovec *iov); -+extern int skb_copy_datagram_from_iovec(struct sk_buff *skb, -+ int offset, -+ struct iovec *from, -+ int len); -+extern void skb_free_datagram(struct sock *sk, struct sk_buff *skb); -+extern int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, -+ unsigned int flags); -+extern __wsum skb_checksum(const struct sk_buff *skb, int offset, -+ int len, __wsum csum); -+extern int skb_copy_bits(const struct sk_buff *skb, int offset, -+ void *to, int len); -+extern int skb_store_bits(struct sk_buff *skb, int offset, -+ const void *from, int len); -+extern __wsum skb_copy_and_csum_bits(const struct sk_buff *skb, -+ int offset, u8 *to, int len, -+ __wsum csum); -+extern int skb_splice_bits(struct sk_buff *skb, -+ unsigned int offset, -+ struct pipe_inode_info *pipe, -+ unsigned int len, -+ unsigned int flags); -+extern void skb_copy_and_csum_dev(const struct sk_buff *skb, u8 *to); -+extern void skb_split(struct sk_buff *skb, -+ struct sk_buff *skb1, const u32 len); -+ -+extern struct sk_buff *skb_segment(struct sk_buff *skb, int features); -+ -+static inline __attribute__((always_inline)) void *skb_header_pointer(const struct sk_buff *skb, int offset, -+ int len, void *buffer) -+{ -+ int hlen = skb_headlen(skb); -+ -+ if (hlen - offset >= len) -+ return skb->data + offset; -+ -+ if (skb_copy_bits(skb, offset, buffer, len) < 0) -+ return 0; -+ -+ return buffer; -+} -+ -+static inline __attribute__((always_inline)) void skb_copy_from_linear_data(const struct sk_buff *skb, -+ void *to, -+ const unsigned int len) -+{ -+ (__builtin_constant_p((len)) ? __constant_memcpy((to), (skb->data), (len)) : __memcpy((to), (skb->data), (len))); -+} -+ -+static inline __attribute__((always_inline)) void skb_copy_from_linear_data_offset(const struct sk_buff *skb, -+ const int offset, void *to, -+ const unsigned int len) -+{ -+ (__builtin_constant_p((len)) ? __constant_memcpy((to), (skb->data + offset), (len)) : __memcpy((to), (skb->data + offset), (len))); -+} -+ -+static inline __attribute__((always_inline)) void skb_copy_to_linear_data(struct sk_buff *skb, -+ const void *from, -+ const unsigned int len) -+{ -+ (__builtin_constant_p((len)) ? __constant_memcpy((skb->data), (from), (len)) : __memcpy((skb->data), (from), (len))); -+} -+ -+static inline __attribute__((always_inline)) void skb_copy_to_linear_data_offset(struct sk_buff *skb, -+ const int offset, -+ const void *from, -+ const unsigned int len) -+{ -+ (__builtin_constant_p((len)) ? __constant_memcpy((skb->data + offset), (from), (len)) : __memcpy((skb->data + offset), (from), (len))); -+} -+ -+extern void skb_init(void); -+# 1543 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) void skb_get_timestamp(const struct sk_buff *skb, struct timeval *stamp) -+{ -+ *stamp = ns_to_timeval((skb->tstamp).tv64); -+} -+ -+static inline __attribute__((always_inline)) void __net_timestamp(struct sk_buff *skb) -+{ -+ skb->tstamp = ktime_get_real(); -+} -+ -+static inline __attribute__((always_inline)) ktime_t net_timedelta(ktime_t t) -+{ -+ return ({ ktime_t __kt; __kt.tv64 = ((ktime_get_real()).tv64 - (t).tv64); __kt; }); -+} -+ -+static inline __attribute__((always_inline)) ktime_t net_invalid_timestamp(void) -+{ -+ return ktime_set(0, 0); -+} -+ -+extern __sum16 __skb_checksum_complete_head(struct sk_buff *skb, int len); -+extern __sum16 __skb_checksum_complete(struct sk_buff *skb); -+ -+static inline __attribute__((always_inline)) int skb_csum_unnecessary(const struct sk_buff *skb) -+{ -+ return skb->ip_summed & 1; -+} -+# 1587 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) __sum16 skb_checksum_complete(struct sk_buff *skb) -+{ -+ return skb_csum_unnecessary(skb) ? -+ 0 : __skb_checksum_complete(skb); -+} -+ -+ -+extern void nf_conntrack_destroy(struct nf_conntrack *nfct); -+static inline __attribute__((always_inline)) void nf_conntrack_put(struct nf_conntrack *nfct) -+{ -+ if (nfct && atomic_dec_and_test(&nfct->use)) -+ nf_conntrack_destroy(nfct); -+} -+static inline __attribute__((always_inline)) void nf_conntrack_get(struct nf_conntrack *nfct) -+{ -+ if (nfct) -+ atomic_inc(&nfct->use); -+} -+static inline __attribute__((always_inline)) void nf_conntrack_get_reasm(struct sk_buff *skb) -+{ -+ if (skb) -+ atomic_inc(&skb->users); -+} -+static inline __attribute__((always_inline)) void nf_conntrack_put_reasm(struct sk_buff *skb) -+{ -+ if (skb) -+ kfree_skb(skb); -+} -+ -+ -+static inline __attribute__((always_inline)) void nf_bridge_put(struct nf_bridge_info *nf_bridge) -+{ -+ if (nf_bridge && atomic_dec_and_test(&nf_bridge->use)) -+ kfree(nf_bridge); -+} -+static inline __attribute__((always_inline)) void nf_bridge_get(struct nf_bridge_info *nf_bridge) -+{ -+ if (nf_bridge) -+ atomic_inc(&nf_bridge->use); -+} -+ -+static inline __attribute__((always_inline)) void nf_reset(struct sk_buff *skb) -+{ -+ -+ nf_conntrack_put(skb->nfct); -+ skb->nfct = 0; -+ nf_conntrack_put_reasm(skb->nfct_reasm); -+ skb->nfct_reasm = 0; -+ -+ -+ nf_bridge_put(skb->nf_bridge); -+ skb->nf_bridge = 0; -+ -+} -+ -+ -+static inline __attribute__((always_inline)) void __nf_copy(struct sk_buff *dst, const struct sk_buff *src) -+{ -+ -+ dst->nfct = src->nfct; -+ nf_conntrack_get(src->nfct); -+ dst->nfctinfo = src->nfctinfo; -+ dst->nfct_reasm = src->nfct_reasm; -+ nf_conntrack_get_reasm(src->nfct_reasm); -+ -+ -+ dst->nf_bridge = src->nf_bridge; -+ nf_bridge_get(src->nf_bridge); -+ -+} -+ -+static inline __attribute__((always_inline)) void nf_copy(struct sk_buff *dst, const struct sk_buff *src) -+{ -+ -+ nf_conntrack_put(dst->nfct); -+ nf_conntrack_put_reasm(dst->nfct_reasm); -+ -+ -+ nf_bridge_put(dst->nf_bridge); -+ -+ __nf_copy(dst, src); -+} -+ -+ -+static inline __attribute__((always_inline)) void skb_copy_secmark(struct sk_buff *to, const struct sk_buff *from) -+{ -+ to->secmark = from->secmark; -+} -+ -+static inline __attribute__((always_inline)) void skb_init_secmark(struct sk_buff *skb) -+{ -+ skb->secmark = 0; -+} -+# 1688 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" -+static inline __attribute__((always_inline)) void skb_set_queue_mapping(struct sk_buff *skb, u16 queue_mapping) -+{ -+ skb->queue_mapping = queue_mapping; -+} -+ -+static inline __attribute__((always_inline)) u16 skb_get_queue_mapping(struct sk_buff *skb) -+{ -+ return skb->queue_mapping; -+} -+ -+static inline __attribute__((always_inline)) void skb_copy_queue_mapping(struct sk_buff *to, const struct sk_buff *from) -+{ -+ to->queue_mapping = from->queue_mapping; -+} -+ -+static inline __attribute__((always_inline)) int skb_is_gso(const struct sk_buff *skb) -+{ -+ return ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_size; -+} -+ -+static inline __attribute__((always_inline)) int skb_is_gso_v6(const struct sk_buff *skb) -+{ -+ return ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_type & SKB_GSO_TCPV6; -+} -+ -+extern void __skb_warn_lro_forwarding(const struct sk_buff *skb); -+ -+static inline __attribute__((always_inline)) bool skb_warn_if_lro(const struct sk_buff *skb) -+{ -+ -+ -+ struct skb_shared_info *shinfo = ((struct skb_shared_info *)(skb_end_pointer(skb))); -+ if (shinfo->gso_size != 0 && __builtin_expect(!!(shinfo->gso_type == 0), 0)) { -+ __skb_warn_lro_forwarding(skb); -+ return true; -+ } -+ return false; -+} -+ -+static inline __attribute__((always_inline)) void skb_forward_csum(struct sk_buff *skb) -+{ -+ -+ if (skb->ip_summed == 2) -+ skb->ip_summed = 0; -+} -+ -+bool skb_partial_csum_set(struct sk_buff *skb, u16 start, u16 off); -+# 27 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" 2 -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h" 1 -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/smp_lock.h" 1 -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 1 -+# 44 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+struct sched_param { -+ int sched_priority; -+}; -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/capability.h" 1 -+# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/capability.h" -+struct task_struct; -+# 40 "/d/kernels/linux-2.6.27.10-clickport/include/linux/capability.h" -+typedef struct __user_cap_header_struct { -+ __u32 version; -+ int pid; -+} *cap_user_header_t; -+ -+typedef struct __user_cap_data_struct { -+ __u32 effective; -+ __u32 permitted; -+ __u32 inheritable; -+} *cap_user_data_t; -+# 72 "/d/kernels/linux-2.6.27.10-clickport/include/linux/capability.h" -+struct vfs_cap_data { -+ __le32 magic_etc; -+ struct { -+ __le32 permitted; -+ __le32 inheritable; -+ } data[2]; -+}; -+# 95 "/d/kernels/linux-2.6.27.10-clickport/include/linux/capability.h" -+typedef struct kernel_cap_struct { -+ __u32 cap[2]; -+} kernel_cap_t; -+# 423 "/d/kernels/linux-2.6.27.10-clickport/include/linux/capability.h" -+static inline __attribute__((always_inline)) kernel_cap_t cap_combine(const kernel_cap_t a, -+ const kernel_cap_t b) -+{ -+ kernel_cap_t dest; -+ do { unsigned __capi; for (__capi = 0; __capi < 2; ++__capi) { dest.cap[__capi] = a.cap[__capi] | b.cap[__capi]; } } while (0); -+ return dest; -+} -+ -+static inline __attribute__((always_inline)) kernel_cap_t cap_intersect(const kernel_cap_t a, -+ const kernel_cap_t b) -+{ -+ kernel_cap_t dest; -+ do { unsigned __capi; for (__capi = 0; __capi < 2; ++__capi) { dest.cap[__capi] = a.cap[__capi] & b.cap[__capi]; } } while (0); -+ return dest; -+} -+ -+static inline __attribute__((always_inline)) kernel_cap_t cap_drop(const kernel_cap_t a, -+ const kernel_cap_t drop) -+{ -+ kernel_cap_t dest; -+ do { unsigned __capi; for (__capi = 0; __capi < 2; ++__capi) { dest.cap[__capi] = a.cap[__capi] &~ drop.cap[__capi]; } } while (0); -+ return dest; -+} -+ -+static inline __attribute__((always_inline)) kernel_cap_t cap_invert(const kernel_cap_t c) -+{ -+ kernel_cap_t dest; -+ do { unsigned __capi; for (__capi = 0; __capi < 2; ++__capi) { dest.cap[__capi] = ~ c.cap[__capi]; } } while (0); -+ return dest; -+} -+ -+static inline __attribute__((always_inline)) int cap_isclear(const kernel_cap_t a) -+{ -+ unsigned __capi; -+ for (__capi = 0; __capi < 2; ++__capi) { -+ if (a.cap[__capi] != 0) -+ return 0; -+ } -+ return 1; -+} -+ -+static inline __attribute__((always_inline)) int cap_issubset(const kernel_cap_t a, const kernel_cap_t set) -+{ -+ kernel_cap_t dest; -+ dest = cap_drop(a, set); -+ return cap_isclear(dest); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) int cap_is_fs_cap(int cap) -+{ -+ const kernel_cap_t __cap_fs_set = ((kernel_cap_t){{ ((1 << ((0) & 31)) | (1 << ((1) & 31)) | (1 << ((2) & 31)) | (1 << ((3) & 31)) | (1 << ((4) & 31))), ((1 << ((32) & 31))) } }); -+ return !!((1 << ((cap) & 31)) & __cap_fs_set.cap[((cap) >> 5)]); -+} -+ -+static inline __attribute__((always_inline)) kernel_cap_t cap_drop_fs_set(const kernel_cap_t a) -+{ -+ const kernel_cap_t __cap_fs_set = ((kernel_cap_t){{ ((1 << ((0) & 31)) | (1 << ((1) & 31)) | (1 << ((2) & 31)) | (1 << ((3) & 31)) | (1 << ((4) & 31))), ((1 << ((32) & 31))) } }); -+ return cap_drop(a, __cap_fs_set); -+} -+ -+static inline __attribute__((always_inline)) kernel_cap_t cap_raise_fs_set(const kernel_cap_t a, -+ const kernel_cap_t permitted) -+{ -+ const kernel_cap_t __cap_fs_set = ((kernel_cap_t){{ ((1 << ((0) & 31)) | (1 << ((1) & 31)) | (1 << ((2) & 31)) | (1 << ((3) & 31)) | (1 << ((4) & 31))), ((1 << ((32) & 31))) } }); -+ return cap_combine(a, -+ cap_intersect(permitted, __cap_fs_set)); -+} -+ -+static inline __attribute__((always_inline)) kernel_cap_t cap_drop_nfsd_set(const kernel_cap_t a) -+{ -+ const kernel_cap_t __cap_fs_set = ((kernel_cap_t){{ ((1 << ((0) & 31)) | (1 << ((1) & 31)) | (1 << ((2) & 31)) | (1 << ((3) & 31)) | (1 << ((4) & 31)))|(1 << ((24) & 31)), ((1 << ((32) & 31))) } }); -+ return cap_drop(a, __cap_fs_set); -+} -+ -+static inline __attribute__((always_inline)) kernel_cap_t cap_raise_nfsd_set(const kernel_cap_t a, -+ const kernel_cap_t permitted) -+{ -+ const kernel_cap_t __cap_nfsd_set = ((kernel_cap_t){{ ((1 << ((0) & 31)) | (1 << ((1) & 31)) | (1 << ((2) & 31)) | (1 << ((3) & 31)) | (1 << ((4) & 31)))|(1 << ((24) & 31)), ((1 << ((32) & 31))) } }); -+ return cap_combine(a, -+ cap_intersect(permitted, __cap_nfsd_set)); -+} -+ -+extern const kernel_cap_t __cap_empty_set; -+extern const kernel_cap_t __cap_full_set; -+extern const kernel_cap_t __cap_init_eff_set; -+ -+kernel_cap_t cap_set_effective(const kernel_cap_t pE_new); -+# 525 "/d/kernels/linux-2.6.27.10-clickport/include/linux/capability.h" -+extern int capable(int cap); -+# 51 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2 -+# 66 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cputime.h" 1 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/cputime.h" 1 -+ -+ -+ -+ -+ -+ -+typedef unsigned long cputime_t; -+# 24 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/cputime.h" -+typedef u64 cputime64_t; -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cputime.h" 2 -+# 67 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2 -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sem.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ipc.h" 1 -+# 9 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ipc.h" -+struct ipc_perm -+{ -+ __kernel_key_t key; -+ __kernel_uid_t uid; -+ __kernel_gid_t gid; -+ __kernel_uid_t cuid; -+ __kernel_gid_t cgid; -+ __kernel_mode_t mode; -+ unsigned short seq; -+}; -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ipcbuf.h" 1 -+# 14 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ipcbuf.h" -+struct ipc64_perm { -+ __kernel_key_t key; -+ __kernel_uid32_t uid; -+ __kernel_gid32_t gid; -+ __kernel_uid32_t cuid; -+ __kernel_gid32_t cgid; -+ __kernel_mode_t mode; -+ unsigned short __pad1; -+ unsigned short seq; -+ unsigned short __pad2; -+ unsigned long __unused1; -+ unsigned long __unused2; -+}; -+# 22 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ipc.h" 2 -+# 57 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ipc.h" -+struct ipc_kludge { -+ struct msgbuf *msgp; -+ long msgtyp; -+}; -+# 88 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ipc.h" -+struct kern_ipc_perm -+{ -+ spinlock_t lock; -+ int deleted; -+ int id; -+ key_t key; -+ uid_t uid; -+ gid_t gid; -+ xid_t xid; -+ uid_t cuid; -+ gid_t cgid; -+ mode_t mode; -+ unsigned long seq; -+ void *security; -+}; -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sem.h" 2 -+# 23 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sem.h" -+struct semid_ds { -+ struct ipc_perm sem_perm; -+ __kernel_time_t sem_otime; -+ __kernel_time_t sem_ctime; -+ struct sem *sem_base; -+ struct sem_queue *sem_pending; -+ struct sem_queue **sem_pending_last; -+ struct sem_undo *undo; -+ unsigned short sem_nsems; -+}; -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/sembuf.h" 1 -+# 13 "/d/kernels/linux-2.6.27.10-clickport/include/asm/sembuf.h" -+struct semid64_ds { -+ struct ipc64_perm sem_perm; -+ __kernel_time_t sem_otime; -+ unsigned long __unused1; -+ __kernel_time_t sem_ctime; -+ unsigned long __unused2; -+ unsigned long sem_nsems; -+ unsigned long __unused3; -+ unsigned long __unused4; -+}; -+# 36 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sem.h" 2 -+ -+ -+struct sembuf { -+ unsigned short sem_num; -+ short sem_op; -+ short sem_flg; -+}; -+ -+ -+union semun { -+ int val; -+ struct semid_ds *buf; -+ unsigned short *array; -+ struct seminfo *__buf; -+ void *__pad; -+}; -+ -+struct seminfo { -+ int semmap; -+ int semmni; -+ int semmns; -+ int semmnu; -+ int semmsl; -+ int semopm; -+ int semume; -+ int semusz; -+ int semvmx; -+ int semaem; -+}; -+# 80 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sem.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1 -+# 81 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sem.h" 2 -+ -+ -+struct task_struct; -+ -+ -+struct sem { -+ int semval; -+ int sempid; -+}; -+ -+ -+struct sem_array { -+ struct kern_ipc_perm sem_perm; -+ time_t sem_otime; -+ time_t sem_ctime; -+ struct sem *sem_base; -+ struct list_head sem_pending; -+ struct list_head list_id; -+ unsigned long sem_nsems; -+}; -+ -+ -+struct sem_queue { -+ struct list_head list; -+ struct task_struct *sleeper; -+ struct sem_undo *undo; -+ int pid; -+ int status; -+ struct sembuf *sops; -+ int nsops; -+ int alter; -+}; -+ -+ -+ -+ -+struct sem_undo { -+ struct list_head list_proc; -+ -+ struct rcu_head rcu; -+ struct sem_undo_list *ulp; -+ struct list_head list_id; -+ int semid; -+ short * semadj; -+}; -+ -+ -+ -+ -+struct sem_undo_list { -+ atomic_t refcnt; -+ spinlock_t lock; -+ struct list_head list_proc; -+}; -+ -+struct sysv_sem { -+ struct sem_undo_list *undo_list; -+}; -+ -+ -+ -+extern int copy_semundo(unsigned long clone_flags, struct task_struct *tsk); -+extern void exit_sem(struct task_struct *tsk); -+# 70 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/signal.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/signal.h" 1 -+# 10 "/d/kernels/linux-2.6.27.10-clickport/include/asm/signal.h" -+struct siginfo; -+# 28 "/d/kernels/linux-2.6.27.10-clickport/include/asm/signal.h" -+typedef unsigned long old_sigset_t; -+ -+typedef struct { -+ unsigned long sig[(64 / 32)]; -+} sigset_t; -+# 120 "/d/kernels/linux-2.6.27.10-clickport/include/asm/signal.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/signal.h" 1 -+# 17 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/signal.h" -+typedef void __signalfn_t(int); -+typedef __signalfn_t *__sighandler_t; -+ -+typedef void __restorefn_t(void); -+typedef __restorefn_t *__sigrestore_t; -+# 121 "/d/kernels/linux-2.6.27.10-clickport/include/asm/signal.h" 2 -+ -+ -+ -+ -+ -+struct old_sigaction { -+ __sighandler_t sa_handler; -+ old_sigset_t sa_mask; -+ unsigned long sa_flags; -+ __sigrestore_t sa_restorer; -+}; -+ -+struct sigaction { -+ __sighandler_t sa_handler; -+ unsigned long sa_flags; -+ __sigrestore_t sa_restorer; -+ sigset_t sa_mask; -+}; -+ -+struct k_sigaction { -+ struct sigaction sa; -+}; -+# 175 "/d/kernels/linux-2.6.27.10-clickport/include/asm/signal.h" -+typedef struct sigaltstack { -+ void *ss_sp; -+ int ss_flags; -+ size_t ss_size; -+} stack_t; -+# 193 "/d/kernels/linux-2.6.27.10-clickport/include/asm/signal.h" -+static inline __attribute__((always_inline)) void __gen_sigaddset(sigset_t *set, int _sig) -+{ -+ asm("btsl %1,%0" : "+m"(*set) : "Ir"(_sig - 1) : "cc"); -+} -+ -+static inline __attribute__((always_inline)) void __const_sigaddset(sigset_t *set, int _sig) -+{ -+ unsigned long sig = _sig - 1; -+ set->sig[sig / 32] |= 1 << (sig % 32); -+} -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void __gen_sigdelset(sigset_t *set, int _sig) -+{ -+ asm("btrl %1,%0" : "+m"(*set) : "Ir"(_sig - 1) : "cc"); -+} -+ -+static inline __attribute__((always_inline)) void __const_sigdelset(sigset_t *set, int _sig) -+{ -+ unsigned long sig = _sig - 1; -+ set->sig[sig / 32] &= ~(1 << (sig % 32)); -+} -+ -+static inline __attribute__((always_inline)) int __const_sigismember(sigset_t *set, int _sig) -+{ -+ unsigned long sig = _sig - 1; -+ return 1 & (set->sig[sig / 32] >> (sig % 32)); -+} -+ -+static inline __attribute__((always_inline)) int __gen_sigismember(sigset_t *set, int _sig) -+{ -+ int ret; -+ asm("btl %2,%1\n\tsbbl %0,%0" -+ : "=r"(ret) : "m"(*set), "Ir"(_sig-1) : "cc"); -+ return ret; -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int sigfindinword(unsigned long word) -+{ -+ asm("bsfl %1,%0" : "=r"(word) : "rm"(word) : "cc"); -+ return word; -+} -+ -+struct pt_regs; -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/signal.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/siginfo.h" 1 -+ -+ -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/siginfo.h" 1 -+ -+ -+ -+ -+ -+ -+typedef union sigval { -+ int sival_int; -+ void *sival_ptr; -+} sigval_t; -+# 40 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/siginfo.h" -+typedef struct siginfo { -+ int si_signo; -+ int si_errno; -+ int si_code; -+ -+ union { -+ int _pad[((128 - (3 * sizeof(int))) / sizeof(int))]; -+ -+ -+ struct { -+ pid_t _pid; -+ uid_t _uid; -+ } _kill; -+ -+ -+ struct { -+ timer_t _tid; -+ int _overrun; -+ char _pad[sizeof( uid_t) - sizeof(int)]; -+ sigval_t _sigval; -+ int _sys_private; -+ } _timer; -+ -+ -+ struct { -+ pid_t _pid; -+ uid_t _uid; -+ sigval_t _sigval; -+ } _rt; -+ -+ -+ struct { -+ pid_t _pid; -+ uid_t _uid; -+ int _status; -+ clock_t _utime; -+ clock_t _stime; -+ } _sigchld; -+ -+ -+ struct { -+ void *_addr; -+ -+ -+ -+ } _sigfault; -+ -+ -+ struct { -+ long _band; -+ int _fd; -+ } _sigpoll; -+ } _sifields; -+} siginfo_t; -+# 251 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/siginfo.h" -+typedef struct sigevent { -+ sigval_t sigev_value; -+ int sigev_signo; -+ int sigev_notify; -+ union { -+ int _pad[((64 - (sizeof(int) * 2 + sizeof(sigval_t))) / sizeof(int))]; -+ int _tid; -+ -+ struct { -+ void (*_function)(sigval_t); -+ void *_attribute; -+ } _sigev_thread; -+ } _sigev_un; -+} sigevent_t; -+ -+ -+ -+ -+ -+ -+ -+struct siginfo; -+void do_schedule_next_timer(struct siginfo *info); -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void copy_siginfo(struct siginfo *to, struct siginfo *from) -+{ -+ if (from->si_code < 0) -+ (__builtin_constant_p((sizeof(*to))) ? __constant_memcpy((to), (from), (sizeof(*to))) : __memcpy((to), (from), (sizeof(*to)))); -+ else -+ -+ (__builtin_constant_p(((3 * sizeof(int)) + sizeof(from->_sifields._sigchld))) ? __constant_memcpy((to), (from), ((3 * sizeof(int)) + sizeof(from->_sifields._sigchld))) : __memcpy((to), (from), ((3 * sizeof(int)) + sizeof(from->_sifields._sigchld)))); -+} -+ -+ -+ -+extern int copy_siginfo_to_user(struct siginfo *to, struct siginfo *from); -+# 9 "/d/kernels/linux-2.6.27.10-clickport/include/asm/siginfo.h" 2 -+# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/signal.h" 2 -+# 14 "/d/kernels/linux-2.6.27.10-clickport/include/linux/signal.h" -+struct sigqueue { -+ struct list_head list; -+ int flags; -+ siginfo_t info; -+ struct user_struct *user; -+}; -+ -+ -+ -+ -+struct sigpending { -+ struct list_head list; -+ sigset_t signal; -+}; -+# 72 "/d/kernels/linux-2.6.27.10-clickport/include/linux/signal.h" -+static inline __attribute__((always_inline)) int sigisemptyset(sigset_t *set) -+{ -+ extern void _NSIG_WORDS_is_unsupported_size(void); -+ switch ((64 / 32)) { -+ case 4: -+ return (set->sig[3] | set->sig[2] | -+ set->sig[1] | set->sig[0]) == 0; -+ case 2: -+ return (set->sig[1] | set->sig[0]) == 0; -+ case 1: -+ return set->sig[0] == 0; -+ default: -+ _NSIG_WORDS_is_unsupported_size(); -+ return 0; -+ } -+} -+# 119 "/d/kernels/linux-2.6.27.10-clickport/include/linux/signal.h" -+static inline __attribute__((always_inline)) void sigorsets(sigset_t *r, const sigset_t *a, const sigset_t *b) { extern void _NSIG_WORDS_is_unsupported_size(void); unsigned long a0, a1, a2, a3, b0, b1, b2, b3; switch ((64 / 32)) { case 4: a3 = a->sig[3]; a2 = a->sig[2]; b3 = b->sig[3]; b2 = b->sig[2]; r->sig[3] = ((a3) | (b3)); r->sig[2] = ((a2) | (b2)); case 2: a1 = a->sig[1]; b1 = b->sig[1]; r->sig[1] = ((a1) | (b1)); case 1: a0 = a->sig[0]; b0 = b->sig[0]; r->sig[0] = ((a0) | (b0)); break; default: _NSIG_WORDS_is_unsupported_size(); } } -+ -+ -+static inline __attribute__((always_inline)) void sigandsets(sigset_t *r, const sigset_t *a, const sigset_t *b) { extern void _NSIG_WORDS_is_unsupported_size(void); unsigned long a0, a1, a2, a3, b0, b1, b2, b3; switch ((64 / 32)) { case 4: a3 = a->sig[3]; a2 = a->sig[2]; b3 = b->sig[3]; b2 = b->sig[2]; r->sig[3] = ((a3) & (b3)); r->sig[2] = ((a2) & (b2)); case 2: a1 = a->sig[1]; b1 = b->sig[1]; r->sig[1] = ((a1) & (b1)); case 1: a0 = a->sig[0]; b0 = b->sig[0]; r->sig[0] = ((a0) & (b0)); break; default: _NSIG_WORDS_is_unsupported_size(); } } -+ -+ -+static inline __attribute__((always_inline)) void signandsets(sigset_t *r, const sigset_t *a, const sigset_t *b) { extern void _NSIG_WORDS_is_unsupported_size(void); unsigned long a0, a1, a2, a3, b0, b1, b2, b3; switch ((64 / 32)) { case 4: a3 = a->sig[3]; a2 = a->sig[2]; b3 = b->sig[3]; b2 = b->sig[2]; r->sig[3] = ((a3) & ~(b3)); r->sig[2] = ((a2) & ~(b2)); case 2: a1 = a->sig[1]; b1 = b->sig[1]; r->sig[1] = ((a1) & ~(b1)); case 1: a0 = a->sig[0]; b0 = b->sig[0]; r->sig[0] = ((a0) & ~(b0)); break; default: _NSIG_WORDS_is_unsupported_size(); } } -+# 149 "/d/kernels/linux-2.6.27.10-clickport/include/linux/signal.h" -+static inline __attribute__((always_inline)) void signotset(sigset_t *set) { extern void _NSIG_WORDS_is_unsupported_size(void); switch ((64 / 32)) { case 4: set->sig[3] = (~(set->sig[3])); set->sig[2] = (~(set->sig[2])); case 2: set->sig[1] = (~(set->sig[1])); case 1: set->sig[0] = (~(set->sig[0])); break; default: _NSIG_WORDS_is_unsupported_size(); } } -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void sigemptyset(sigset_t *set) -+{ -+ switch ((64 / 32)) { -+ default: -+ (__builtin_constant_p(0) ? (__builtin_constant_p((sizeof(sigset_t))) ? __constant_c_and_count_memset(((set)), ((0x01010101UL * (unsigned char)(0))), ((sizeof(sigset_t)))) : __constant_c_memset(((set)), ((0x01010101UL * (unsigned char)(0))), ((sizeof(sigset_t))))) : (__builtin_constant_p((sizeof(sigset_t))) ? __memset_generic((((set))), (((0))), (((sizeof(sigset_t))))) : __memset_generic(((set)), ((0)), ((sizeof(sigset_t)))))); -+ break; -+ case 2: set->sig[1] = 0; -+ case 1: set->sig[0] = 0; -+ break; -+ } -+} -+ -+static inline __attribute__((always_inline)) void sigfillset(sigset_t *set) -+{ -+ switch ((64 / 32)) { -+ default: -+ (__builtin_constant_p(-1) ? (__builtin_constant_p((sizeof(sigset_t))) ? __constant_c_and_count_memset(((set)), ((0x01010101UL * (unsigned char)(-1))), ((sizeof(sigset_t)))) : __constant_c_memset(((set)), ((0x01010101UL * (unsigned char)(-1))), ((sizeof(sigset_t))))) : (__builtin_constant_p((sizeof(sigset_t))) ? __memset_generic((((set))), (((-1))), (((sizeof(sigset_t))))) : __memset_generic(((set)), ((-1)), ((sizeof(sigset_t)))))); -+ break; -+ case 2: set->sig[1] = -1; -+ case 1: set->sig[0] = -1; -+ break; -+ } -+} -+ -+ -+ -+static inline __attribute__((always_inline)) void sigaddsetmask(sigset_t *set, unsigned long mask) -+{ -+ set->sig[0] |= mask; -+} -+ -+static inline __attribute__((always_inline)) void sigdelsetmask(sigset_t *set, unsigned long mask) -+{ -+ set->sig[0] &= ~mask; -+} -+ -+static inline __attribute__((always_inline)) int sigtestsetmask(sigset_t *set, unsigned long mask) -+{ -+ return (set->sig[0] & mask) != 0; -+} -+ -+static inline __attribute__((always_inline)) void siginitset(sigset_t *set, unsigned long mask) -+{ -+ set->sig[0] = mask; -+ switch ((64 / 32)) { -+ default: -+ (__builtin_constant_p(0) ? (__builtin_constant_p((sizeof(long)*((64 / 32)-1))) ? __constant_c_and_count_memset(((&set->sig[1])), ((0x01010101UL * (unsigned char)(0))), ((sizeof(long)*((64 / 32)-1)))) : __constant_c_memset(((&set->sig[1])), ((0x01010101UL * (unsigned char)(0))), ((sizeof(long)*((64 / 32)-1))))) : (__builtin_constant_p((sizeof(long)*((64 / 32)-1))) ? __memset_generic((((&set->sig[1]))), (((0))), (((sizeof(long)*((64 / 32)-1))))) : __memset_generic(((&set->sig[1])), ((0)), ((sizeof(long)*((64 / 32)-1)))))); -+ break; -+ case 2: set->sig[1] = 0; -+ case 1: ; -+ } -+} -+ -+static inline __attribute__((always_inline)) void siginitsetinv(sigset_t *set, unsigned long mask) -+{ -+ set->sig[0] = ~mask; -+ switch ((64 / 32)) { -+ default: -+ (__builtin_constant_p(-1) ? (__builtin_constant_p((sizeof(long)*((64 / 32)-1))) ? __constant_c_and_count_memset(((&set->sig[1])), ((0x01010101UL * (unsigned char)(-1))), ((sizeof(long)*((64 / 32)-1)))) : __constant_c_memset(((&set->sig[1])), ((0x01010101UL * (unsigned char)(-1))), ((sizeof(long)*((64 / 32)-1))))) : (__builtin_constant_p((sizeof(long)*((64 / 32)-1))) ? __memset_generic((((&set->sig[1]))), (((-1))), (((sizeof(long)*((64 / 32)-1))))) : __memset_generic(((&set->sig[1])), ((-1)), ((sizeof(long)*((64 / 32)-1)))))); -+ break; -+ case 2: set->sig[1] = -1; -+ case 1: ; -+ } -+} -+ -+ -+ -+static inline __attribute__((always_inline)) void init_sigpending(struct sigpending *sig) -+{ -+ sigemptyset(&sig->signal); -+ INIT_LIST_HEAD(&sig->list); -+} -+ -+extern void flush_sigqueue(struct sigpending *queue); -+ -+ -+static inline __attribute__((always_inline)) int valid_signal(unsigned long sig) -+{ -+ return sig <= 64 ? 1 : 0; -+} -+ -+extern int next_signal(struct sigpending *pending, sigset_t *mask); -+extern int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p); -+extern int __group_send_sig_info(int, struct siginfo *, struct task_struct *); -+extern long do_sigpending(void *, unsigned long); -+extern int sigprocmask(int, sigset_t *, sigset_t *); -+extern int show_unhandled_signals; -+ -+struct pt_regs; -+extern int get_signal_to_deliver(siginfo_t *info, struct k_sigaction *return_ka, struct pt_regs *regs, void *cookie); -+extern void exit_signals(struct task_struct *tsk); -+ -+extern struct kmem_cache *sighand_cachep; -+ -+int unhandled_signal(struct task_struct *tsk, int sig); -+# 373 "/d/kernels/linux-2.6.27.10-clickport/include/linux/signal.h" -+void signals_init(void); -+# 71 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/fs_struct.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/path.h" 1 -+ -+ -+ -+struct dentry; -+struct vfsmount; -+ -+struct path { -+ struct vfsmount *mnt; -+ struct dentry *dentry; -+}; -+ -+extern void path_get(struct path *); -+extern void path_put(struct path *); -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/fs_struct.h" 2 -+ -+struct fs_struct { -+ atomic_t count; -+ rwlock_t lock; -+ int umask; -+ struct path root, pwd; -+}; -+ -+ -+ -+ -+ -+ -+ -+extern struct kmem_cache *fs_cachep; -+ -+extern void exit_fs(struct task_struct *); -+extern void set_fs_root(struct fs_struct *, struct path *); -+extern void set_fs_pwd(struct fs_struct *, struct path *); -+extern struct fs_struct *copy_fs_struct(struct fs_struct *); -+extern void put_fs_struct(struct fs_struct *); -+# 72 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2 -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/proportions.h" 1 -+# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/proportions.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/percpu_counter.h" 1 -+# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/percpu_counter.h" -+struct percpu_counter { -+ spinlock_t lock; -+ s64 count; -+ -+ struct list_head list; -+ -+ s32 *counters; -+}; -+ -+ -+ -+ -+ -+ -+ -+int percpu_counter_init(struct percpu_counter *fbc, s64 amount); -+int percpu_counter_init_irq(struct percpu_counter *fbc, s64 amount); -+void percpu_counter_destroy(struct percpu_counter *fbc); -+void percpu_counter_set(struct percpu_counter *fbc, s64 amount); -+void __percpu_counter_add(struct percpu_counter *fbc, s64 amount, s32 batch); -+s64 __percpu_counter_sum(struct percpu_counter *fbc, int set); -+ -+static inline __attribute__((always_inline)) void percpu_counter_add(struct percpu_counter *fbc, s64 amount) -+{ -+ __percpu_counter_add(fbc, amount, (32*2)); -+} -+ -+static inline __attribute__((always_inline)) s64 percpu_counter_sum_positive(struct percpu_counter *fbc) -+{ -+ s64 ret = __percpu_counter_sum(fbc, 0); -+ return ret < 0 ? 0 : ret; -+} -+ -+static inline __attribute__((always_inline)) s64 percpu_counter_sum_and_set(struct percpu_counter *fbc) -+{ -+ return __percpu_counter_sum(fbc, 1); -+} -+ -+ -+static inline __attribute__((always_inline)) s64 percpu_counter_sum(struct percpu_counter *fbc) -+{ -+ return __percpu_counter_sum(fbc, 0); -+} -+ -+static inline __attribute__((always_inline)) s64 percpu_counter_read(struct percpu_counter *fbc) -+{ -+ return fbc->count; -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) s64 percpu_counter_read_positive(struct percpu_counter *fbc) -+{ -+ s64 ret = fbc->count; -+ -+ __asm__ __volatile__("": : :"memory"); -+ if (ret >= 0) -+ return ret; -+ return 1; -+} -+# 138 "/d/kernels/linux-2.6.27.10-clickport/include/linux/percpu_counter.h" -+static inline __attribute__((always_inline)) void percpu_counter_inc(struct percpu_counter *fbc) -+{ -+ percpu_counter_add(fbc, 1); -+} -+ -+static inline __attribute__((always_inline)) void percpu_counter_dec(struct percpu_counter *fbc) -+{ -+ percpu_counter_add(fbc, -1); -+} -+ -+static inline __attribute__((always_inline)) void percpu_counter_sub(struct percpu_counter *fbc, s64 amount) -+{ -+ percpu_counter_add(fbc, -amount); -+} -+# 13 "/d/kernels/linux-2.6.27.10-clickport/include/linux/proportions.h" 2 -+ -+ -+ -+struct prop_global { -+ -+ -+ -+ -+ -+ int shift; -+ -+ -+ -+ -+ -+ -+ struct percpu_counter events; -+}; -+ -+ -+ -+ -+ -+ -+struct prop_descriptor { -+ int index; -+ struct prop_global pg[2]; -+ struct mutex mutex; -+}; -+ -+int prop_descriptor_init(struct prop_descriptor *pd, int shift); -+void prop_change_shift(struct prop_descriptor *pd, int new_shift); -+ -+ -+ -+ -+ -+struct prop_local_percpu { -+ -+ -+ -+ struct percpu_counter events; -+ -+ -+ -+ -+ int shift; -+ unsigned long period; -+ spinlock_t lock; -+}; -+ -+int prop_local_init_percpu(struct prop_local_percpu *pl); -+void prop_local_destroy_percpu(struct prop_local_percpu *pl); -+void __prop_inc_percpu(struct prop_descriptor *pd, struct prop_local_percpu *pl); -+void prop_fraction_percpu(struct prop_descriptor *pd, struct prop_local_percpu *pl, -+ long *numerator, long *denominator); -+ -+static inline __attribute__((always_inline)) -+void prop_inc_percpu(struct prop_descriptor *pd, struct prop_local_percpu *pl) -+{ -+ unsigned long flags; -+ -+ do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); do { (flags) = __raw_local_irq_save(); } while (0); do { } while (0); } while (0); -+ __prop_inc_percpu(pd, pl); -+ do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); if (raw_irqs_disabled_flags(flags)) { raw_local_irq_restore(flags); do { } while (0); } else { do { } while (0); raw_local_irq_restore(flags); } } while (0); -+} -+# 89 "/d/kernels/linux-2.6.27.10-clickport/include/linux/proportions.h" -+void __prop_inc_percpu_max(struct prop_descriptor *pd, -+ struct prop_local_percpu *pl, long frac); -+ -+ -+ -+ -+ -+ -+struct prop_local_single { -+ -+ -+ -+ unsigned long events; -+ -+ -+ -+ -+ -+ int shift; -+ unsigned long period; -+ spinlock_t lock; -+}; -+ -+ -+ -+ -+ -+int prop_local_init_single(struct prop_local_single *pl); -+void prop_local_destroy_single(struct prop_local_single *pl); -+void __prop_inc_single(struct prop_descriptor *pd, struct prop_local_single *pl); -+void prop_fraction_single(struct prop_descriptor *pd, struct prop_local_single *pl, -+ long *numerator, long *denominator); -+ -+static inline __attribute__((always_inline)) -+void prop_inc_single(struct prop_descriptor *pd, struct prop_local_single *pl) -+{ -+ unsigned long flags; -+ -+ do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); do { (flags) = __raw_local_irq_save(); } while (0); do { } while (0); } while (0); -+ __prop_inc_single(pd, pl); -+ do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); if (raw_irqs_disabled_flags(flags)) { raw_local_irq_restore(flags); do { } while (0); } else { do { } while (0); raw_local_irq_restore(flags); } } while (0); -+} -+# 77 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/seccomp.h" 1 -+# 24 "/d/kernels/linux-2.6.27.10-clickport/include/linux/seccomp.h" -+typedef struct { int gcc_is_buggy; } seccomp_t; -+ -+ -+ -+static inline __attribute__((always_inline)) long prctl_get_seccomp(void) -+{ -+ return -22; -+} -+ -+static inline __attribute__((always_inline)) long prctl_set_seccomp(unsigned long arg2) -+{ -+ return -22; -+} -+# 78 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h" 1 -+# 16 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/plist.h" 1 -+# 80 "/d/kernels/linux-2.6.27.10-clickport/include/linux/plist.h" -+struct plist_head { -+ struct list_head prio_list; -+ struct list_head node_list; -+ -+ -+ -+}; -+ -+struct plist_node { -+ int prio; -+ struct plist_head plist; -+}; -+# 127 "/d/kernels/linux-2.6.27.10-clickport/include/linux/plist.h" -+static inline __attribute__((always_inline)) void -+plist_head_init(struct plist_head *head, spinlock_t *lock) -+{ -+ INIT_LIST_HEAD(&head->prio_list); -+ INIT_LIST_HEAD(&head->node_list); -+ -+ -+ -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void plist_node_init(struct plist_node *node, int prio) -+{ -+ node->prio = prio; -+ plist_head_init(&node->plist, 0); -+} -+ -+extern void plist_add(struct plist_node *node, struct plist_head *head); -+extern void plist_del(struct plist_node *node, struct plist_head *head); -+# 195 "/d/kernels/linux-2.6.27.10-clickport/include/linux/plist.h" -+static inline __attribute__((always_inline)) int plist_head_empty(const struct plist_head *head) -+{ -+ return list_empty(&head->node_list); -+} -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int plist_node_empty(const struct plist_node *node) -+{ -+ return plist_head_empty(&node->plist); -+} -+# 234 "/d/kernels/linux-2.6.27.10-clickport/include/linux/plist.h" -+static inline __attribute__((always_inline)) struct plist_node* plist_first(const struct plist_head *head) -+{ -+ return ({ const typeof( ((struct plist_node *)0)->plist.node_list ) *__mptr = (head->node_list.next); (struct plist_node *)( (char *)__mptr - __builtin_offsetof(struct plist_node,plist.node_list) );}); -+ -+} -+# 17 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h" 2 -+# 26 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h" -+struct rt_mutex { -+ spinlock_t wait_lock; -+ struct plist_head wait_list; -+ struct task_struct *owner; -+ -+ -+ -+ -+ -+ -+}; -+ -+struct rt_mutex_waiter; -+struct hrtimer_sleeper; -+ -+ -+ -+ -+ -+ -+ static inline __attribute__((always_inline)) int rt_mutex_debug_check_no_locks_freed(const void *from, -+ unsigned long len) -+ { -+ return 0; -+ } -+# 80 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h" -+static inline __attribute__((always_inline)) int rt_mutex_is_locked(struct rt_mutex *lock) -+{ -+ return lock->owner != 0; -+} -+ -+extern void __rt_mutex_init(struct rt_mutex *lock, const char *name); -+extern void rt_mutex_destroy(struct rt_mutex *lock); -+ -+extern void rt_mutex_lock(struct rt_mutex *lock); -+extern int rt_mutex_lock_interruptible(struct rt_mutex *lock, -+ int detect_deadlock); -+extern int rt_mutex_timed_lock(struct rt_mutex *lock, -+ struct hrtimer_sleeper *timeout, -+ int detect_deadlock); -+ -+extern int rt_mutex_trylock(struct rt_mutex *lock); -+ -+extern void rt_mutex_unlock(struct rt_mutex *lock); -+# 80 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/resource.h" 1 -+ -+ -+ -+ -+ -+struct task_struct; -+# 24 "/d/kernels/linux-2.6.27.10-clickport/include/linux/resource.h" -+struct rusage { -+ struct timeval ru_utime; -+ struct timeval ru_stime; -+ long ru_maxrss; -+ long ru_ixrss; -+ long ru_idrss; -+ long ru_isrss; -+ long ru_minflt; -+ long ru_majflt; -+ long ru_nswap; -+ long ru_inblock; -+ long ru_oublock; -+ long ru_msgsnd; -+ long ru_msgrcv; -+ long ru_nsignals; -+ long ru_nvcsw; -+ long ru_nivcsw; -+}; -+ -+struct rlimit { -+ unsigned long rlim_cur; -+ unsigned long rlim_max; -+}; -+# 71 "/d/kernels/linux-2.6.27.10-clickport/include/linux/resource.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/resource.h" 1 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/resource.h" 1 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/resource.h" 2 -+# 72 "/d/kernels/linux-2.6.27.10-clickport/include/linux/resource.h" 2 -+ -+int getrusage(struct task_struct *p, int who, struct rusage *ru); -+# 84 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h" 1 -+ -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h" 1 -+ -+ -+ -+ -+ -+ -+enum debug_obj_state { -+ ODEBUG_STATE_NONE, -+ ODEBUG_STATE_INIT, -+ ODEBUG_STATE_INACTIVE, -+ ODEBUG_STATE_ACTIVE, -+ ODEBUG_STATE_DESTROYED, -+ ODEBUG_STATE_NOTAVAILABLE, -+ ODEBUG_STATE_MAX, -+}; -+ -+struct debug_obj_descr; -+# 26 "/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h" -+struct debug_obj { -+ struct hlist_node node; -+ enum debug_obj_state state; -+ void *object; -+ struct debug_obj_descr *descr; -+}; -+# 45 "/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h" -+struct debug_obj_descr { -+ const char *name; -+ -+ int (*fixup_init) (void *addr, enum debug_obj_state state); -+ int (*fixup_activate) (void *addr, enum debug_obj_state state); -+ int (*fixup_destroy) (void *addr, enum debug_obj_state state); -+ int (*fixup_free) (void *addr, enum debug_obj_state state); -+}; -+# 66 "/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h" -+static inline __attribute__((always_inline)) void -+debug_object_init (void *addr, struct debug_obj_descr *descr) { } -+static inline __attribute__((always_inline)) void -+debug_object_init_on_stack(void *addr, struct debug_obj_descr *descr) { } -+static inline __attribute__((always_inline)) void -+debug_object_activate (void *addr, struct debug_obj_descr *descr) { } -+static inline __attribute__((always_inline)) void -+debug_object_deactivate(void *addr, struct debug_obj_descr *descr) { } -+static inline __attribute__((always_inline)) void -+debug_object_destroy (void *addr, struct debug_obj_descr *descr) { } -+static inline __attribute__((always_inline)) void -+debug_object_free (void *addr, struct debug_obj_descr *descr) { } -+ -+static inline __attribute__((always_inline)) void debug_objects_early_init(void) { } -+static inline __attribute__((always_inline)) void debug_objects_mem_init(void) { } -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void -+debug_check_no_obj_freed(const void *address, unsigned long size) { } -+# 8 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h" 2 -+ -+struct tvec_base; -+ -+struct timer_list { -+ struct list_head entry; -+ unsigned long expires; -+ -+ void (*function)(unsigned long); -+ unsigned long data; -+ -+ struct tvec_base *base; -+ -+ void *start_site; -+ char start_comm[16]; -+ int start_pid; -+ -+}; -+ -+extern struct tvec_base boot_tvec_bases; -+# 40 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h" -+void init_timer(struct timer_list *timer); -+void init_timer_deferrable(struct timer_list *timer); -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void destroy_timer_on_stack(struct timer_list *timer) { } -+static inline __attribute__((always_inline)) void init_timer_on_stack(struct timer_list *timer) -+{ -+ init_timer(timer); -+} -+ -+ -+static inline __attribute__((always_inline)) void setup_timer(struct timer_list * timer, -+ void (*function)(unsigned long), -+ unsigned long data) -+{ -+ timer->function = function; -+ timer->data = data; -+ init_timer(timer); -+} -+ -+static inline __attribute__((always_inline)) void setup_timer_on_stack(struct timer_list *timer, -+ void (*function)(unsigned long), -+ unsigned long data) -+{ -+ timer->function = function; -+ timer->data = data; -+ init_timer_on_stack(timer); -+} -+# 82 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h" -+static inline __attribute__((always_inline)) int timer_pending(const struct timer_list * timer) -+{ -+ return timer->entry.next != 0; -+} -+ -+extern void add_timer_on(struct timer_list *timer, int cpu); -+extern int del_timer(struct timer_list * timer); -+extern int __mod_timer(struct timer_list *timer, unsigned long expires); -+extern int mod_timer(struct timer_list *timer, unsigned long expires); -+# 102 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h" -+extern unsigned long next_timer_interrupt(void); -+ -+ -+ -+ -+ -+extern unsigned long get_next_timer_interrupt(unsigned long now); -+# 117 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h" -+extern void init_timer_stats(void); -+ -+extern void timer_stats_update_stats(void *timer, pid_t pid, void *startf, -+ void *timerf, char *comm, -+ unsigned int timer_flag); -+ -+extern void __timer_stats_timer_set_start_info(struct timer_list *timer, -+ void *addr); -+ -+static inline __attribute__((always_inline)) void timer_stats_timer_set_start_info(struct timer_list *timer) -+{ -+ __timer_stats_timer_set_start_info(timer, __builtin_return_address(0)); -+} -+ -+static inline __attribute__((always_inline)) void timer_stats_timer_clear_start_info(struct timer_list *timer) -+{ -+ timer->start_site = 0; -+} -+# 163 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h" -+static inline __attribute__((always_inline)) void add_timer(struct timer_list *timer) -+{ -+ do { if (__builtin_expect(!!(timer_pending(timer)), 0)) do { asm volatile("1:\tud2\n" ".pushsection __bug_table,\"a\"\n" "2:\t.long 1b, %c0\n" "\t.word %c1, 0\n" "\t.org 2b+%c2\n" ".popsection" : : "i" ("/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h"), "i" (165), "i" (sizeof(struct bug_entry))); for (;;) ; } while (0); } while(0); -+ __mod_timer(timer, timer->expires); -+} -+ -+ -+ extern int try_to_del_timer_sync(struct timer_list *timer); -+ extern int del_timer_sync(struct timer_list *timer); -+ -+ -+ -+ -+ -+ -+ -+extern void init_timers(void); -+extern void run_local_timers(void); -+struct hrtimer; -+extern enum hrtimer_restart it_real_fn(struct hrtimer *); -+ -+unsigned long __round_jiffies(unsigned long j, int cpu); -+unsigned long __round_jiffies_relative(unsigned long j, int cpu); -+unsigned long round_jiffies(unsigned long j); -+unsigned long round_jiffies_relative(unsigned long j); -+# 85 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/task_io_accounting.h" 1 -+# 11 "/d/kernels/linux-2.6.27.10-clickport/include/linux/task_io_accounting.h" -+struct task_io_accounting { -+ -+ -+ u64 rchar; -+ -+ u64 wchar; -+ -+ u64 syscr; -+ -+ u64 syscw; -+ -+ -+ -+ -+ -+ -+ -+ u64 read_bytes; -+ -+ -+ -+ -+ -+ u64 write_bytes; -+# 43 "/d/kernels/linux-2.6.27.10-clickport/include/linux/task_io_accounting.h" -+ u64 cancelled_write_bytes; -+ -+}; -+# 87 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h" 1 -+# 33 "/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h" -+static inline __attribute__((always_inline)) void -+account_scheduler_latency(struct task_struct *task, int usecs, int inter) -+{ -+} -+ -+static inline __attribute__((always_inline)) void clear_all_latency_tracing(struct task_struct *p) -+{ -+} -+# 89 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/cred.h" 1 -+# 90 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pid.h" 1 -+ -+ -+ -+ -+ -+enum pid_type -+{ -+ PIDTYPE_PID, -+ PIDTYPE_PGID, -+ PIDTYPE_SID, -+ PIDTYPE_MAX, -+ PIDTYPE_REALPID -+}; -+# 51 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pid.h" -+struct upid { -+ -+ int nr; -+ struct pid_namespace *ns; -+ struct hlist_node pid_chain; -+}; -+ -+struct pid -+{ -+ atomic_t count; -+ unsigned int level; -+ -+ struct hlist_head tasks[PIDTYPE_MAX]; -+ struct rcu_head rcu; -+ struct upid numbers[1]; -+}; -+ -+extern struct pid init_struct_pid; -+ -+struct pid_link -+{ -+ struct hlist_node node; -+ struct pid *pid; -+}; -+ -+static inline __attribute__((always_inline)) struct pid *get_pid(struct pid *pid) -+{ -+ if (pid) -+ atomic_inc(&pid->count); -+ return pid; -+} -+ -+extern void put_pid(struct pid *pid); -+extern struct task_struct *pid_task(struct pid *pid, enum pid_type); -+extern struct task_struct *get_pid_task(struct pid *pid, enum pid_type); -+ -+extern struct pid *get_task_pid(struct task_struct *task, enum pid_type type); -+ -+ -+ -+ -+ -+extern void attach_pid(struct task_struct *task, enum pid_type type, -+ struct pid *pid); -+extern void detach_pid(struct task_struct *task, enum pid_type); -+extern void change_pid(struct task_struct *task, enum pid_type, -+ struct pid *pid); -+extern void transfer_pid(struct task_struct *old, struct task_struct *xxx_new, -+ enum pid_type); -+ -+struct pid_namespace; -+extern struct pid_namespace init_pid_ns; -+# 113 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pid.h" -+extern struct pid *find_pid_ns(int nr, struct pid_namespace *ns); -+extern struct pid *find_vpid(int nr); -+ -+ -+ -+ -+extern struct pid *find_get_pid(int nr); -+extern struct pid *find_ge_pid(int nr, struct pid_namespace *); -+int next_pidmap(struct pid_namespace *pid_ns, int last); -+ -+extern struct pid *alloc_pid(struct pid_namespace *ns); -+extern void free_pid(struct pid *pid); -+# 137 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pid.h" -+static inline __attribute__((always_inline)) pid_t pid_nr(struct pid *pid) -+{ -+ pid_t nr = 0; -+ if (pid) -+ nr = pid->numbers[0].nr; -+ return nr; -+} -+ -+pid_t pid_nr_ns(struct pid *pid, struct pid_namespace *ns); -+pid_t pid_unmapped_nr_ns(struct pid *pid, struct pid_namespace *ns); -+pid_t pid_vnr(struct pid *pid); -+# 91 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2 -+ -+ -+ -+struct mem_cgroup; -+struct exec_domain; -+struct futex_pi_state; -+struct robust_list_head; -+struct bio; -+# 116 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+extern unsigned long avenrun[]; -+# 130 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+extern unsigned long total_forks; -+extern int nr_threads; -+extern __typeof__(unsigned long) per_cpu__process_counts; -+extern int nr_processes(void); -+extern unsigned long nr_running(void); -+extern unsigned long nr_uninterruptible(void); -+extern unsigned long nr_active(void); -+extern unsigned long nr_iowait(void); -+ -+struct seq_file; -+struct cfs_rq; -+struct task_group; -+ -+extern void proc_sched_show_task(struct task_struct *p, struct seq_file *m); -+extern void proc_sched_set_task(struct task_struct *p); -+extern void -+print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq); -+# 161 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+extern unsigned long long time_sync_thresh; -+# 238 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+extern rwlock_t tasklist_lock; -+extern spinlock_t mmlist_lock; -+ -+struct task_struct; -+ -+extern void sched_init(void); -+extern void sched_init_smp(void); -+ -+extern "C" __attribute__((regparm(0))) void schedule_tail(struct task_struct *prev); -+ -+ -+ -+ -+extern void init_idle(struct task_struct *idle, int cpu); -+extern void init_idle_bootup_task(struct task_struct *idle); -+ -+extern int runqueue_is_locked(void); -+ -+extern cpumask_t nohz_cpu_mask; -+ -+ -+ -+static inline __attribute__((always_inline)) int select_nohz_load_balancer(int cpu) -+{ -+ return 0; -+} -+ -+ -+extern unsigned long rt_needs_cpu(int cpu); -+ -+ -+ -+ -+extern void show_state_filter(unsigned long state_filter); -+ -+static inline __attribute__((always_inline)) void show_state(void) -+{ -+ show_state_filter(0); -+} -+ -+extern void show_regs(struct pt_regs *); -+ -+ -+ -+ -+ -+ -+extern void show_stack(struct task_struct *task, unsigned long *sp); -+ -+void io_schedule(void); -+long io_schedule_timeout(long timeout); -+ -+extern void cpu_init (void); -+extern void trap_init(void); -+extern void account_process_tick(struct task_struct *task, int user); -+extern void update_process_times(int user); -+extern void scheduler_tick(void); -+extern void hrtick_resched(void); -+ -+extern void sched_show_task(struct task_struct *p); -+ -+ -+extern void softlockup_tick(void); -+extern void touch_softlockup_watchdog(void); -+extern void touch_all_softlockup_watchdogs(void); -+extern unsigned int softlockup_panic; -+extern unsigned long sysctl_hung_task_check_count; -+extern unsigned long sysctl_hung_task_timeout_secs; -+extern unsigned long sysctl_hung_task_warnings; -+extern int softlockup_thresh; -+# 328 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+extern char __sched_text_start[], __sched_text_end[]; -+ -+ -+extern int in_sched_functions(unsigned long addr); -+ -+ -+extern signed long schedule_timeout(signed long timeout); -+extern signed long schedule_timeout_interruptible(signed long timeout); -+extern signed long schedule_timeout_killable(signed long timeout); -+extern signed long schedule_timeout_uninterruptible(signed long timeout); -+extern "C" __attribute__((regparm(0))) void schedule(void); -+ -+struct nsproxy; -+struct user_namespace; -+ -+ -+ -+ -+extern int sysctl_max_map_count; -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/aio.h" 1 -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h" 1 -+# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1 -+# 13 "/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h" 2 -+ -+struct workqueue_struct; -+ -+struct work_struct; -+typedef void (*work_func_t)(struct work_struct *work); -+ -+ -+ -+ -+ -+ -+ -+struct work_struct { -+ atomic_long_t data; -+ -+ -+ -+ struct list_head entry; -+ work_func_t func; -+ -+ -+ -+}; -+ -+ -+ -+struct delayed_work { -+ struct work_struct work; -+ struct timer_list timer; -+}; -+ -+struct execute_work { -+ struct work_struct work; -+}; -+# 150 "/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h" -+extern struct workqueue_struct * -+__create_workqueue_key(const char *name, int singlethread, -+ int freezeable, struct lock_class_key *key, -+ const char *lock_name); -+# 179 "/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h" -+extern void destroy_workqueue(struct workqueue_struct *wq); -+ -+extern int queue_work(struct workqueue_struct *wq, struct work_struct *work); -+extern int queue_work_on(int cpu, struct workqueue_struct *wq, -+ struct work_struct *work); -+extern int queue_delayed_work(struct workqueue_struct *wq, -+ struct delayed_work *work, unsigned long delay); -+extern int queue_delayed_work_on(int cpu, struct workqueue_struct *wq, -+ struct delayed_work *work, unsigned long delay); -+ -+extern void flush_workqueue(struct workqueue_struct *wq); -+extern void flush_scheduled_work(void); -+ -+extern int schedule_work(struct work_struct *work); -+extern int schedule_work_on(int cpu, struct work_struct *work); -+extern int schedule_delayed_work(struct delayed_work *work, unsigned long delay); -+extern int schedule_delayed_work_on(int cpu, struct delayed_work *work, -+ unsigned long delay); -+extern int schedule_on_each_cpu(work_func_t func); -+extern int current_is_keventd(void); -+extern int keventd_up(void); -+ -+extern void init_workqueues(void); -+int execute_in_process_context(work_func_t fn, struct execute_work *); -+ -+extern int flush_work(struct work_struct *work); -+ -+extern int cancel_work_sync(struct work_struct *work); -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int cancel_delayed_work(struct delayed_work *work) -+{ -+ int ret; -+ -+ ret = del_timer_sync(&work->timer); -+ if (ret) -+ clear_bit(0, ((unsigned long *)(&(&work->work)->data))); -+ return ret; -+} -+ -+extern int cancel_delayed_work_sync(struct delayed_work *work); -+ -+ -+static inline __attribute__((always_inline)) -+void cancel_rearming_delayed_workqueue(struct workqueue_struct *wq, -+ struct delayed_work *work) -+{ -+ cancel_delayed_work_sync(work); -+} -+ -+ -+static inline __attribute__((always_inline)) -+void cancel_rearming_delayed_work(struct delayed_work *work) -+{ -+ cancel_delayed_work_sync(work); -+} -+# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/aio.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/aio_abi.h" 1 -+# 32 "/d/kernels/linux-2.6.27.10-clickport/include/linux/aio_abi.h" -+typedef unsigned long aio_context_t; -+ -+enum { -+ IOCB_CMD_PREAD = 0, -+ IOCB_CMD_PWRITE = 1, -+ IOCB_CMD_FSYNC = 2, -+ IOCB_CMD_FDSYNC = 3, -+ -+ -+ -+ -+ IOCB_CMD_NOOP = 6, -+ IOCB_CMD_PREADV = 7, -+ IOCB_CMD_PWRITEV = 8, -+}; -+# 57 "/d/kernels/linux-2.6.27.10-clickport/include/linux/aio_abi.h" -+struct io_event { -+ __u64 data; -+ __u64 obj; -+ __s64 res; -+ __s64 res2; -+}; -+# 78 "/d/kernels/linux-2.6.27.10-clickport/include/linux/aio_abi.h" -+struct iocb { -+ -+ __u64 aio_data; -+ __u32 aio_key, aio_reserved1; -+ -+ -+ -+ __u16 aio_lio_opcode; -+ __s16 aio_reqprio; -+ __u32 aio_fildes; -+ -+ __u64 aio_buf; -+ __u64 aio_nbytes; -+ __s64 aio_offset; -+ -+ -+ __u64 aio_reserved2; -+ -+ -+ __u32 aio_flags; -+ -+ -+ -+ -+ -+ __u32 aio_resfd; -+}; -+# 7 "/d/kernels/linux-2.6.27.10-clickport/include/linux/aio.h" 2 -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1 -+# 10 "/d/kernels/linux-2.6.27.10-clickport/include/linux/aio.h" 2 -+ -+ -+ -+ -+struct kioctx; -+# 86 "/d/kernels/linux-2.6.27.10-clickport/include/linux/aio.h" -+struct kiocb { -+ struct list_head ki_run_list; -+ unsigned long ki_flags; -+ int ki_users; -+ unsigned ki_key; -+ -+ struct file *ki_filp; -+ struct kioctx *ki_ctx; -+ int (*ki_cancel)(struct kiocb *, struct io_event *); -+ ssize_t (*ki_retry)(struct kiocb *); -+ void (*ki_dtor)(struct kiocb *); -+ -+ union { -+ void *user; -+ struct task_struct *tsk; -+ } ki_obj; -+ -+ __u64 ki_user_data; -+ wait_queue_t ki_wait; -+ loff_t ki_pos; -+ -+ void *xxx_private; -+ -+ unsigned short ki_opcode; -+ size_t ki_nbytes; -+ char *ki_buf; -+ size_t ki_left; -+ struct iovec ki_inline_vec; -+ struct iovec *ki_iovec; -+ unsigned long ki_nr_segs; -+ unsigned long ki_cur_seg; -+ -+ struct list_head ki_list; -+ -+ -+ -+ -+ -+ -+ struct file *ki_eventfd; -+}; -+# 148 "/d/kernels/linux-2.6.27.10-clickport/include/linux/aio.h" -+struct aio_ring { -+ unsigned id; -+ unsigned nr; -+ unsigned head; -+ unsigned tail; -+ -+ unsigned magic; -+ unsigned compat_features; -+ unsigned incompat_features; -+ unsigned header_length; -+ -+ -+ struct io_event io_events[0]; -+}; -+ -+ -+ -+ -+struct aio_ring_info { -+ unsigned long mmap_base; -+ unsigned long mmap_size; -+ -+ struct page **ring_pages; -+ spinlock_t ring_lock; -+ long nr_pages; -+ -+ unsigned nr, tail; -+ -+ struct page *internal_pages[8]; -+}; -+ -+struct kioctx { -+ atomic_t users; -+ int dead; -+ struct mm_struct *mm; -+ -+ -+ unsigned long user_id; -+ struct kioctx *next; -+ -+ wait_queue_head_t wait; -+ -+ spinlock_t ctx_lock; -+ -+ int reqs_active; -+ struct list_head active_reqs; -+ struct list_head run_list; -+ -+ -+ unsigned max_reqs; -+ -+ struct aio_ring_info ring_info; -+ -+ struct delayed_work wq; -+}; -+ -+ -+extern unsigned aio_max_size; -+ -+extern ssize_t wait_on_sync_kiocb(struct kiocb *iocb); -+extern int aio_put_req(struct kiocb *iocb); -+extern void kick_iocb(struct kiocb *iocb); -+extern int aio_complete(struct kiocb *iocb, long res, long res2); -+struct mm_struct; -+extern void exit_aio(struct mm_struct *mm); -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) struct kiocb *list_kiocb(struct list_head *h) -+{ -+ return ({ const typeof( ((struct kiocb *)0)->ki_list ) *__mptr = (h); (struct kiocb *)( (char *)__mptr - __builtin_offsetof(struct kiocb,ki_list) );}); -+} -+ -+ -+extern unsigned long aio_nr; -+extern unsigned long aio_max_nr; -+# 349 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2 -+ -+extern unsigned long -+arch_get_unmapped_area(struct file *, unsigned long, unsigned long, -+ unsigned long, unsigned long); -+extern unsigned long -+arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr, -+ unsigned long len, unsigned long pgoff, -+ unsigned long flags); -+extern void arch_unmap_area(struct mm_struct *, unsigned long); -+extern void arch_unmap_area_topdown(struct mm_struct *, unsigned long); -+# 398 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+extern void set_dumpable(struct mm_struct *mm, int value); -+extern int get_dumpable(struct mm_struct *mm); -+# 420 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+struct sighand_struct { -+ atomic_t count; -+ struct k_sigaction action[64]; -+ spinlock_t siglock; -+ wait_queue_head_t signalfd_wqh; -+}; -+ -+struct pacct_struct { -+ int ac_flag; -+ long ac_exitcode; -+ unsigned long ac_mem; -+ cputime_t ac_utime, ac_stime; -+ unsigned long ac_minflt, ac_majflt; -+}; -+# 442 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+struct signal_struct { -+ atomic_t count; -+ atomic_t live; -+ -+ wait_queue_head_t wait_chldexit; -+ -+ -+ struct task_struct *curr_target; -+ -+ -+ struct sigpending shared_pending; -+ -+ -+ int group_exit_code; -+ -+ -+ -+ -+ -+ struct task_struct *group_exit_task; -+ int notify_count; -+ -+ -+ int group_stop_count; -+ unsigned int flags; -+ -+ -+ struct list_head posix_timers; -+ -+ -+ struct hrtimer real_timer; -+ struct pid *leader_pid; -+ ktime_t it_real_incr; -+ -+ -+ cputime_t it_prof_expires, it_virt_expires; -+ cputime_t it_prof_incr, it_virt_incr; -+# 487 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+ union { -+ pid_t pgrp __attribute__((deprecated)); -+ pid_t __pgrp; -+ }; -+ -+ struct pid *tty_old_pgrp; -+ -+ union { -+ pid_t session __attribute__((deprecated)); -+ pid_t __session; -+ }; -+ -+ -+ int leader; -+ -+ struct tty_struct *tty; -+ -+ -+ -+ -+ -+ -+ -+ cputime_t utime, stime, cutime, cstime; -+ cputime_t gtime; -+ cputime_t cgtime; -+ unsigned long nvcsw, nivcsw, cnvcsw, cnivcsw; -+ unsigned long min_flt, maj_flt, cmin_flt, cmaj_flt; -+ unsigned long inblock, oublock, cinblock, coublock; -+ struct task_io_accounting ioac; -+ -+ -+ -+ -+ -+ -+ -+ unsigned long long sum_sched_runtime; -+# 535 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+ struct rlimit rlim[16]; -+ -+ struct list_head cpu_timers[3]; -+# 546 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+ struct pacct_struct pacct; -+ -+ -+ struct taskstats *stats; -+ -+ -+ -+ -+ -+}; -+# 579 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+static inline __attribute__((always_inline)) int signal_group_exit(const struct signal_struct *sig) -+{ -+ return (sig->flags & 0x00000008) || -+ (sig->group_exit_task != 0); -+} -+ -+ -+ -+ -+struct user_struct { -+ atomic_t __count; -+ atomic_t processes; -+ atomic_t files; -+ atomic_t sigpending; -+ -+ atomic_t inotify_watches; -+ atomic_t inotify_devs; -+ -+ -+ atomic_t epoll_devs; -+ atomic_t epoll_watches; -+ -+ -+ -+ unsigned long mq_bytes; -+ -+ unsigned long locked_shm; -+ -+ -+ -+ -+ -+ -+ -+ struct hlist_node uidhash_node; -+ uid_t uid; -+# 623 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+}; -+ -+extern int uids_sysfs_init(void); -+ -+extern struct user_struct *find_user(uid_t); -+ -+extern struct user_struct root_user; -+ -+ -+struct backing_dev_info; -+struct reclaim_state; -+ -+ -+struct sched_info { -+ -+ unsigned long pcount; -+ unsigned long long cpu_time, -+ run_delay; -+ -+ -+ unsigned long long last_arrival, -+ last_queued; -+ -+ -+ unsigned int bkl_count; -+ -+}; -+ -+ -+ -+extern const struct file_operations proc_schedstat_operations; -+ -+ -+ -+struct task_delay_info { -+ spinlock_t lock; -+ unsigned int flags; -+# 676 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+ struct timespec blkio_start, blkio_end; -+ u64 blkio_delay; -+ u64 swapin_delay; -+ u32 blkio_count; -+ -+ u32 swapin_count; -+ -+ -+ struct timespec freepages_start, freepages_end; -+ u64 freepages_delay; -+ u32 freepages_count; -+}; -+ -+ -+static inline __attribute__((always_inline)) int sched_info_on(void) -+{ -+ -+ return 1; -+ -+ -+ -+ -+ -+ -+} -+ -+enum cpu_idle_type { -+ CPU_IDLE, -+ CPU_NOT_IDLE, -+ CPU_NEWLY_IDLE, -+ CPU_MAX_IDLE_TYPES -+}; -+# 746 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+struct sched_group { -+ struct sched_group *next; -+ cpumask_t cpumask; -+ -+ -+ -+ -+ -+ -+ unsigned int __cpu_power; -+ -+ -+ -+ -+ u32 reciprocal_cpu_power; -+}; -+ -+enum sched_domain_level { -+ SD_LV_NONE = 0, -+ SD_LV_SIBLING, -+ SD_LV_MC, -+ SD_LV_CPU, -+ SD_LV_NODE, -+ SD_LV_ALLNODES, -+ SD_LV_MAX -+}; -+ -+struct sched_domain_attr { -+ int relax_domain_level; -+}; -+ -+ -+ -+ -+ -+struct sched_domain { -+ -+ struct sched_domain *parent; -+ struct sched_domain *child; -+ struct sched_group *groups; -+ cpumask_t span; -+ unsigned long min_interval; -+ unsigned long max_interval; -+ unsigned int busy_factor; -+ unsigned int imbalance_pct; -+ unsigned int cache_nice_tries; -+ unsigned int busy_idx; -+ unsigned int idle_idx; -+ unsigned int newidle_idx; -+ unsigned int wake_idx; -+ unsigned int forkexec_idx; -+ int flags; -+ enum sched_domain_level level; -+ -+ -+ unsigned long last_balance; -+ unsigned int balance_interval; -+ unsigned int nr_balance_failed; -+ -+ u64 last_update; -+ -+ -+ -+ unsigned int lb_count[CPU_MAX_IDLE_TYPES]; -+ unsigned int lb_failed[CPU_MAX_IDLE_TYPES]; -+ unsigned int lb_balanced[CPU_MAX_IDLE_TYPES]; -+ unsigned int lb_imbalance[CPU_MAX_IDLE_TYPES]; -+ unsigned int lb_gained[CPU_MAX_IDLE_TYPES]; -+ unsigned int lb_hot_gained[CPU_MAX_IDLE_TYPES]; -+ unsigned int lb_nobusyg[CPU_MAX_IDLE_TYPES]; -+ unsigned int lb_nobusyq[CPU_MAX_IDLE_TYPES]; -+ -+ -+ unsigned int alb_count; -+ unsigned int alb_failed; -+ unsigned int alb_pushed; -+ -+ -+ unsigned int sbe_count; -+ unsigned int sbe_balanced; -+ unsigned int sbe_pushed; -+ -+ -+ unsigned int sbf_count; -+ unsigned int sbf_balanced; -+ unsigned int sbf_pushed; -+ -+ -+ unsigned int ttwu_wake_remote; -+ unsigned int ttwu_move_affine; -+ unsigned int ttwu_move_balance; -+ -+}; -+ -+extern void partition_sched_domains(int ndoms_new, cpumask_t *doms_new, -+ struct sched_domain_attr *dattr_new); -+extern int arch_reinit_sched_domains(void); -+# 855 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+struct io_context; -+ -+ -+struct group_info { -+ int ngroups; -+ atomic_t usage; -+ gid_t small_block[32]; -+ int nblocks; -+ gid_t *blocks[0]; -+}; -+# 881 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+extern struct group_info *groups_alloc(int gidsetsize); -+extern void groups_free(struct group_info *group_info); -+extern int set_current_groups(struct group_info *group_info); -+extern int groups_search(struct group_info *group_info, gid_t grp); -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void prefetch_stack(struct task_struct *t) { } -+ -+ -+struct audit_context; -+struct mempolicy; -+struct pipe_inode_info; -+struct uts_namespace; -+ -+struct rq; -+struct sched_domain; -+ -+struct sched_class { -+ const struct sched_class *next; -+ -+ void (*enqueue_task) (struct rq *rq, struct task_struct *p, int wakeup); -+ void (*dequeue_task) (struct rq *rq, struct task_struct *p, int sleep); -+ void (*yield_task) (struct rq *rq); -+ int (*select_task_rq)(struct task_struct *p, int sync); -+ -+ void (*check_preempt_curr) (struct rq *rq, struct task_struct *p); -+ -+ struct task_struct * (*pick_next_task) (struct rq *rq); -+ void (*put_prev_task) (struct rq *rq, struct task_struct *p); -+ -+ -+ unsigned long (*load_balance) (struct rq *this_rq, int this_cpu, -+ struct rq *busiest, unsigned long max_load_move, -+ struct sched_domain *sd, enum cpu_idle_type idle, -+ int *all_pinned, int *this_best_prio); -+ -+ int (*move_one_task) (struct rq *this_rq, int this_cpu, -+ struct rq *busiest, struct sched_domain *sd, -+ enum cpu_idle_type idle); -+ void (*pre_schedule) (struct rq *this_rq, struct task_struct *task); -+ void (*post_schedule) (struct rq *this_rq); -+ void (*task_wake_up) (struct rq *this_rq, struct task_struct *task); -+ -+ -+ void (*set_curr_task) (struct rq *rq); -+ void (*task_tick) (struct rq *rq, struct task_struct *p, int queued); -+ void (*task_new) (struct rq *rq, struct task_struct *p); -+ void (*set_cpus_allowed)(struct task_struct *p, -+ const cpumask_t *newmask); -+ -+ void (*rq_online)(struct rq *rq); -+ void (*rq_offline)(struct rq *rq); -+ -+ void (*switched_from) (struct rq *this_rq, struct task_struct *task, -+ int running); -+ void (*switched_to) (struct rq *this_rq, struct task_struct *task, -+ int running); -+ void (*prio_changed) (struct rq *this_rq, struct task_struct *task, -+ int oldprio, int running); -+ -+ -+ -+ -+}; -+ -+struct load_weight { -+ unsigned long weight, inv_weight; -+}; -+# 965 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+struct sched_entity { -+ struct load_weight load; -+ struct rb_node run_node; -+ struct list_head group_node; -+ unsigned int on_rq; -+ -+ u64 exec_start; -+ u64 sum_exec_runtime; -+ u64 vruntime; -+ u64 prev_sum_exec_runtime; -+ -+ u64 last_wakeup; -+ u64 avg_overlap; -+ -+ -+ u64 wait_start; -+ u64 wait_max; -+ u64 wait_count; -+ u64 wait_sum; -+ -+ u64 sleep_start; -+ u64 sleep_max; -+ s64 sum_sleep_runtime; -+ -+ u64 block_start; -+ u64 block_max; -+ u64 exec_max; -+ u64 slice_max; -+ -+ u64 nr_migrations; -+ u64 nr_migrations_cold; -+ u64 nr_failed_migrations_affine; -+ u64 nr_failed_migrations_running; -+ u64 nr_failed_migrations_hot; -+ u64 nr_forced_migrations; -+ u64 nr_forced2_migrations; -+ -+ u64 nr_wakeups; -+ u64 nr_wakeups_sync; -+ u64 nr_wakeups_migrate; -+ u64 nr_wakeups_local; -+ u64 nr_wakeups_remote; -+ u64 nr_wakeups_affine; -+ u64 nr_wakeups_affine_attempts; -+ u64 nr_wakeups_passive; -+ u64 nr_wakeups_idle; -+# 1020 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+}; -+ -+struct sched_rt_entity { -+ struct list_head run_list; -+ unsigned int time_slice; -+ unsigned long timeout; -+ int nr_cpus_allowed; -+ -+ struct sched_rt_entity *back; -+ -+ -+ -+ -+ -+ -+ -+}; -+ -+struct task_struct { -+ volatile long state; -+ void *stack; -+ atomic_t usage; -+ unsigned int flags; -+ unsigned int ptrace; -+ -+ int lock_depth; -+ -+ -+ -+ -+ -+ -+ -+ int prio, static_prio, normal_prio; -+ unsigned int rt_priority; -+ const struct sched_class *sched_class; -+ struct sched_entity se; -+ struct sched_rt_entity rt; -+ -+ -+ -+ struct hlist_head preempt_notifiers; -+# 1072 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+ unsigned char fpu_counter; -+ s8 oomkilladj; -+ -+ unsigned int btrace_seq; -+ -+ -+ unsigned int policy; -+ cpumask_t cpus_allowed; -+ -+ -+ -+ -+ -+ -+ -+ struct sched_info sched_info; -+ -+ -+ struct list_head tasks; -+ -+ struct mm_struct *mm, *active_mm; -+ -+ -+ struct linux_binfmt *binfmt; -+ int exit_state; -+ int exit_code, exit_signal; -+ int pdeath_signal; -+ -+ unsigned int personality; -+ unsigned did_exec:1; -+ pid_t pid; -+ pid_t tgid; -+# 1114 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+ struct task_struct *real_parent; -+ struct task_struct *parent; -+ -+ -+ -+ struct list_head children; -+ struct list_head sibling; -+ struct task_struct *group_leader; -+ -+ -+ -+ -+ -+ -+ struct list_head ptraced; -+ struct list_head ptrace_entry; -+ -+ -+ struct pid_link pids[PIDTYPE_MAX]; -+ struct list_head thread_group; -+ -+ struct completion *vfork_done; -+ int *set_child_tid; -+ int *clear_child_tid; -+ -+ cputime_t utime, stime, utimescaled, stimescaled; -+ cputime_t gtime; -+ cputime_t prev_utime, prev_stime; -+ unsigned long nvcsw, nivcsw; -+ struct timespec start_time; -+ struct timespec real_start_time; -+ -+ unsigned long min_flt, maj_flt; -+ -+ cputime_t it_prof_expires, it_virt_expires; -+ unsigned long long it_sched_expires; -+ struct list_head cpu_timers[3]; -+ -+ -+ uid_t uid,euid,suid,fsuid; -+ gid_t gid,egid,sgid,fsgid; -+ struct group_info *group_info; -+ kernel_cap_t cap_effective, cap_inheritable, cap_permitted, cap_bset; -+ struct user_struct *user; -+ unsigned securebits; -+ -+ -+ -+ -+ -+ char comm[16]; -+ -+ -+ -+ -+ int link_count, total_link_count; -+ -+ -+ struct sysv_sem sysvsem; -+ -+ -+ -+ unsigned long last_switch_timestamp; -+ unsigned long last_switch_count; -+ -+ -+ struct thread_struct thread; -+ -+ struct fs_struct *fs; -+ -+ struct files_struct *files; -+ -+ struct nsproxy *nsproxy; -+ -+ struct signal_struct *signal; -+ struct sighand_struct *sighand; -+ -+ sigset_t blocked, real_blocked; -+ sigset_t saved_sigmask; -+ struct sigpending pending; -+ -+ unsigned long sas_ss_sp; -+ size_t sas_ss_size; -+ int (*notifier)(void *priv); -+ void *notifier_data; -+ sigset_t *notifier_mask; -+ -+ void *security; -+ -+ struct audit_context *audit_context; -+ -+ -+ -+ -+ seccomp_t seccomp; -+ -+ -+ struct vx_info *vx_info; -+ struct nx_info *nx_info; -+ -+ xid_t xid; -+ nid_t nid; -+ tag_t tag; -+ -+ -+ u32 parent_exec_id; -+ u32 self_exec_id; -+ -+ spinlock_t alloc_lock; -+ -+ -+ spinlock_t pi_lock; -+ -+ -+ -+ struct plist_head pi_waiters; -+ -+ struct rt_mutex_waiter *pi_blocked_on; -+# 1262 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+ void *journal_info; -+ -+ -+ struct bio *bio_list, **bio_tail; -+ -+ -+ struct reclaim_state *reclaim_state; -+ -+ struct backing_dev_info *backing_dev_info; -+ -+ struct io_context *io_context; -+ -+ unsigned long ptrace_message; -+ siginfo_t *last_siginfo; -+ struct task_io_accounting ioac; -+ -+ u64 acct_rss_mem1; -+ u64 acct_vm_mem1; -+ cputime_t acct_timexpd; -+# 1294 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+ struct robust_list_head *robust_list; -+ -+ -+ -+ struct list_head pi_state_list; -+ struct futex_pi_state *pi_state_cache; -+ -+ -+ -+ -+ -+ atomic_t fs_excl; -+ struct rcu_head rcu; -+ -+ struct list_head *scm_work_list; -+ -+ -+ -+ -+ struct pipe_inode_info *splice_pipe; -+ -+ struct task_delay_info *delays; -+ -+ -+ -+ -+ struct prop_local_single dirties; -+ -+ -+ -+ -+}; -+# 1346 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+static inline __attribute__((always_inline)) int rt_prio(int prio) -+{ -+ if (__builtin_expect(!!(prio < 100), 0)) -+ return 1; -+ return 0; -+} -+ -+static inline __attribute__((always_inline)) int rt_task(struct task_struct *p) -+{ -+ return rt_prio(p->prio); -+} -+ -+static inline __attribute__((always_inline)) void set_task_session(struct task_struct *tsk, pid_t session) -+{ -+ tsk->signal->__session = session; -+} -+ -+static inline __attribute__((always_inline)) void set_task_pgrp(struct task_struct *tsk, pid_t pgrp) -+{ -+ tsk->signal->__pgrp = pgrp; -+} -+ -+static inline __attribute__((always_inline)) struct pid *task_pid(struct task_struct *task) -+{ -+ return task->pids[PIDTYPE_PID].pid; -+} -+ -+static inline __attribute__((always_inline)) struct pid *task_tgid(struct task_struct *task) -+{ -+ return task->group_leader->pids[PIDTYPE_PID].pid; -+} -+ -+static inline __attribute__((always_inline)) struct pid *task_pgrp(struct task_struct *task) -+{ -+ return task->group_leader->pids[PIDTYPE_PGID].pid; -+} -+ -+static inline __attribute__((always_inline)) struct pid *task_session(struct task_struct *task) -+{ -+ return task->group_leader->pids[PIDTYPE_SID].pid; -+} -+ -+struct pid_namespace; -+# 1404 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/base.h" 1 -+ -+ -+ -+ -+ -+ -+enum { -+ VSC_STARTUP = 1, -+ VSC_SHUTDOWN, -+ -+ VSC_NETUP, -+ VSC_NETDOWN, -+}; -+# 1405 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/context.h" 1 -+# 83 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/context.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/limit_def.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1 -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/limit_def.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/resource.h" 1 -+# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/limit_def.h" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/limit.h" 1 -+# 22 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/limit.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1 -+# 23 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/limit.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/resource.h" 1 -+# 24 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/limit.h" 2 -+# 41 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/limit.h" -+typedef atomic_long_t rlim_atomic_t; -+typedef unsigned long rlim_t; -+# 62 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/limit.h" -+struct sysinfo; -+ -+void vx_vsi_meminfo(struct sysinfo *); -+void vx_vsi_swapinfo(struct sysinfo *); -+# 8 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/limit_def.h" 2 -+ -+ -+struct _vx_res_limit { -+ rlim_t soft; -+ rlim_t hard; -+ -+ rlim_atomic_t rcur; -+ rlim_t rmin; -+ rlim_t rmax; -+ -+ atomic_t lhit; -+}; -+ -+ -+ -+struct _vx_limit { -+ struct _vx_res_limit res[24]; -+}; -+# 84 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/context.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/sched_def.h" 1 -+ -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1 -+# 8 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/sched_def.h" 2 -+ -+ -+ -+ -+ -+struct _vx_sched { -+ spinlock_t tokens_lock; -+ -+ int tokens; -+ int fill_rate[2]; -+ int interval[2]; -+ int tokens_min; -+ int tokens_max; -+ -+ int prio_bias; -+ -+ unsigned update_mask; -+ cpumask_t update; -+}; -+ -+struct _vx_sched_pc { -+ int tokens; -+ int flags; -+ -+ int fill_rate[2]; -+ int interval[2]; -+ int tokens_min; -+ int tokens_max; -+ -+ int prio_bias; -+ int vavavoom; -+ -+ unsigned long norm_time; -+ unsigned long idle_time; -+ unsigned long token_time; -+ unsigned long onhold; -+ -+ uint64_t user_ticks; -+ uint64_t sys_ticks; -+ uint64_t hold_ticks; -+}; -+# 85 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/context.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/cvirt_def.h" 1 -+ -+ -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1 -+# 9 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/cvirt_def.h" 2 -+ -+ -+struct _vx_usage_stat { -+ uint64_t user; -+ uint64_t nice; -+ uint64_t system; -+ uint64_t softirq; -+ uint64_t irq; -+ uint64_t idle; -+ uint64_t iowait; -+}; -+ -+struct _vx_syslog { -+ wait_queue_head_t log_wait; -+ spinlock_t logbuf_lock; -+ -+ unsigned long log_start; -+ unsigned long con_start; -+ unsigned long log_end; -+ unsigned long logged_chars; -+ -+ char log_buf[1024]; -+}; -+ -+ -+ -+ -+struct _vx_cvirt { -+ atomic_t nr_threads; -+ atomic_t nr_running; -+ atomic_t nr_uninterruptible; -+ -+ atomic_t nr_onhold; -+ uint32_t onhold_last; -+ -+ struct timeval bias_tv; -+ struct timespec bias_idle; -+ struct timespec bias_uptime; -+ uint64_t bias_clock; -+ -+ spinlock_t load_lock; -+ atomic_t load_updates; -+ uint32_t load_last; -+ uint32_t load[3]; -+ -+ atomic_t total_forks; -+ -+ struct _vx_syslog syslog; -+}; -+ -+struct _vx_cvirt_pc { -+ struct _vx_usage_stat cpustat; -+}; -+# 86 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/context.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/cacct_def.h" 1 -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1 -+# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/cacct_def.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/cacct.h" 1 -+ -+ -+ -+ -+enum sock_acc_field { -+ VXA_SOCK_UNSPEC = 0, -+ VXA_SOCK_UNIX, -+ VXA_SOCK_INET, -+ VXA_SOCK_INET6, -+ VXA_SOCK_PACKET, -+ VXA_SOCK_OTHER, -+ VXA_SOCK_SIZE -+}; -+# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/cacct_def.h" 2 -+ -+ -+struct _vx_sock_acc { -+ atomic_long_t count; -+ atomic_long_t total; -+}; -+ -+ -+ -+struct _vx_cacct { -+ struct _vx_sock_acc sock[VXA_SOCK_SIZE][3]; -+ atomic_t slab[8]; -+ atomic_t page[6][8]; -+}; -+# 87 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/context.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/device_def.h" 1 -+ -+ -+ -+ -+ -+struct vx_dmap_target { -+ dev_t target; -+ uint32_t flags; -+}; -+ -+struct _vx_device { -+ -+ -+ -+}; -+# 88 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/context.h" 2 -+ -+ -+ -+struct _vx_info_pc { -+ struct _vx_sched_pc sched_pc; -+ struct _vx_cvirt_pc cvirt_pc; -+}; -+ -+struct vx_info { -+ struct hlist_node vx_hlist; -+ xid_t vx_id; -+ atomic_t vx_usecnt; -+ atomic_t vx_tasks; -+ struct vx_info *vx_parent; -+ int vx_state; -+ -+ unsigned long vx_nsmask[2]; -+ struct nsproxy *vx_nsproxy[2]; -+ struct fs_struct *vx_fs[2]; -+ -+ uint64_t vx_flags; -+ uint64_t vx_ccaps; -+ kernel_cap_t vx_bcaps; -+ -+ -+ struct task_struct *vx_reaper; -+ pid_t vx_initpid; -+ int64_t vx_badness_bias; -+ -+ struct _vx_limit limit; -+ struct _vx_sched sched; -+ struct _vx_cvirt cvirt; -+ struct _vx_cacct cacct; -+ -+ struct _vx_device dmap; -+ -+ -+ -+ -+ struct _vx_info_pc *ptr_pc; -+ -+ -+ wait_queue_head_t vx_wait; -+ int reboot_cmd; -+ int exit_code; -+ -+ char vx_name[65]; -+}; -+# 148 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/context.h" -+struct vx_info_save { -+ struct vx_info *vxi; -+ xid_t xid; -+}; -+# 163 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/context.h" -+extern void claim_vx_info(struct vx_info *, struct task_struct *); -+extern void release_vx_info(struct vx_info *, struct task_struct *); -+ -+extern struct vx_info *lookup_vx_info(int); -+extern struct vx_info *lookup_or_create_vx_info(int); -+ -+extern int get_xid_list(int, unsigned int *, int); -+extern int xid_is_hashed(xid_t); -+ -+extern int vx_migrate_task(struct task_struct *, struct vx_info *, int); -+ -+extern long vs_state_change(struct vx_info *, unsigned int); -+# 1406 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/debug.h" 1 -+# 1407 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h" 1 -+# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h" -+static inline __attribute__((always_inline)) int __vx_info_map_pid(struct vx_info *vxi, int pid, -+ const char *func, const char *file, int line) -+{ -+ if ((((((vxi) ? (vxi)->vx_flags : 0)) & (0x00000010)) ^ (0))) { -+ do { } while (0); -+ -+ -+ -+ -+ if (pid == 0) -+ return 0; -+ if (pid == vxi->vx_initpid) -+ return 1; -+ } -+ return pid; -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int __vx_info_rmap_pid(struct vx_info *vxi, int pid, -+ const char *func, const char *file, int line) -+{ -+ if ((((((vxi) ? (vxi)->vx_flags : 0)) & (0x00000010)) ^ (0))) { -+ do { } while (0); -+ -+ -+ -+ -+ if ((pid == 1) && vxi->vx_initpid) -+ return vxi->vx_initpid; -+ if (pid == vxi->vx_initpid) -+ return ~0U; -+ } -+ return pid; -+} -+# 1408 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2 -+ -+static inline __attribute__((always_inline)) pid_t task_pid_nr(struct task_struct *tsk) -+{ -+ return tsk->pid; -+} -+ -+pid_t task_pid_nr_ns(struct task_struct *tsk, struct pid_namespace *ns); -+ -+static inline __attribute__((always_inline)) pid_t task_pid_vnr(struct task_struct *tsk) -+{ -+ return __vx_info_map_pid((get_current()->vx_info), (pid_vnr(task_pid(tsk))), __func__, "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h", 1418); -+} -+ -+ -+static inline __attribute__((always_inline)) pid_t task_tgid_nr(struct task_struct *tsk) -+{ -+ return tsk->tgid; -+} -+ -+pid_t task_tgid_nr_ns(struct task_struct *tsk, struct pid_namespace *ns); -+ -+static inline __attribute__((always_inline)) pid_t task_tgid_vnr(struct task_struct *tsk) -+{ -+ return __vx_info_map_pid((get_current()->vx_info), (pid_vnr(task_tgid(tsk))), __func__, "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h", 1431); -+} -+ -+ -+static inline __attribute__((always_inline)) pid_t task_pgrp_nr(struct task_struct *tsk) -+{ -+ return tsk->signal->__pgrp; -+} -+ -+pid_t task_pgrp_nr_ns(struct task_struct *tsk, struct pid_namespace *ns); -+ -+static inline __attribute__((always_inline)) pid_t task_pgrp_vnr(struct task_struct *tsk) -+{ -+ return pid_vnr(task_pgrp(tsk)); -+} -+ -+ -+static inline __attribute__((always_inline)) pid_t task_session_nr(struct task_struct *tsk) -+{ -+ return tsk->signal->__session; -+} -+ -+pid_t task_session_nr_ns(struct task_struct *tsk, struct pid_namespace *ns); -+ -+static inline __attribute__((always_inline)) pid_t task_session_vnr(struct task_struct *tsk) -+{ -+ return pid_vnr(task_session(tsk)); -+} -+# 1469 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+static inline __attribute__((always_inline)) int pid_alive(struct task_struct *p) -+{ -+ return p->pids[PIDTYPE_PID].pid != 0; -+} -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int is_global_init(struct task_struct *tsk) -+{ -+ return tsk->pid == 1; -+} -+ -+ -+ -+ -+ -+extern int is_container_init(struct task_struct *tsk); -+ -+extern struct pid *cad_pid; -+ -+extern void free_task(struct task_struct *tsk); -+ -+ -+extern void __put_task_struct(struct task_struct *t); -+ -+static inline __attribute__((always_inline)) void put_task_struct(struct task_struct *t) -+{ -+ if (atomic_dec_and_test(&t->usage)) -+ __put_task_struct(t); -+} -+ -+extern cputime_t task_utime(struct task_struct *p); -+extern cputime_t task_stime(struct task_struct *p); -+extern cputime_t task_gtime(struct task_struct *p); -+# 1567 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+extern int set_cpus_allowed_ptr(struct task_struct *p, -+ const cpumask_t *new_mask); -+# 1578 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+static inline __attribute__((always_inline)) int set_cpus_allowed(struct task_struct *p, cpumask_t new_mask) -+{ -+ return set_cpus_allowed_ptr(p, &new_mask); -+} -+ -+extern unsigned long long sched_clock(void); -+ -+extern void sched_clock_init(void); -+extern u64 sched_clock_cpu(int cpu); -+# 1601 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+extern void sched_clock_tick(void); -+extern void sched_clock_idle_sleep_event(void); -+extern void sched_clock_idle_wakeup_event(u64 delta_ns); -+ -+ -+ -+ -+ -+ -+extern unsigned long long cpu_clock(int cpu); -+ -+extern unsigned long long -+task_sched_runtime(struct task_struct *task); -+ -+ -+ -+extern void sched_exec(void); -+ -+ -+ -+ -+extern void sched_clock_idle_sleep_event(void); -+extern void sched_clock_idle_wakeup_event(u64 delta_ns); -+ -+ -+extern void idle_task_exit(void); -+ -+ -+ -+ -+extern void sched_idle_next(void); -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void wake_up_idle_cpu(int cpu) { } -+ -+ -+ -+extern unsigned int sysctl_sched_latency; -+extern unsigned int sysctl_sched_min_granularity; -+extern unsigned int sysctl_sched_wakeup_granularity; -+extern unsigned int sysctl_sched_child_runs_first; -+extern unsigned int sysctl_sched_features; -+extern unsigned int sysctl_sched_migration_cost; -+extern unsigned int sysctl_sched_nr_migrate; -+extern unsigned int sysctl_sched_shares_ratelimit; -+ -+int sched_nr_latency_handler(struct ctl_table *table, int write, -+ struct file *file, void *buffer, size_t *length, -+ loff_t *ppos); -+ -+extern unsigned int sysctl_sched_rt_period; -+extern int sysctl_sched_rt_runtime; -+ -+int sched_rt_handler(struct ctl_table *table, int write, -+ struct file *filp, void *buffer, size_t *lenp, -+ loff_t *ppos); -+ -+extern unsigned int sysctl_sched_compat_yield; -+ -+ -+extern int rt_mutex_getprio(struct task_struct *p); -+extern void rt_mutex_setprio(struct task_struct *p, int prio); -+extern void rt_mutex_adjust_pi(struct task_struct *p); -+# 1674 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+extern void set_user_nice(struct task_struct *p, long nice); -+extern int task_prio(const struct task_struct *p); -+extern int task_nice(const struct task_struct *p); -+extern int can_nice(const struct task_struct *p, const int nice); -+extern int task_curr(const struct task_struct *p); -+extern int idle_cpu(int cpu); -+extern int sched_setscheduler(struct task_struct *, int, struct sched_param *); -+extern int sched_setscheduler_nocheck(struct task_struct *, int, -+ struct sched_param *); -+extern struct task_struct *idle_task(int cpu); -+extern struct task_struct *curr_task(int cpu); -+extern void set_curr_task(int cpu, struct task_struct *p); -+ -+void yield(void); -+ -+ -+ -+ -+extern struct exec_domain default_exec_domain; -+ -+union thread_union { -+ struct thread_info thread_info; -+ unsigned long stack[(((1UL) << 12) << 0)/sizeof(long)]; -+}; -+ -+ -+static inline __attribute__((always_inline)) int kstack_end(void *addr) -+{ -+ -+ -+ -+ return !(((unsigned long)addr+sizeof(void*)-1) & ((((1UL) << 12) << 0)-sizeof(void*))); -+} -+ -+ -+extern union thread_union init_thread_union; -+extern struct task_struct init_task; -+ -+extern struct mm_struct init_mm; -+ -+extern struct pid_namespace init_pid_ns; -+# 1730 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+extern struct task_struct *find_task_by_pid_type_ns(int type, int pid, -+ struct pid_namespace *ns); -+ -+extern struct task_struct *find_task_by_vpid(pid_t nr); -+extern struct task_struct *find_task_by_pid_ns(pid_t nr, -+ struct pid_namespace *ns); -+ -+extern void __set_special_pids(struct pid *pid); -+ -+ -+extern struct user_struct * alloc_uid(struct user_namespace *, uid_t); -+static inline __attribute__((always_inline)) struct user_struct *get_uid(struct user_struct *u) -+{ -+ atomic_inc(&u->__count); -+ return u; -+} -+extern void free_uid(struct user_struct *); -+extern void switch_uid(struct user_struct *); -+extern void release_uids(struct user_namespace *ns); -+ -+ -+ -+extern void do_timer(unsigned long ticks); -+ -+extern int wake_up_state(struct task_struct *tsk, unsigned int state); -+extern int wake_up_process(struct task_struct *tsk); -+extern void wake_up_new_task(struct task_struct *tsk, -+ unsigned long clone_flags); -+ -+ extern void kick_process(struct task_struct *tsk); -+ -+ -+ -+extern void sched_fork(struct task_struct *p, int clone_flags); -+extern void sched_dead(struct task_struct *p); -+ -+extern int in_group_p(gid_t); -+extern int in_egroup_p(gid_t); -+ -+extern void proc_caches_init(void); -+extern void flush_signals(struct task_struct *); -+extern void ignore_signals(struct task_struct *); -+extern void flush_signal_handlers(struct task_struct *, int force_default); -+extern int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info); -+ -+static inline __attribute__((always_inline)) int dequeue_signal_lock(struct task_struct *tsk, sigset_t *mask, siginfo_t *info) -+{ -+ unsigned long flags; -+ int ret; -+ -+ do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = _spin_lock_irqsave(&tsk->sighand->siglock); } while (0); -+ ret = dequeue_signal(tsk, mask, info); -+ do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); _spin_unlock_irqrestore(&tsk->sighand->siglock, flags); } while (0); -+ -+ return ret; -+} -+ -+extern void block_all_signals(int (*notifier)(void *priv), void *priv, -+ sigset_t *mask); -+extern void unblock_all_signals(void); -+extern void release_task(struct task_struct * p); -+extern int send_sig_info(int, struct siginfo *, struct task_struct *); -+extern int force_sigsegv(int, struct task_struct *); -+extern int force_sig_info(int, struct siginfo *, struct task_struct *); -+extern int __kill_pgrp_info(int sig, struct siginfo *info, struct pid *pgrp); -+extern int kill_pid_info(int sig, struct siginfo *info, struct pid *pid); -+extern int kill_pid_info_as_uid(int, struct siginfo *, struct pid *, uid_t, uid_t, u32); -+extern int kill_pgrp(struct pid *pid, int sig, int priv); -+extern int kill_pid(struct pid *pid, int sig, int priv); -+extern int kill_proc_info(int, struct siginfo *, pid_t); -+extern int do_notify_parent(struct task_struct *, int); -+extern void force_sig(int, struct task_struct *); -+extern void force_sig_specific(int, struct task_struct *); -+extern int send_sig(int, struct task_struct *, int); -+extern void zap_other_threads(struct task_struct *p); -+extern struct sigqueue *sigqueue_alloc(void); -+extern void sigqueue_free(struct sigqueue *); -+extern int send_sigqueue(struct sigqueue *, struct task_struct *, int group); -+extern int do_sigaction(int, struct k_sigaction *, struct k_sigaction *); -+extern int do_sigaltstack(const stack_t *, stack_t *, unsigned long); -+ -+static inline __attribute__((always_inline)) int kill_cad_pid(int sig, int priv) -+{ -+ return kill_pid(cad_pid, sig, priv); -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int is_si_special(const struct siginfo *info) -+{ -+ return info <= ((struct siginfo *) 2); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) int on_sig_stack(unsigned long sp) -+{ -+ return (sp - get_current()->sas_ss_sp < get_current()->sas_ss_size); -+} -+ -+static inline __attribute__((always_inline)) int sas_ss_flags(unsigned long sp) -+{ -+ return (get_current()->sas_ss_size == 0 ? 2 -+ : on_sig_stack(sp) ? 1 : 0); -+} -+ -+ -+ -+ -+extern struct mm_struct * mm_alloc(void); -+ -+ -+extern void __mmdrop(struct mm_struct *); -+static inline __attribute__((always_inline)) void mmdrop(struct mm_struct * mm) -+{ -+ if (__builtin_expect(!!(atomic_dec_and_test(&mm->mm_count)), 0)) -+ __mmdrop(mm); -+} -+ -+ -+extern void mmput(struct mm_struct *); -+ -+extern struct mm_struct *get_task_mm(struct task_struct *task); -+ -+extern void mm_release(struct task_struct *, struct mm_struct *); -+ -+extern struct mm_struct *dup_mm(struct task_struct *tsk); -+ -+extern int copy_thread(int, unsigned long, unsigned long, unsigned long, struct task_struct *, struct pt_regs *); -+extern void flush_thread(void); -+extern void exit_thread(void); -+ -+extern void exit_files(struct task_struct *); -+extern void __cleanup_signal(struct signal_struct *); -+extern void __cleanup_sighand(struct sighand_struct *); -+ -+extern void exit_itimers(struct signal_struct *); -+extern void flush_itimer_signals(void); -+ -+extern void do_group_exit(int); -+ -+extern void daemonize(const char *, ...); -+extern int allow_signal(int); -+extern int disallow_signal(int); -+ -+extern int do_execve(char *, char * *, char * *, struct pt_regs *); -+extern long do_fork(unsigned long, unsigned long, struct pt_regs *, unsigned long, int *, int *); -+struct task_struct *fork_idle(int); -+ -+extern void set_task_comm(struct task_struct *tsk, char *from); -+extern char *get_task_comm(char *to, struct task_struct *tsk); -+ -+ -+extern unsigned long wait_task_inactive(struct task_struct *, long match_state); -+# 1919 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+static inline __attribute__((always_inline)) int has_group_leader_pid(struct task_struct *p) -+{ -+ return p->pid == p->tgid; -+} -+ -+static inline __attribute__((always_inline)) -+int same_thread_group(struct task_struct *p1, struct task_struct *p2) -+{ -+ return p1->tgid == p2->tgid; -+} -+ -+static inline __attribute__((always_inline)) struct task_struct *next_thread(const struct task_struct *p) -+{ -+ return ({ const typeof( ((struct task_struct *)0)->thread_group ) *__mptr = (({ typeof(p->thread_group.next) _________p1 = (*(volatile typeof(p->thread_group.next) *)&(p->thread_group.next)); do { } while (0); (_________p1); })); (struct task_struct *)( (char *)__mptr - __builtin_offsetof(struct task_struct,thread_group) );}); -+ -+} -+ -+static inline __attribute__((always_inline)) int thread_group_empty(struct task_struct *p) -+{ -+ return list_empty(&p->thread_group); -+} -+# 1954 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+static inline __attribute__((always_inline)) void task_lock(struct task_struct *p) -+{ -+ _spin_lock(&p->alloc_lock); -+} -+ -+static inline __attribute__((always_inline)) void task_unlock(struct task_struct *p) -+{ -+ do {__raw_spin_unlock(&(&p->alloc_lock)->raw_lock); (void)0; } while (0); -+} -+ -+extern struct sighand_struct *lock_task_sighand(struct task_struct *tsk, -+ unsigned long *flags); -+ -+static inline __attribute__((always_inline)) void unlock_task_sighand(struct task_struct *tsk, -+ unsigned long *flags) -+{ -+ do { ({ unsigned long __dummy; typeof(*flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); _spin_unlock_irqrestore(&tsk->sighand->siglock, *flags); } while (0); -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void setup_thread_stack(struct task_struct *p, struct task_struct *org) -+{ -+ *((struct thread_info *)(p)->stack) = *((struct thread_info *)(org)->stack); -+ ((struct thread_info *)(p)->stack)->task = p; -+} -+ -+static inline __attribute__((always_inline)) unsigned long *end_of_stack(struct task_struct *p) -+{ -+ return (unsigned long *)((char *) ((struct thread_info *)(p)->stack) + 1); -+} -+ -+ -+ -+static inline __attribute__((always_inline)) int object_is_on_stack(void *obj) -+{ -+ void *stack = ((get_current())->stack); -+ -+ return (obj >= stack) && ((char *) obj < ((char *) stack + (((1UL) << 12) << 0))); -+} -+ -+extern void thread_info_cache_init(void); -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void set_tsk_thread_flag(struct task_struct *tsk, int flag) -+{ -+ set_ti_thread_flag(((struct thread_info *)(tsk)->stack), flag); -+} -+ -+static inline __attribute__((always_inline)) void clear_tsk_thread_flag(struct task_struct *tsk, int flag) -+{ -+ clear_ti_thread_flag(((struct thread_info *)(tsk)->stack), flag); -+} -+ -+static inline __attribute__((always_inline)) int test_and_set_tsk_thread_flag(struct task_struct *tsk, int flag) -+{ -+ return test_and_set_ti_thread_flag(((struct thread_info *)(tsk)->stack), flag); -+} -+ -+static inline __attribute__((always_inline)) int test_and_clear_tsk_thread_flag(struct task_struct *tsk, int flag) -+{ -+ return test_and_clear_ti_thread_flag(((struct thread_info *)(tsk)->stack), flag); -+} -+ -+static inline __attribute__((always_inline)) int test_tsk_thread_flag(struct task_struct *tsk, int flag) -+{ -+ return test_ti_thread_flag(((struct thread_info *)(tsk)->stack), flag); -+} -+ -+static inline __attribute__((always_inline)) void set_tsk_need_resched(struct task_struct *tsk) -+{ -+ set_tsk_thread_flag(tsk,3); -+} -+ -+static inline __attribute__((always_inline)) void clear_tsk_need_resched(struct task_struct *tsk) -+{ -+ clear_tsk_thread_flag(tsk,3); -+} -+ -+static inline __attribute__((always_inline)) int test_tsk_need_resched(struct task_struct *tsk) -+{ -+ return __builtin_expect(!!(test_tsk_thread_flag(tsk,3)), 0); -+} -+ -+static inline __attribute__((always_inline)) int signal_pending(struct task_struct *p) -+{ -+ return __builtin_expect(!!(test_tsk_thread_flag(p,2)), 0); -+} -+ -+extern int __fatal_signal_pending(struct task_struct *p); -+ -+static inline __attribute__((always_inline)) int fatal_signal_pending(struct task_struct *p) -+{ -+ return signal_pending(p) && __fatal_signal_pending(p); -+} -+ -+static inline __attribute__((always_inline)) int signal_pending_state(long state, struct task_struct *p) -+{ -+ if (!(state & (1 | 128))) -+ return 0; -+ if (!signal_pending(p)) -+ return 0; -+ -+ return (state & 1) || __fatal_signal_pending(p); -+} -+ -+static inline __attribute__((always_inline)) int need_resched(void) -+{ -+ return __builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 3)), 0); -+} -+# 2077 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+extern int _cond_resched(void); -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int cond_resched(void) -+{ -+ return _cond_resched(); -+} -+ -+extern int cond_resched_lock(spinlock_t * lock); -+extern int cond_resched_softirq(void); -+static inline __attribute__((always_inline)) int cond_resched_bkl(void) -+{ -+ return _cond_resched(); -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) int spin_needbreak(spinlock_t *lock) -+{ -+ -+ -+ -+ return 0; -+ -+} -+ -+ -+ -+ -+ -+ -+ -+extern void recalc_sigpending_and_wake(struct task_struct *t); -+extern void recalc_sigpending(void); -+ -+extern void signal_wake_up(struct task_struct *t, int resume_stopped); -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) unsigned int task_cpu(const struct task_struct *p) -+{ -+ return ((struct thread_info *)(p)->stack)->cpu; -+} -+ -+extern void set_task_cpu(struct task_struct *p, unsigned int cpu); -+# 2146 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+extern void arch_pick_mmap_layout(struct mm_struct *mm); -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void -+__trace_special(void *__tr, void *__data, -+ unsigned long arg1, unsigned long arg2, unsigned long arg3) -+{ -+} -+ -+ -+extern long sched_setaffinity(pid_t pid, const cpumask_t *new_mask); -+extern long sched_getaffinity(pid_t pid, cpumask_t *mask); -+ -+extern int sched_mc_power_savings, sched_smt_power_savings; -+ -+extern void normalize_rt_tasks(void); -+# 2192 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+static inline __attribute__((always_inline)) void add_rchar(struct task_struct *tsk, ssize_t amt) -+{ -+ tsk->ioac.rchar += amt; -+} -+ -+static inline __attribute__((always_inline)) void add_wchar(struct task_struct *tsk, ssize_t amt) -+{ -+ tsk->ioac.wchar += amt; -+} -+ -+static inline __attribute__((always_inline)) void inc_syscr(struct task_struct *tsk) -+{ -+ tsk->ioac.syscr++; -+} -+ -+static inline __attribute__((always_inline)) void inc_syscw(struct task_struct *tsk) -+{ -+ tsk->ioac.syscw++; -+} -+# 2237 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" -+static inline __attribute__((always_inline)) void mm_update_next_owner(struct mm_struct *mm) -+{ -+} -+ -+static inline __attribute__((always_inline)) void mm_init_owner(struct mm_struct *mm, struct task_struct *p) -+{ -+} -+# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/smp_lock.h" 2 -+ -+ -+ -+extern int __attribute__((section(".spinlock.text"))) __reacquire_kernel_lock(void); -+extern void __attribute__((section(".spinlock.text"))) __release_kernel_lock(void); -+# 20 "/d/kernels/linux-2.6.27.10-clickport/include/linux/smp_lock.h" -+static inline __attribute__((always_inline)) int reacquire_kernel_lock(struct task_struct *task) -+{ -+ if (__builtin_expect(!!(task->lock_depth >= 0), 0)) -+ return __reacquire_kernel_lock(); -+ return 0; -+} -+ -+extern void __attribute__((section(".spinlock.text"))) lock_kernel(void) ; -+extern void __attribute__((section(".spinlock.text"))) unlock_kernel(void) ; -+ -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void cycle_kernel_lock(void) -+{ -+ lock_kernel(); -+ unlock_kernel(); -+} -+# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq.h" 1 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq_32.h" 1 -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h" 1 -+# 20 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irqreturn.h" 1 -+# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irqreturn.h" -+typedef int irqreturn_t; -+# 21 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h" 2 -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irq.h" 1 -+# 11 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irq.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irq_vectors.h" 1 -+# 12 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irq.h" 2 -+ -+static inline __attribute__((always_inline)) int irq_canonicalize(int irq) -+{ -+ return ((irq == 2) ? 9 : irq); -+} -+ -+ -+ -+ -+ -+ -+ extern void irq_ctx_init(int cpu); -+ extern void irq_ctx_exit(int cpu); -+# 40 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irq.h" -+extern void fixup_irqs(cpumask_t map); -+ -+ -+extern unsigned int do_IRQ(struct pt_regs *regs); -+extern void init_IRQ(void); -+extern void native_init_IRQ(void); -+ -+ -+extern unsigned long used_vectors[(((256) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; -+# 24 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irq_regs.h" 1 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irq_regs_32.h" 1 -+# 12 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irq_regs_32.h" -+extern __typeof__(struct pt_regs *) per_cpu__irq_regs; -+ -+static inline __attribute__((always_inline)) struct pt_regs *get_irq_regs(void) -+{ -+ return ({ typeof(per_cpu__irq_regs) ret__; switch (sizeof(per_cpu__irq_regs)) { case 1: asm("mov" "b ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__irq_regs)); break; case 2: asm("mov" "w ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__irq_regs)); break; case 4: asm("mov" "l ""%%fs:""%1,%0" : "=r" (ret__) : "m" (per_cpu__irq_regs)); break; default: __bad_percpu_size(); } ret__; }); -+} -+ -+static inline __attribute__((always_inline)) struct pt_regs *set_irq_regs(struct pt_regs *new_regs) -+{ -+ struct pt_regs *old_regs; -+ -+ old_regs = get_irq_regs(); -+ do { typedef typeof(per_cpu__irq_regs) T__; if (0) { T__ tmp__; tmp__ = (new_regs); } switch (sizeof(per_cpu__irq_regs)) { case 1: asm("mov" "b %1,""%%fs:""%0" : "+m" (per_cpu__irq_regs) : "ri" ((T__)new_regs)); break; case 2: asm("mov" "w %1,""%%fs:""%0" : "+m" (per_cpu__irq_regs) : "ri" ((T__)new_regs)); break; case 4: asm("mov" "l %1,""%%fs:""%0" : "+m" (per_cpu__irq_regs) : "ri" ((T__)new_regs)); break; default: __bad_percpu_size(); } } while (0); -+ -+ return old_regs; -+} -+# 3 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irq_regs.h" 2 -+# 26 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h" 2 -+ -+struct irq_desc; -+typedef void (*irq_flow_handler_t)(unsigned int irq, -+ struct irq_desc *desc); -+# 74 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h" -+struct proc_dir_entry; -+struct msi_desc; -+# 99 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h" -+struct irq_chip { -+ const char *name; -+ unsigned int (*startup)(unsigned int irq); -+ void (*shutdown)(unsigned int irq); -+ void (*enable)(unsigned int irq); -+ void (*disable)(unsigned int irq); -+ -+ void (*ack)(unsigned int irq); -+ void (*mask)(unsigned int irq); -+ void (*mask_ack)(unsigned int irq); -+ void (*unmask)(unsigned int irq); -+ void (*eoi)(unsigned int irq); -+ -+ void (*end)(unsigned int irq); -+ void (*set_affinity)(unsigned int irq, cpumask_t dest); -+ int (*retrigger)(unsigned int irq); -+ int (*set_type)(unsigned int irq, unsigned int flow_type); -+ int (*set_wake)(unsigned int irq, unsigned int on); -+# 126 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h" -+ const char *xxx_typename; -+}; -+# 153 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h" -+struct irq_desc { -+ irq_flow_handler_t handle_irq; -+ struct irq_chip *chip; -+ struct msi_desc *msi_desc; -+ void *handler_data; -+ void *chip_data; -+ struct irqaction *action; -+ unsigned int status; -+ -+ unsigned int depth; -+ unsigned int wake_depth; -+ unsigned int irq_count; -+ unsigned int irqs_unhandled; -+ unsigned long last_unhandled; -+ spinlock_t lock; -+ -+ cpumask_t affinity; -+ unsigned int cpu; -+ -+ -+ cpumask_t pending_mask; -+ -+ -+ struct proc_dir_entry *dir; -+ -+ const char *name; -+} __attribute__((__aligned__(1 << ((7))))); -+ -+extern struct irq_desc irq_desc[224]; -+ -+ -+ -+ -+ -+typedef struct irq_chip hw_irq_controller; -+ -+typedef struct irq_desc irq_desc_t; -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hw_irq.h" 1 -+# 21 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hw_irq.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/profile.h" 1 -+# 9 "/d/kernels/linux-2.6.27.10-clickport/include/linux/profile.h" -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/errno.h" 1 -+# 10 "/d/kernels/linux-2.6.27.10-clickport/include/linux/profile.h" 2 -+ -+ -+ -+ -+ -+ -+struct proc_dir_entry; -+struct pt_regs; -+struct notifier_block; -+ -+ -+void create_prof_cpu_mask(struct proc_dir_entry *de); -+ -+ -+ -+ -+ -+ -+enum profile_type { -+ PROFILE_TASK_EXIT, -+ PROFILE_MUNMAP -+}; -+ -+ -+ -+extern int prof_on __attribute__((__section__(".data.read_mostly"))); -+ -+ -+void __attribute__ ((__section__(".init.text"))) profile_init(void); -+void profile_tick(int type); -+ -+ -+ -+ -+void profile_hits(int type, void *ip, unsigned int nr_hits); -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void profile_hit(int type, void *ip) -+{ -+ -+ -+ -+ if (__builtin_expect(!!(prof_on == type), 0)) -+ profile_hits(type, ip, 1); -+} -+ -+struct task_struct; -+struct mm_struct; -+ -+ -+void profile_task_exit(struct task_struct * task); -+ -+ -+ -+ -+int profile_handoff_task(struct task_struct * task); -+ -+ -+void profile_munmap(unsigned long addr); -+ -+int task_handoff_register(struct notifier_block * n); -+int task_handoff_unregister(struct notifier_block * n); -+ -+int profile_event_register(enum profile_type, struct notifier_block * n); -+int profile_event_unregister(enum profile_type, struct notifier_block * n); -+ -+int register_timer_hook(int (*hook)(struct pt_regs *)); -+void unregister_timer_hook(int (*hook)(struct pt_regs *)); -+ -+struct pt_regs; -+# 22 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hw_irq.h" 2 -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1 -+# 25 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hw_irq.h" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/sections.h" 1 -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/sections.h" 1 -+ -+ -+ -+ -+ -+extern char _text[], _stext[], _etext[]; -+extern char _data[], _sdata[], _edata[]; -+extern char __bss_start[], __bss_stop[]; -+extern char __init_begin[], __init_end[]; -+extern char _sinittext[], _einittext[]; -+extern char _end[]; -+extern char __per_cpu_start[], __per_cpu_end[]; -+extern char __kprobes_text_start[], __kprobes_text_end[]; -+extern char __initdata_begin[], __initdata_end[]; -+extern char __start_rodata[], __end_rodata[]; -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/sections.h" 2 -+# 27 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hw_irq.h" 2 -+ -+ -+ -+ -+extern void apic_timer_interrupt(void); -+extern void error_interrupt(void); -+extern void spurious_interrupt(void); -+extern void thermal_interrupt(void); -+extern void reschedule_interrupt(void); -+ -+extern void invalidate_interrupt(void); -+extern void invalidate_interrupt0(void); -+extern void invalidate_interrupt1(void); -+extern void invalidate_interrupt2(void); -+extern void invalidate_interrupt3(void); -+extern void invalidate_interrupt4(void); -+extern void invalidate_interrupt5(void); -+extern void invalidate_interrupt6(void); -+extern void invalidate_interrupt7(void); -+ -+extern void irq_move_cleanup_interrupt(void); -+extern void threshold_interrupt(void); -+ -+extern void call_function_interrupt(void); -+extern void call_function_single_interrupt(void); -+ -+ -+extern void disable_8259A_irq(unsigned int irq); -+extern void enable_8259A_irq(unsigned int irq); -+extern int i8259A_irq_pending(unsigned int irq); -+extern void make_8259A_irq(unsigned int irq); -+extern void init_8259A(int aeoi); -+ -+ -+ -+extern unsigned long io_apic_irqs; -+ -+extern void init_VISWS_APIC_irqs(void); -+extern void setup_IO_APIC(void); -+extern void disable_IO_APIC(void); -+extern void print_IO_APIC(void); -+extern int IO_APIC_get_PCI_irq_vector(int bus, int slot, int fn); -+extern void setup_ioapic_dest(void); -+ -+ -+ -+ -+ -+ -+extern void send_IPI_self(int vector); -+extern void send_IPI(int dest, int vector); -+ -+ -+extern atomic_t irq_err_count; -+extern atomic_t irq_mis_count; -+ -+ -+extern void eisa_set_level_irq(unsigned int irq); -+ -+ -+ -+extern "C" __attribute__((regparm(0))) void vic_cpi_interrupt(void); -+extern "C" __attribute__((regparm(0))) void vic_sys_interrupt(void); -+extern "C" __attribute__((regparm(0))) void vic_cmn_interrupt(void); -+extern "C" __attribute__((regparm(0))) void qic_timer_interrupt(void); -+extern "C" __attribute__((regparm(0))) void qic_invalidate_interrupt(void); -+extern "C" __attribute__((regparm(0))) void qic_reschedule_interrupt(void); -+extern "C" __attribute__((regparm(0))) void qic_enable_irq_interrupt(void); -+extern "C" __attribute__((regparm(0))) void qic_call_function_interrupt(void); -+# 109 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hw_irq.h" -+extern void (*const interrupt[224])(void); -+# 120 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hw_irq.h" -+static inline __attribute__((always_inline)) void lock_vector_lock(void) {} -+static inline __attribute__((always_inline)) void unlock_vector_lock(void) {} -+static inline __attribute__((always_inline)) void __setup_vector_irq(int cpu) {} -+# 195 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h" 2 -+ -+extern int setup_irq(unsigned int irq, struct irqaction *xxx_new); -+# 208 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h" -+void set_pending_irq(unsigned int irq, cpumask_t mask); -+void move_native_irq(int irq); -+void move_masked_irq(int irq); -+# 242 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h" -+static inline __attribute__((always_inline)) void set_balance_irq_affinity(unsigned int irq, cpumask_t mask) -+{ -+} -+ -+ -+extern int no_irq_affinity; -+ -+static inline __attribute__((always_inline)) int irq_balancing_disabled(unsigned int irq) -+{ -+ return irq_desc[irq].status & 0x00400000; -+} -+ -+ -+extern int handle_IRQ_event(unsigned int irq, struct irqaction *action); -+ -+ -+ -+ -+ -+extern void handle_level_irq(unsigned int irq, struct irq_desc *desc); -+extern void handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc); -+extern void handle_edge_irq(unsigned int irq, struct irq_desc *desc); -+extern void handle_simple_irq(unsigned int irq, struct irq_desc *desc); -+extern void handle_percpu_irq(unsigned int irq, struct irq_desc *desc); -+extern void handle_bad_irq(unsigned int irq, struct irq_desc *desc); -+ -+ -+ -+ -+ -+extern unsigned int __do_IRQ(unsigned int irq); -+# 281 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h" -+static inline __attribute__((always_inline)) void generic_handle_irq(unsigned int irq) -+{ -+ struct irq_desc *desc = irq_desc + irq; -+ -+ -+ -+ -+ if (__builtin_expect(!!(desc->handle_irq), 1)) -+ desc->handle_irq(irq, desc); -+ else -+ __do_IRQ(irq); -+ -+} -+ -+ -+extern void note_interrupt(unsigned int irq, struct irq_desc *desc, -+ int action_ret); -+ -+ -+void check_irq_resend(struct irq_desc *desc, unsigned int irq); -+ -+ -+extern int noirqdebug_setup(char *str); -+ -+ -+extern int can_request_irq(unsigned int irq, unsigned long irqflags); -+ -+ -+extern struct irq_chip no_irq_chip; -+extern struct irq_chip dummy_irq_chip; -+ -+extern void -+set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip, -+ irq_flow_handler_t handle); -+extern void -+set_irq_chip_and_handler_name(unsigned int irq, struct irq_chip *chip, -+ irq_flow_handler_t handle, const char *name); -+ -+extern void -+__set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained, -+ const char *name); -+ -+ -+static inline __attribute__((always_inline)) void __set_irq_handler_unlocked(int irq, -+ irq_flow_handler_t handler) -+{ -+ irq_desc[irq].handle_irq = handler; -+} -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void -+set_irq_handler(unsigned int irq, irq_flow_handler_t handle) -+{ -+ __set_irq_handler(irq, handle, 0, 0); -+} -+ -+ -+ -+ -+ -+ -+static inline __attribute__((always_inline)) void -+set_irq_chained_handler(unsigned int irq, -+ irq_flow_handler_t handle) -+{ -+ __set_irq_handler(irq, handle, 1, 0); -+} -+ -+extern void set_irq_noprobe(unsigned int irq); -+extern void set_irq_probe(unsigned int irq); -+ -+ -+extern int create_irq(void); -+extern void destroy_irq(unsigned int irq); -+ -+ -+static inline __attribute__((always_inline)) int irq_has_action(unsigned int irq) -+{ -+ struct irq_desc *desc = irq_desc + irq; -+ return desc->action != 0; -+} -+ -+ -+extern void dynamic_irq_init(unsigned int irq); -+extern void dynamic_irq_cleanup(unsigned int irq); -+ -+ -+extern int set_irq_chip(unsigned int irq, struct irq_chip *chip); -+extern int set_irq_data(unsigned int irq, void *data); -+extern int set_irq_chip_data(unsigned int irq, void *data); -+extern int set_irq_type(unsigned int irq, unsigned int type); -+extern int set_irq_msi(unsigned int irq, struct msi_desc *entry); -+# 6 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq_32.h" 2 -+ -+typedef struct { -+ unsigned int __softirq_pending; -+ unsigned long idle_timestamp; -+ unsigned int __nmi_count; -+ unsigned int apic_timer_irqs; -+ unsigned int irq0_irqs; -+ unsigned int irq_resched_count; -+ unsigned int irq_call_count; -+ unsigned int irq_tlb_count; -+ unsigned int irq_thermal_count; -+ unsigned int irq_spurious_count; -+} __attribute__((__aligned__((1 << (7))))) irq_cpustat_t; -+ -+extern __typeof__(irq_cpustat_t) per_cpu__irq_stat; -+ -+ -+ -+ -+void ack_bad_irq(unsigned int irq); -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq_cpustat.h" 1 -+# 27 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq_32.h" 2 -+# 3 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq.h" 2 -+ -+ -+ -+ -+extern u64 arch_irq_stat_cpu(unsigned int cpu); -+ -+ -+extern u64 arch_irq_stat(void); -+# 8 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h" 2 -+# 108 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h" -+extern void synchronize_irq(unsigned int irq); -+ -+ -+ -+ -+struct task_struct; -+ -+ -+static inline __attribute__((always_inline)) void account_system_vtime(struct task_struct *tsk) -+{ -+} -+# 146 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h" -+extern void irq_enter(void); -+# 162 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h" -+extern void irq_exit(void); -+# 33 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" 2 -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ctype.h" 1 -+# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ctype.h" -+extern unsigned char _ctype[]; -+# 37 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ctype.h" -+static inline __attribute__((always_inline)) unsigned char __tolower(unsigned char c) -+{ -+ if ((((_ctype[(int)(unsigned char)(c)])&(0x01)) != 0)) -+ c -= 'A'-'a'; -+ return c; -+} -+ -+static inline __attribute__((always_inline)) unsigned char __toupper(unsigned char c) -+{ -+ if ((((_ctype[(int)(unsigned char)(c)])&(0x02)) != 0)) -+ c -= 'a'-'A'; -+ return c; -+} -+# 35 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" 2 -+ -+ -+} -+# 1 "/d/click/click-1.6.0-27/linuxmodule/../include/click/cxxunprotect.h" 1 -+# 39 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" 2 -+# 76 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" -+extern "C" { -+void click_chatter(const char *fmt, ...); -+} -+# 96 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" -+extern "C" { -+void *click_lalloc(size_t size); -+void click_lfree(volatile void *p, size_t size); -+} -+# 108 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" -+ -+extern void click_random_srandom(); -+ -+ -+ -+extern "C" { -+extern uint32_t click_random_seed; -+extern void srandom(uint32_t); -+ -+inline __attribute__((always_inline)) uint32_t -+random() -+{ -+ click_random_seed = click_random_seed*69069L + 1; -+ return (click_random_seed ^ jiffies) & 2147483647; -+} -+} -+ -+ -+ -+ -+ -+int click_qsort(void *base, size_t n, size_t size, int (*compar)(const void *, const void *, void *), void *thunk); -+int click_qsort(void *base, size_t n, size_t size, int (*compar)(const void *, const void *)); -+# 150 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" -+extern "C" { -+ -+long strtol(const char *, char **, int); -+ -+inline __attribute__((always_inline)) unsigned long -+strtoul(const char *nptr, char **endptr, int base) -+{ -+ return simple_strtoul(nptr, endptr, base); -+} -+# 170 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" -+} -+# 270 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" -+inline __attribute__((always_inline)) struct timeval -+make_timeval(int sec, int usec) -+{ -+ struct timeval tv; -+ tv.tv_sec = sec; -+ tv.tv_usec = usec; -+ return tv; -+} -+ -+inline __attribute__((always_inline)) bool -+operator==(const struct timeval &a, const struct timeval &b) -+{ -+ return a.tv_sec == b.tv_sec && a.tv_usec == b.tv_usec; -+} -+ -+inline __attribute__((always_inline)) bool -+operator!=(const struct timeval &a, const struct timeval &b) -+{ -+ return a.tv_sec != b.tv_sec || a.tv_usec != b.tv_usec; -+} -+ -+inline __attribute__((always_inline)) bool -+operator<(const struct timeval &a, const struct timeval &b) -+{ -+ return a.tv_sec < b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec < b.tv_usec); -+} -+ -+inline __attribute__((always_inline)) bool -+operator<=(const struct timeval &a, const struct timeval &b) -+{ -+ return a.tv_sec < b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec <= b.tv_usec); -+} -+ -+inline __attribute__((always_inline)) bool -+operator>=(const struct timeval &a, const struct timeval &b) -+{ -+ return a.tv_sec > b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec >= b.tv_usec); -+} -+ -+inline __attribute__((always_inline)) bool -+operator>(const struct timeval &a, const struct timeval &b) -+{ -+ return a.tv_sec > b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec > b.tv_usec); -+} -+ -+inline __attribute__((always_inline)) struct timeval & -+operator+=(struct timeval &a, const struct timeval &b) -+{ -+ a.tv_sec += b.tv_sec; -+ a.tv_usec += b.tv_usec; -+ if (a.tv_usec >= 1000000) { -+ a.tv_sec++; -+ a.tv_usec -= 1000000; -+ } -+ return a; -+} -+ -+inline __attribute__((always_inline)) struct timeval & -+operator-=(struct timeval &a, const struct timeval &b) -+{ -+ a.tv_sec -= b.tv_sec; -+ a.tv_usec -= b.tv_usec; -+ if (a.tv_usec < 0) { -+ a.tv_sec--; -+ a.tv_usec += 1000000; -+ } -+ return a; -+} -+ -+inline __attribute__((always_inline)) struct timeval -+operator+(struct timeval a, const struct timeval &b) -+{ -+ a += b; -+ return a; -+} -+ -+inline __attribute__((always_inline)) struct timeval -+operator-(struct timeval a, const struct timeval &b) -+{ -+ a -= b; -+ return a; -+} -+ -+ -+ -+ -+class StringAccum; -+StringAccum &operator<<(StringAccum &, const struct timeval &); -+ -+# 387 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" -+ -+ -+ -+typedef uint64_t click_cycles_t; -+ -+ -+ -+ -+inline __attribute__((always_inline)) click_cycles_t -+click_get_cycles() -+{ -+ -+ uint64_t x; -+ __asm__ __volatile__ ("rdtsc" : "=A" (x)); -+ return x; -+# 416 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" -+} -+ -+ -+# 6 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh" 2 -+ -+ -+# 50 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh" -+class atomic_uint32_t { public: -+ -+ -+ -+ -+ inline __attribute__((always_inline)) uint32_t value() const; -+ inline __attribute__((always_inline)) operator uint32_t() const; -+ -+ inline __attribute__((always_inline)) atomic_uint32_t &operator=(uint32_t v); -+ -+ inline __attribute__((always_inline)) atomic_uint32_t &operator+=(int32_t delta); -+ inline __attribute__((always_inline)) atomic_uint32_t &operator-=(int32_t delta); -+ inline __attribute__((always_inline)) atomic_uint32_t &operator|=(uint32_t mask); -+ inline __attribute__((always_inline)) atomic_uint32_t &operator&=(uint32_t mask); -+ -+ inline __attribute__((always_inline)) void operator++(); -+ inline __attribute__((always_inline)) void operator++(int); -+ inline __attribute__((always_inline)) void operator--(); -+ inline __attribute__((always_inline)) void operator--(int); -+ -+ inline __attribute__((always_inline)) uint32_t swap(uint32_t v); -+ inline __attribute__((always_inline)) uint32_t fetch_and_add(uint32_t delta); -+ inline __attribute__((always_inline)) bool dec_and_test(); -+ inline __attribute__((always_inline)) bool compare_and_swap(uint32_t test_value, uint32_t new_value); -+ -+ private: -+ -+ -+ atomic_t _val; -+ -+ -+ -+ -+ -+ -+}; -+ -+ -+inline __attribute__((always_inline)) uint32_t -+atomic_uint32_t::value() const -+{ -+ -+ return ((&_val)->counter); -+ -+ -+ -+} -+ -+ -+inline __attribute__((always_inline)) -+atomic_uint32_t::operator uint32_t() const -+{ -+ return value(); -+} -+ -+ -+inline __attribute__((always_inline)) atomic_uint32_t & -+atomic_uint32_t::operator=(uint32_t v) -+{ -+ -+ (((&_val)->counter) = (v)); -+ -+ -+ -+ return *this; -+} -+ -+ -+inline __attribute__((always_inline)) atomic_uint32_t & -+atomic_uint32_t::operator+=(int32_t delta) -+{ -+ -+ atomic_add(delta, &_val); -+# 131 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh" -+ return *this; -+} -+ -+ -+inline __attribute__((always_inline)) atomic_uint32_t & -+atomic_uint32_t::operator-=(int32_t delta) -+{ -+ -+ atomic_sub(delta, &_val); -+# 148 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh" -+ return *this; -+} -+ -+ -+inline __attribute__((always_inline)) atomic_uint32_t & -+atomic_uint32_t::operator|=(uint32_t mask) -+{ -+ -+ -+ -+ unsigned long flags; -+ do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); do { (flags) = __raw_local_irq_save(); } while (0); do { } while (0); } while (0); -+ _val.counter |= mask; -+ do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); if (raw_irqs_disabled_flags(flags)) { raw_local_irq_restore(flags); do { } while (0); } else { do { } while (0); raw_local_irq_restore(flags); } } while (0); -+# 170 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh" -+ return *this; -+} -+ -+ -+inline __attribute__((always_inline)) atomic_uint32_t & -+atomic_uint32_t::operator&=(uint32_t mask) -+{ -+ -+ -+ -+ unsigned long flags; -+ do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); do { (flags) = __raw_local_irq_save(); } while (0); do { } while (0); } while (0); -+ _val.counter &= mask; -+ do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); if (raw_irqs_disabled_flags(flags)) { raw_local_irq_restore(flags); do { } while (0); } else { do { } while (0); raw_local_irq_restore(flags); } } while (0); -+# 192 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh" -+ return *this; -+} -+ -+ -+inline __attribute__((always_inline)) void -+atomic_uint32_t::operator++() -+{ -+ -+ atomic_inc(&_val); -+# 209 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh" -+} -+ -+ -+inline __attribute__((always_inline)) void -+atomic_uint32_t::operator++(int) -+{ -+ -+ atomic_inc(&_val); -+# 225 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh" -+} -+ -+ -+inline __attribute__((always_inline)) void -+atomic_uint32_t::operator--() -+{ -+ -+ atomic_dec(&_val); -+# 241 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh" -+} -+ -+ -+inline __attribute__((always_inline)) void -+atomic_uint32_t::operator--(int) -+{ -+ -+ atomic_dec(&_val); -+# 257 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh" -+} -+# 267 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh" -+inline __attribute__((always_inline)) uint32_t -+atomic_uint32_t::swap(uint32_t v) -+{ -+ -+ asm ("xchgl %0,%1" -+ : "=r" (v), "=m" (_val.counter)); -+ return v; -+# 286 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh" -+} -+# 296 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh" -+inline __attribute__((always_inline)) uint32_t -+atomic_uint32_t::fetch_and_add(uint32_t delta) -+{ -+ -+ asm volatile ("lock ; " "xaddl %0,%1" -+ : "=r" (delta), "=m" (_val.counter) -+ : "0" (delta), "m" (_val.counter) -+ : "cc"); -+ return delta; -+# 317 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh" -+} -+# 327 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh" -+inline __attribute__((always_inline)) bool -+atomic_uint32_t::dec_and_test() -+{ -+ -+ return atomic_dec_and_test(&_val); -+# 342 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh" -+} -+# 357 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh" -+inline __attribute__((always_inline)) bool -+atomic_uint32_t::compare_and_swap(uint32_t test_value, uint32_t new_value) -+{ -+ -+ asm volatile ("lock ; " "cmpxchgl %2,%0 ; sete %%al" -+ : "=m" (_val.counter), "=a" (test_value) -+ : "r" (new_value), "m" (_val.counter), "a" (test_value) -+ : "cc"); -+ return (uint8_t) test_value; -+# 380 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh" -+} -+ -+inline __attribute__((always_inline)) uint32_t -+operator+(const atomic_uint32_t &a, const atomic_uint32_t &b) -+{ -+ return a.value() + b.value(); -+} -+ -+inline __attribute__((always_inline)) uint32_t -+operator-(const atomic_uint32_t &a, const atomic_uint32_t &b) -+{ -+ return a.value() - b.value(); -+} -+ -+inline __attribute__((always_inline)) bool -+operator==(const atomic_uint32_t &a, const atomic_uint32_t &b) -+{ -+ return a.value() == b.value(); -+} -+ -+inline __attribute__((always_inline)) bool -+operator!=(const atomic_uint32_t &a, const atomic_uint32_t &b) -+{ -+ return a.value() != b.value(); -+} -+ -+inline __attribute__((always_inline)) bool -+operator>(const atomic_uint32_t &a, const atomic_uint32_t &b) -+{ -+ return a.value() > b.value(); -+} -+ -+inline __attribute__((always_inline)) bool -+operator<(const atomic_uint32_t &a, const atomic_uint32_t &b) -+{ -+ return a.value() < b.value(); -+} -+ -+inline __attribute__((always_inline)) bool -+operator>=(const atomic_uint32_t &a, const atomic_uint32_t &b) -+{ -+ return a.value() >= b.value(); -+} -+ -+inline __attribute__((always_inline)) bool -+operator<=(const atomic_uint32_t &a, const atomic_uint32_t &b) -+{ -+ return a.value() <= b.value(); -+} -+ -+typedef atomic_uint32_t uatomic32_t; -+ -+ -+# 9 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh" 2 -+ -+ -+class String { public: -+ -+ -+ -+ -+ static void static_initialize(); -+ static void static_cleanup(); -+ struct Initializer { Initializer(); }; -+ -+ inline __attribute__((always_inline)) String(); -+ inline __attribute__((always_inline)) String(const String &str); -+ inline __attribute__((always_inline)) String(const char *cstr); -+ inline __attribute__((always_inline)) String(const char *s, int len); -+ inline __attribute__((always_inline)) String(const char *begin, const char *end); -+ explicit inline __attribute__((always_inline)) String(bool b); -+ explicit inline __attribute__((always_inline)) String(char c); -+ explicit inline __attribute__((always_inline)) String(unsigned char c); -+ explicit String(int i); -+ explicit String(unsigned u); -+ explicit String(long i); -+ explicit String(unsigned long u); -+ -+ explicit String(long long q); -+ explicit String(unsigned long long q); -+# 43 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh" -+ inline __attribute__((always_inline)) ~String(); -+ -+ static inline __attribute__((always_inline)) const String &empty_string(); -+ static String garbage_string(int len); -+ static String stable_string(const char *s, int len = -1); -+ static inline __attribute__((always_inline)) String stable_string(const char *begin, const char *end); -+ -+ -+ typedef int64_t int_large_t; -+ typedef uint64_t uint_large_t; -+# 61 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh" -+ static String numeric_string(int_large_t num, int base = 10, bool uppercase = true); -+ static String numeric_string(uint_large_t num, int base = 10, bool uppercase = true); -+ -+ inline __attribute__((always_inline)) int length() const; -+ inline __attribute__((always_inline)) const char *data() const; -+ -+ typedef const char *const_iterator; -+ typedef const_iterator iterator; -+ inline __attribute__((always_inline)) const_iterator begin() const; -+ inline __attribute__((always_inline)) const_iterator end() const; -+ -+ typedef int (String::*unspecified_bool_type)() const; -+ inline __attribute__((always_inline)) operator unspecified_bool_type() const; -+ -+ inline __attribute__((always_inline)) char operator[](int i) const; -+ inline __attribute__((always_inline)) char at(int i) const; -+ inline __attribute__((always_inline)) char front() const; -+ inline __attribute__((always_inline)) char back() const; -+ -+ const char *c_str() const; -+ -+ size_t hashcode() const; -+ -+ bool equals(const char *s, int len) const; -+ -+ -+ -+ -+ -+ -+ -+ static inline __attribute__((always_inline)) int compare(const String &a, const String &b); -+ inline __attribute__((always_inline)) int compare(const String &str) const; -+ int compare(const char *s, int len) const; -+ -+ -+ -+ -+ -+ inline __attribute__((always_inline)) String substring(const char *begin, const char *end) const; -+ String substring(int pos, int len) const; -+ inline __attribute__((always_inline)) String substring(int pos) const; -+ -+ int find_left(char c, int start = 0) const; -+ int find_left(const String &s, int start = 0) const; -+ int find_right(char c, int start = 0x7FFFFFFF) const; -+ -+ String lower() const; -+ String upper() const; -+ String printable() const; -+ String trim_space() const; -+ String quoted_hex() const; -+ -+ inline __attribute__((always_inline)) String &operator=(const String &str); -+ inline __attribute__((always_inline)) String &operator=(const char *cstr); -+ -+ void append(const char *s, int len); -+ inline __attribute__((always_inline)) void append(const char *begin, const char *end); -+ void append_fill(int c, int len); -+ char *append_garbage(int len); -+ inline __attribute__((always_inline)) String &operator+=(const String &str); -+ inline __attribute__((always_inline)) String &operator+=(const char *cstr); -+ inline __attribute__((always_inline)) String &operator+=(char c); -+# 135 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh" -+ inline __attribute__((always_inline)) bool data_shared() const; -+ char *mutable_data(); -+ char *mutable_c_str(); -+ -+ inline __attribute__((always_inline)) bool out_of_memory() const; -+ static inline __attribute__((always_inline)) const String &out_of_memory_string(); -+ static inline __attribute__((always_inline)) const char *out_of_memory_data(); -+ -+ private: -+ -+ -+ struct Memo { -+ atomic_uint32_t _refcount; -+ uint32_t _capacity; -+ atomic_uint32_t _dirty; -+ char *_real_data; -+ -+ Memo(); -+ Memo(char *, int, int); -+ Memo(int, int); -+ ~Memo(); -+ }; -+ -+ -+ mutable const char *_data; -+ mutable int _length; -+ mutable Memo *_memo; -+ -+ inline __attribute__((always_inline)) String(const char *, int, Memo *); -+ -+ inline __attribute__((always_inline)) void assign(const String &) const; -+ void assign(const char *, int); -+ inline __attribute__((always_inline)) void deref() const; -+ void make_out_of_memory(); -+ -+ static Memo *null_memo; -+ static Memo *permanent_memo; -+ static Memo *oom_memo; -+ static String *null_string_p; -+ static String *oom_string_p; -+ static const char oom_string_data; -+ -+ static String claim_string(char *, int, int); -+ -+ friend class String::Initializer; -+ friend class StringAccum; -+ -+}; -+ -+ -+inline __attribute__((always_inline)) -+String::String(const char *data, int length, Memo *memo) -+ : _data(data), _length(length), _memo(memo) -+{ -+ _memo->_refcount++; -+} -+ -+inline __attribute__((always_inline)) void -+String::assign(const String &str) const -+{ -+ _data = str._data; -+ _length = str._length; -+ _memo = str._memo; -+ _memo->_refcount++; -+} -+ -+inline __attribute__((always_inline)) void -+String::deref() const -+{ -+ if (_memo->_refcount.dec_and_test()) -+ delete _memo; -+} -+ -+ -+inline __attribute__((always_inline)) -+String::String() -+ : _data(null_memo->_real_data), _length(0), _memo(null_memo) -+{ -+ _memo->_refcount++; -+} -+# 224 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh" -+inline __attribute__((always_inline)) -+String::String(const char *cstr) -+{ -+ assign(cstr, -1); -+} -+# 240 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh" -+inline __attribute__((always_inline)) -+String::String(const char *s, int len) -+{ -+ assign(s, len); -+} -+# 256 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh" -+inline __attribute__((always_inline)) -+String::String(const char *begin, const char *end) -+{ -+ assign(begin, (end > begin ? end - begin : 0)); -+} -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) -+String::String(bool b) -+ : _data(b ? "true" : "false"), _length(b ? 4 : 5), _memo(permanent_memo) -+{ -+ _memo->_refcount++; -+} -+ -+ -+ -+ -+inline __attribute__((always_inline)) -+String::String(char c) -+{ -+ assign(&c, 1); -+} -+ -+ -+ -+ -+inline __attribute__((always_inline)) -+String::String(unsigned char c) -+{ -+ assign(reinterpret_cast(&c), 1); -+} -+ -+ -+ -+ -+inline __attribute__((always_inline)) -+String::String(const String &str) -+{ -+ assign(str); -+} -+ -+ -+inline __attribute__((always_inline)) -+String::~String() -+{ -+ deref(); -+} -+ -+ -+inline __attribute__((always_inline)) int -+String::length() const -+{ -+ return _length; -+} -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) const char * -+String::data() const -+{ -+ return _data; -+} -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) String::const_iterator -+String::begin() const -+{ -+ return _data; -+} -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) String::const_iterator -+String::end() const -+{ -+ return _data + _length; -+} -+ -+ -+inline __attribute__((always_inline)) -+String::operator unspecified_bool_type() const -+{ -+ return _length != 0 ? &String::length : 0; -+} -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) char -+String::operator[](int i) const -+{ -+ return _data[i]; -+} -+ -+ -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) char -+String::at(int i) const -+{ -+ ; -+ return _data[i]; -+} -+ -+ -+ -+ -+inline __attribute__((always_inline)) char -+String::front() const -+{ -+ return _data[0]; -+} -+ -+ -+ -+ -+inline __attribute__((always_inline)) char -+String::back() const -+{ -+ return _data[_length - 1]; -+} -+ -+ -+inline __attribute__((always_inline)) bool -+String::data_shared() const -+{ -+ return !_memo->_capacity || _memo->_refcount != 1; -+} -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) const String & -+String::empty_string() -+{ -+ return *null_string_p; -+} -+# 418 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh" -+inline __attribute__((always_inline)) String -+String::stable_string(const char *begin, const char *end) -+{ -+ if (begin < end) -+ return String::stable_string(begin, end - begin); -+ else -+ return String(); -+} -+# 436 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh" -+inline __attribute__((always_inline)) String -+String::substring(const char *begin, const char *end) const -+{ -+ if (begin < end && begin >= _data && end <= _data + _length) -+ return String(begin, end - begin, _memo); -+ else -+ return String(); -+} -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) String -+String::substring(int pos) const -+{ -+ return substring(pos, _length); -+} -+# 462 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh" -+inline __attribute__((always_inline)) int -+String::compare(const String &a, const String &b) -+{ -+ return a.compare(b); -+} -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) int -+String::compare(const String &str) const -+{ -+ return compare(str._data, str._length); -+} -+# 486 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh" -+inline __attribute__((always_inline)) bool -+operator==(const String &a, const String &b) -+{ -+ return a.equals(b.data(), b.length()); -+} -+ -+ -+inline __attribute__((always_inline)) bool -+operator==(const char *a, const String &b) -+{ -+ return b.equals(a, -1); -+} -+ -+ -+inline __attribute__((always_inline)) bool -+operator==(const String &a, const char *b) -+{ -+ return a.equals(b, -1); -+} -+ -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) bool -+operator!=(const String &a, const String &b) -+{ -+ return !a.equals(b.data(), b.length()); -+} -+ -+ -+inline __attribute__((always_inline)) bool -+operator!=(const char *a, const String &b) -+{ -+ return !b.equals(a, -1); -+} -+ -+ -+inline __attribute__((always_inline)) bool -+operator!=(const String &a, const char *b) -+{ -+ return !a.equals(b, -1); -+} -+ -+ -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) bool -+operator<(const String &a, const String &b) -+{ -+ return a.compare(b.data(), b.length()) < 0; -+} -+ -+ -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) bool -+operator<=(const String &a, const String &b) -+{ -+ return a.compare(b.data(), b.length()) <= 0; -+} -+ -+ -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) bool -+operator>(const String &a, const String &b) -+{ -+ return a.compare(b.data(), b.length()) > 0; -+} -+ -+ -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) bool -+operator>=(const String &a, const String &b) -+{ -+ return a.compare(b.data(), b.length()) >= 0; -+} -+ -+ -+inline __attribute__((always_inline)) String & -+String::operator=(const String &str) -+{ -+ if (&str != this) { -+ deref(); -+ assign(str); -+ } -+ return *this; -+} -+ -+ -+inline __attribute__((always_inline)) String & -+String::operator=(const char *cstr) -+{ -+ deref(); -+ assign(cstr, -1); -+ return *this; -+} -+ -+ -+ -+ -+inline __attribute__((always_inline)) void -+String::append(const char *begin, const char *end) -+{ -+ if (begin < end) -+ append(begin, end - begin); -+} -+ -+ -+ -+ -+inline __attribute__((always_inline)) String & -+String::operator+=(const String &str) -+{ -+ append(str._data, str._length); -+ return *this; -+} -+ -+ -+ -+ -+inline __attribute__((always_inline)) String & -+String::operator+=(const char *cstr) -+{ -+ append(cstr, -1); -+ return *this; -+} -+ -+ -+ -+ -+inline __attribute__((always_inline)) String & -+String::operator+=(char c) -+{ -+ append(&c, 1); -+ return *this; -+} -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) String -+operator+(String a, const String &b) -+{ -+ a += b; -+ return a; -+} -+ -+ -+inline __attribute__((always_inline)) String -+operator+(String a, const char *b) -+{ -+ a.append(b, -1); -+ return a; -+} -+ -+ -+inline __attribute__((always_inline)) String -+operator+(const char *a, const String &b) -+{ -+ String s1(a); -+ s1 += b; -+ return s1; -+} -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) String -+operator+(String a, char b) -+{ -+ a.append(&b, 1); -+ return a; -+} -+ -+ -+inline __attribute__((always_inline)) bool -+String::out_of_memory() const -+{ -+ return _data == &oom_string_data; -+} -+ -+ -+inline __attribute__((always_inline)) const String & -+String::out_of_memory_string() -+{ -+ return *oom_string_p; -+} -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) const char * -+String::out_of_memory_data() -+{ -+ return &oom_string_data; -+} -+ -+ -+ -+inline __attribute__((always_inline)) const char *rfind(const char *begin, const char *end, char c) -+{ -+ for (const char *bb = end - 1; bb >= begin; bb--) -+ if (*bb == c) -+ return bb; -+ return end; -+} -+ -+inline __attribute__((always_inline)) const char *find(const String &s, char c) -+{ -+ return find(s.begin(), s.end(), c); -+} -+ -+ -+# 22 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc" 2 -+# 1 "/d/click/click-1.6.0-27/linuxmodule/../include/click/straccum.hh" 1 -+ -+ -+ -+ -+ -+ -+# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/string.h" 1 -+# 8 "/d/click/click-1.6.0-27/linuxmodule/../include/click/straccum.hh" 2 -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+class StringAccum { public: -+ -+ -+ StringAccum() -+ : _s(0), _len(0), _cap(0) { -+ } -+ -+ explicit inline __attribute__((always_inline)) StringAccum(int); -+ -+ -+ ~StringAccum() { -+ if (_cap >= 0) -+ (click_lfree((_s), (_cap))); -+ } -+ -+ -+ -+ -+ -+ -+ -+ inline __attribute__((always_inline)) const char *data() const { -+ return reinterpret_cast(_s); -+ } -+ -+ -+ inline __attribute__((always_inline)) char *data() { -+ return reinterpret_cast(_s); -+ } -+ -+ -+ int length() const { -+ return _len; -+ } -+ -+ -+ -+ -+ -+ -+ int capacity() const { -+ return _cap; -+ } -+ -+ typedef int (StringAccum::*unspecified_bool_type)() const; -+ -+ -+ -+ -+ operator unspecified_bool_type() const { -+ return _len != 0 ? &StringAccum::capacity : 0; -+ } -+ -+ -+ -+ -+ bool operator!() const { -+ return _len == 0; -+ } -+ -+ -+ bool out_of_memory() const { -+ return _cap < 0; -+ } -+ -+ const char *c_str(); -+ -+ -+ -+ -+ -+ char operator[](int i) const { -+ ; -+ return static_cast(_s[i]); -+ } -+ -+ -+ -+ -+ -+ char &operator[](int i) { -+ ; -+ return reinterpret_cast(_s[i]); -+ } -+ -+ -+ -+ char back() const { -+ ; -+ return static_cast(_s[_len - 1]); -+ } -+ -+ -+ -+ char &back() { -+ ; -+ return reinterpret_cast(_s[_len - 1]); -+ } -+ -+ inline __attribute__((always_inline)) void clear(); -+ -+ inline __attribute__((always_inline)) char *reserve(int n); -+ void set_length(int len); -+ void adjust_length(int delta); -+ inline __attribute__((always_inline)) char *extend(int nadjust, int nreserve = 0); -+ void pop_back(int n = 1); -+ -+ inline __attribute__((always_inline)) void append(char c); -+ inline __attribute__((always_inline)) void append(unsigned char c); -+ void append_fill(int c, int len); -+ -+ inline __attribute__((always_inline)) void append(const char *suffix, int len); -+ inline __attribute__((always_inline)) void append(const unsigned char *suffix, int len); -+ inline __attribute__((always_inline)) void append(const char *begin, const char *end); -+ -+ void append_numeric(String::uint_large_t num, int base = 10, bool uppercase = true); -+ void append_numeric(String::int_large_t num, int base = 10, bool uppercase = true); -+ -+ StringAccum &snprintf(int n, const char *format, ...); -+ -+ String take_string(); -+ -+ void swap(StringAccum &o); -+ -+ -+ -+ void forward(int delta) __attribute__((deprecated)); -+ -+ private: -+ -+ unsigned char *_s; -+ int _len; -+ int _cap; -+ -+ void make_out_of_memory(); -+ inline __attribute__((always_inline)) void safe_append(const char *, int); -+ bool grow(int); -+ -+ StringAccum(const StringAccum &); -+ StringAccum &operator=(const StringAccum &); -+ -+ friend StringAccum &operator<<(StringAccum &, const char *); -+ -+}; -+ -+inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, char); -+inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, unsigned char); -+inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, const char *); -+inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, const String &); -+inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, const StringAccum &); -+ -+ -+ -+ -+inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, bool); -+inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, short); -+inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, unsigned short); -+inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, int); -+inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, unsigned); -+StringAccum &operator<<(StringAccum &, long); -+StringAccum &operator<<(StringAccum &, unsigned long); -+ -+inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, long long); -+inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, unsigned long long); -+# 192 "/d/click/click-1.6.0-27/linuxmodule/../include/click/straccum.hh" -+StringAccum &operator<<(StringAccum &, void *); -+# 201 "/d/click/click-1.6.0-27/linuxmodule/../include/click/straccum.hh" -+inline __attribute__((always_inline)) -+StringAccum::StringAccum(int capacity) -+ : _len(0) -+{ -+ ; -+ if (capacity) { -+ _s = (unsigned char *) (click_lalloc((capacity))); -+ _cap = (_s ? capacity : -1); -+ } else { -+ _s = 0; -+ _cap = 0; -+ } -+} -+# 225 "/d/click/click-1.6.0-27/linuxmodule/../include/click/straccum.hh" -+inline __attribute__((always_inline)) char * -+StringAccum::reserve(int n) -+{ -+ ; -+ if (_len + n <= _cap || grow(_len + n)) -+ return (char *)(_s + _len); -+ else -+ return 0; -+} -+# 244 "/d/click/click-1.6.0-27/linuxmodule/../include/click/straccum.hh" -+inline __attribute__((always_inline)) void -+StringAccum::adjust_length(int delta) { -+ ; -+ _len += delta; -+} -+ -+ -+ -+ -+inline __attribute__((always_inline)) void -+StringAccum::forward(int delta) -+{ -+ adjust_length(delta); -+} -+# 266 "/d/click/click-1.6.0-27/linuxmodule/../include/click/straccum.hh" -+inline __attribute__((always_inline)) char * -+StringAccum::extend(int nadjust, int nreserve) -+{ -+ ; -+ char *c = reserve(nadjust + nreserve); -+ if (c) -+ _len += nadjust; -+ return c; -+} -+ -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) void -+StringAccum::pop_back(int n) { -+ ; -+ _len -= n; -+} -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) void -+StringAccum::set_length(int len) { -+ ; -+ _len = len; -+} -+ -+ -+ -+inline __attribute__((always_inline)) void -+StringAccum::append(char c) -+{ -+ if (_len < _cap || grow(_len)) -+ _s[_len++] = c; -+} -+ -+ -+inline __attribute__((always_inline)) void -+StringAccum::append(unsigned char c) -+{ -+ append(static_cast(c)); -+} -+ -+inline __attribute__((always_inline)) void -+StringAccum::safe_append(const char *s, int len) -+{ -+ if (char *x = extend(len)) -+ (__builtin_constant_p((len)) ? __constant_memcpy((x), (s), (len)) : __memcpy((x), (s), (len))); -+} -+ -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) void -+StringAccum::append(const char *suffix, int len) -+{ -+ if (len < 0) -+ len = strlen(suffix); -+ if (len == 0 && suffix == String::out_of_memory_data()) -+ make_out_of_memory(); -+ safe_append(suffix, len); -+} -+ -+ -+inline __attribute__((always_inline)) void -+StringAccum::append(const unsigned char *suffix, int len) -+{ -+ append(reinterpret_cast(suffix), len); -+} -+ -+ -+ -+ -+inline __attribute__((always_inline)) void -+StringAccum::append(const char *begin, const char *end) -+{ -+ if (begin < end) -+ safe_append(begin, end - begin); -+ else if (begin == String::out_of_memory_data()) -+ make_out_of_memory(); -+} -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) void -+StringAccum::clear() -+{ -+ if (_cap < 0) -+ _cap = 0, _s = 0; -+ _len = 0; -+} -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) StringAccum & -+operator<<(StringAccum &sa, char c) -+{ -+ sa.append(c); -+ return sa; -+} -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) StringAccum & -+operator<<(StringAccum &sa, unsigned char c) -+{ -+ sa.append(c); -+ return sa; -+} -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) StringAccum & -+operator<<(StringAccum &sa, const char *cstr) -+{ -+ sa.append(cstr, -1); -+ return sa; -+} -+ -+ -+ -+ -+inline __attribute__((always_inline)) StringAccum & -+operator<<(StringAccum &sa, bool b) -+{ -+ return sa << (b ? "true" : "false"); -+} -+ -+ -+ -+ -+inline __attribute__((always_inline)) StringAccum & -+operator<<(StringAccum &sa, short i) -+{ -+ return sa << static_cast(i); -+} -+ -+ -+ -+ -+inline __attribute__((always_inline)) StringAccum & -+operator<<(StringAccum &sa, unsigned short u) -+{ -+ return sa << static_cast(u); -+} -+ -+ -+ -+ -+inline __attribute__((always_inline)) StringAccum & -+operator<<(StringAccum &sa, int i) -+{ -+ return sa << static_cast(i); -+} -+ -+ -+ -+ -+inline __attribute__((always_inline)) StringAccum & -+operator<<(StringAccum &sa, unsigned u) -+{ -+ return sa << static_cast(u); -+} -+ -+ -+ -+ -+ -+inline __attribute__((always_inline)) StringAccum & -+operator<<(StringAccum &sa, long long q) -+{ -+ sa.append_numeric(static_cast(q)); -+ return sa; -+} -+ -+ -+ -+ -+inline __attribute__((always_inline)) StringAccum & -+operator<<(StringAccum &sa, unsigned long long q) -+{ -+ sa.append_numeric(static_cast(q)); -+ return sa; -+} -+# 491 "/d/click/click-1.6.0-27/linuxmodule/../include/click/straccum.hh" -+StringAccum & -+operator<<(StringAccum &sa, const String &str) -+{ -+ sa.append(str.data(), str.length()); -+ return sa; -+} -+# 510 "/d/click/click-1.6.0-27/linuxmodule/../include/click/straccum.hh" -+inline __attribute__((always_inline)) StringAccum & -+operator<<(StringAccum &sa, const StringAccum &sb) -+{ -+ sa.append(sb.data(), sb.length()); -+ return sa; -+} -+ -+ -+# 23 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc" 2 -+ -+ -+# 67 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc" -+String::Memo *String::null_memo = 0; -+String::Memo *String::permanent_memo = 0; -+String::Memo *String::oom_memo = 0; -+String *String::null_string_p = 0; -+String *String::oom_string_p = 0; -+const char String::oom_string_data = 0; -+ -+ -+inline __attribute__((always_inline)) -+String::Memo::Memo() -+ : _capacity(0), _real_data("") -+{ -+ _refcount = 0; -+ _dirty = 0; -+} -+ -+inline __attribute__((always_inline)) -+String::Memo::Memo(char *data, int dirty, int capacity) -+ : _capacity(capacity), _real_data(data) -+{ -+ _refcount = 0; -+ _dirty = dirty; -+} -+ -+String::Memo::Memo(int dirty, int capacity) -+ : _capacity(capacity), _real_data((char *) (click_lalloc((capacity)))) -+{ -+ ; -+ _refcount = 1; -+ _dirty = dirty; -+} -+ -+String::Memo::~Memo() -+{ -+ if (_capacity) { -+ ; -+ (click_lfree((_real_data), (_capacity))); -+ } -+} -+ -+ -+ -+ -+ -+String::String(int i) -+{ -+ char buf[128]; -+ sprintf(buf, "%d", i); -+ assign(buf, -1); -+} -+ -+ -+ -+String::String(unsigned u) -+{ -+ char buf[128]; -+ sprintf(buf, "%u", u); -+ assign(buf, -1); -+} -+ -+ -+ -+String::String(long i) -+{ -+ char buf[128]; -+ sprintf(buf, "%ld", i); -+ assign(buf, -1); -+} -+ -+ -+ -+String::String(unsigned long u) -+{ -+ char buf[128]; -+ sprintf(buf, "%lu", u); -+ assign(buf, -1); -+} -+ -+ -+ -+ -+ -+ -+ -+String::String(long long q) -+{ -+ StringAccum sa; -+ sa << q; -+ assign(sa.data(), sa.length()); -+} -+ -+ -+ -+String::String(unsigned long long q) -+{ -+ StringAccum sa; -+ sa << q; -+ assign(sa.data(), sa.length()); -+} -+# 202 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc" -+String -+String::claim_string(char *str, int len, int capacity) -+{ -+ ; -+ Memo *new_memo = new Memo(str, len, capacity); -+ if (new_memo) -+ return String(str, len, new_memo); -+ else -+ return String(&oom_string_data, 0, oom_memo); -+} -+# 220 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc" -+String -+String::stable_string(const char *s, int len) -+{ -+ if (len < 0) -+ len = (s ? strlen(s) : 0); -+ return String(s, len, permanent_memo); -+} -+ -+ -+String -+String::garbage_string(int len) -+{ -+ String s; -+ s.append_garbage(len); -+ return s; -+} -+ -+ -+ -+ -+ -+ -+String -+String::numeric_string(int_large_t num, int base, bool uppercase) -+{ -+ StringAccum sa; -+ sa.append_numeric(num, base, uppercase); -+ return sa.take_string(); -+} -+ -+ -+ -+ -+ -+ -+String -+String::numeric_string(uint_large_t num, int base, bool uppercase) -+{ -+ StringAccum sa; -+ sa.append_numeric(num, base, uppercase); -+ return sa.take_string(); -+} -+ -+void -+String::make_out_of_memory() -+{ -+ if (_memo) -+ deref(); -+ _memo = oom_memo; -+ _memo->_refcount++; -+ _data = _memo->_real_data; -+ _length = 0; -+} -+ -+void -+String::assign(const char *str, int len) -+{ -+ if (!str) { -+ ; -+ len = 0; -+ } else if (len < 0) -+ len = strlen(str); -+ -+ if (len == 0) { -+ _memo = (str == &oom_string_data ? oom_memo : null_memo); -+ _memo->_refcount++; -+ -+ } else { -+ -+ int capacity = (len + 16) & ~15; -+ _memo = new Memo(len, capacity); -+ if (!_memo || !_memo->_real_data) { -+ make_out_of_memory(); -+ return; -+ } -+ (__builtin_constant_p((len)) ? __constant_memcpy((_memo->_real_data), (str), (len)) : __memcpy((_memo->_real_data), (str), (len))); -+ } -+ -+ _data = _memo->_real_data; -+ _length = len; -+} -+ -+ -+ -+ -+ -+ -+char * -+String::append_garbage(int len) -+{ -+ -+ if (len <= 0 || _memo == oom_memo) -+ return 0; -+ -+ -+ -+ -+ uint32_t dirty = _memo->_dirty; -+ if (_memo->_capacity > dirty + len) { -+ char *real_dirty = _memo->_real_data + dirty; -+ if (real_dirty == _data + _length -+ && _memo->_dirty.compare_and_swap(dirty, dirty + len)) { -+ _length += len; -+ ; -+ return real_dirty; -+ } -+ } -+ -+ -+ -+ -+ -+ int new_capacity = (_length + len < 1024 ? (_length + 16) & ~15 : 1024); -+ while (new_capacity < _length + len) -+ new_capacity *= 2; -+# 343 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc" -+ Memo *new_memo = new Memo(_length + len, new_capacity); -+ if (!new_memo || !new_memo->_real_data) { -+ delete new_memo; -+ make_out_of_memory(); -+ return 0; -+ } -+ -+ char *new_data = new_memo->_real_data; -+ (__builtin_constant_p((_length)) ? __constant_memcpy((new_data), (_data), (_length)) : __memcpy((new_data), (_data), (_length))); -+ -+ deref(); -+ _data = new_data; -+ new_data += _length; -+ _length += len; -+ _memo = new_memo; -+ return new_data; -+} -+ -+ -+ -+ -+ -+ -+ -+void -+String::append(const char *suffix, int len) -+{ -+ if (!suffix) { -+ ; -+ len = 0; -+ } else if (len < 0) -+ len = strlen(suffix); -+ -+ if (suffix == &oom_string_data) -+ -+ -+ make_out_of_memory(); -+ else if (char *space = append_garbage(len)) -+ (__builtin_constant_p((len)) ? __constant_memcpy((space), (suffix), (len)) : __memcpy((space), (suffix), (len))); -+} -+ -+ -+void -+String::append_fill(int c, int len) -+{ -+ ; -+ if (char *space = append_garbage(len)) -+ (__builtin_constant_p(c) ? (__builtin_constant_p((len)) ? __constant_c_and_count_memset(((space)), ((0x01010101UL * (unsigned char)(c))), ((len))) : __constant_c_memset(((space)), ((0x01010101UL * (unsigned char)(c))), ((len)))) : (__builtin_constant_p((len)) ? __memset_generic((((space))), (((c))), (((len)))) : __memset_generic(((space)), ((c)), ((len))))); -+} -+ -+ -+ -+char * -+String::mutable_data() -+{ -+ -+ -+ if (_memo->_capacity && _memo->_refcount == 1) -+ return const_cast(_data); -+ -+ -+ -+ ; -+ deref(); -+ assign(_data, _length); -+ return const_cast(_data); -+} -+ -+ -+ -+ -+char * -+String::mutable_c_str() -+{ -+ (void) mutable_data(); -+ (void) c_str(); -+ return const_cast(_data); -+} -+ -+ -+ -+ -+ -+ -+ -+const char * -+String::c_str() const -+{ -+ -+ -+ -+ -+ if (!_memo->_capacity && _data[_length] == '\0') -+ return _data; -+ -+ -+ -+ ; -+ -+ -+ -+ uint32_t dirty = _memo->_dirty; -+ if (_memo->_real_data + dirty == _data + _length) { -+ if (_memo->_capacity > dirty -+ && _memo->_dirty.compare_and_swap(dirty, dirty + 1)) { -+ -+ -+ char *real_data = const_cast(_data); -+ real_data[_length] = '\0'; -+ return _data; -+ } -+ -+ } else { -+ -+ -+ if (_data[_length] == '\0') -+ return _data; -+ } -+ -+ -+ { -+ String s(_data, _length); -+ deref(); -+ assign(s); -+ } -+ -+ char *real_data = const_cast(_data); -+ real_data[_length] = '\0'; -+ _memo->_dirty++; -+ return _data; -+} -+# 487 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc" -+String -+String::substring(int pos, int len) const -+{ -+ if (pos < 0) -+ pos += _length; -+ if (len < 0) -+ len = _length - pos + len; -+ if (pos + len > _length) -+ len = _length - pos; -+ -+ if (pos < 0 || len <= 0) -+ return String(); -+ else -+ return String(_data + pos, len, _memo); -+} -+# 511 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc" -+int -+String::find_left(char c, int start) const -+{ -+ if (start < 0) -+ start = 0; -+ for (int i = start; i < _length; i++) -+ if (_data[i] == c) -+ return i; -+ return -1; -+} -+# 530 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc" -+int -+String::find_left(const String &str, int start) const -+{ -+ if (start < 0) -+ start = 0; -+ if (start >= length()) -+ return -1; -+ if (!str.length()) -+ return 0; -+ int first_c = (unsigned char)str[0]; -+ int pos = start, max_pos = length() - str.length(); -+ for (pos = find_left(first_c, pos); pos >= 0 && pos <= max_pos; -+ pos = find_left(first_c, pos + 1)) -+ if (!__builtin_memcmp(_data + pos, str._data, str.length())) -+ return pos; -+ return -1; -+} -+# 557 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc" -+int -+String::find_right(char c, int start) const -+{ -+ if (start >= _length) -+ start = _length - 1; -+ for (int i = start; i >= 0; i--) -+ if (_data[i] == c) -+ return i; -+ return -1; -+} -+ -+static String -+hard_lower(const String &s, int pos) -+{ -+ String new_s(s.data(), s.length()); -+ char *x = const_cast(new_s.data()); -+ int len = s.length(); -+ for (; pos < len; pos++) -+ x[pos] = __tolower(x[pos]); -+ return new_s; -+} -+ -+ -+ -+ -+ -+String -+String::lower() const -+{ -+ -+ for (int i = 0; i < _length; i++) -+ if (_data[i] >= 'A' && _data[i] <= 'Z') -+ return hard_lower(*this, i); -+ return *this; -+} -+ -+static String -+hard_upper(const String &s, int pos) -+{ -+ String new_s(s.data(), s.length()); -+ char *x = const_cast(new_s.data()); -+ int len = s.length(); -+ for (; pos < len; pos++) -+ x[pos] = __toupper(x[pos]); -+ return new_s; -+} -+ -+ -+ -+ -+ -+String -+String::upper() const -+{ -+ -+ for (int i = 0; i < _length; i++) -+ if (_data[i] >= 'a' && _data[i] <= 'z') -+ return hard_upper(*this, i); -+ return *this; -+} -+ -+static String -+hard_printable(const String &s, int pos) -+{ -+ StringAccum sa(s.length() * 2); -+ sa.append(s.data(), pos); -+ const unsigned char *x = reinterpret_cast(s.data()); -+ int len = s.length(); -+ for (; pos < len; pos++) { -+ if (x[pos] >= 32 && x[pos] < 127) -+ sa << x[pos]; -+ else if (x[pos] < 32) -+ sa << '^' << (unsigned char)(x[pos] + 64); -+ else if (char *buf = sa.extend(4, 1)) -+ sprintf(buf, "\\%03o", x[pos]); -+ } -+ return sa.take_string(); -+} -+ -+ -+ -+ -+ -+ -+String -+String::printable() const -+{ -+ -+ for (int i = 0; i < _length; i++) -+ if (_data[i] < 32 || _data[i] > 126) -+ return hard_printable(*this, i); -+ return *this; -+} -+ -+ -+String -+String::trim_space() const -+{ -+ for (int i = _length - 1; i >= 0; i--) -+ if (!(((_ctype[(int)(unsigned char)(_data[i])])&(0x20)) != 0)) -+ return substring(0, i + 1); -+ -+ return (_length ? String() : *this); -+} -+ -+ -+ -+ -+String -+String::quoted_hex() const -+{ -+ static const char hex_digits[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; -+ StringAccum sa; -+ char *buf; -+ if (out_of_memory() || !(buf = sa.extend(length() * 2 + 3))) -+ return out_of_memory_string(); -+ *buf++ = '\\'; -+ *buf++ = '<'; -+ const uint8_t *e = reinterpret_cast(end()); -+ for (const uint8_t *x = reinterpret_cast(begin()); x < e; x++) { -+ *buf++ = hex_digits[(*x >> 4) & 0xF]; -+ *buf++ = hex_digits[*x & 0xF]; -+ } -+ *buf++ = '>'; -+ return sa.take_string(); -+} -+ -+ -+ -+ -+ -+ -+size_t -+String::hashcode() const -+{ -+ int l = length(); -+ const char *d = data(); -+ if (!l) -+ return 0; -+ else if (l == 1) -+ return d[0] | (d[0] << 8); -+ else if (l < 4) -+ return d[0] + (d[1] << 3) + (l << 12); -+ else -+ return d[0] + (d[1] << 8) + (d[2] << 16) + (d[3] << 24) -+ + (l << 12) + (d[l-1] << 10); -+} -+# 713 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc" -+bool -+String::equals(const char *s, int len) const -+{ -+ -+ -+ -+ -+ if (len < 0) -+ len = strlen(s); -+ if (_length != len) -+ return false; -+ else if (_data == s) -+ return true; -+ else if (len == 0) -+ return (s != &oom_string_data && _memo != oom_memo); -+ else -+ return __builtin_memcmp(_data, s, len) == 0; -+} -+# 740 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc" -+int -+String::compare(const char *s, int len) const -+{ -+ if (len < 0) -+ len = strlen(s); -+ if (_data == s) -+ return _length - len; -+ else if (_memo == oom_memo) -+ return 1; -+ else if (s == &oom_string_data) -+ return -1; -+ else if (_length == len) -+ return __builtin_memcmp(_data, s, len); -+ else if (_length < len) { -+ int v = __builtin_memcmp(_data, s, _length); -+ return (v ? v : -1); -+ } else { -+ int v = __builtin_memcmp(_data, s, len); -+ return (v ? v : 1); -+ } -+} -+# 775 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc" -+String::Initializer::Initializer() -+{ -+ String::static_initialize(); -+} -+# 789 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc" -+void -+String::static_initialize() -+{ -+ -+ if (!null_memo) { -+ -+ -+ -+ null_memo = new Memo; -+ null_memo->_refcount++; -+ permanent_memo = new Memo; -+ permanent_memo->_refcount++; -+ -+ -+ oom_memo = new Memo; -+ oom_memo->_refcount++; -+ oom_memo->_real_data = const_cast(&oom_string_data); -+ null_string_p = new String; -+ oom_string_p = new String(&oom_string_data, 0, oom_memo); -+ -+ -+ -+ } -+} -+ -+ -+ -+ -+ -+void -+String::static_cleanup() -+{ -+ if (null_string_p) { -+ delete null_string_p; -+ null_string_p = 0; -+ delete oom_string_p; -+ oom_string_p = 0; -+ if (oom_memo->_refcount.dec_and_test()) -+ delete oom_memo; -+ if (permanent_memo->_refcount.dec_and_test()) -+ delete permanent_memo; -+ if (null_memo->_refcount.dec_and_test()) -+ delete null_memo; -+ null_memo = permanent_memo = oom_memo = 0; -+ } -+} -+ -+ -diff -Nurb click-1.6.0/ns/Makefile click-1.6.0-27/ns/Makefile ---- click-1.6.0/ns/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/ns/Makefile 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,145 @@ -+## The following line supports click-mkmindriver and should not be changed. -+## Click ns driver Makefile ## -+SHELL = /bin/sh -+ -+top_srcdir := .. -+srcdir := . -+top_builddir := .. -+subdir := ns -+conf_auxdir := $(top_srcdir) -+ -+prefix = /d/click/click-1.6.0-27/inst -+exec_prefix = /d/click/click-1.6.0-27/inst -+bindir = /d/click/click-1.6.0-27/inst/bin -+sbindir = /d/click/click-1.6.0-27/inst/sbin -+libdir = /d/click/click-1.6.0-27/inst/lib -+ -+VPATH = .:$(top_srcdir)/lib:$(top_srcdir)/$(subdir):$(top_srcdir)/elements/standard -+ -+CC = gcc -W -Wall -+CPP = gcc -W -Wall -E -+CXX = g++ -W -Wall -+CXXCPP = g++ -W -Wall -E -+AR_CREATE = ar cru -+RANLIB = ranlib -+INSTALL = /usr/bin/install -c -+mkinstalldirs = $(conf_auxdir)/mkinstalldirs -+ -+ifeq ($(V),1) -+ccompile = $(COMPILE) $(1) -+cxxcompile = $(CXXCOMPILE) $(1) -+else -+ccompile = @/bin/echo ' ' $(2) $< && $(COMPILE) $(1) -+cxxcompile = @/bin/echo ' ' $(2) $< && $(CXXCOMPILE) $(1) -+endif -+ -+.SUFFIXES: -+.SUFFIXES: .S .c .cc .o .s .ii -+ -+.c.o: -+ $(call ccompile,-c $< -o $@,CC) -+.s.o: -+ $(call ccompile,-c $< -o $@,ASM) -+.S.o: -+ $(call ccompile,-c $< -o $@,ASM) -+.cc.o: -+ $(call cxxcompile,-c $< -o $@,CXX) -+.cc.s: -+ $(call cxxcompile,-S $< -o $@,CXX -S) -+.cc.ii: -+ $(call cxxcompile,-E $< > $@,CXXCPP) -+ -+ -+GENERIC_OBJS = string.o straccum.o nameinfo.o \ -+ bitvector.o vectorv.o templatei.o bighashmap_arena.o \ -+ ipaddress.o ipflowid.o etheraddress.o \ -+ packet.o \ -+ error.o timestamp.o glue.o task.o timer.o atomic.o gaprate.o \ -+ element.o \ -+ confparse.o variableenv.o lexer.o elemfilter.o \ -+ routerthread.o router.o master.o handlercall.o notifier.o \ -+ integers.o md5.o crc32.o in_cksum.o iptable.o \ -+ archive.o userutils.o driver.o \ -+ $(EXTRA_DRIVER_OBJS) -+ -+EXTRA_DRIVER_OBJS = -+ -+LIBOBJS = $(GENERIC_OBJS) $(STD_ELEMENT_OBJS) clp.o -+STD_ELEMENT_OBJS = addressinfo.o alignmentinfo.o \ -+ errorelement.o portinfo.o scheduleinfo.o -+OBJS = $(ELEMENT_OBJS) $(ELEMENTSCONF).o nsclick.o -+ -+CPPFLAGS = -DCLICK_NS -+CFLAGS = -g -O2 -fPIC -+CXXFLAGS = -g -O2 -fPIC -+DEPCFLAGS = -MD -+ -+DEFS = -DHAVE_CONFIG_H -+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -+ -I$(srcdir) -I$(top_srcdir) -+LDFLAGS = -shared -+LIBS = `$(top_builddir)/click-compile --otherlibs` $(ELEMENT_LIBS) -+ -+CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS) -+CXXLD = $(CXX) -+CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ -+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS) -+CCLD = $(CC) -+LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@ -+ -+ifndef MINDRIVER -+ELEMENTSCONF = elements -+INSTALLLIBS = libnsclick.so -+else -+ELEMENTSCONF = elements_$(MINDRIVER) -+INSTALLLIBS = libns$(MINDRIVER)click.so -+endif -+ -+all: $(INSTALLLIBS) -+ -+ifneq ($(MAKECMDGOALS),clean) -+-include $(ELEMENTSCONF).mk -+endif -+ -+libnsclick.so: Makefile $(LIBOBJS) $(OBJS) -+ $(CXXLINK) -shared $(LIBOBJS) $(OBJS) -+libnsclick.a: Makefile $(LIBOBJS) $(OBJS) -+ $(AR_CREATE) libnsclick.a $(LIBOBJS) $(OBJS) -+ $(RANLIB) libnsclick.a -+ -+nsclick-test: libnsclick.a nsclick-test.o -+ $(CXXLD) $(CXXFLAGS) -o $@ nsclick-test.o libnsclick.a $(LIBS) -+ -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status -+ -+elemlist: -+ @rm -f elements.conf -+ @$(MAKE) elements.conf -+elements.conf: $(top_builddir)/config.status $(top_builddir)/click-buildtool -+ echo "ns userlevel app aqm ethernet icmp ip standard tcpudp" | $(top_builddir)/click-buildtool findelem -r ns -p $(top_srcdir) > elements.conf -+$(ELEMENTSCONF).mk: $(ELEMENTSCONF).conf $(top_builddir)/click-buildtool -+ $(top_builddir)/click-buildtool elem2make -x "$(STD_ELEMENT_OBJS)" < $(ELEMENTSCONF).conf > $(ELEMENTSCONF).mk -+$(ELEMENTSCONF).cc: $(ELEMENTSCONF).conf $(top_builddir)/click-buildtool -+ $(top_builddir)/click-buildtool elem2export < $(ELEMENTSCONF).conf > $(ELEMENTSCONF).cc -+ @rm -f $(ELEMENTSCONF).d -+ -+DEPFILES := $(wildcard *.d) -+ifneq ($(DEPFILES),) -+include $(DEPFILES) -+endif -+ -+install: libnsclick.so -+ $(mkinstalldirs) $(DESTDIR)$(libdir) -+ $(INSTALL) libnsclick.so $(DESTDIR)$(libdir)/libnsclick.so -+uninstall: -+ /bin/rm -f $(DESTDIR)$(libdir)/libnsclick.so -+ -+clean: -+ rm -f *.d *.o $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc elements.conf libnsclick.a \ -+ libnsclick.so -+distclean: clean -+ -rm -f Makefile -+ -+.PHONY: all clean distclean elemlist install uninstall -diff -Nurb click-1.6.0/stamp-h click-1.6.0-27/stamp-h ---- click-1.6.0/stamp-h 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/stamp-h 2009-01-28 16:15:44.000000000 -0500 -@@ -0,0 +1 @@ -+ -diff -Nurb click-1.6.0/tools/Makefile click-1.6.0-27/tools/Makefile ---- click-1.6.0/tools/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/tools/Makefile 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,79 @@ -+# Warning: this file must be usable by regular make -+# (unlike the Makefiles in subdirectories). -+ -+SHELL = /bin/sh -+ -+ -+top_srcdir = .. -+srcdir = . -+top_builddir = .. -+subdir = tools -+conf_auxdir = $(top_srcdir) -+ -+prefix = /d/click/click-1.6.0-27/inst -+bindir = /d/click/click-1.6.0-27/inst/bin -+INSTALL = /usr/bin/install -c -+mkinstalldirs = $(conf_auxdir)/mkinstalldirs -+ -+TOOLDIRS = click-align click-check click-combine click-devirtualize click-fastclassifier click-flatten click-mkmindriver click-pretty click-undead click-xform click2xml click-install -+TARGETS = click-align click-check click-combine click-devirtualize click-fastclassifier click-flatten click-mkmindriver click-pretty click-undead click-xform click2xml click-install -+ -+all: $(TARGETS) -+ -+lib: always Makefile -+ @cd lib && $(MAKE) all -+click-align: lib Makefile -+ @cd click-align && $(MAKE) all-local -+click-check: lib Makefile -+ @cd click-check && $(MAKE) all-local -+click-combine: lib Makefile -+ @cd click-combine && $(MAKE) all-local -+click-devirtualize: lib Makefile -+ @cd click-devirtualize && $(MAKE) all-local -+click-fastclassifier: lib Makefile -+ @cd click-fastclassifier && $(MAKE) all-local -+click-flatten: lib Makefile -+ @cd click-flatten && $(MAKE) all-local -+click-install: lib Makefile -+ @cd click-install && $(MAKE) all-local -+click-ipopt: lib Makefile -+ @cd click-ipopt && $(MAKE) all-local -+click-mkmindriver: lib Makefile -+ @cd click-mkmindriver && $(MAKE) all-local -+click-pretty: lib Makefile -+ @cd click-pretty && $(MAKE) all-local -+click-undead: lib Makefile -+ @cd click-undead && $(MAKE) all-local -+click-xform: lib Makefile -+ @cd click-xform && $(MAKE) all-local -+click2xml: lib Makefile -+ @cd click2xml && $(MAKE) all-local -+udpgen: Makefile -+ @cd udpgen && $(MAKE) all -+always: -+ @: -+ -+Makefile: $(srcdir)/Makefile.in -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status -+ -+clean: -+ @-for d in lib $(TOOLDIRS); do (cd $$d && $(MAKE) clean); done -+distclean: -+ @-for d in lib $(TOOLDIRS); do (cd $$d && $(MAKE) distclean); done -+ -rm -f Makefile -+ -+install: install-subdirs -+install-subdirs: lib -+ @for d in lib $(TARGETS); do (cd $$d && $(MAKE) install-local) || exit 1; done -+install-include: -+ @cd lib && $(MAKE) install-include -+install-lib: -+ @cd lib && $(MAKE) install-lib -+install-man: -+ : -+uninstall: -+ @for d in lib $(TARGETS); do (cd $$d && $(MAKE) uninstall) || exit 1; done -+ -+ -+.PHONY: all always lib $(TOOLDIRS) clean distclean distdir install install-subdirs install-include install-lib uninstall -diff -Nurb click-1.6.0/tools/click-align/Makefile click-1.6.0-27/tools/click-align/Makefile ---- click-1.6.0/tools/click-align/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/tools/click-align/Makefile 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,94 @@ -+SHELL = /bin/sh -+ -+ -+top_srcdir = ../.. -+srcdir = . -+top_builddir = ../.. -+subdir = tools/click-align -+conf_auxdir = $(top_srcdir) -+ -+prefix = /d/click/click-1.6.0-27/inst -+bindir = /d/click/click-1.6.0-27/inst/bin -+HOST_TOOLS = host -+ -+VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include -+ -+ifeq ($(HOST_TOOLS),build) -+CC = -+CXX = -+LIBCLICKTOOL = libclicktool_build.a -+DL_LIBS = -+else -+CC = gcc -W -Wall -+CXX = g++ -W -Wall -+LIBCLICKTOOL = libclicktool.a -+DL_LIBS = -ldl -+endif -+INSTALL = /usr/bin/install -c -+mkinstalldirs = $(conf_auxdir)/mkinstalldirs -+ -+.SUFFIXES: -+.SUFFIXES: .S .c .cc .o .s -+ -+.c.o: -+ $(COMPILE) -c $< -+.s.o: -+ $(COMPILE) -c $< -+.S.o: -+ $(COMPILE) -c $< -+.cc.o: -+ $(CXXCOMPILE) -c $< -+ -+ -+OBJS = alignment.o alignclass.o click-align.o -+ -+CPPFLAGS = -DCLICK_TOOL -+CFLAGS = -g -O2 -+CXXFLAGS = -g -O2 -+DEPCFLAGS = -MD -+ -+DEFS = -DHAVE_CONFIG_H -+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -+ -I$(top_srcdir)/tools/lib -I$(srcdir) -+LDFLAGS = -+LIBS = $(DL_LIBS) -+ -+CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS) -+CXXLD = $(CXX) -+CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ -+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS) -+CCLD = $(CC) -+LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@ -+ -+all: $(LIBCLICKTOOL) all-local -+all-local: click-align -+ -+$(LIBCLICKTOOL): -+ @cd ../lib; $(MAKE) $(LIBCLICKTOOL) -+ -+click-align: Makefile $(OBJS) ../lib/$(LIBCLICKTOOL) -+ $(CXXLINK) -rdynamic $(OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS) -+ -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status -+ -+DEPFILES := $(wildcard *.d) -+ifneq ($(DEPFILES),) -+include $(DEPFILES) -+endif -+ -+install: $(LIBCLICKTOOL) install-local -+install-local: all-local -+ $(mkinstalldirs) $(DESTDIR)$(bindir) -+ $(INSTALL) click-align $(DESTDIR)$(bindir)/click-align -+uninstall: -+ /bin/rm -f $(DESTDIR)$(bindir)/click-align -+ -+clean: -+ rm -f *.d *.o click-align -+distclean: clean -+ -rm -f Makefile -+ -+.PHONY: all all-local clean distclean \ -+ install install-local uninstall $(LIBCLICKTOOL) -diff -Nurb click-1.6.0/tools/click-check/Makefile click-1.6.0-27/tools/click-check/Makefile ---- click-1.6.0/tools/click-check/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/tools/click-check/Makefile 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,94 @@ -+SHELL = /bin/sh -+ -+ -+top_srcdir = ../.. -+srcdir = . -+top_builddir = ../.. -+subdir = tools/click-check -+conf_auxdir = $(top_srcdir) -+ -+prefix = /d/click/click-1.6.0-27/inst -+bindir = /d/click/click-1.6.0-27/inst/bin -+HOST_TOOLS = host -+ -+VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include -+ -+ifeq ($(HOST_TOOLS),build) -+CC = -+CXX = -+LIBCLICKTOOL = libclicktool_build.a -+DL_LIBS = -+else -+CC = gcc -W -Wall -+CXX = g++ -W -Wall -+LIBCLICKTOOL = libclicktool.a -+DL_LIBS = -ldl -+endif -+INSTALL = /usr/bin/install -c -+mkinstalldirs = $(conf_auxdir)/mkinstalldirs -+ -+.SUFFIXES: -+.SUFFIXES: .S .c .cc .o .s -+ -+.c.o: -+ $(COMPILE) -c $< -+.s.o: -+ $(COMPILE) -c $< -+.S.o: -+ $(COMPILE) -c $< -+.cc.o: -+ $(CXXCOMPILE) -c $< -+ -+ -+OBJS = click-check.o -+ -+CPPFLAGS = -DCLICK_TOOL -+CFLAGS = -g -O2 -+CXXFLAGS = -g -O2 -+DEPCFLAGS = -MD -+ -+DEFS = -DHAVE_CONFIG_H -+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -+ -I$(top_srcdir)/tools/lib -I$(srcdir) -+LDFLAGS = -+LIBS = $(DL_LIBS) -+ -+CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS) -+CXXLD = $(CXX) -+CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ -+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS) -+CCLD = $(CC) -+LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@ -+ -+all: $(LIBCLICKTOOL) all-local -+all-local: click-check -+ -+$(LIBCLICKTOOL): -+ @cd ../lib; $(MAKE) $(LIBCLICKTOOL) -+ -+click-check: Makefile $(OBJS) ../lib/$(LIBCLICKTOOL) -+ $(CXXLINK) -rdynamic $(OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS) -+ -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status -+ -+DEPFILES := $(wildcard *.d) -+ifneq ($(DEPFILES),) -+include $(DEPFILES) -+endif -+ -+install: $(LIBCLICKTOOL) install-local -+install-local: all-local -+ $(mkinstalldirs) $(DESTDIR)$(bindir) -+ $(INSTALL) click-check $(DESTDIR)$(bindir)/click-check -+uninstall: -+ /bin/rm -f $(DESTDIR)$(bindir)/click-check -+ -+clean: -+ rm -f *.d *.o click-check -+distclean: clean -+ -rm -f Makefile -+ -+.PHONY: all all-local clean distclean \ -+ install install-local uninstall $(LIBCLICKTOOL) -diff -Nurb click-1.6.0/tools/click-combine/Makefile click-1.6.0-27/tools/click-combine/Makefile ---- click-1.6.0/tools/click-combine/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/tools/click-combine/Makefile 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,99 @@ -+SHELL = /bin/sh -+ -+ -+top_srcdir = ../.. -+srcdir = . -+top_builddir = ../.. -+subdir = tools/click-combine -+conf_auxdir = $(top_srcdir) -+ -+prefix = /d/click/click-1.6.0-27/inst -+bindir = /d/click/click-1.6.0-27/inst/bin -+HOST_TOOLS = host -+ -+VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include -+ -+ifeq ($(HOST_TOOLS),build) -+CC = -+CXX = -+LIBCLICKTOOL = libclicktool_build.a -+DL_LIBS = -+else -+CC = gcc -W -Wall -+CXX = g++ -W -Wall -+LIBCLICKTOOL = libclicktool.a -+DL_LIBS = -ldl -+endif -+INSTALL = /usr/bin/install -c -+mkinstalldirs = $(conf_auxdir)/mkinstalldirs -+ -+.SUFFIXES: -+.SUFFIXES: .S .c .cc .o .s -+ -+.c.o: -+ $(COMPILE) -c $< -+.s.o: -+ $(COMPILE) -c $< -+.S.o: -+ $(COMPILE) -c $< -+.cc.o: -+ $(CXXCOMPILE) -c $< -+ -+ -+OBJS = click-combine.o -+UNOBJS = click-uncombine.o -+ -+CPPFLAGS = -DCLICK_TOOL -+CFLAGS = -g -O2 -+CXXFLAGS = -g -O2 -+DEPCFLAGS = -MD -+ -+DEFS = -DHAVE_CONFIG_H -+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -+ -I$(top_srcdir)/tools/lib -I$(srcdir) -+LDFLAGS = -+LIBS = $(DL_LIBS) -+ -+CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS) -+CXXLD = $(CXX) -+CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ -+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS) -+CCLD = $(CC) -+LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@ -+ -+all: $(LIBCLICKTOOL) all-local -+all-local: click-combine click-uncombine -+ -+$(LIBCLICKTOOL): -+ @cd ../lib; $(MAKE) $(LIBCLICKTOOL) -+ -+click-combine: Makefile $(OBJS) ../lib/$(LIBCLICKTOOL) -+ $(CXXLINK) -rdynamic $(OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS) -+ -+click-uncombine: Makefile $(UNOBJS) ../lib/$(LIBCLICKTOOL) -+ $(CXXLINK) -rdynamic $(UNOBJS) ../lib/$(LIBCLICKTOOL) $(LIBS) -+ -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status -+ -+DEPFILES := $(wildcard *.d) -+ifneq ($(DEPFILES),) -+include $(DEPFILES) -+endif -+ -+install: $(LIBCLICKTOOL) install-local -+install-local: all-local -+ $(mkinstalldirs) $(DESTDIR)$(bindir) -+ $(INSTALL) click-combine $(DESTDIR)$(bindir)/click-combine -+ $(INSTALL) click-uncombine $(DESTDIR)$(bindir)/click-uncombine -+uninstall: -+ /bin/rm -f $(DESTDIR)$(bindir)/click-combine $(DESTDIR)$(bindir)/click-uncombine -+ -+clean: -+ rm -f *.d *.o click-combine click-uncombine -+distclean: clean -+ -rm -f Makefile -+ -+.PHONY: all all-local clean distclean \ -+ install install-local uninstall $(LIBCLICKTOOL) -diff -Nurb click-1.6.0/tools/click-devirtualize/Makefile click-1.6.0-27/tools/click-devirtualize/Makefile ---- click-1.6.0/tools/click-devirtualize/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/tools/click-devirtualize/Makefile 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,94 @@ -+SHELL = /bin/sh -+ -+ -+top_srcdir = ../.. -+srcdir = . -+top_builddir = ../.. -+subdir = tools/click-devirtualize -+conf_auxdir = $(top_srcdir) -+ -+prefix = /d/click/click-1.6.0-27/inst -+bindir = /d/click/click-1.6.0-27/inst/bin -+HOST_TOOLS = host -+ -+VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include -+ -+ifeq ($(HOST_TOOLS),build) -+CC = -+CXX = -+LIBCLICKTOOL = libclicktool_build.a -+DL_LIBS = -+else -+CC = gcc -W -Wall -+CXX = g++ -W -Wall -+LIBCLICKTOOL = libclicktool.a -+DL_LIBS = -ldl -+endif -+INSTALL = /usr/bin/install -c -+mkinstalldirs = $(conf_auxdir)/mkinstalldirs -+ -+.SUFFIXES: -+.SUFFIXES: .S .c .cc .o .s -+ -+.c.o: -+ $(COMPILE) -c $< -+.s.o: -+ $(COMPILE) -c $< -+.S.o: -+ $(COMPILE) -c $< -+.cc.o: -+ $(CXXCOMPILE) -c $< -+ -+ -+OBJS = cxxclass.o specializer.o signature.o click-devirtualize.o -+ -+CPPFLAGS = -DCLICK_TOOL -+CFLAGS = -g -O2 -+CXXFLAGS = -g -O2 -+DEPCFLAGS = -MD -+ -+DEFS = -DHAVE_CONFIG_H -+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -+ -I$(top_srcdir)/tools/lib -I$(srcdir) -+LDFLAGS = -+LIBS = $(DL_LIBS) -+ -+CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS) -+CXXLD = $(CXX) -+CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ -+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS) -+CCLD = $(CC) -+LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@ -+ -+all: $(LIBCLICKTOOL) all-local -+all-local: click-devirtualize -+ -+$(LIBCLICKTOOL): -+ @cd ../lib; $(MAKE) $(LIBCLICKTOOL) -+ -+click-devirtualize: Makefile $(OBJS) ../lib/$(LIBCLICKTOOL) -+ $(CXXLINK) -rdynamic $(OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS) -+ -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status -+ -+DEPFILES := $(wildcard *.d) -+ifneq ($(DEPFILES),) -+include $(DEPFILES) -+endif -+ -+install: $(LIBCLICKTOOL) install-local -+install-local: all-local -+ $(mkinstalldirs) $(DESTDIR)$(bindir) -+ $(INSTALL) click-devirtualize $(DESTDIR)$(bindir)/click-devirtualize -+uninstall: -+ /bin/rm -f $(DESTDIR)$(bindir)/click-devirtualize -+ -+clean: -+ rm -f *.d *.o click-devirtualize -+distclean: clean -+ -rm -f Makefile -+ -+.PHONY: all all-local clean distclean \ -+ install install-local uninstall $(LIBCLICKTOOL) -diff -Nurb click-1.6.0/tools/click-fastclassifier/Makefile click-1.6.0-27/tools/click-fastclassifier/Makefile ---- click-1.6.0/tools/click-fastclassifier/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/tools/click-fastclassifier/Makefile 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,94 @@ -+SHELL = /bin/sh -+ -+ -+top_srcdir = ../.. -+srcdir = . -+top_builddir = ../.. -+subdir = tools/click-fastclassifier -+conf_auxdir = $(top_srcdir) -+ -+prefix = /d/click/click-1.6.0-27/inst -+bindir = /d/click/click-1.6.0-27/inst/bin -+HOST_TOOLS = host -+ -+VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include -+ -+ifeq ($(HOST_TOOLS),build) -+CC = -+CXX = -+LIBCLICKTOOL = libclicktool_build.a -+DL_LIBS = -+else -+CC = gcc -W -Wall -+CXX = g++ -W -Wall -+LIBCLICKTOOL = libclicktool.a -+DL_LIBS = -ldl -+endif -+INSTALL = /usr/bin/install -c -+mkinstalldirs = $(conf_auxdir)/mkinstalldirs -+ -+.SUFFIXES: -+.SUFFIXES: .S .c .cc .o .s -+ -+.c.o: -+ $(COMPILE) -c $< -+.s.o: -+ $(COMPILE) -c $< -+.S.o: -+ $(COMPILE) -c $< -+.cc.o: -+ $(CXXCOMPILE) -c $< -+ -+ -+OBJS = click-fastclassifier.o fc_classifier.o fc_ipclassifier.o -+ -+CPPFLAGS = -DCLICK_TOOL -+CFLAGS = -g -O2 -+CXXFLAGS = -g -O2 -+DEPCFLAGS = -MD -+ -+DEFS = -DHAVE_CONFIG_H -+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -+ -I$(top_srcdir)/tools/lib -I$(srcdir) -+LDFLAGS = -+LIBS = $(DL_LIBS) -+ -+CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS) -+CXXLD = $(CXX) -+CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ -+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS) -+CCLD = $(CC) -+LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@ -+ -+all: $(LIBCLICKTOOL) all-local -+all-local: click-fastclassifier -+ -+$(LIBCLICKTOOL): -+ @cd ../lib; $(MAKE) $(LIBCLICKTOOL) -+ -+click-fastclassifier: Makefile $(OBJS) ../lib/$(LIBCLICKTOOL) -+ $(CXXLINK) -rdynamic $(OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS) -+ -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status -+ -+DEPFILES := $(wildcard *.d) -+ifneq ($(DEPFILES),) -+include $(DEPFILES) -+endif -+ -+install: $(LIBCLICKTOOL) install-local -+install-local: all-local -+ $(mkinstalldirs) $(DESTDIR)$(bindir) -+ $(INSTALL) click-fastclassifier $(DESTDIR)$(bindir)/click-fastclassifier -+uninstall: -+ /bin/rm -f $(DESTDIR)$(bindir)/click-fastclassifier -+ -+clean: -+ rm -f *.d *.o click-fastclassifier -+distclean: clean -+ -rm -f Makefile -+ -+.PHONY: all all-local clean distclean \ -+ install install-local uninstall $(LIBCLICKTOOL) -diff -Nurb click-1.6.0/tools/click-flatten/Makefile click-1.6.0-27/tools/click-flatten/Makefile ---- click-1.6.0/tools/click-flatten/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/tools/click-flatten/Makefile 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,94 @@ -+SHELL = /bin/sh -+ -+ -+top_srcdir = ../.. -+srcdir = . -+top_builddir = ../.. -+subdir = tools/click-flatten -+conf_auxdir = $(top_srcdir) -+ -+prefix = /d/click/click-1.6.0-27/inst -+bindir = /d/click/click-1.6.0-27/inst/bin -+HOST_TOOLS = host -+ -+VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include -+ -+ifeq ($(HOST_TOOLS),build) -+CC = -+CXX = -+LIBCLICKTOOL = libclicktool_build.a -+DL_LIBS = -+else -+CC = gcc -W -Wall -+CXX = g++ -W -Wall -+LIBCLICKTOOL = libclicktool.a -+DL_LIBS = -ldl -+endif -+INSTALL = /usr/bin/install -c -+mkinstalldirs = $(conf_auxdir)/mkinstalldirs -+ -+.SUFFIXES: -+.SUFFIXES: .S .c .cc .o .s -+ -+.c.o: -+ $(COMPILE) -c $< -+.s.o: -+ $(COMPILE) -c $< -+.S.o: -+ $(COMPILE) -c $< -+.cc.o: -+ $(CXXCOMPILE) -c $< -+ -+ -+OBJS = click-flatten.o -+ -+CPPFLAGS = -DCLICK_TOOL -+CFLAGS = -g -O2 -+CXXFLAGS = -g -O2 -+DEPCFLAGS = -MD -+ -+DEFS = -DHAVE_CONFIG_H -+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -+ -I$(top_srcdir)/tools/lib -I$(srcdir) -+LDFLAGS = -+LIBS = $(DL_LIBS) -+ -+CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS) -+CXXLD = $(CXX) -+CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ -+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS) -+CCLD = $(CC) -+LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@ -+ -+all: $(LIBCLICKTOOL) all-local -+all-local: click-flatten -+ -+$(LIBCLICKTOOL): -+ @cd ../lib; $(MAKE) $(LIBCLICKTOOL) -+ -+click-flatten: Makefile $(OBJS) ../lib/$(LIBCLICKTOOL) -+ $(CXXLINK) -rdynamic $(OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS) -+ -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status -+ -+DEPFILES := $(wildcard *.d) -+ifneq ($(DEPFILES),) -+include $(DEPFILES) -+endif -+ -+install: $(LIBCLICKTOOL) install-local -+install-local: all-local -+ $(mkinstalldirs) $(DESTDIR)$(bindir) -+ $(INSTALL) click-flatten $(DESTDIR)$(bindir)/click-flatten -+uninstall: -+ /bin/rm -f $(DESTDIR)$(bindir)/click-flatten -+ -+clean: -+ rm -f *.d *.o click-flatten -+distclean: clean -+ -rm -f Makefile -+ -+.PHONY: all all-local clean distclean \ -+ install install-local uninstall $(LIBCLICKTOOL) -diff -Nurb click-1.6.0/tools/click-install/Makefile click-1.6.0-27/tools/click-install/Makefile ---- click-1.6.0/tools/click-install/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/tools/click-install/Makefile 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,99 @@ -+SHELL = /bin/sh -+ -+ -+top_srcdir = ../.. -+srcdir = . -+top_builddir = ../.. -+subdir = tools/click-install -+conf_auxdir = $(top_srcdir) -+ -+prefix = /d/click/click-1.6.0-27/inst -+sbindir = /d/click/click-1.6.0-27/inst/sbin -+HOST_TOOLS = host -+ -+VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include -+ -+ifeq ($(HOST_TOOLS),build) -+CC = -+CXX = -+LIBCLICKTOOL = libclicktool_build.a -+DL_LIBS = -+else -+CC = gcc -W -Wall -+CXX = g++ -W -Wall -+LIBCLICKTOOL = libclicktool.a -+DL_LIBS = -ldl -+endif -+INSTALL = /usr/bin/install -c -+mkinstalldirs = $(conf_auxdir)/mkinstalldirs -+ -+.SUFFIXES: -+.SUFFIXES: .S .c .cc .o .s -+ -+.c.o: -+ $(COMPILE) -c $< -+.s.o: -+ $(COMPILE) -c $< -+.S.o: -+ $(COMPILE) -c $< -+.cc.o: -+ $(CXXCOMPILE) -c $< -+ -+ -+OBJS = common.o click-install.o -+UN_OBJS = common.o click-uninstall.o -+ -+CPPFLAGS = -DCLICK_TOOL -+CFLAGS = -g -O2 -+CXXFLAGS = -g -O2 -+DEPCFLAGS = -MD -+ -+DEFS = -DHAVE_CONFIG_H -+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -+ -I$(top_srcdir)/tools/lib -I$(srcdir) -+LDFLAGS = -+LIBS = $(DL_LIBS) -+ -+CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS) -+CXXLD = $(CXX) -+CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ -+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS) -+CCLD = $(CC) -+LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@ -+ -+all: $(LIBCLICKTOOL) all-local -+all-local: click-install click-uninstall -+ -+$(LIBCLICKTOOL): -+ @cd ../lib; $(MAKE) $(LIBCLICKTOOL) -+ -+click-install: Makefile $(OBJS) ../lib/$(LIBCLICKTOOL) -+ $(CXXLINK) -rdynamic $(OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS) -+ -+click-uninstall: Makefile $(UN_OBJS) ../lib/$(LIBCLICKTOOL) -+ $(CXXLINK) -rdynamic $(UN_OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS) -+ -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status -+ -+DEPFILES := $(wildcard *.d) -+ifneq ($(DEPFILES),) -+include $(DEPFILES) -+endif -+ -+install: $(LIBCLICKTOOL) install-local -+install-local: all-local -+ $(mkinstalldirs) $(DESTDIR)$(sbindir) -+ $(INSTALL) click-install $(DESTDIR)$(sbindir)/click-install -+ $(INSTALL) click-uninstall $(DESTDIR)$(sbindir)/click-uninstall -+uninstall: -+ /bin/rm -f $(DESTDIR)$(sbindir)/click-install $(DESTDIR)$(sbindir)/click-uninstall -+ -+clean: -+ rm -f *.d *.o click-install click-uninstall -+distclean: clean -+ -rm -f Makefile -+ -+.PHONY: all all-local clean distclean \ -+ install install-local uninstall $(LIBCLICKTOOL) -diff -Nurb click-1.6.0/tools/click-mkmindriver/Makefile click-1.6.0-27/tools/click-mkmindriver/Makefile ---- click-1.6.0/tools/click-mkmindriver/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/tools/click-mkmindriver/Makefile 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,94 @@ -+SHELL = /bin/sh -+ -+ -+top_srcdir = ../.. -+srcdir = . -+top_builddir = ../.. -+subdir = tools/click-mkmindriver -+conf_auxdir = $(top_srcdir) -+ -+prefix = /d/click/click-1.6.0-27/inst -+bindir = /d/click/click-1.6.0-27/inst/bin -+HOST_TOOLS = host -+ -+VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include -+ -+ifneq ($(HOST_TOOLS),host) -+CC = -+CXX = -+LIBCLICKTOOL = libclicktool_build.a -+DL_LIBS = -+else -+CC = gcc -W -Wall -+CXX = g++ -W -Wall -+LIBCLICKTOOL = libclicktool.a -+DL_LIBS = -ldl -+endif -+INSTALL = /usr/bin/install -c -+mkinstalldirs = $(conf_auxdir)/mkinstalldirs -+ -+.SUFFIXES: -+.SUFFIXES: .S .c .cc .o .s -+ -+.c.o: -+ $(COMPILE) -c $< -+.s.o: -+ $(COMPILE) -c $< -+.S.o: -+ $(COMPILE) -c $< -+.cc.o: -+ $(CXXCOMPILE) -c $< -+ -+ -+OBJS = click-mkmindriver.o -+ -+CPPFLAGS = -DCLICK_TOOL -+CFLAGS = -g -O2 -+CXXFLAGS = -g -O2 -+DEPCFLAGS = -MD -+ -+DEFS = -DHAVE_CONFIG_H -+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -+ -I$(top_srcdir)/tools/lib -I$(srcdir) -+LDFLAGS = -+LIBS = $(DL_LIBS) -+ -+CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS) -+CXXLD = $(CXX) -+CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ -+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS) -+CCLD = $(CC) -+LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@ -+ -+all: $(LIBCLICKTOOL) all-local -+all-local: click-mkmindriver -+ -+$(LIBCLICKTOOL): -+ @cd ../lib; $(MAKE) $(LIBCLICKTOOL) -+ -+click-mkmindriver: Makefile $(OBJS) ../lib/$(LIBCLICKTOOL) -+ $(CXXLINK) -rdynamic $(OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS) -+ -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status -+ -+DEPFILES := $(wildcard *.d) -+ifneq ($(DEPFILES),) -+include $(DEPFILES) -+endif -+ -+install: $(LIBCLICKTOOL) install-local -+install-local: all-local -+ $(mkinstalldirs) $(DESTDIR)$(bindir) -+ $(INSTALL) click-mkmindriver $(DESTDIR)$(bindir)/click-mkmindriver -+uninstall: -+ /bin/rm -f $(DESTDIR)$(bindir)/click-mkmindriver -+ -+clean: -+ rm -f *.d *.o click-mkmindriver -+distclean: clean -+ -rm -f Makefile -+ -+.PHONY: all all-local clean distclean \ -+ install install-local uninstall $(LIBCLICKTOOL) -diff -Nurb click-1.6.0/tools/click-pretty/Makefile click-1.6.0-27/tools/click-pretty/Makefile ---- click-1.6.0/tools/click-pretty/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/tools/click-pretty/Makefile 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,94 @@ -+SHELL = /bin/sh -+ -+ -+top_srcdir = ../.. -+srcdir = . -+top_builddir = ../.. -+subdir = tools/click-pretty -+conf_auxdir = $(top_srcdir) -+ -+prefix = /d/click/click-1.6.0-27/inst -+bindir = /d/click/click-1.6.0-27/inst/bin -+HOST_TOOLS = host -+ -+VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include -+ -+ifeq ($(HOST_TOOLS),build) -+CC = -+CXX = -+LIBCLICKTOOL = libclicktool_build.a -+DL_LIBS = -+else -+CC = gcc -W -Wall -+CXX = g++ -W -Wall -+LIBCLICKTOOL = libclicktool.a -+DL_LIBS = -ldl -+endif -+INSTALL = /usr/bin/install -c -+mkinstalldirs = $(conf_auxdir)/mkinstalldirs -+ -+.SUFFIXES: -+.SUFFIXES: .S .c .cc .o .s -+ -+.c.o: -+ $(COMPILE) -c $< -+.s.o: -+ $(COMPILE) -c $< -+.S.o: -+ $(COMPILE) -c $< -+.cc.o: -+ $(CXXCOMPILE) -c $< -+ -+ -+OBJS = click-pretty.o html.o -+ -+CPPFLAGS = -DCLICK_TOOL -+CFLAGS = -g -O2 -+CXXFLAGS = -g -O2 -+DEPCFLAGS = -MD -+ -+DEFS = -DHAVE_CONFIG_H -+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -+ -I$(top_srcdir)/tools/lib -I$(srcdir) -+LDFLAGS = -+LIBS = $(DL_LIBS) -+ -+CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS) -+CXXLD = $(CXX) -+CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ -+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS) -+CCLD = $(CC) -+LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@ -+ -+all: $(LIBCLICKTOOL) all-local -+all-local: click-pretty -+ -+$(LIBCLICKTOOL): -+ @cd ../lib; $(MAKE) $(LIBCLICKTOOL) -+ -+click-pretty: Makefile $(OBJS) ../lib/$(LIBCLICKTOOL) -+ $(CXXLINK) -rdynamic $(OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS) -+ -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status -+ -+DEPFILES := $(wildcard *.d) -+ifneq ($(DEPFILES),) -+include $(DEPFILES) -+endif -+ -+install: $(LIBCLICKTOOL) install-local -+install-local: all-local -+ $(mkinstalldirs) $(DESTDIR)$(bindir) -+ $(INSTALL) click-pretty $(DESTDIR)$(bindir)/click-pretty -+uninstall: -+ /bin/rm -f $(DESTDIR)$(bindir)/click-pretty -+ -+clean: -+ rm -f *.d *.o click-pretty -+distclean: clean -+ -rm -f Makefile -+ -+.PHONY: all all-local clean distclean \ -+ install install-local uninstall $(LIBCLICKTOOL) -diff -Nurb click-1.6.0/tools/click-undead/Makefile click-1.6.0-27/tools/click-undead/Makefile ---- click-1.6.0/tools/click-undead/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/tools/click-undead/Makefile 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,94 @@ -+SHELL = /bin/sh -+ -+ -+top_srcdir = ../.. -+srcdir = . -+top_builddir = ../.. -+subdir = tools/click-undead -+conf_auxdir = $(top_srcdir) -+ -+prefix = /d/click/click-1.6.0-27/inst -+bindir = /d/click/click-1.6.0-27/inst/bin -+HOST_TOOLS = host -+ -+VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include -+ -+ifeq ($(HOST_TOOLS),build) -+CC = -+CXX = -+LIBCLICKTOOL = libclicktool_build.a -+DL_LIBS = -+else -+CC = gcc -W -Wall -+CXX = g++ -W -Wall -+LIBCLICKTOOL = libclicktool.a -+DL_LIBS = -ldl -+endif -+INSTALL = /usr/bin/install -c -+mkinstalldirs = $(conf_auxdir)/mkinstalldirs -+ -+.SUFFIXES: -+.SUFFIXES: .S .c .cc .o .s -+ -+.c.o: -+ $(COMPILE) -c $< -+.s.o: -+ $(COMPILE) -c $< -+.S.o: -+ $(COMPILE) -c $< -+.cc.o: -+ $(CXXCOMPILE) -c $< -+ -+ -+OBJS = click-undead.o -+ -+CPPFLAGS = -DCLICK_TOOL -+CFLAGS = -g -O2 -+CXXFLAGS = -g -O2 -+DEPCFLAGS = -MD -+ -+DEFS = -DHAVE_CONFIG_H -+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -+ -I$(top_srcdir)/tools/lib -I$(srcdir) -+LDFLAGS = -+LIBS = $(DL_LIBS) -+ -+CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS) -+CXXLD = $(CXX) -+CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ -+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS) -+CCLD = $(CC) -+LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@ -+ -+all: $(LIBCLICKTOOL) all-local -+all-local: click-undead -+ -+$(LIBCLICKTOOL): -+ @cd ../lib; $(MAKE) $(LIBCLICKTOOL) -+ -+click-undead: Makefile $(OBJS) ../lib/$(LIBCLICKTOOL) -+ $(CXXLINK) -rdynamic $(OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS) -+ -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status -+ -+DEPFILES := $(wildcard *.d) -+ifneq ($(DEPFILES),) -+include $(DEPFILES) -+endif -+ -+install: $(LIBCLICKTOOL) install-local -+install-local: all-local -+ $(mkinstalldirs) $(DESTDIR)$(bindir) -+ $(INSTALL) click-undead $(DESTDIR)$(bindir)/click-undead -+uninstall: -+ /bin/rm -f $(DESTDIR)$(bindir)/click-undead -+ -+clean: -+ rm -f *.d *.o click-undead -+distclean: clean -+ -rm -f Makefile -+ -+.PHONY: all all-local clean distclean \ -+ install install-local uninstall $(LIBCLICKTOOL) -diff -Nurb click-1.6.0/tools/click-xform/Makefile click-1.6.0-27/tools/click-xform/Makefile ---- click-1.6.0/tools/click-xform/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/tools/click-xform/Makefile 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,94 @@ -+SHELL = /bin/sh -+ -+ -+top_srcdir = ../.. -+srcdir = . -+top_builddir = ../.. -+subdir = tools/click-xform -+conf_auxdir = $(top_srcdir) -+ -+prefix = /d/click/click-1.6.0-27/inst -+bindir = /d/click/click-1.6.0-27/inst/bin -+HOST_TOOLS = host -+ -+VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include -+ -+ifeq ($(HOST_TOOLS),build) -+CC = -+CXX = -+LIBCLICKTOOL = libclicktool_build.a -+DL_LIBS = -+else -+CC = gcc -W -Wall -+CXX = g++ -W -Wall -+LIBCLICKTOOL = libclicktool.a -+DL_LIBS = -ldl -+endif -+INSTALL = /usr/bin/install -c -+mkinstalldirs = $(conf_auxdir)/mkinstalldirs -+ -+.SUFFIXES: -+.SUFFIXES: .S .c .cc .o .s -+ -+.c.o: -+ $(COMPILE) -c $< -+.s.o: -+ $(COMPILE) -c $< -+.S.o: -+ $(COMPILE) -c $< -+.cc.o: -+ $(CXXCOMPILE) -c $< -+ -+ -+OBJS = adjacency.o click-xform.o -+ -+CPPFLAGS = -DCLICK_TOOL -+CFLAGS = -g -O2 -+CXXFLAGS = -g -O2 -+DEPCFLAGS = -MD -+ -+DEFS = -DHAVE_CONFIG_H -+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -+ -I$(top_srcdir)/tools/lib -I$(srcdir) -+LDFLAGS = -+LIBS = $(DL_LIBS) -+ -+CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS) -+CXXLD = $(CXX) -+CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ -+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS) -+CCLD = $(CC) -+LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@ -+ -+all: $(LIBCLICKTOOL) all-local -+all-local: click-xform -+ -+$(LIBCLICKTOOL): -+ @cd ../lib; $(MAKE) $(LIBCLICKTOOL) -+ -+click-xform: Makefile $(OBJS) ../lib/$(LIBCLICKTOOL) -+ $(CXXLINK) -rdynamic $(OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS) -+ -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status -+ -+DEPFILES := $(wildcard *.d) -+ifneq ($(DEPFILES),) -+include $(DEPFILES) -+endif -+ -+install: $(LIBCLICKTOOL) install-local -+install-local: all-local -+ $(mkinstalldirs) $(DESTDIR)$(bindir) -+ $(INSTALL) click-xform $(DESTDIR)$(bindir)/click-xform -+uninstall: -+ /bin/rm -f $(DESTDIR)$(bindir)/click-xform -+ -+clean: -+ rm -f *.d *.o click-xform -+distclean: clean -+ -rm -f Makefile -+ -+.PHONY: all all-local clean distclean \ -+ install install-local uninstall $(LIBCLICKTOOL) -diff -Nurb click-1.6.0/tools/click2xml/Makefile click-1.6.0-27/tools/click2xml/Makefile ---- click-1.6.0/tools/click2xml/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/tools/click2xml/Makefile 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,100 @@ -+SHELL = /bin/sh -+ -+ -+top_srcdir = ../.. -+srcdir = . -+top_builddir = ../.. -+subdir = tools/click2xml -+conf_auxdir = $(top_srcdir) -+ -+prefix = /d/click/click-1.6.0-27/inst -+bindir = /d/click/click-1.6.0-27/inst/bin -+HOST_TOOLS = host -+ -+VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include -+ -+ifeq ($(HOST_TOOLS),build) -+CC = -+CXX = -+LIBCLICKTOOL = libclicktool_build.a -+DL_LIBS = -+else -+CC = gcc -W -Wall -+CXX = g++ -W -Wall -+LIBCLICKTOOL = libclicktool.a -+DL_LIBS = -ldl -+endif -+INSTALL = /usr/bin/install -c -+mkinstalldirs = $(conf_auxdir)/mkinstalldirs -+ -+.SUFFIXES: -+.SUFFIXES: .S .c .cc .o .s -+ -+.c.o: -+ $(COMPILE) -c $< -+.s.o: -+ $(COMPILE) -c $< -+.S.o: -+ $(COMPILE) -c $< -+.cc.o: -+ $(CXXCOMPILE) -c $< -+ -+ -+CLICK2XML_OBJS = click2xml.o -+XML2CLICK_OBJS = xml2click.o -+ -+CPPFLAGS = -DCLICK_TOOL -+CFLAGS = -g -O2 -+CXXFLAGS = -g -O2 -+DEPCFLAGS = -MD -+ -+DEFS = -DHAVE_CONFIG_H -+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -+ -I$(top_srcdir)/tools/lib -I$(srcdir) -+LDFLAGS = -+LIBS = -lexpat $(DL_LIBS) -+ -+CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS) -+CXXLD = $(CXX) -+CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ -+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS) -+CCLD = $(CC) -+LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@ -+ -+all: $(LIBCLICKTOOL) all-local -+all-local: click2xml xml2click -+ -+$(LIBCLICKTOOL): -+ @cd ../lib; $(MAKE) $(LIBCLICKTOOL) -+ -+click2xml: Makefile $(CLICK2XML_OBJS) ../lib/$(LIBCLICKTOOL) -+ $(CXXLINK) -rdynamic $(CLICK2XML_OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS) -+ -+xml2click: Makefile $(XML2CLICK_OBJS) ../lib/$(LIBCLICKTOOL) -+ $(CXXLINK) -rdynamic $(XML2CLICK_OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS) -+ -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status -+ -+DEPFILES := $(wildcard *.d) -+ifneq ($(DEPFILES),) -+include $(DEPFILES) -+endif -+ -+install: $(LIBCLICKTOOL) install-local -+install-local: all-local -+ $(mkinstalldirs) $(DESTDIR)$(bindir) -+ $(INSTALL) click2xml $(DESTDIR)$(bindir)/click2xml -+ test -z "xml2click" || $(INSTALL) xml2click $(DESTDIR)$(bindir)/xml2click -+uninstall: -+ /bin/rm -f $(DESTDIR)$(bindir)/click2xml -+ test -z "xml2click" || /bin/rm -f $(DESTDIR)$(bindir)/xml2click -+ -+clean: -+ rm -f *.d *.o click2xml xml2click -+distclean: clean -+ -rm -f Makefile -+ -+.PHONY: all all-local clean distclean \ -+ install install-local uninstall $(LIBCLICKTOOL) -diff -Nurb click-1.6.0/tools/lib/Makefile click-1.6.0-27/tools/lib/Makefile ---- click-1.6.0/tools/lib/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/tools/lib/Makefile 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,124 @@ -+SHELL = /bin/sh -+ -+ -+top_srcdir = ../.. -+srcdir = . -+top_builddir = ../.. -+subdir = tools/lib -+conf_auxdir = $(top_srcdir) -+ -+prefix = /d/click/click-1.6.0-27/inst -+bindir = /d/click/click-1.6.0-27/inst/bin -+libdir = /d/click/click-1.6.0-27/inst/lib -+includedir = /d/click/click-1.6.0-27/inst/include -+toolincludedir = $(includedir)/clicktool -+HOST_TOOLS = host -+ -+VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/lib -+ -+CC = gcc -W -Wall -+CXX = g++ -W -Wall -+AR_CREATE = ar cru -+RANLIB = ranlib -+BUILD_CC = -+BUILD_CXX = -+BUILD_AR_CREATE = cru -+BUILD_RANLIB = -+INSTALL = /usr/bin/install -c -+INSTALL_DATA = /usr/bin/install -c -m 644 -+INSTALL_DATA_IF_CHANGED = $(top_builddir)/installch -m 644 -+mkinstalldirs = $(conf_auxdir)/mkinstalldirs -+ -+.SUFFIXES: -+.SUFFIXES: .S .c .cc .o .bo .s -+ -+.c.o: -+ $(COMPILE) -c $< -+ @-/bin/mv $*.d $*.hd -+.s.o: -+ $(COMPILE) -c $< -+ @-/bin/mv $*.d $*.hd -+.S.o: -+ $(COMPILE) -c $< -+ @-/bin/mv $*.d $*.hd -+.cc.o: -+ $(CXXCOMPILE) -c $< -+ @-/bin/mv $*.d $*.hd -+.c.bo: -+ $(BUILD_COMPILE) -c $< -o $@ -+ @-sed 's/\.o:/\.bo:/' < $*.d > $*.bd; /bin/rm -f $*.d -+.cc.bo: -+ $(BUILD_CXXCOMPILE) -c $< -o $@ -+ @-sed 's/\.o:/\.bo:/' < $*.d > $*.bd; /bin/rm -f $*.d -+ -+ -+OBJS = string.o straccum.o \ -+ bitvector.o vectorv.o vectori.o hashmapi.o bighashmap_arena.o \ -+ ipaddress.o etheraddress.o \ -+ timestamp.o error.o \ -+ elementt.o eclasst.o routert.o runparse.o variableenv.o \ -+ lexert.o lexertinfo.o driver.o \ -+ confparse.o archive.o processingt.o etraits.o elementmap.o \ -+ userutils.o md5.o toolutils.o clp.o -+BUILDOBJS = $(patsubst %.o,%.bo,$(OBJS)) -+ -+CPPFLAGS = -DCLICK_TOOL -+CFLAGS = -g -O2 -+CXXFLAGS = -g -O2 -+DEPCFLAGS = -MD -+ -+DEFS = -DHAVE_CONFIG_H -+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -+ -I$(srcdir) -+LDFLAGS = -+LIBS = -+ -+CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS) -+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS) -+BUILD_CXXCOMPILE = $(BUILD_CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS) -+BUILD_COMPILE = $(BUILD_CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS) -+ -+ifeq ($(HOST_TOOLS),mixed) -+all: libclicktool.a libclicktool_build.a -+endif -+ifeq ($(HOST_TOOLS),build) -+all: libclicktool_build.a -+endif -+ifeq ($(HOST_TOOLS),host) -+all: libclicktool.a -+endif -+ -+libclicktool.a: Makefile $(OBJS) -+ $(AR_CREATE) libclicktool.a $(OBJS) -+ $(RANLIB) libclicktool.a -+libclicktool_build.a: Makefile $(BUILDOBJS) -+ $(BUILD_AR_CREATE) libclicktool_build.a $(BUILDOBJS) -+ $(BUILD_RANLIB) libclicktool_build.a -+ -+Makefile: $(srcdir)/Makefile.in -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status -+ -+DEPFILES := $(wildcard *.hd *.bd) -+ifneq ($(DEPFILES),) -+include $(DEPFILES) -+endif -+ -+install: install-local -+install-lib install-local: libclicktool.a install-include -+ $(mkinstalldirs) $(DESTDIR)$(libdir) -+ $(INSTALL) libclicktool.a $(DESTDIR)$(libdir)/libclicktool.a -+install-include: -+ $(mkinstalldirs) $(DESTDIR)$(toolincludedir) -+ $(INSTALL_DATA_IF_CHANGED) $(srcdir)/*.hh $(DESTDIR)$(toolincludedir) -+uninstall: -+ /bin/rm -f $(DESTDIR)$(libdir)/libclicktool.a -+ cd $(srcdir); for i in *.hh; do /bin/rm -f $(DESTDIR)$(toolincludedir)/$$i; done -+ -+clean: -+ rm -f *.d *.hd *.bd *.o *.bo libclicktool.a libclicktool_build.a -+distclean: clean -+ -rm -f Makefile -+ -+.PHONY: all clean distclean \ -+ install install-lib install-local install-include uninstall -diff -Nurb click-1.6.0/userlevel/Makefile click-1.6.0-27/userlevel/Makefile ---- click-1.6.0/userlevel/Makefile 1969-12-31 19:00:00.000000000 -0500 -+++ click-1.6.0-27/userlevel/Makefile 2009-01-28 16:15:43.000000000 -0500 -@@ -0,0 +1,152 @@ -+## The following line supports click-mkmindriver and should not be changed. -+## Click userlevel driver Makefile ## -+SHELL = /bin/sh -+ -+top_srcdir := .. -+srcdir := . -+top_builddir := .. -+subdir := userlevel -+conf_auxdir := $(top_srcdir) -+ -+prefix = /d/click/click-1.6.0-27/inst -+bindir = /d/click/click-1.6.0-27/inst/bin -+sbindir = /d/click/click-1.6.0-27/inst/sbin -+libdir = /d/click/click-1.6.0-27/inst/lib -+ -+VPATH = .:$(top_srcdir)/lib:$(top_srcdir)/$(subdir):$(top_srcdir)/elements/standard -+ -+CC = gcc -W -Wall -+CPP = gcc -W -Wall -E -+CXX = g++ -W -Wall -+CXXCPP = g++ -W -Wall -E -+AR_CREATE = ar cru -+RANLIB = ranlib -+INSTALL = /usr/bin/install -c -+mkinstalldirs = $(conf_auxdir)/mkinstalldirs -+ -+ifeq ($(V),1) -+ccompile = $(COMPILE) $(1) -+cxxcompile = $(CXXCOMPILE) $(1) -+else -+ccompile = @/bin/echo ' ' $(2) $< && $(COMPILE) $(1) -+cxxcompile = @/bin/echo ' ' $(2) $< && $(CXXCOMPILE) $(1) -+endif -+ -+.SUFFIXES: -+.SUFFIXES: .S .c .cc .o .s .ii -+ -+.c.o: -+ $(call ccompile,-c $< -o $@,CC) -+.s.o: -+ $(call ccompile,-c $< -o $@,ASM) -+.S.o: -+ $(call ccompile,-c $< -o $@,ASM) -+.cc.o: -+ $(call cxxcompile,-c $< -o $@,CXX) -+.cc.s: -+ $(call cxxcompile,-S $< -o $@,CXX -S) -+.cc.ii: -+ $(call cxxcompile,-E $< > $@,CXXCPP) -+ ++# define KTIME_TV64(__s) ({ ktime_t __kt; __kt.tv64 = (__s); __kt; }) ++# define KTIME_SEC_NSEC(__sec, __nsec) ({ ktime_t __kt; __kt.tv.sec = (__sec); __kt.tv.nsec = (__nsec); __kt; }) ++# define TIMEVAL_SEC_USEC(__sec, __usec) ({ struct timeval __tv; __tv.tv_sec = (__sec); __tv.tv_usec = (__usec); __tv; }) ++# define TIMESPEC_SEC_NSEC(__sec, __nsec) ({ struct timespec __ts; __ts.tv_sec = (__sec); __ts.tv_nsec = (__nsec); __ts; }) ++#else ++# define KTIME_TV64(__s) ((ktime_t) { .tv64 = (__s) }) ++# define KTIME_SEC_NSEC(__sec, __nsec) ((ktime_t) { .tv = { .sec = (__sec), .nsec = (__nsec) } }) ++# define TIMEVAL_SEC_USEC(__sec, __usec) ((struct timeval) { .tv_sec = (__sec), .tv_usec = (__usec) }) ++# define TIMESPEC_SEC_NSEC(__sec, __nsec) ((struct timespec) { .tv_sec = (__sec), .tv_nsec = (__nsec) }) ++#endif ++ + /* + * Helper macros/inlines to get the ktime_t math right in the timespec + * representation. The macros are sometimes ugly - their actual use is +@@ -150,7 +173,7 @@ + /* Set a ktime_t variable to a value in sec/nsec representation: */ + static inline ktime_t ktime_set(const long secs, const unsigned long nsecs) + { +- return (ktime_t) { .tv = { .sec = secs, .nsec = nsecs } }; ++ return KTIME_SEC_NSEC(secs, nsecs); + } + + /** +@@ -223,8 +246,7 @@ + */ + static inline ktime_t timespec_to_ktime(const struct timespec ts) + { +- return (ktime_t) { .tv = { .sec = (s32)ts.tv_sec, +- .nsec = (s32)ts.tv_nsec } }; ++ return KTIME_SEC_NSEC((s32)ts.tv_sec, (s32)ts.tv_nsec); + } + + /** +@@ -235,8 +257,7 @@ + */ + static inline ktime_t timeval_to_ktime(const struct timeval tv) + { +- return (ktime_t) { .tv = { .sec = (s32)tv.tv_sec, +- .nsec = (s32)tv.tv_usec * 1000 } }; ++ return KTIME_SEC_NSEC((s32)tv.tv_sec, (s32)tv.tv_usec * 1000); + } + + /** +@@ -247,8 +268,7 @@ + */ + static inline struct timespec ktime_to_timespec(const ktime_t kt) + { +- return (struct timespec) { .tv_sec = (time_t) kt.tv.sec, +- .tv_nsec = (long) kt.tv.nsec }; ++ return TIMESPEC_SEC_NSEC((time_t) kt.tv.sec, (long) kt.tv.nsec); + } + + /** +@@ -259,9 +279,8 @@ + */ + static inline struct timeval ktime_to_timeval(const ktime_t kt) + { +- return (struct timeval) { +- .tv_sec = (time_t) kt.tv.sec, +- .tv_usec = (suseconds_t) (kt.tv.nsec / NSEC_PER_USEC) }; ++ return TIMEVAL_SEC_USEC((time_t) kt.tv.sec, ++ (suseconds_t) (kt.tv.nsec / NSEC_PER_USEC)); + } + + /** +@@ -329,7 +348,7 @@ + + static inline ktime_t ns_to_ktime(u64 ns) + { +- static const ktime_t ktime_zero = { .tv64 = 0 }; ++ static const ktime_t ktime_zero = ({ktime_t duh; duh.tv64 = 0;duh;}); + return ktime_add_ns(ktime_zero, ns); + } + +diff -Nurb linux-2.6.27.10/include/linux/linkage.h linux-2.6.27.10-clickport/include/linux/linkage.h +--- linux-2.6.27.10/include/linux/linkage.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/linkage.h 2009-01-27 15:47:52.000000000 -0500 +@@ -11,6 +11,13 @@ + #else + #define CPP_ASMLINKAGE + #endif ++#ifndef extern_asmlinkage ++# ifdef __cplusplus ++# define extern_asmlinkage asmlinkage ++# else ++# define extern_asmlinkage extern asmlinkage ++# endif ++#endif + + #ifndef asmlinkage + #define asmlinkage CPP_ASMLINKAGE +diff -Nurb linux-2.6.27.10/include/linux/list.h linux-2.6.27.10-clickport/include/linux/list.h +--- linux-2.6.27.10/include/linux/list.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/list.h 2009-01-28 11:46:14.000000000 -0500 +@@ -20,7 +20,11 @@ + struct list_head *next, *prev; + }; + ++#ifdef __cplusplus ++#define LIST_HEAD_INIT(name) ({struct list_head duh;duh.next=&(name);duh.prev=&(name);duh;}) ++#else + #define LIST_HEAD_INIT(name) { &(name), &(name) } ++#endif + + #define LIST_HEAD(name) \ + struct list_head name = LIST_HEAD_INIT(name) +@@ -103,8 +107,8 @@ + static inline void list_del(struct list_head *entry) + { + __list_del(entry->prev, entry->next); +- entry->next = LIST_POISON1; +- entry->prev = LIST_POISON2; ++ entry->next = (struct list_head*)(LIST_POISON1); ++ entry->prev = (struct list_head*)(LIST_POISON2); + } + #else + extern void list_del(struct list_head *entry); +@@ -576,8 +580,8 @@ + static inline void hlist_del(struct hlist_node *n) + { + __hlist_del(n); +- n->next = LIST_POISON1; +- n->pprev = LIST_POISON2; ++ n->next = (struct hlist_node*)(LIST_POISON1); ++ n->pprev = (struct hlist_node**)(LIST_POISON2); + } + + static inline void hlist_del_init(struct hlist_node *n) +diff -Nurb linux-2.6.27.10/include/linux/mempolicy.h linux-2.6.27.10-clickport/include/linux/mempolicy.h +--- linux-2.6.27.10/include/linux/mempolicy.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/mempolicy.h 2009-01-27 15:47:52.000000000 -0500 +@@ -241,7 +241,7 @@ + + #else + +-struct mempolicy {}; ++EMPTY_STRUCT_DECL(mempolicy); + + static inline int mpol_equal(struct mempolicy *a, struct mempolicy *b) + { +@@ -271,7 +271,7 @@ + return NULL; + } + +-struct shared_policy {}; ++EMPTY_STRUCT_DECL(shared_policy); + + static inline int mpol_set_shared_policy(struct shared_policy *info, + struct vm_area_struct *vma, +diff -Nurb linux-2.6.27.10/include/linux/mm.h linux-2.6.27.10-clickport/include/linux/mm.h +--- linux-2.6.27.10/include/linux/mm.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/mm.h 2009-01-28 11:48:07.000000000 -0500 +@@ -327,7 +327,7 @@ + static inline void set_compound_page_dtor(struct page *page, + compound_page_dtor *dtor) + { +- page[1].lru.next = (void *)dtor; ++ page[1].lru.next = (struct list_head *)dtor; + } + + static inline compound_page_dtor *get_compound_page_dtor(struct page *page) +@@ -344,7 +344,7 @@ + + static inline void set_compound_order(struct page *page, unsigned long order) + { +- page[1].lru.prev = (void *)order; ++ page[1].lru.prev = (struct list_head *)order; + } + + /* +@@ -494,7 +494,7 @@ + + static inline enum zone_type page_zonenum(struct page *page) + { +- return (page->flags >> ZONES_PGSHIFT) & ZONES_MASK; ++ return (enum zone_type) ((page->flags >> ZONES_PGSHIFT) & ZONES_MASK); + } + + /* +diff -Nurb linux-2.6.27.10/include/linux/netdevice.h linux-2.6.27.10-clickport/include/linux/netdevice.h +--- linux-2.6.27.10/include/linux/netdevice.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/netdevice.h 2009-01-27 15:59:47.000000000 -0500 +@@ -735,6 +735,46 @@ + /* GARP */ + struct garp_port *garp_port; + ++ /* Click polling support */ ++ /* ++ * polling is < 0 if the device does not support polling, == 0 if the ++ * device supports polling but interrupts are on, and > 0 if polling ++ * is on. ++ */ ++ int polling; ++ int (*poll_on)(struct net_device *); ++ int (*poll_off)(struct net_device *); ++ /* ++ * rx_poll returns to caller a linked list of sk_buff objects received ++ * by the device. on call, the want argument specifies the number of ++ * packets wanted. on return, the want argument specifies the number ++ * of packets actually returned. ++ */ ++ struct sk_buff * (*rx_poll)(struct net_device*, int *want); ++ /* refill rx dma ring using the given sk_buff list. returns 0 if ++ * successful, or if there are more entries need to be cleaned, ++ * returns the number of dirty entries. the ptr to the sk_buff list is ++ * updated by the driver to point to any unused skbs. ++ */ ++ int (*rx_refill)(struct net_device*, struct sk_buff**); ++ /* ++ * place sk_buff on the transmit ring. returns 0 if successful, 1 ++ * otherwise ++ */ ++ int (*tx_queue)(struct net_device *, struct sk_buff *); ++ /* ++ * clean tx dma ring. returns the list of skb objects cleaned ++ */ ++ struct sk_buff* (*tx_clean)(struct net_device *); ++ /* ++ * start transmission. returns 0 if successful, 1 otherwise ++ */ ++ int (*tx_start)(struct net_device *); ++ /* ++ * tell device the end of a batch of packets ++ */ ++ int (*tx_eob)(struct net_device *); ++ + /* class/net/name entry */ + struct device dev; + /* space for optional statistics and wireless sysfs groups */ +@@ -918,6 +958,11 @@ + extern int dev_queue_xmit(struct sk_buff *skb); + extern int register_netdevice(struct net_device *dev); + extern void unregister_netdevice(struct net_device *dev); ++ ++extern int register_net_in(struct notifier_block *nb); /* Click */ ++extern int unregister_net_in(struct notifier_block *nb); /* Click */ ++extern int ptype_dispatch(struct sk_buff *skb, unsigned short type); /* Click */ ++ + extern void free_netdev(struct net_device *dev); + extern void synchronize_net(void); + extern int register_netdevice_notifier(struct notifier_block *nb); +@@ -1216,7 +1261,10 @@ + extern int netif_rx(struct sk_buff *skb); + extern int netif_rx_ni(struct sk_buff *skb); + #define HAVE_NETIF_RECEIVE_SKB 1 +-extern int netif_receive_skb(struct sk_buff *skb); ++//extern int netif_receive_skb(struct sk_buff *skb); ++#define HAVE___NETIF_RECEIVE_SKB 1 ++extern int __netif_receive_skb(struct sk_buff *skb, unsigned short protocol, int ignore_notifiers); ++ + extern void netif_nit_deliver(struct sk_buff *skb); + extern int dev_valid_name(const char *name); + extern int dev_ioctl(struct net *net, unsigned int cmd, void __user *); +@@ -1357,6 +1405,11 @@ + + extern void netif_device_attach(struct net_device *dev); + ++static inline int netif_receive_skb(struct sk_buff *skb) ++{ ++ return __netif_receive_skb(skb, skb->protocol, 0); ++} + -+GENERIC_OBJS = string.o straccum.o nameinfo.o \ -+ bitvector.o vectorv.o templatei.o bighashmap_arena.o \ -+ ipaddress.o ipflowid.o etheraddress.o \ -+ packet.o \ -+ error.o timestamp.o glue.o task.o timer.o atomic.o gaprate.o \ -+ element.o \ -+ confparse.o variableenv.o lexer.o elemfilter.o \ -+ routerthread.o router.o master.o handlercall.o notifier.o \ -+ integers.o md5.o crc32.o in_cksum.o iptable.o \ -+ archive.o userutils.o driver.o \ -+ $(EXTRA_DRIVER_OBJS) + /* + * Network interface message level settings + */ +diff -Nurb linux-2.6.27.10/include/linux/netlink.h linux-2.6.27.10-clickport/include/linux/netlink.h +--- linux-2.6.27.10/include/linux/netlink.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/netlink.h 2009-01-27 15:47:52.000000000 -0500 +@@ -242,7 +242,7 @@ + nlh->nlmsg_flags = flags; + nlh->nlmsg_pid = pid; + nlh->nlmsg_seq = seq; +- memset(NLMSG_DATA(nlh) + len, 0, NLMSG_ALIGN(size) - size); ++ memset((char*) NLMSG_DATA(nlh) + len, 0, NLMSG_ALIGN(size) - size); + return nlh; + } + +diff -Nurb linux-2.6.27.10/include/linux/page-flags.h linux-2.6.27.10-clickport/include/linux/page-flags.h +--- linux-2.6.27.10/include/linux/page-flags.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/page-flags.h 2009-01-28 11:49:03.000000000 -0500 +@@ -174,8 +174,10 @@ + PAGEFLAG(Pinned, pinned) TESTSCFLAG(Pinned, pinned) /* Xen */ + PAGEFLAG(SavePinned, savepinned); /* Xen */ + PAGEFLAG(Reserved, reserved) __CLEARPAGEFLAG(Reserved, reserved) ++#ifndef __cplusplus + PAGEFLAG(Private, private) __CLEARPAGEFLAG(Private, private) + __SETPAGEFLAG(Private, private) ++#endif + + __PAGEFLAG(SlobPage, slob_page) + __PAGEFLAG(SlobFree, slob_free) +diff -Nurb linux-2.6.27.10/include/linux/prefetch.h linux-2.6.27.10-clickport/include/linux/prefetch.h +--- linux-2.6.27.10/include/linux/prefetch.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/prefetch.h 2009-01-27 15:47:52.000000000 -0500 +@@ -54,9 +54,9 @@ + { + #ifdef ARCH_HAS_PREFETCH + char *cp; +- char *end = addr + len; ++ char *end = (char*)(addr) + len; + +- for (cp = addr; cp < end; cp += PREFETCH_STRIDE) ++ for (cp = (char*)(addr); cp < end; cp += PREFETCH_STRIDE) + prefetch(cp); + #endif + } +diff -Nurb linux-2.6.27.10/include/linux/proc_fs.h linux-2.6.27.10-clickport/include/linux/proc_fs.h +--- linux-2.6.27.10/include/linux/proc_fs.h 2009-01-27 15:18:03.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/proc_fs.h 2009-01-28 13:12:34.000000000 -0500 +@@ -315,7 +315,7 @@ + + static inline struct net *PDE_NET(struct proc_dir_entry *pde) + { +- return pde->parent->data; ++ return (struct net *) pde->parent->data; + } + + struct proc_maps_private { +diff -Nurb linux-2.6.27.10/include/linux/rculist.h linux-2.6.27.10-clickport/include/linux/rculist.h +--- linux-2.6.27.10/include/linux/rculist.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/rculist.h 2009-01-28 12:00:49.000000000 -0500 +@@ -94,7 +94,7 @@ + static inline void list_del_rcu(struct list_head *entry) + { + __list_del(entry->prev, entry->next); +- entry->prev = LIST_POISON2; ++ entry->prev = (struct list_head *) LIST_POISON2; + } + + /** +@@ -140,7 +140,7 @@ + new->prev = old->prev; + rcu_assign_pointer(new->prev->next, new); + new->next->prev = new; +- old->prev = LIST_POISON2; ++ old->prev = (struct list_head *) LIST_POISON2; + } + + /** +@@ -271,7 +271,7 @@ + static inline void hlist_del_rcu(struct hlist_node *n) + { + __hlist_del(n); +- n->pprev = LIST_POISON2; ++ n->pprev = (struct hlist_node **) LIST_POISON2; + } + + /** +@@ -291,7 +291,7 @@ + rcu_assign_pointer(*new->pprev, new); + if (next) + new->next->pprev = &new->next; +- old->pprev = LIST_POISON2; ++ old->pprev = (struct hlist_node **) LIST_POISON2; + } + + /** +diff -Nurb linux-2.6.27.10/include/linux/reiserfs_fs_sb.h linux-2.6.27.10-clickport/include/linux/reiserfs_fs_sb.h +--- linux-2.6.27.10/include/linux/reiserfs_fs_sb.h 2009-01-27 15:18:03.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/reiserfs_fs_sb.h 2009-01-27 15:47:52.000000000 -0500 +@@ -337,8 +337,7 @@ + } journal; + } reiserfs_proc_info_data_t; + #else +-typedef struct reiserfs_proc_info_data { +-} reiserfs_proc_info_data_t; ++typedef EMPTY_STRUCT_DECL(reiserfs_proc_info_data) reiserfs_proc_info_data_t; + #endif + + /* reiserfs union of in-core super block data */ +diff -Nurb linux-2.6.27.10/include/linux/rtnetlink.h linux-2.6.27.10-clickport/include/linux/rtnetlink.h +--- linux-2.6.27.10/include/linux/rtnetlink.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/rtnetlink.h 2009-01-27 15:47:52.000000000 -0500 +@@ -727,7 +727,7 @@ + rta = (struct rtattr*)skb_put(skb, RTA_ALIGN(size)); + rta->rta_type = attrtype; + rta->rta_len = size; +- memset(RTA_DATA(rta) + attrlen, 0, RTA_ALIGN(size) - size); ++ memset((char*) RTA_DATA(rta) + attrlen, 0, RTA_ALIGN(size) - size); + return rta; + } + +diff -Nurb linux-2.6.27.10/include/linux/scatterlist.h linux-2.6.27.10-clickport/include/linux/scatterlist.h +--- linux-2.6.27.10/include/linux/scatterlist.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/scatterlist.h 2009-01-28 11:49:33.000000000 -0500 +@@ -196,7 +196,7 @@ + **/ + static inline void *sg_virt(struct scatterlist *sg) + { +- return page_address(sg_page(sg)) + sg->offset; ++ return (char *) page_address(sg_page(sg)) + sg->offset; + } + + struct scatterlist *sg_next(struct scatterlist *); +diff -Nurb linux-2.6.27.10/include/linux/sched.h linux-2.6.27.10-clickport/include/linux/sched.h +--- linux-2.6.27.10/include/linux/sched.h 2009-01-27 15:18:03.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/sched.h 2009-01-28 11:56:24.000000000 -0500 +@@ -242,7 +242,12 @@ + + extern void sched_init(void); + extern void sched_init_smp(void); ++#ifdef __cplusplus ++asmlinkage void schedule_tail(struct task_struct *prev); ++#else + extern asmlinkage void schedule_tail(struct task_struct *prev); ++#endif + -+EXTRA_DRIVER_OBJS = + extern void init_idle(struct task_struct *idle, int cpu); + extern void init_idle_bootup_task(struct task_struct *idle); + +@@ -1978,7 +1983,7 @@ + + static inline unsigned long *end_of_stack(struct task_struct *p) + { +- return (unsigned long *)(task_thread_info(p) + 1); ++ return (unsigned long *)((char *) task_thread_info(p) + 1); + } + + #endif +@@ -1987,7 +1992,7 @@ + { + void *stack = task_stack_page(current); + +- return (obj >= stack) && (obj < (stack + THREAD_SIZE)); ++ return (obj >= stack) && ((char *) obj < ((char *) stack + THREAD_SIZE)); + } + + extern void thread_info_cache_init(void); +diff -Nurb linux-2.6.27.10/include/linux/seccomp.h linux-2.6.27.10-clickport/include/linux/seccomp.h +--- linux-2.6.27.10/include/linux/seccomp.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/seccomp.h 2009-01-27 15:47:52.000000000 -0500 +@@ -21,7 +21,7 @@ + + #else /* CONFIG_SECCOMP */ + +-typedef struct { } seccomp_t; ++typedef EMPTY_STRUCT_DECL(/* unnamed */) seccomp_t; + + #define secure_computing(x) do { } while (0) + +diff -Nurb linux-2.6.27.10/include/linux/security.h linux-2.6.27.10-clickport/include/linux/security.h +--- linux-2.6.27.10/include/linux/security.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/security.h 2009-01-27 15:47:52.000000000 -0500 +@@ -2427,7 +2427,7 @@ + static inline struct dentry *securityfs_create_dir(const char *name, + struct dentry *parent) + { +- return ERR_PTR(-ENODEV); ++ return (struct dentry *) ERR_PTR(-ENODEV); + } + + static inline struct dentry *securityfs_create_file(const char *name, +@@ -2436,7 +2436,7 @@ + void *data, + const struct file_operations *fops) + { +- return ERR_PTR(-ENODEV); ++ return (struct dentry *) ERR_PTR(-ENODEV); + } + + static inline void securityfs_remove(struct dentry *dentry) +diff -Nurb linux-2.6.27.10/include/linux/semaphore.h linux-2.6.27.10-clickport/include/linux/semaphore.h +--- linux-2.6.27.10/include/linux/semaphore.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/semaphore.h 2009-01-28 11:34:40.000000000 -0500 +@@ -19,12 +19,21 @@ + struct list_head wait_list; + }; + ++#ifdef __cplusplus ++#define __SEMAPHORE_INITIALIZER(name, n) \ ++({ struct semaphore duh; \ ++ duh.lock = __SPIN_LOCK_UNLOCKED((name).lock), \ ++ duh.count = n, \ ++ duh.wait_list = LIST_HEAD_INIT((name).wait_list), \ ++ duh;}) ++#else + #define __SEMAPHORE_INITIALIZER(name, n) \ + { \ + .lock = __SPIN_LOCK_UNLOCKED((name).lock), \ + .count = n, \ + .wait_list = LIST_HEAD_INIT((name).wait_list), \ + } ++#endif + + #define DECLARE_MUTEX(name) \ + struct semaphore name = __SEMAPHORE_INITIALIZER(name, 1) +diff -Nurb linux-2.6.27.10/include/linux/skbuff.h linux-2.6.27.10-clickport/include/linux/skbuff.h +--- linux-2.6.27.10/include/linux/skbuff.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/skbuff.h 2009-01-27 15:47:52.000000000 -0500 +@@ -194,6 +194,12 @@ + typedef unsigned char *sk_buff_data_t; + #endif + ++/* Click: overload sk_buff.pkt_type to contain information about whether ++ a packet is clean. Clean packets have the following fields zero: ++ dst, destructor, pkt_bridged, prev, list, sk, security, priority. */ ++#define PACKET_CLEAN 128 /* Is packet clean? */ ++#define PACKET_TYPE_MASK 127 /* Actual packet type */ ++ + /** + * struct sk_buff - socket buffer + * @next: Next buffer in list +@@ -376,6 +382,7 @@ + gfp_t priority); + extern struct sk_buff *pskb_copy(struct sk_buff *skb, + gfp_t gfp_mask); ++extern struct sk_buff *skb_recycle(struct sk_buff *skb); + extern int pskb_expand_head(struct sk_buff *skb, + int nhead, int ntail, + gfp_t gfp_mask); +@@ -1325,7 +1332,7 @@ + } + + static inline int skb_add_data(struct sk_buff *skb, +- char __user *from, int copy) ++ unsigned char __user *from, int copy) + { + const int off = skb->len; + +@@ -1401,7 +1408,7 @@ + const void *start, unsigned int len) + { + if (skb->ip_summed == CHECKSUM_COMPLETE) +- skb->csum = csum_sub(skb->csum, csum_partial(start, len, 0)); ++ skb->csum = csum_sub(skb->csum, csum_partial((const unsigned char *) start, len, 0)); + } + + unsigned char *skb_pull_rcsum(struct sk_buff *skb, unsigned int len); +diff -Nurb linux-2.6.27.10/include/linux/spinlock.h linux-2.6.27.10-clickport/include/linux/spinlock.h +--- linux-2.6.27.10/include/linux/spinlock.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/spinlock.h 2009-01-27 15:47:52.000000000 -0500 +@@ -54,6 +54,7 @@ + #include + #include + #include ++#include + + #include + +diff -Nurb linux-2.6.27.10/include/linux/spinlock_types.h linux-2.6.27.10-clickport/include/linux/spinlock_types.h +--- linux-2.6.27.10/include/linux/spinlock_types.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/spinlock_types.h 2009-01-27 15:47:52.000000000 -0500 +@@ -51,37 +51,47 @@ + + #define SPINLOCK_OWNER_INIT ((void *)-1L) + ++#if defined(CONFIG_PREEMPT) && defined(CONFIG_SMP) ++# define SPINLOCK_BREAK_LOCK_INIT 0, ++#else ++# define SPINLOCK_BREAK_LOCK_INIT ++#endif + -+LIBOBJS = $(GENERIC_OBJS) $(STD_ELEMENT_OBJS) clp.o exportstub.o -+STD_ELEMENT_OBJS = addressinfo.o alignmentinfo.o \ -+ errorelement.o portinfo.o scheduleinfo.o -+OBJS = $(ELEMENT_OBJS) $(ELEMENTSCONF).o click.o + #ifdef CONFIG_DEBUG_LOCK_ALLOC +-# define SPIN_DEP_MAP_INIT(lockname) .dep_map = { .name = #lockname } ++# define SPIN_DEP_MAP_INIT(lockname) { 0, 0, #lockname } + #else + # define SPIN_DEP_MAP_INIT(lockname) + #endif + + #ifdef CONFIG_DEBUG_LOCK_ALLOC +-# define RW_DEP_MAP_INIT(lockname) .dep_map = { .name = #lockname } ++# define RW_DEP_MAP_INIT(lockname) { 0, 0, #lockname } + #else + # define RW_DEP_MAP_INIT(lockname) + #endif + + #ifdef CONFIG_DEBUG_SPINLOCK + # define __SPIN_LOCK_UNLOCKED(lockname) \ +- (spinlock_t) { .raw_lock = __RAW_SPIN_LOCK_UNLOCKED, \ +- .magic = SPINLOCK_MAGIC, \ +- .owner = SPINLOCK_OWNER_INIT, \ +- .owner_cpu = -1, \ ++ (spinlock_t) { /*raw_lock*/ __RAW_SPIN_LOCK_UNLOCKED, \ ++ /*break_lock*/ SPINLOCK_BREAK_LOCK_INIT \ ++ /*magic*/ SPINLOCK_MAGIC, \ ++ /*owner_cpu*/ -1, \ ++ /*owner*/ SPINLOCK_OWNER_INIT, \ + SPIN_DEP_MAP_INIT(lockname) } + #define __RW_LOCK_UNLOCKED(lockname) \ +- (rwlock_t) { .raw_lock = __RAW_RW_LOCK_UNLOCKED, \ +- .magic = RWLOCK_MAGIC, \ +- .owner = SPINLOCK_OWNER_INIT, \ +- .owner_cpu = -1, \ ++ (rwlock_t) { /*raw_lock*/ __RAW_RW_LOCK_UNLOCKED, \ ++ /*break_lock*/ SPINLOCK_BREAK_LOCK_INIT \ ++ /*magic*/ RWLOCK_MAGIC, \ ++ /*owner_cpu*/ -1, \ ++ /*owner*/ SPINLOCK_OWNER_INIT, \ + RW_DEP_MAP_INIT(lockname) } + #else + # define __SPIN_LOCK_UNLOCKED(lockname) \ +- (spinlock_t) { .raw_lock = __RAW_SPIN_LOCK_UNLOCKED, \ ++ (spinlock_t) { /*raw_lock*/ __RAW_SPIN_LOCK_UNLOCKED, \ ++ /*break_lock*/ SPINLOCK_BREAK_LOCK_INIT \ + SPIN_DEP_MAP_INIT(lockname) } + #define __RW_LOCK_UNLOCKED(lockname) \ +- (rwlock_t) { .raw_lock = __RAW_RW_LOCK_UNLOCKED, \ ++ (rwlock_t) { /*raw_lock*/ __RAW_RW_LOCK_UNLOCKED, \ ++ /*break_lock*/ SPINLOCK_BREAK_LOCK_INIT \ + RW_DEP_MAP_INIT(lockname) } + #endif + +diff -Nurb linux-2.6.27.10/include/linux/stddef.h linux-2.6.27.10-clickport/include/linux/stddef.h +--- linux-2.6.27.10/include/linux/stddef.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/stddef.h 2009-01-27 15:47:52.000000000 -0500 +@@ -12,10 +12,12 @@ + + #ifdef __KERNEL__ + ++#ifndef __cplusplus + enum { + false = 0, + true = 1 + }; ++#endif + + #undef offsetof + #ifdef __compiler_offsetof +diff -Nurb linux-2.6.27.10/include/linux/sysctl.h linux-2.6.27.10-clickport/include/linux/sysctl.h +--- linux-2.6.27.10/include/linux/sysctl.h 2009-01-27 15:18:03.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/sysctl.h 2009-01-27 16:04:48.000000000 -0500 +@@ -978,7 +978,7 @@ + void __user *oldval, size_t __user *oldlenp, + void __user *newval, size_t newlen); + +-typedef int proc_handler (struct ctl_table *ctl, int write, struct file * filp, ++typedef int proc_handler_t (struct ctl_table *ctl, int write, struct file * filp, + void __user *buffer, size_t *lenp, loff_t *ppos); + + extern int proc_dostring(struct ctl_table *, int, struct file *, +@@ -1059,7 +1059,7 @@ + mode_t mode; + struct ctl_table *child; + struct ctl_table *parent; /* Automatically set */ +- proc_handler *proc_handler; /* Callback for text formatting */ ++ proc_handler_t *proc_handler; /* Callback for text formatting */ + ctl_handler *strategy; /* Callback function for all r/w */ + void *extra1; + void *extra2; +diff -Nurb linux-2.6.27.10/include/linux/textsearch.h linux-2.6.27.10-clickport/include/linux/textsearch.h +--- linux-2.6.27.10/include/linux/textsearch.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/textsearch.h 2009-01-27 15:55:38.000000000 -0500 +@@ -162,9 +162,9 @@ + { + struct ts_config *conf; + +- conf = kzalloc(TS_PRIV_ALIGN(sizeof(*conf)) + payload, gfp_mask); ++ conf = (struct ts_config *) kzalloc(TS_PRIV_ALIGN(sizeof(*conf)) + payload, gfp_mask); + if (conf == NULL) +- return ERR_PTR(-ENOMEM); ++ return (struct ts_config *) ERR_PTR(-ENOMEM); + + return conf; + } +diff -Nurb linux-2.6.27.10/include/linux/types.h linux-2.6.27.10-clickport/include/linux/types.h +--- linux-2.6.27.10/include/linux/types.h 2009-01-27 15:18:03.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/types.h 2009-01-27 15:47:52.000000000 -0500 +@@ -30,7 +30,9 @@ + typedef __kernel_mqd_t mqd_t; + + #ifdef __KERNEL__ ++#ifndef __cplusplus + typedef _Bool bool; ++#endif + + typedef __kernel_uid32_t uid_t; + typedef __kernel_gid32_t gid_t; +@@ -209,4 +211,12 @@ + + #endif /* __KERNEL__ */ + ++/* ++ * Click: Macros for defining empty structures. Needed because GCC's C and C++ ++ * compilers have different ABIs for empty structures. ++ */ + -+CPPFLAGS = -DCLICK_USERLEVEL -+CFLAGS = -g -O2 -+CXXFLAGS = -g -O2 -+DEPCFLAGS = -MD ++#define EMPTY_STRUCT_DECL(s) struct s { int gcc_is_buggy; } ++#define EMPTY_STRUCT_INIT(s) (s) { 0 } + -+DEFS = -DHAVE_CONFIG_H -+INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ -+ -I$(srcdir) -I$(top_srcdir) -+LDFLAGS = -+LIBS = `$(top_builddir)/click-compile --otherlibs` $(ELEMENT_LIBS) + #endif /* _LINUX_TYPES_H */ +diff -Nurb linux-2.6.27.10/include/linux/unwind.h linux-2.6.27.10-clickport/include/linux/unwind.h +--- linux-2.6.27.10/include/linux/unwind.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/unwind.h 2009-01-27 15:47:52.000000000 -0500 +@@ -14,7 +14,7 @@ + + struct module; + +-struct unwind_frame_info {}; ++EMPTY_STRUCT_DECL(unwind_frame_info); + + static inline void unwind_init(void) {} + static inline void unwind_setup(void) {} +diff -Nurb linux-2.6.27.10/include/linux/wait.h linux-2.6.27.10-clickport/include/linux/wait.h +--- linux-2.6.27.10/include/linux/wait.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/linux/wait.h 2009-01-27 15:47:52.000000000 -0500 +@@ -485,7 +485,7 @@ + static inline int wait_on_bit(void *word, int bit, + int (*action)(void *), unsigned mode) + { +- if (!test_bit(bit, word)) ++ if (!test_bit(bit, (volatile unsigned long *) word)) + return 0; + return out_of_line_wait_on_bit(word, bit, action, mode); + } +@@ -509,7 +509,7 @@ + static inline int wait_on_bit_lock(void *word, int bit, + int (*action)(void *), unsigned mode) + { +- if (!test_and_set_bit(bit, word)) ++ if (!test_and_set_bit(bit, (volatile unsigned long *) word)) + return 0; + return out_of_line_wait_on_bit_lock(word, bit, action, mode); + } +diff -Nurb linux-2.6.27.10/include/net/compat.h linux-2.6.27.10-clickport/include/net/compat.h +--- linux-2.6.27.10/include/net/compat.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/net/compat.h 2009-01-27 15:52:42.000000000 -0500 +@@ -33,9 +33,9 @@ + + extern int get_compat_msghdr(struct msghdr *, struct compat_msghdr __user *); + extern int verify_compat_iovec(struct msghdr *, struct iovec *, struct sockaddr *, int); +-extern asmlinkage long compat_sys_sendmsg(int,struct compat_msghdr __user *,unsigned); +-extern asmlinkage long compat_sys_recvmsg(int,struct compat_msghdr __user *,unsigned); +-extern asmlinkage long compat_sys_getsockopt(int, int, int, char __user *, int __user *); ++asmlinkage long compat_sys_sendmsg(int,struct compat_msghdr __user *,unsigned); ++asmlinkage long compat_sys_recvmsg(int,struct compat_msghdr __user *,unsigned); ++asmlinkage long compat_sys_getsockopt(int, int, int, char __user *, int __user *); + extern int put_cmsg_compat(struct msghdr*, int, int, int, void *); + + extern int cmsghdr_from_user_compat_to_kern(struct msghdr *, struct sock *, unsigned char *, int); +diff -Nurb linux-2.6.27.10/include/net/neighbour.h linux-2.6.27.10-clickport/include/net/neighbour.h +--- linux-2.6.27.10/include/net/neighbour.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/net/neighbour.h 2009-01-27 15:47:52.000000000 -0500 +@@ -275,7 +275,7 @@ + struct neigh_parms *p, + int p_id, int pdev_id, + char *p_name, +- proc_handler *proc_handler, ++ proc_handler_t *proc_handler, + ctl_handler *strategy); + extern void neigh_sysctl_unregister(struct neigh_parms *p); + +diff -Nurb linux-2.6.27.10/include/net/netlink.h linux-2.6.27.10-clickport/include/net/netlink.h +--- linux-2.6.27.10/include/net/netlink.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/net/netlink.h 2009-01-28 12:45:44.000000000 -0500 +@@ -315,7 +315,7 @@ + static inline struct nlattr *nlmsg_attrdata(const struct nlmsghdr *nlh, + int hdrlen) + { +- unsigned char *data = nlmsg_data(nlh); ++ unsigned char *data = (unsigned char *) nlmsg_data(nlh); + return (struct nlattr *) (data + NLMSG_ALIGN(hdrlen)); + } + +@@ -732,7 +732,7 @@ + */ + static inline struct nlattr *nla_find_nested(struct nlattr *nla, int attrtype) + { +- return nla_find(nla_data(nla), nla_len(nla), attrtype); ++ return nla_find((struct nlattr *) nla_data(nla), nla_len(nla), attrtype); + } + + /** +@@ -748,7 +748,7 @@ + struct nlattr *nla, + const struct nla_policy *policy) + { +- return nla_parse(tb, maxtype, nla_data(nla), nla_len(nla), policy); ++ return nla_parse(tb, maxtype, (struct nlattr *) nla_data(nla), nla_len(nla), policy); + } + + /** +@@ -775,7 +775,7 @@ + if (nested_len < 0) + return -EINVAL; + if (nested_len >= nla_attr_size(0)) +- return nla_parse(tb, maxtype, nla_data(nla) + NLA_ALIGN(len), ++ return nla_parse(tb, maxtype, (struct nlattr *) nla_data(nla) + NLA_ALIGN(len), + nested_len, policy); + memset(tb, 0, sizeof(struct nlattr *) * (maxtype + 1)); + return 0; +@@ -1069,7 +1069,7 @@ + */ + static inline int nla_nest_compat_end(struct sk_buff *skb, struct nlattr *start) + { +- struct nlattr *nest = (void *)start + NLMSG_ALIGN(start->nla_len); ++ struct nlattr *nest = (struct nlattr *) (char *)start + NLMSG_ALIGN(start->nla_len); + + start->nla_len = skb_tail_pointer(skb) - (unsigned char *)start; + return nla_nest_end(skb, nest); +@@ -1103,7 +1103,7 @@ + static inline int nla_validate_nested(struct nlattr *start, int maxtype, + const struct nla_policy *policy) + { +- return nla_validate(nla_data(start), nla_len(start), maxtype, policy); ++ return nla_validate((struct nlattr *) nla_data(start), nla_len(start), maxtype, policy); + } + + /** +diff -Nurb linux-2.6.27.10/include/net/pkt_cls.h linux-2.6.27.10-clickport/include/net/pkt_cls.h +--- linux-2.6.27.10/include/net/pkt_cls.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/net/pkt_cls.h 2009-01-27 15:47:52.000000000 -0500 +@@ -302,9 +302,7 @@ + + #else /* CONFIG_NET_EMATCH */ + +-struct tcf_ematch_tree +-{ +-}; ++EMPTY_STRUCT_DECL(tcf_ematch_tree); + + #define tcf_em_tree_validate(tp, tb, t) ((void)(t), 0) + #define tcf_em_tree_destroy(tp, t) do { (void)(t); } while(0) +diff -Nurb linux-2.6.27.10/include/net/request_sock.h linux-2.6.27.10-clickport/include/net/request_sock.h +--- linux-2.6.27.10/include/net/request_sock.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/net/request_sock.h 2009-01-28 13:02:38.000000000 -0500 +@@ -60,7 +60,7 @@ + + static inline struct request_sock *reqsk_alloc(const struct request_sock_ops *ops) + { +- struct request_sock *req = kmem_cache_alloc(ops->slab, GFP_ATOMIC); ++ struct request_sock *req = (struct request_sock *) kmem_cache_alloc(ops->slab, GFP_ATOMIC); + + if (req != NULL) + req->rsk_ops = ops; +diff -Nurb linux-2.6.27.10/include/net/route.h linux-2.6.27.10-clickport/include/net/route.h +--- linux-2.6.27.10/include/net/route.h 2009-01-27 15:18:03.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/net/route.h 2009-01-27 15:47:52.000000000 -0500 +@@ -161,6 +161,16 @@ + __be16 sport, __be16 dport, struct sock *sk, + int flags) + { ++#ifdef __cplusplus ++ struct flowi fl; ++ fl.oif = oif; ++ fl.nl_u.ip4_u.daddr = dst; ++ fl.nl_u.ip4_u.saddr = src; ++ fl.nl_u.ip4_u.tos = tos; ++ fl.proto = protocol; ++ fl.uli_u.ports.sport = sport; ++ fl.uli_u.ports.dport = dport; ++#else + struct flowi fl = { .oif = oif, + .mark = sk->sk_mark, + .nl_u = { .ip4_u = { .daddr = dst, +@@ -170,6 +180,7 @@ + .uli_u = { .ports = + { .sport = sport, + .dport = dport } } }; ++#endif + + int err; + struct net *net = sock_net(sk); +diff -Nurb linux-2.6.27.10/include/net/sock.h linux-2.6.27.10-clickport/include/net/sock.h +--- linux-2.6.27.10/include/net/sock.h 2009-01-27 15:18:03.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/net/sock.h 2009-01-27 15:51:30.000000000 -0500 +@@ -1104,13 +1104,13 @@ + { + if (skb->ip_summed == CHECKSUM_NONE) { + int err = 0; +- __wsum csum = csum_and_copy_from_user(from, +- page_address(page) + off, ++ __wsum csum = csum_and_copy_from_user((unsigned char *) from, ++ (unsigned char *) page_address(page) + off, + copy, 0, &err); + if (err) + return err; + skb->csum = csum_block_add(skb->csum, csum, skb->len); +- } else if (copy_from_user(page_address(page) + off, from, copy)) ++ } else if (copy_from_user((char *) page_address(page) + off, from, copy)) + return -EFAULT; + + skb->len += copy; +diff -Nurb linux-2.6.27.10/include/rdma/ib_user_verbs.h linux-2.6.27.10-clickport/include/rdma/ib_user_verbs.h +--- linux-2.6.27.10/include/rdma/ib_user_verbs.h 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/include/rdma/ib_user_verbs.h 2009-01-27 15:47:52.000000000 -0500 +@@ -504,8 +504,7 @@ + __u64 driver_data[0]; + }; + +-struct ib_uverbs_modify_qp_resp { +-}; ++EMPTY_STRUCT_DECL(ib_uverbs_modify_qp_resp); + + struct ib_uverbs_destroy_qp { + __u64 response; +diff -Nurb linux-2.6.27.10/kernel/sched.c linux-2.6.27.10-clickport/kernel/sched.c +--- linux-2.6.27.10/kernel/sched.c 2009-01-27 15:18:04.000000000 -0500 ++++ linux-2.6.27.10-clickport/kernel/sched.c 2009-01-27 16:06:52.000000000 -0500 +@@ -6298,7 +6298,7 @@ + static void + set_table_entry(struct ctl_table *entry, + const char *procname, void *data, int maxlen, +- mode_t mode, proc_handler *proc_handler) ++ mode_t mode, proc_handler_t *proc_handler) + { + entry->procname = procname; + entry->data = data; +diff -Nurb linux-2.6.27.10/net/core/dev.c linux-2.6.27.10-clickport/net/core/dev.c +--- linux-2.6.27.10/net/core/dev.c 2009-01-27 15:18:04.000000000 -0500 ++++ linux-2.6.27.10-clickport/net/core/dev.c 2009-01-27 16:02:45.000000000 -0500 +@@ -250,6 +250,9 @@ + write_unlock_bh(&dev_base_lock); + } + ++/* Click: input packet handlers, might steal packets from net_rx_action. */ ++static RAW_NOTIFIER_HEAD(net_in_chain); + -+CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS) -+CXXLD = $(CXX) -+CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@ -+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS) -+CCLD = $(CC) -+LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@ + /* + * Our notifier list + */ +@@ -2019,6 +2022,31 @@ + return pt_prev->func(skb, skb->dev, pt_prev, orig_dev); + } + + -+ifndef MINDRIVER -+DRIVER = click -+ELEMENTSCONF = elements -+INSTALLLIBS = libclick.a -+else -+DRIVER = $(MINDRIVER)click -+ELEMENTSCONF = elements_$(MINDRIVER) -+endif -+INSTALLPROGS = $(DRIVER) ++/* ++ * Click: Allow Click to ask to intercept input packets. ++ */ ++int ++register_net_in(struct notifier_block *nb) ++{ ++ int err; ++ rtnl_lock(); ++ err = raw_notifier_chain_register(&net_in_chain, nb); ++ rtnl_unlock(); ++ return err; ++} + -+all: $(INSTALLPROGS) $(INSTALLLIBS) ++int ++unregister_net_in(struct notifier_block *nb) ++{ ++ int err; ++ rtnl_lock(); ++ err = raw_notifier_chain_unregister(&net_in_chain, nb); ++ rtnl_unlock(); ++ return err; ++} + -+ifneq ($(MAKECMDGOALS),clean) -+-include $(ELEMENTSCONF).mk -+endif + -+$(DRIVER): Makefile libclick.a $(OBJS) -+ $(CXXLINK) -rdynamic $(OBJS) libclick.a $(LIBS) + #if defined(CONFIG_BRIDGE) || defined (CONFIG_BRIDGE_MODULE) + /* These hooks defined here for ATM */ + struct net_bridge; +@@ -2185,13 +2213,14 @@ + * NET_RX_SUCCESS: no congestion + * NET_RX_DROP: packet was dropped + */ +-int netif_receive_skb(struct sk_buff *skb) ++//int netif_receive_skb(struct sk_buff *skb) ++int __netif_receive_skb(struct sk_buff *skb, unsigned short type, int notifier_data) + { + struct packet_type *ptype, *pt_prev; + struct net_device *orig_dev; + struct net_device *null_or_orig; + int ret = NET_RX_DROP; +- __be16 type; ++// __be16 type; + + /* if we've gotten here through NAPI, check netpoll */ + if (netpoll_receive_skb(skb)) +@@ -2218,6 +2247,14 @@ + skb_reset_transport_header(skb); + skb->mac_len = skb->network_header - skb->mac_header; + ++ /* Click: may want to steal the packet */ ++ if (notifier_data >= 0 ++ && raw_notifier_call_chain(&net_in_chain, ++ notifier_data, ++ skb) & NOTIFY_STOP_MASK) { ++ return ret; ++ } ++ + pt_prev = NULL; + + rcu_read_lock(); +@@ -2316,7 +2353,8 @@ + } + local_irq_enable(); + +- netif_receive_skb(skb); ++ __netif_receive_skb(skb, skb->protocol, skb_queue_len(&queue->input_pkt_queue)); ++//XXX netif_receive_skb(skb); + } while (++work < quota && jiffies == start_time); + + return work; +@@ -4869,6 +4907,7 @@ + EXPORT_SYMBOL(dev_get_by_index); + EXPORT_SYMBOL(dev_get_by_name); + EXPORT_SYMBOL(dev_open); ++EXPORT_SYMBOL(dev_ioctl); + EXPORT_SYMBOL(dev_queue_xmit); + EXPORT_SYMBOL(dev_remove_pack); + EXPORT_SYMBOL(dev_set_allmulti); +@@ -4881,10 +4920,16 @@ + EXPORT_SYMBOL(netdev_set_master); + EXPORT_SYMBOL(netdev_state_change); + EXPORT_SYMBOL(netif_receive_skb); ++EXPORT_SYMBOL(__netif_receive_skb); + EXPORT_SYMBOL(netif_rx); + EXPORT_SYMBOL(register_gifconf); + EXPORT_SYMBOL(register_netdevice); + EXPORT_SYMBOL(register_netdevice_notifier); ++ ++/* Click */ ++EXPORT_SYMBOL(register_net_in); ++EXPORT_SYMBOL(unregister_net_in); ++ + EXPORT_SYMBOL(skb_checksum_help); + EXPORT_SYMBOL(synchronize_net); + EXPORT_SYMBOL(unregister_netdevice); +diff -Nurb linux-2.6.27.10/net/core/neighbour.c linux-2.6.27.10-clickport/net/core/neighbour.c +--- linux-2.6.27.10/net/core/neighbour.c 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/net/core/neighbour.c 2009-01-27 16:03:49.000000000 -0500 +@@ -2702,7 +2702,7 @@ + + int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p, + int p_id, int pdev_id, char *p_name, +- proc_handler *handler, ctl_handler *strategy) ++ proc_handler_t *handler, ctl_handler *strategy) + { + struct neigh_sysctl_table *t; + const char *dev_name_source = NULL; +diff -Nurb linux-2.6.27.10/net/core/skbuff.c linux-2.6.27.10-clickport/net/core/skbuff.c +--- linux-2.6.27.10/net/core/skbuff.c 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/net/core/skbuff.c 2009-01-27 17:09:12.000000000 -0500 +@@ -570,6 +570,112 @@ + skb_shinfo(new)->gso_type = skb_shinfo(old)->gso_type; + } + + -+libclick.a: Makefile $(LIBOBJS) -+ $(AR_CREATE) libclick.a $(LIBOBJS) -+ $(RANLIB) libclick.a ++/* Click: clear skb header state */ ++static inline void skb_headerinit(void *p, struct kmem_cache *cache, ++ unsigned long flags) ++{ ++ struct sk_buff *skb = p; + -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ cd $(top_builddir) \ -+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ++ skb->next = NULL; ++ skb->prev = NULL; ++ skb->sk = NULL; ++ skb->tstamp.tv64 = 0; /* No idea about time */ ++ skb->dev = NULL; ++ skb->iif = 0; ++ skb->dst = NULL; ++ skb->sp = NULL; ++ memset(skb->cb, 0, sizeof(skb->cb)); ++ skb->priority = 0; ++ skb->pkt_type = PACKET_HOST; /* Default type */ ++ skb->ip_summed = 0; ++ skb->destructor = NULL; + -+elemlist: -+ @rm -f elements.conf -+ @$(MAKE) elements.conf -+elements.conf: $(top_builddir)/config.status $(top_builddir)/click-buildtool -+ echo "userlevel app aqm ethernet icmp ip standard tcpudp" | $(top_builddir)/click-buildtool findelem -r userlevel -p $(top_srcdir) > elements.conf -+$(ELEMENTSCONF).mk: $(ELEMENTSCONF).conf $(top_builddir)/click-buildtool -+ $(top_builddir)/click-buildtool elem2make -x "$(STD_ELEMENT_OBJS)" < $(ELEMENTSCONF).conf > $(ELEMENTSCONF).mk -+$(ELEMENTSCONF).cc: $(ELEMENTSCONF).conf $(top_builddir)/click-buildtool -+ $(top_builddir)/click-buildtool elem2export < $(ELEMENTSCONF).conf > $(ELEMENTSCONF).cc -+ @rm -f $(ELEMENTSCONF).d ++#ifdef CONFIG_NETFILTER ++ skb->mark = 0; ++ skb->nfct = NULL; ++# if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE) ++ skb->nfct_reasm = NULL; ++# endif ++# ifdef CONFIG_BRIDGE_NETFILTER ++ skb->nf_bridge = NULL; ++# endif ++#endif ++#ifdef CONFIG_NET_SCHED ++ skb->tc_index = 0; ++# ifdef CONFIG_NET_CLS_ACT ++ skb->tc_verd = 0; ++# endif ++#endif ++} + -+DEPFILES := $(wildcard *.d) -+ifneq ($(DEPFILES),) -+include $(DEPFILES) -+endif ++/* Click: attempts to recycle a sk_buff. if it can be recycled, return it */ ++struct sk_buff *skb_recycle(struct sk_buff *skb) ++{ ++ if (atomic_dec_and_test(&skb->users)) { ++ dst_release(skb->dst); ++#ifdef CONFIG_XFRM ++ secpath_put(skb->sp); ++#endif ++ if(skb->destructor) { ++ WARN_ON(in_irq()); ++ skb->destructor(skb); ++ } ++#ifdef CONFIG_NETFILTER ++ nf_conntrack_put(skb->nfct); ++# if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE) ++ nf_conntrack_put_reasm(skb->nfct_reasm); ++# endif ++# ifdef CONFIG_BRIDGE_NETFILTER ++ nf_bridge_put(skb->nf_bridge); ++# endif ++#endif ++ skb_headerinit(skb, NULL, 0); ++ ++ if (skb->fclone == SKB_FCLONE_UNAVAILABLE ++ && (!skb->cloned || ++ atomic_read(&skb_shinfo(skb)->dataref) == (skb->nohdr ? (1 << SKB_DATAREF_SHIFT) + 1 : 1))) { ++ /* Don't need to atomic_sub skb_shinfo(skb)->dataref, ++ as we set that to 1 below. */ ++ ++ if (skb_shinfo(skb)->nr_frags) { ++ int i; ++ for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) ++ put_page(skb_shinfo(skb)->frags[i].page); ++ /* Jason Park patch */ ++ skb_shinfo(skb)->nr_frags = 0; ++ } ++ ++ if (skb_shinfo(skb)->frag_list) ++ skb_drop_fraglist(skb); ++ ++ /* Load the data pointers. */ ++ skb->data = skb->head; ++ skb->tail = skb->data; ++ /* end and truesize should have never changed */ ++ /* skb->end = skb->data + skb->truesize; */ ++ ++ /* set up other state */ ++ skb->len = 0; ++ skb->cloned = 0; ++ ++ atomic_set(&skb->users, 1); ++ atomic_set(&(skb_shinfo(skb)->dataref), 1); ++ /* Jason Park patch */ ++ skb_shinfo(skb)->gso_size = 0; ++ skb_shinfo(skb)->gso_segs = 0; ++ skb_shinfo(skb)->gso_type = 0; ++ skb_shinfo(skb)->ip6_frag_id = 0; ++ ++ return skb; ++ } + -+install: $(INSTALLPROGS) install-lib -+ $(mkinstalldirs) $(DESTDIR)$(bindir) -+ for i in $(INSTALLPROGS); do $(INSTALL) $$i $(DESTDIR)$(bindir)/$$i; done -+install-lib: $(INSTALLLIBS) -+ $(mkinstalldirs) $(DESTDIR)$(libdir) -+ for i in $(INSTALLLIBS); do $(INSTALL) $$i $(DESTDIR)$(libdir)/$$i; done -+install-man: -+ : -+uninstall: -+ for i in $(INSTALLLIBS); do rm -f $(DESTDIR)$(libdir)/$$i; done -+ for i in $(INSTALLPROGS); do rm -f $(DESTDIR)$(bindir)/$$i; done ++ kfree_skbmem(skb); ++ } + -+clean: -+ rm -f *.d *.o $(INSTALLPROGS) $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc elements.conf libclick.a -+clean-lib: -+ rm -f $(LIBOBJS) libclick.a -+distclean: clean -+ -rm -f Makefile ++ return 0; ++} + -+.PHONY: all clean clean-lib distclean elemlist \ -+ install install-lib uninstall + /** + * skb_copy - create private copy of an sk_buff + * @skb: buffer to copy +@@ -2599,6 +2705,7 @@ + EXPORT_SYMBOL(skb_append_datato_frags); + EXPORT_SYMBOL(__skb_warn_lro_forwarding); + ++EXPORT_SYMBOL(skb_recycle); + EXPORT_SYMBOL_GPL(skb_to_sgvec); + EXPORT_SYMBOL_GPL(skb_cow_data); + EXPORT_SYMBOL_GPL(skb_partial_csum_set); +diff -Nurb linux-2.6.27.10/net/ipv4/arp.c linux-2.6.27.10-clickport/net/ipv4/arp.c +--- linux-2.6.27.10/net/ipv4/arp.c 2008-12-18 12:13:59.000000000 -0500 ++++ linux-2.6.27.10-clickport/net/ipv4/arp.c 2009-01-27 15:47:52.000000000 -0500 +@@ -328,6 +328,7 @@ + { + __be32 saddr = 0; + u8 *dst_ha = NULL; ++ u8 dst_ha_buf[MAX_ADDR_LEN+sizeof(unsigned long)]; + struct net_device *dev = neigh->dev; + __be32 target = *(__be32*)neigh->primary_key; + int probes = atomic_read(&neigh->probes); +@@ -365,8 +366,8 @@ + if ((probes -= neigh->parms->ucast_probes) < 0) { + if (!(neigh->nud_state&NUD_VALID)) + printk(KERN_DEBUG "trying to ucast probe in NUD_INVALID\n"); +- dst_ha = neigh->ha; +- read_lock_bh(&neigh->lock); ++ memcpy(dst_ha_buf, neigh->ha, sizeof(neigh->ha)); ++ dst_ha = dst_ha_buf; + } else if ((probes -= neigh->parms->app_probes) < 0) { + #ifdef CONFIG_ARPD + neigh_app_ns(neigh); +@@ -376,8 +377,6 @@ + + arp_send(ARPOP_REQUEST, ETH_P_ARP, target, dev, saddr, + dst_ha, dev->dev_addr, NULL); +- if (dst_ha) +- read_unlock_bh(&neigh->lock); + } + + static int arp_ignore(struct in_device *in_dev, __be32 sip, __be32 tip) +diff -Nurb linux-2.6.27.10/net/ipv4/devinet.c linux-2.6.27.10-clickport/net/ipv4/devinet.c +--- linux-2.6.27.10/net/ipv4/devinet.c 2009-01-27 15:18:04.000000000 -0500 ++++ linux-2.6.27.10-clickport/net/ipv4/devinet.c 2009-01-27 15:47:52.000000000 -0500 +@@ -1687,3 +1687,4 @@ + EXPORT_SYMBOL(inetdev_by_index); + EXPORT_SYMBOL(register_inetaddr_notifier); + EXPORT_SYMBOL(unregister_inetaddr_notifier); ++EXPORT_SYMBOL(devinet_ioctl); +diff -Nurb linux-2.6.27.10/scr linux-2.6.27.10-clickport/scr +--- linux-2.6.27.10/scr 1969-12-31 19:00:00.000000000 -0500 ++++ linux-2.6.27.10-clickport/scr 2009-01-27 15:48:50.000000000 -0500 +@@ -0,0 +1,29 @@ ++vi -o ./include/asm-um/elf-x86_64.h ./include/asm-um/elf-x86_64.h.rej ++vi -o ./include/asm-frv/tlbflush.h ./include/asm-frv/tlbflush.h.rej ++vi -o ./include/asm-frv/pgtable.h ./include/asm-frv/pgtable.h.rej ++vi -o ./include/asm-xtensa/pgalloc.h ./include/asm-xtensa/pgalloc.h.rej ++vi -o ./include/asm-xtensa/pgtable.h ./include/asm-xtensa/pgtable.h.rej ++vi -o ./include/asm-xtensa/module.h ./include/asm-xtensa/module.h.rej ++vi -o ./include/asm-xtensa/system.h ./include/asm-xtensa/system.h.rej ++vi -o ./include/asm-xtensa/timex.h ./include/asm-xtensa/timex.h.rej ++vi -o ./include/net/sock.h ./include/net/sock.h.rej ++vi -o ./include/net/compat.h ./include/net/compat.h.rej ++vi -o ./include/asm-mips/fpu.h ./include/asm-mips/fpu.h.rej ++vi -o ./include/asm-mips/time.h ./include/asm-mips/time.h.rej ++vi -o ./include/asm-mips/irq.h ./include/asm-mips/irq.h.rej ++vi -o ./include/asm-mips/system.h ./include/asm-mips/system.h.rej ++vi -o ./include/linux/lockdep.h ./include/linux/lockdep.h.rej ++vi -o ./include/linux/ktime.h ./include/linux/ktime.h.rej ++vi -o ./include/linux/textsearch.h ./include/linux/textsearch.h.rej ++vi -o ./include/linux/backing-dev.h ./include/linux/backing-dev.h.rej ++vi -o ./include/linux/kexec.h ./include/linux/kexec.h.rej ++vi -o ./include/linux/sysctl.h ./include/linux/sysctl.h.rej ++vi -o ./include/linux/netdevice.h ./include/linux/netdevice.h.rej ++vi -o ./include/linux/spinlock_types_up.h ./include/linux/spinlock_types_up.h.rej ++vi -o ./include/linux/list.h ./include/linux/list.h.rej ++vi -o ./include/asm-m68k/module.h ./include/asm-m68k/module.h.rej ++vi -o ./net/core/dev.c ./net/core/dev.c.rej ++vi -o ./net/core/skbuff.c ./net/core/skbuff.c.rej ++vi -o ./net/core/neighbour.c ./net/core/neighbour.c.rej ++vi -o ./drivers/media/dvb/bt8xx/bt878.h ./drivers/media/dvb/bt8xx/bt878.h.rej ++vi -o ./drivers/net/ibmveth.c ./drivers/net/ibmveth.c.rej -- 2.43.0