Updating from the mainline PL kernel
[linux-2.6.git] / support / patch-click-1.6.0-linux-2.6.27.10
diff --git a/support/patch-click-1.6.0-linux-2.6.27.10 b/support/patch-click-1.6.0-linux-2.6.27.10
deleted file mode 100644 (file)
index 0cc82e2..0000000
+++ /dev/null
@@ -1,131290 +0,0 @@
-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 </dev/null 6>&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=''
-+
-+# Factoring default headers for most tests.
-+ac_includes_default="\
-+#include <stdio.h>
-+#ifdef HAVE_SYS_TYPES_H
-+# include <sys/types.h>
-+#endif
-+#ifdef HAVE_SYS_STAT_H
-+# include <sys/stat.h>
-+#endif
-+#ifdef STDC_HEADERS
-+# include <stdlib.h>
-+# include <stddef.h>
-+#else
-+# ifdef HAVE_STDLIB_H
-+#  include <stdlib.h>
-+# endif
-+#endif
-+#ifdef HAVE_STRING_H
-+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-+#  include <memory.h>
-+# endif
-+# include <string.h>
-+#endif
-+#ifdef HAVE_STRINGS_H
-+# include <strings.h>
-+#endif
-+#ifdef HAVE_INTTYPES_H
-+# include <inttypes.h>
-+#endif
-+#ifdef HAVE_STDINT_H
-+# include <stdint.h>
-+#endif
-+#ifdef HAVE_UNISTD_H
-+# include <unistd.h>
-+#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<lib dir> if you have libraries in a
-+              nonstandard directory <lib dir>
-+  LIBS        libraries to pass to the linker, e.g. -l<library>
-+  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
-+              you have headers in a nonstandard directory <include dir>
-+  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 <stdarg.h>
-+#include <stdio.h>
-+#include <sys/types.h>
-+#include <sys/stat.h>
-+/* 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 <limits.h> to <assert.h> if __STDC__ is defined, since
-+  # <limits.h> 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 <limits.h>
-+@%:@else
-+@%:@ include <assert.h>
-+@%:@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 <ac_nonexistent.h>
-+_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 <limits.h> to <assert.h> if __STDC__ is defined, since
-+  # <limits.h> 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 <limits.h>
-+@%:@else
-+@%:@ include <assert.h>
-+@%:@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 <ac_nonexistent.h>
-+_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
-+#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 <new> works" >&5
-+echo $ECHO_N "checking whether <new> 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 <new>
-+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 <new.h> works" >&5
-+echo $ECHO_N "checking whether <new.h> 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 <new.h>
-+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 <limits.h> to <assert.h> if __STDC__ is defined, since
-+  # <limits.h> 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 <limits.h>
-+@%:@else
-+@%:@ include <assert.h>
-+@%:@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 <ac_nonexistent.h>
-+_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 <limits.h> to <assert.h> if __STDC__ is defined, since
-+  # <limits.h> 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 <limits.h>
-+@%:@else
-+@%:@ include <assert.h>
-+@%:@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 <ac_nonexistent.h>
-+_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 <limits.h> declares $ac_func.
-+   For example, HP-UX 11i <limits.h> 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 <limits.h> to <assert.h> if __STDC__ is defined, since
-+    <limits.h> exists even on freestanding compilers.  */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#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 <limits.h> declares $ac_func.
-+   For example, HP-UX 11i <limits.h> 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 <limits.h> to <assert.h> if __STDC__ is defined, since
-+    <limits.h> exists even on freestanding compilers.  */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#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
-+
-+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 <stdlib.h>
-+#include <stdarg.h>
-+#include <string.h>
-+#include <float.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_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 <string.h>
-+
-+_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 <stdlib.h>
-+
-+_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 <ctype.h>
-+#include <stdlib.h>
-+#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 <stdio.h>
-+@%:@include <stdlib.h>
-+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 <stdio.h>
-+@%:@include <stdlib.h>
-+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 <sys/types.h>
-+
-+_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 <sys/types.h>
-+
-+_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 <inttypes.h> or <sys/types.h>!
-+
-+=========================================" >&5
-+echo "$as_me: error: 
-+=========================================
-+
-+Neither uint32_t nor u_int32_t defined by <inttypes.h> or <sys/types.h>!
-+
-+=========================================" >&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 <stdlib.h>
-+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 <stdio.h>
-+@%:@include <stdlib.h>
-+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 <stdio.h>
-+@%:@include <stdlib.h>
-+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 <stdio.h>
-+@%:@include <stdlib.h>
-+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 <<EOF
-+#line __oline__ "configure"
-+#include "confdefs.h"
-+#include <$endian_hdr>
-+#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 <stdlib.h>
-+#include <stdio.h>
-+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 <stdarg.h>
-+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 <limits.h> declares $ac_func.
-+   For example, HP-UX 11i <limits.h> 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 <limits.h> to <assert.h> if __STDC__ is defined, since
-+    <limits.h> exists even on freestanding compilers.  */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#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 <poll.h>
-+_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 <poll.h>
-+_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 <poll.h> is emulated" >&5
-+echo $ECHO_N "checking whether <poll.h> 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 <poll.h>
-+#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 <limits.h> declares $ac_func.
-+   For example, HP-UX 11i <limits.h> 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 <limits.h> to <assert.h> if __STDC__ is defined, since
-+    <limits.h> exists even on freestanding compilers.  */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#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 <limits.h> declares $ac_func.
-+   For example, HP-UX 11i <limits.h> 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 <limits.h> to <assert.h> if __STDC__ is defined, since
-+    <limits.h> exists even on freestanding compilers.  */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#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 <sys/types.h>
-+#include <sys/event.h>
-+#include <sys/time.h>
-+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 <limits.h> declares dlopen.
-+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-+#define dlopen innocuous_dlopen
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+    which can conflict with char dlopen (); below.
-+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+    <limits.h> exists even on freestanding compilers.  */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#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 <limits.h> declares dlopen.
-+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-+#define dlopen innocuous_dlopen
-+
-+/* System header to define __stub macros and hopefully few prototypes,
-+    which can conflict with char dlopen (); below.
-+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+    <limits.h> exists even on freestanding compilers.  */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#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 <sys/types.h>
-+#include <sys/socket.h>
-+
-+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 <unistd.h>
-+#include <sys/types.h>
-+#include <sys/stat.h>
-+#include <fcntl.h>
-+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 <stdio.h>
-+#include <sys/types.h>
-+
-+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 <stdio.h>
-+#include <sys/types.h>
-+
-+   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 <stdio.h>
-+#include <sys/types.h>
-+
-+   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 <stdio.h>
-+#include <sys/types.h>
-+
-+   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 <stdio.h>
-+#include <sys/types.h>
-+
-+   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 <stdio.h>
-+#include <sys/types.h>
-+
-+   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 <stdio.h>
-+#include <sys/types.h>
-+
-+   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 <stdio.h>
-+@%:@include <stdlib.h>
-+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 <limits.h> declares $ac_func.
-+   For example, HP-UX 11i <limits.h> 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 <limits.h> to <assert.h> if __STDC__ is defined, since
-+    <limits.h> exists even on freestanding compilers.  */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#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 <fcntl.h>
-+#include <sys/mman.h>
-+
-+#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 <sys/param.h>
-+#   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 <limits.h> declares $ac_func.
-+   For example, HP-UX 11i <limits.h> 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 <limits.h> to <assert.h> if __STDC__ is defined, since
-+    <limits.h> exists even on freestanding compilers.  */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#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 <sys/types.h>
-+#include <sys/mman.h>
-+#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 <asm/alternative.h>" >&5
-+echo $ECHO_N "checking for <asm/alternative.h>... $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 <sys/param.h>
-+#if __FreeBSD_version < 500000
-+#include <NONEXISTENT_FILE>
-+#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 <pcap.h>
-+_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 <pcap.h>
-+_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 <pcap.h>
-+
-+_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 <pcap.h>
-+
-+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 <limits.h> declares $ac_func.
-+   For example, HP-UX 11i <limits.h> 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 <limits.h> to <assert.h> if __STDC__ is defined, since
-+    <limits.h> exists even on freestanding compilers.  */
-+
-+#ifdef __STDC__
-+# include <limits.h>
-+#else
-+# include <assert.h>
-+#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 <net/if.h>
-+#include <net/if_var.h>
-+
-+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 <sys/socket.h>
-+#include <netinet/in.h>
-+
-+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 <prop.h>
-+_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 <prop.h>
-+_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 <expat.h>
-+_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 <expat.h>
-+_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 <conftest.dat`"
-+      { echo "$as_me:$LINENO: result: $LINUX_CFLAGS" >&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 <linux/autoconf.h>
-+#include <linux/signal.h>
-+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 <linux/autoconf.h>
-+#include <linux/skbuff.h>
-+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 <linux/autoconf.h>
-+#include <linux/skbuff.h>
-+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 <linux/autoconf.h>
-+#include <linux/types.h>
-+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 <linux/autoconf.h>
-+#include <linux/types.h>
-+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 <linux/autoconf.h>
-+#include <linux/skbuff.h>
-+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 <linux/autoconf.h>
-+#include <linux/skbuff.h>
-+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 <linux/autoconf.h>
-+#include <linux/skbuff.h>
-+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 <linux/autoconf.h>
-+#include <linux/skbuff.h>
-+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 <linux/autoconf.h>
-+#include <linux/skbuff.h>
-+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 <linux/autoconf.h>
-+#include <linux/skbuff.h>
-+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 <linux/autoconf.h>
-+#include <linux/skbuff.h>
-+#include <linux/netdevice.h>
-+
-+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 <linux/autoconf.h>
-+#include <linux/skbuff.h>
-+#include <linux/netdevice.h>
-+
-+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 <bug-autoconf@gnu.org>."
-+
-+_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 <conf$$subs.sed
-+rm -f conf$$subs.sed
-+cat >>$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 <conf$$subs.sed
-+rm -f conf$$subs.sed
-+cat >>$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 <new> 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 <new.h> 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 <sys/types.h> 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 <sys/stat.h> header file. */
-+#undef HAVE_SYS_STAT_H])
-+m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
-+#undef HAVE_STDLIB_H])
-+m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
-+#undef HAVE_STRING_H])
-+m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
-+#undef HAVE_MEMORY_H])
-+m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
-+#undef HAVE_STRINGS_H])
-+m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
-+#undef HAVE_INTTYPES_H])
-+m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
-+#undef HAVE_STDINT_H])
-+m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> 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 <inttypes.h> 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 <endian.h> header file. */
-+#undef HAVE_ENDIAN_H])
-+m4trace:configure.in:323: -1- AH_OUTPUT([HAVE_MACHINE_ENDIAN_H], [/* Define to 1 if you have the <machine/endian.h> 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 <byteswap.h> 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 <strings.h> 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 <unistd.h> header file. */
-+#undef HAVE_UNISTD_H])
-+m4trace:configure.in:374: -1- AH_OUTPUT([HAVE_TERMIO_H], [/* Define to 1 if you have the <termio.h> header file. */
-+#undef HAVE_TERMIO_H])
-+m4trace:configure.in:374: -1- AH_OUTPUT([HAVE_NETDB_H], [/* Define to 1 if you have the <netdb.h> header file. */
-+#undef HAVE_NETDB_H])
-+m4trace:configure.in:374: -1- AH_OUTPUT([HAVE_SYS_EVENT_H], [/* Define to 1 if you have the <sys/event.h> header file. */
-+#undef HAVE_SYS_EVENT_H])
-+m4trace:configure.in:374: -1- AH_OUTPUT([HAVE_PWD_H], [/* Define to 1 if you have the <pwd.h> header file. */
-+#undef HAVE_PWD_H])
-+m4trace:configure.in:374: -1- AH_OUTPUT([HAVE_GRP_H], [/* Define to 1 if you have the <grp.h> 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 <poll.h> 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 <dlfcn.h> 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 <dlfcn.h> 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 <sys/mman.h> header file. */
-+#undef HAVE_SYS_MMAN_H])
-+m4trace:configure.in:437: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
-+#undef HAVE_STDLIB_H])
-+m4trace:configure.in:437: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> 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 <linux/if_tun.h> 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 <net/if_tun.h> 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 <net/if_tap.h> 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 <net/bpf.h> 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 <pcap.h> 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 "^<elementmap \|^<entry " <"$elementmap" | $awk '/ name="([^"]*)"/ {
-+  sub(/.* name="/, "", $0);
-+  sub(/".*/, "", $0);
-+  prov[$0] = 1;
-+}
-+/ provides="([^"]*)"/ {
-+  sub(/.* provides="/, "", $0);
-+  sub(/".*/, "", $0);
-+  split($0, d, / +/);
-+  for (j in d) prov[d[j]] = 1;
-+}
-+END {
-+  # delete references to drivers
-+  delete prov["userlevel"]; delete prov["linuxmodule"]; 
-+  delete prov["bsdmodule"]; delete prov["ns"];
-+  for (j in prov) print j;
-+}'
-+}
-+
-+findelem () {
-+    pfx=
-+    all=
-+    provisions=
-+    filenames=
-+    standards=
-+    unprovisions='false 0'
-+    while [ x"$1" != x ]; do
-+    case $1 in
-+    -S|--s|--st|--sta|--stan|--stand|--standa|--standar|--standard|--standards)
-+      standards=1; shift 1;;
-+    -p|--pre|--pref|--prefi|--prefix)
-+      if test $# -lt 2; then findelem_usage; fi
-+      shift 1; pfx="$1/"; shift 1;;
-+    -p*)
-+      pfx="`echo "$1" | sed 's/^-p//'`"/; shift 1;;
-+    --pre=*|--pref=*|--prefi=*|--prefix=*)
-+      pfx="`echo "$1" | sed 's/^[^=]*=//'`"/; shift 1;;
-+    -f|--filenames)
-+      filenames=f; shift 1;;
-+    -F|--filename-|--filename-p|--filename-pa|--filename-pai|--filename-pair|--filename-pairs)
-+      filenames=F; shift 1;;
-+    -V|--verb|--verbo|--verbos|--verbose)
-+      verbose=1; shift 1;;
-+    -a|--a|--al|--all)
-+      all=1; shift 1;;
-+    -r|--pro|--prov|--provi|--provid|--provide)
-+      if test $# -lt 2; then findelem_usage; fi
-+      shift 1; provisions="$1
-+$provisions"; shift 1;;
-+    -r*)
-+      provisions="`echo "$1" | sed 's/^-r//'`
-+$provisions"; shift 1;;
-+    --pro=*|--prov=*|--provi=*|--provid=*|--provide=*)
-+      provisions="`echo "$1" | sed 's/^[^=]*=//'`
-+$provisions"; shift 1;;
-+    -x|--u|--un|--unp|--unpr|--unpro|--unprov|--unprovi|--unprovid|--unprovide)
-+      if test $# -lt 2; then findelem_usage; fi
-+      shift 1; unprovisions="$1
-+$unprovisions"; shift 1;;
-+    -x*)
-+      unprovisions="`echo "$1" | sed 's/^-x//'`
-+$unprovisions"; shift 1;;
-+    --u=*|--un=*|--unp=*|--unpr=*|--unpro=*|--unprov=*|--unprovi=*|--unprovid=*|--unprovide=*)
-+      unprovisions="`echo "$1" | sed 's/^[^=]*=//'`
-+$unprovisions"; shift 1;;
-+    -e|--e|--el|--ele|--elem|--eleme|--elemen|--element|--elementm|--elementma|--elementmap)
-+      if test $# -lt 2; then findelem_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;;
-+    -P|--pa|--pac|--pack|--packa|--packag|--package)
-+      provisions="`elementmap_provisions "${clickdatadir}/elementmap.xml"`
-+$provisions"; shift 1;;
-+    -h|--h|--he|--hel|--help)
-+      cat <<'EOF' 1>&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 <click@pdos.lcs.mit.edu>.
-+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 <click@pdos.lcs.mit.edu>.
-+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 <click@pdos.lcs.mit.edu>.
-+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 <click/config.h>\n#include <click/package.hh>\n#include <click/glue.hh>";
-+  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 <click/config.h>\n#include <click/package.hh>";
-+  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 <<EOF >/tmp/click-buildtool-standards.$$
-+-     <click/standard/addressinfo.hh> AddressInfo-AddressInfo
-+-     <click/standard/alignmentinfo.hh>       AlignmentInfo-AlignmentInfo
-+-     <click/standard/errorelement.hh>        ErrorElement-ErrorElement
-+-     <click/standard/portinfo.hh>    PortInfo-PortInfo
-+-     <click/standard/scheduleinfo.hh>        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 <click@pdos.lcs.mit.edu>.
-+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 <click@pdos.lcs.mit.edu>.
-+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 <click@pdos.lcs.mit.edu>.
-+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 <click@pdos.lcs.mit.edu>.
-+EOF
-+      exit 0;;
-+    *)
-+      kversion_usage;;
-+    esac
-+    done
-+
-+    cat <<EOF
-+#include <click/config.h>
-+#include <linux/version.h>
-+#include <linux/module.h>
-+
-+/* a new version of EXPORT_NO_SYMBOLS that works */
-+const int __ksymtab_nothing[0] __attribute__((section("__ksymtab"))) = { };
-+EOF
-+    test $gpl = 1 && cat <<EOF
-+
-+#ifdef MODULE_LICENSE
-+MODULE_LICENSE("Dual BSD/GPL");
-+#endif
-+EOF
-+}
-+
-+
-+
-+##########
-+# KBUILD #
-+##########
-+
-+kbuild_usage () {
-+    echo_n "Usage: click-buildtool kbuild > 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 <click@pdos.lcs.mit.edu>.
-+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 <click@pdos.lcs.mit.edu>.
-+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 <click@pdos.lcs.mit.edu>.
-+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 <click/config.h>"
-+    echo "#include <linux/version.h>"
-+    echo "#include <linux/module.h>"
-+    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 <click@pdos.lcs.mit.edu>.
-+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 <click@pdos.lcs.mit.edu>.
-+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 <<EOF
-+#include <click/config.h>
-+#include <linux/module.h>
-+/* 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 <<EOF
-+#ifdef MODULE_LICENSE
-+MODULE_LICENSE("Dual BSD/GPL");
-+#endif
-+EOF
-+      fi
-+      c_command_nowarn=`echo $c_command | sed 's/-W[-a-z]*//g'`
-+      exec_command $c_command_nowarn $vfile.c
-+      exec_command "ld -r -o $package $cflags $files"
-+      exit 0
-+    elif test $driver = userlevel -o $driver = tool -o $driver = ns; then
-+      exec_command "${CXX-g++ -W -Wall } ${CXXFLAGS-$icxxflags} -shared -o $package $cflags $files"
-+      exit 0
-+    elif test $driver = bsdmodule; then
-+      exec_command "ld -Bshareable -o $package $cflags $files"
-+      exit 0
-+    fi
-+else
-+    exec_command "$command $@"
-+    exit 0
-+fi
-Files click-1.6.0/click-inst.tar.gz and click-1.6.0-27/click-inst.tar.gz differ
-diff -Nurb click-1.6.0/config-linuxmodule.h.in click-1.6.0-27/config-linuxmodule.h.in
---- click-1.6.0/config-linuxmodule.h.in        2007-09-18 16:24:46.000000000 -0400
-+++ click-1.6.0-27/config-linuxmodule.h.in     2009-01-28 16:06:28.000000000 -0500
-@@ -86,12 +86,10 @@
- #endif
- /* Include integer type definitions. */
--#if !HAVE_LINUXMODULE_2_6
- # include <linux/autoconf.h>
--#endif
- #include <linux/types.h>
- 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 <asm/alternative.h> 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 <linux/autoconf.h>
-+#endif
-+#include <linux/types.h>
-+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 <click/fixconfig.h>
-+
-+#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 <ac_nonexistent.h>
-+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 <ac_nonexistent.h>
-+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 <new> 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 <ac_nonexistent.h>
-+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 <ac_nonexistent.h>
-+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 <inttypes.h>
-+| 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 <stdio.h>
-+| #ifdef HAVE_SYS_TYPES_H
-+| # include <sys/types.h>
-+| #endif
-+| #ifdef HAVE_SYS_STAT_H
-+| # include <sys/stat.h>
-+| #endif
-+| #ifdef STDC_HEADERS
-+| # include <stdlib.h>
-+| # include <stddef.h>
-+| #else
-+| # ifdef HAVE_STDLIB_H
-+| #  include <stdlib.h>
-+| # endif
-+| #endif
-+| #ifdef HAVE_STRING_H
-+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-+| #  include <memory.h>
-+| # endif
-+| # include <string.h>
-+| #endif
-+| #ifdef HAVE_STRINGS_H
-+| # include <strings.h>
-+| #endif
-+| #ifdef HAVE_INTTYPES_H
-+| # include <inttypes.h>
-+| #endif
-+| #ifdef HAVE_STDINT_H
-+| # include <stdint.h>
-+| #endif
-+| #ifdef HAVE_UNISTD_H
-+| # include <unistd.h>
-+| #endif
-+| #include <sys/event.h>
-+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 <sys/event.h>
-+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 <poll.h> 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 <limits.h> declares kqueue.
-+|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-+| #define kqueue innocuous_kqueue
-+| 
-+| /* System header to define __stub macros and hopefully few prototypes,
-+|     which can conflict with char kqueue (); below.
-+|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+|     <limits.h> exists even on freestanding compilers.  */
-+| 
-+| #ifdef __STDC__
-+| # include <limits.h>
-+| #else
-+| # include <assert.h>
-+| #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 <limits.h> declares dlopen.
-+|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-+| #define dlopen innocuous_dlopen
-+| 
-+| /* System header to define __stub macros and hopefully few prototypes,
-+|     which can conflict with char dlopen (); below.
-+|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-+|     <limits.h> exists even on freestanding compilers.  */
-+| 
-+| #ifdef __STDC__
-+| # include <limits.h>
-+| #else
-+| # include <assert.h>
-+| #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 <asm/alternative.h>
-+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 <stdio.h>
-+| #ifdef HAVE_SYS_TYPES_H
-+| # include <sys/types.h>
-+| #endif
-+| #ifdef HAVE_SYS_STAT_H
-+| # include <sys/stat.h>
-+| #endif
-+| #ifdef STDC_HEADERS
-+| # include <stdlib.h>
-+| # include <stddef.h>
-+| #else
-+| # ifdef HAVE_STDLIB_H
-+| #  include <stdlib.h>
-+| # endif
-+| #endif
-+| #ifdef HAVE_STRING_H
-+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-+| #  include <memory.h>
-+| # endif
-+| # include <string.h>
-+| #endif
-+| #ifdef HAVE_STRINGS_H
-+| # include <strings.h>
-+| #endif
-+| #ifdef HAVE_INTTYPES_H
-+| # include <inttypes.h>
-+| #endif
-+| #ifdef HAVE_STDINT_H
-+| # include <stdint.h>
-+| #endif
-+| #ifdef HAVE_UNISTD_H
-+| # include <unistd.h>
-+| #endif
-+| #include <net/if_tun.h>
-+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 <net/if_tun.h>
-+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 <stdio.h>
-+| #ifdef HAVE_SYS_TYPES_H
-+| # include <sys/types.h>
-+| #endif
-+| #ifdef HAVE_SYS_STAT_H
-+| # include <sys/stat.h>
-+| #endif
-+| #ifdef STDC_HEADERS
-+| # include <stdlib.h>
-+| # include <stddef.h>
-+| #else
-+| # ifdef HAVE_STDLIB_H
-+| #  include <stdlib.h>
-+| # endif
-+| #endif
-+| #ifdef HAVE_STRING_H
-+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-+| #  include <memory.h>
-+| # endif
-+| # include <string.h>
-+| #endif
-+| #ifdef HAVE_STRINGS_H
-+| # include <strings.h>
-+| #endif
-+| #ifdef HAVE_INTTYPES_H
-+| # include <inttypes.h>
-+| #endif
-+| #ifdef HAVE_STDINT_H
-+| # include <stdint.h>
-+| #endif
-+| #ifdef HAVE_UNISTD_H
-+| # include <unistd.h>
-+| #endif
-+| #include <net/if_tap.h>
-+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 <net/if_tap.h>
-+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 <stdio.h>
-+| #ifdef HAVE_SYS_TYPES_H
-+| # include <sys/types.h>
-+| #endif
-+| #ifdef HAVE_SYS_STAT_H
-+| # include <sys/stat.h>
-+| #endif
-+| #ifdef STDC_HEADERS
-+| # include <stdlib.h>
-+| # include <stddef.h>
-+| #else
-+| # ifdef HAVE_STDLIB_H
-+| #  include <stdlib.h>
-+| # endif
-+| #endif
-+| #ifdef HAVE_STRING_H
-+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-+| #  include <memory.h>
-+| # endif
-+| # include <string.h>
-+| #endif
-+| #ifdef HAVE_STRINGS_H
-+| # include <strings.h>
-+| #endif
-+| #ifdef HAVE_INTTYPES_H
-+| # include <inttypes.h>
-+| #endif
-+| #ifdef HAVE_STDINT_H
-+| # include <stdint.h>
-+| #endif
-+| #ifdef HAVE_UNISTD_H
-+| # include <unistd.h>
-+| #endif
-+| #include <net/bpf.h>
-+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 <net/bpf.h>
-+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 <net/if.h>
-+| #include <net/if_var.h>
-+| 
-+| 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 <sys/socket.h>
-+| #include <netinet/in.h>
-+| 
-+| 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 <linux/autoconf.h>
-+| #include <linux/types.h>
-+| 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 <linux/autoconf.h>
-+| #include <linux/skbuff.h>
-+| 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 <linux/autoconf.h>
-+| #include <linux/skbuff.h>
-+| 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 <linux/autoconf.h>
-+| #include <linux/skbuff.h>
-+| 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 <linux/autoconf.h>
-+| #include <linux/skbuff.h>
-+| 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 <linux/autoconf.h>
-+| #include <linux/skbuff.h>
-+| 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 <linux/autoconf.h>
-+| #include <linux/skbuff.h>
-+| 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 <linux/autoconf.h>
-+| #include <linux/skbuff.h>
-+| #include <linux/netdevice.h>
-+| 
-+| 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 <linux/autoconf.h>
-+| #include <linux/skbuff.h>
-+| #include <linux/netdevice.h>
-+| 
-+| 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 <bug-autoconf@gnu.org>."
-+
-+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 <<EOF
--#line 8691 "configure"
-+#line 8692 "configure"
- #include "confdefs.h"
- #include <$endian_hdr>
- #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 <sys/types.h>
-+#include <sys/event.h>
-+#include <sys/time.h>]], [[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 <sys/types.h>
-+#include <sys/socket.h>
-+]], [[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 <sys/types.h>
-+#include <sys/mman.h>
-+#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 <asm/alternative.h>, 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 <sys/param.h>
-+#if __FreeBSD_version < 500000
-+#include <NONEXISTENT_FILE>
-+#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 <net/if.h>
-+#include <net/if_var.h>
-+]], [[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 <sys/socket.h>
-+#include <netinet/in.h>
-+]], [[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 <conftest.dat`"
-+      AC_MSG_RESULT($LINUX_CFLAGS)
-+    else
-+      LINUX_CFLAGS=""
-+    fi
-+    AC_SUBST(LINUX_CFLAGS)
-+
-+
-+    SAVE_CXX="$CXX"
-+    CXX="$KERNEL_CXX"
-+    saveflags="$CPPFLAGS"
-+    CPPFLAGS="$saveflags -D__KERNEL__ -I$linuxdir/include $LINUX_CFLAGS"
-+
-+
-+    # CLICK_LINUXMODULE_PROLOGUE()
-+    AC_DEFUN([CLICK_LINUXMODULE_PROLOGUE], [[#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 <linux/autoconf.h>]])
-+
-+
-+    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 <linux/signal.h>]], [[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 <linux/skbuff.h>]], [[]])], 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 <linux/skbuff.h>]], [[]])], 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 <linux/types.h>
-+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 <linux/types.h>
-+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 <linux/skbuff.h>]],
-+[[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 <linux/skbuff.h>]],
-+[[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 <linux/skbuff.h>]],
-+[[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 <linux/skbuff.h>]],
-+[[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 <linux/skbuff.h>]],
-+[[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 <linux/skbuff.h>]],
-+[[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 <linux/skbuff.h>
-+#include <linux/netdevice.h>]])
-+    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 <linux/skbuff.h>
-+#include <linux/netdevice.h>]])
-+    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 <linux/autoconf.h>
-+ #include <click/config.h>
-+ #include <click/string.hh>
-+ #include <click/straccum.hh>
-+--- ./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 <linux/autoconf.h>
-+ #include <click/config.h>
-+ #include <click/straccum.hh>
-+ #include <click/string.hh>
-+--- ./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 <linux/autoconf.h>
-+ #include <click/config.h>
-+ #include <click/bitvector.hh>
-+ 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 <linux/autoconf.h>
-+ #include <click/config.h>
-+ #include <click/nameinfo.hh>
-+ #include <click/glue.hh>
-+--- ./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/cxxprotect.h>
-+ CLICK_CXX_PROTECT
-+ #if CLICK_LINUXMODULE
-++#include <linux/autoconf.h>
-+ # include <net/checksum.h>
-+ # include <linux/in.h>
-+ #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/cxxprotect.h>
-+ CLICK_CXX_PROTECT
-++#include <linux/autoconf.h>
-+ # ifdef WANT_MOD_USE_COUNT
-+ #  define __NO_VERSION__
-+ #  include <linux/module.h>
-+--- ./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 <linux/autoconf.h>
-+ #include <click/ipaddress.hh>
-+ #include <click/ip6address.hh>
-+ #include <click/glue.hh>
-+@@ -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, &timestamp, 8);
-+ # else
-+-    skb_set_timestamp(skb(), &timestamp.timeval());
-++    memcpy(&skb()->tstamp, &timestamp, 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<unsigned char *>(h);
-++    skb()->mac_header = const_cast<unsigned char *>(h);
-+ #else                                /* User-space and BSD kernel module */
-+     _mac = const_cast<unsigned char *>(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<unsigned char *>(h);
-+-    skb()->nh.raw = const_cast<unsigned char *>(h) + len;
-++    skb()->mac_header = const_cast<unsigned char *>(h);
-++    skb()->network_header = const_cast<unsigned char *>(h) + len;
-+ #else                                /* User-space and BSD kernel module */
-+     _mac = const_cast<unsigned char *>(h);
-+     _nh = const_cast<unsigned char *>(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<unsigned char *>(h);
-+-    skb()->h.raw = const_cast<unsigned char *>(h) + len;
-++    skb()->network_header = const_cast<unsigned char *>(h);
-++    skb()->transport_header = const_cast<unsigned char *>(h) + len;
-+ #else                                /* User-space and BSD kernel module */
-+     _nh = const_cast<unsigned char *>(h);
-+     _h = const_cast<unsigned char *>(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 <linux/autoconf.h>
-+ #if !HAVE_LINUXMODULE_2_6
-+ # include <linux/autoconf.h>
-+ #endif
-+ #include <linux/types.h>
-+ 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|^<h3(.*)</h4|<h3$$1</h3|' click.html
-+      $(PERL) -pi -e 's|^<h3(.*)</h5|<h4$$1</h4|' click.html
-+click.dvi: $(srcdir)/click.texi always
-+      $(TEXI2DVI) $(srcdir)/click.texi
-+
-+testie.1: $(top_srcdir)/test/testie
-+      @-if [ ! -f testie.1 -a -f $(srcdir)/testie.1 ]; then \
-+         echo $(CP_PRESERVE) $(srcdir)/testie.1 testie.1; \
-+         $(CP_PRESERVE) $(srcdir)/testie.1 testie.1; \
-+         $(MAKE) testie.1; \
-+      else \
-+         echo $(POD2MAN) -d '' -c '' $(top_srcdir)/test/testie testie.1; \
-+         $(POD2MAN) -d '' -c '' $(top_srcdir)/test/testie testie.1; \
-+      fi
-+
-+always:
-+      @:
-+
-+clean:
-+      rm -f click.aux click.cp click.cps click.dvi click.fn click.fns click.html click.ky click.kys click.pg click.pgs click.tmp click.toc click.tp click.tps click.vr click.vrs *.log
-+distclean: clean
-+      -rm -f Makefile
-+
-+.PHONY: all clean distclean info always \
-+      install install-man install-info uninstall uninstall-man uninstall-info
-diff -Nurb click-1.6.0/drivers/e1000-4.x/src/e1000.h.orig click-1.6.0-27/drivers/e1000-4.x/src/e1000.h.orig
---- click-1.6.0/drivers/e1000-4.x/src/e1000.h.orig     2007-07-16 19:47:50.000000000 -0400
-+++ click-1.6.0-27/drivers/e1000-4.x/src/e1000.h.orig  1969-12-31 19:00:00.000000000 -0500
-@@ -1,244 +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 <linux.nics@intel.com>
--  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 <linux/stddef.h>
--#include <linux/config.h>
--#include <linux/module.h>
--#include <linux/types.h>
--#include <asm/byteorder.h>
--#include <linux/init.h>
--#include <linux/mm.h>
--#include <linux/errno.h>
--#include <linux/ioport.h>
--#include <linux/pci.h>
--#include <linux/kernel.h>
--#include <linux/netdevice.h>
--#include <linux/etherdevice.h>
--#include <linux/skbuff.h>
--#include <linux/delay.h>
--#include <linux/timer.h>
--#include <linux/slab.h>
--#include <linux/interrupt.h>
--#include <linux/string.h>
--#include <linux/pagemap.h>
--#include <asm/bitops.h>
--#include <asm/io.h>
--#include <asm/irq.h>
--#include <linux/capability.h>
--#include <linux/in.h>
--#include <linux/ip.h>
--#include <linux/tcp.h>
--#include <linux/udp.h>
--#include <net/pkt_sched.h>
--#include <linux/list.h>
--#include <linux/reboot.h>
--#ifdef SIOCETHTOOL
--#include <linux/ethtool.h>
--#endif
--#ifdef NETIF_F_HW_VLAN_TX
--#include <linux/if_vlan.h>
--#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 <linux.nics@intel.com>
--  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 <linux.nics@intel.com>
--  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, <linux.nics@intel.com>");
--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 <linux.nics@intel.com>
--  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 <click/config.h>
-+#include <click/glue.hh>
-+#include "anydevice.hh"
-+#include <click/confparse.hh>
-+#include <click/error.hh>
-+#include <clicknet/ether.h>
-+#include <click/cxxprotect.h>
-+CLICK_CXX_PROTECT
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
-+#include <linux/if_arp.h>
-+#endif
-+#include <linux/smp_lock.h>
-+CLICK_CXX_UNPROTECT
-+#include <click/cxxunprotect.h>
-+
-+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<AnyDevice *> &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 <click/config.h>
-+#include <click/glue.hh>
-+#include "fromdevice.hh"
-+#include <click/error.hh>
-+#include <click/confparse.hh>
-+#include <click/router.hh>
-+#include <click/standard/scheduleinfo.hh>
-+#include <click/straccum.hh>
-+
-+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<String> &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?", &timestamp,
-+                  "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<AnyDevice*> 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<intptr_t>(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 <click/config.h>
-+#include <click/router.hh>
-+#include "fromhost.hh"
-+#include <click/confparse.hh>
-+#include <click/error.hh>
-+#include <click/standard/scheduleinfo.hh>
-+
-+#include <click/cxxprotect.h>
-+CLICK_CXX_PROTECT
-+#include <asm/types.h>
-+#include <asm/uaccess.h>
-+#include <linux/ip.h>
-+#include <linux/inetdevice.h>
-+#include <net/route.h>
-+CLICK_CXX_UNPROTECT
-+#include <click/cxxunprotect.h>
-+
-+#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<String> &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 <linux/autoconf.h>
-+#include <linux/version.h>
- #include <click/config.h>
- #include <click/glue.hh>
- #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 <click/config.h>
-+#include <click/glue.hh>
-+#include "polldevice.hh"
-+#include "todevice.hh"
-+#include <click/error.hh>
-+#include <click/etheraddress.hh>
-+#include <click/confparse.hh>
-+#include <click/router.hh>
-+#include <click/standard/scheduleinfo.hh>
-+
-+#include <click/cxxprotect.h>
-+CLICK_CXX_PROTECT
-+#include <net/pkt_sched.h>
-+#if __i386__
-+#include <asm/msr.h>
-+#endif
-+CLICK_CXX_UNPROTECT
-+#include <click/cxxunprotect.h>
-+
-+/* 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<AnyDevice *> 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<String> &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<AnyDevice *> 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<AnyDevice *> 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 <click/config.h>
-+#include "tohost.hh"
-+#include <click/confparse.hh>
-+#include <click/error.hh>
-+
-+#include <click/cxxprotect.h>
-+CLICK_CXX_PROTECT
-+#include <net/dst.h>
-+#include <linux/smp_lock.h>
-+#include <linux/if_ether.h>
-+#include <linux/etherdevice.h>
-+#include <linux/netdevice.h>
-+#if LINUX_VERSION_CODE >= 0x020400 && LINUX_VERSION_CODE < 0x020600
-+# include <linux/brlock.h>
-+#endif
-+CLICK_CXX_UNPROTECT
-+#include <click/cxxunprotect.h>
-+
-+// 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<String> &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<AnyDevice *> 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<ToHost *>(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 <click/config.h>
-+#include <click/standard/addressinfo.hh>
-+#include <click/nameinfo.hh>
-+#include <click/glue.hh>
-+#include <click/confparse.hh>
-+#include <click/router.hh>
-+#include <click/error.hh>
-+#include <clicknet/ether.h>
-+#if CLICK_NS
-+# include <click/master.hh>
-+#endif
-+#if CLICK_USERLEVEL
-+# include <unistd.h>
-+#endif
-+#if CLICK_USERLEVEL && defined(__linux__)
-+# include <net/if.h>
-+# include <sys/ioctl.h>
-+# include <net/if_arp.h>
-+# include <click/userutils.hh>
-+# include <time.h>
-+#elif CLICK_USERLEVEL && (defined(__APPLE__) || defined(__FreeBSD__))
-+# include <sys/sysctl.h>
-+# include <net/if.h>
-+# include <net/if_dl.h>
-+# include <net/if_types.h>
-+# include <net/route.h>
-+#endif
-+#if CLICK_LINUXMODULE
-+# include <click/cxxprotect.h>
-+CLICK_CXX_PROTECT
-+# include <linux/netdevice.h>
-+# include <linux/rtnetlink.h>
-+# include <linux/if_arp.h>
-+# include <linux/inetdevice.h>
-+CLICK_CXX_UNPROTECT
-+# include <click/cxxunprotect.h>
-+#endif
-+CLICK_DECLS
-+
-+AddressInfo::AddressInfo()
-+{
-+}
-+
-+AddressInfo::~AddressInfo()
-+{
-+}
-+
-+int
-+AddressInfo::configure(Vector<String> &conf, ErrorHandler *errh)
-+{
-+    int before = errh->nerrors();
-+  
-+    for (int i = 0; i < conf.size(); i++) {
-+      Vector<String> 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<String> device_names;
-+    static Vector<String> 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
-+                  // <jvasco@bellatlantic.net>
-+                  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<struct if_msghdr*>(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<struct sockaddr_dl*>(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<struct if_msghdr*>(pos);
-+              if (nextifm->ifm_type != RTM_NEWADDR)
-+                  break;
-+              
-+              struct ifa_msghdr* ifam = reinterpret_cast<struct ifa_msghdr*>(nextifm);
-+              char* sa_buf = reinterpret_cast<char*>(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<struct sockaddr*>(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(<click/standard/addressinfo.hh>)
-+
-+// template instance
-+#include <click/vector.cc>
-+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 <sys/types.h>
-+
-+/* 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 <asm/alternative.h> 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/cxxprotect.h>
-+CLICK_CXX_PROTECT
-+#include <linux/autoconf.h>
-+#include <linux/types.h>
-+CLICK_CXX_UNPROTECT
-+#include <click/cxxunprotect.h>
-+
-+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/cxxprotect.h>
-+CLICK_CXX_PROTECT
-+#include <click/fixconfig.h>
-+CLICK_CXX_UNPROTECT
-+#include <click/cxxunprotect.h>
-+
-+
-+#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 <asm/alternative.h> 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 <linux/autoconf.h>
-+#endif
-+#include <linux/types.h>
-+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 <click/fixconfig.h>
-+
-+#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 <click/config-userlevel.h>
-+
-+#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 <pcap.h> uses bpf_timeval. */
-+/* #undef HAVE_BPF_TIMEVAL */
-+
-+/* Define if you have the <byteswap.h> 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 <dlfcn.h> 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 <grp.h> 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 <inttypes.h> 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 <linux/if_tun.h> 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 <net/bpf.h> header file. */
-+/* #undef HAVE_NET_BPF_H */
-+
-+/* Define if you have the <net/if_tap.h> header file. */
-+/* #undef HAVE_NET_IF_TAP_H */
-+
-+/* Define if you have the <net/if_tun.h> header file. */
-+/* #undef HAVE_NET_IF_TUN_H */
-+
-+/* Define if you have the <netdb.h> header file. */
-+#define HAVE_NETDB_H 1
-+
-+/* Define if <new.h> exists and works. */
-+/* #undef HAVE_NEW_H */
-+
-+/* Define if <new> 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 <poll.h> header file. */
-+#define HAVE_POLL_H 1
-+
-+/* Placement new is always provided below. */
-+#define HAVE_PLACEMENT_NEW 1
-+
-+/* Define if you have the <pwd.h> 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 <strings.h> header file. */
-+#define HAVE_STRINGS_H 1
-+
-+/* Define if you have the strtoul function. */
-+#define HAVE_STRTOUL 1
-+
-+/* Define if you have the <sys/event.h> header file. */
-+/* #undef HAVE_SYS_EVENT_H */
-+
-+/* Define if you have the <sys/mman.h> header file. */
-+#define HAVE_SYS_MMAN_H 1
-+
-+/* Define if you have the tcgetpgrp function. */
-+#define HAVE_TCGETPGRP 1
-+
-+/* Define if you have the <termio.h> 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 <unistd.h> 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 <inttypes.h>
-+#endif
-+#include <sys/types.h>
-+
-+/* 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 <assert.h>
-+
-+/* 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 <new>
-+#elif HAVE_NEW_H
-+# include <new.h>
-+#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 <click/config-linuxmodule.h>
-+#endif
-+
-+/* Define stuff under a FreeBSD module. */
-+#ifdef CLICK_BSDMODULE
-+# include <click/config-bsdmodule.h>
-+#endif
-+
-+/* Define stuff under nsclick. */
-+#ifdef CLICK_NS
-+# include <click/config-ns.h>
-+#endif
-+
-+/* Define stuff under tools or a user-level driver. */
-+#if defined(CLICK_USERLEVEL) || defined(CLICK_TOOL)
-+# include <click/config-userlevel.h>
-+#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 <header>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/cxxprotect.h>
-+CLICK_CXX_PROTECT
-+# ifdef WANT_MOD_USE_COUNT
-+#  define __NO_VERSION__
-+#  include <linux/module.h>
-+#  define HAVE_MOD_USE_COUNT 1
-+# endif
-+# include <linux/kernel.h>
-+# include <linux/version.h>
-+# include <linux/string.h>
-+# include <linux/skbuff.h>
-+# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
-+#  include <linux/malloc.h>
-+#  include <linux/vmalloc.h>
-+#  include <linux/interrupt.h>
-+# else
-+#  include <linux/hardirq.h>
-+# endif
-+# include <linux/ctype.h>
-+# include <linux/time.h>
-+# include <linux/errno.h>
-+CLICK_CXX_UNPROTECT
-+# include <click/cxxunprotect.h>
-+
-+#elif CLICK_BSDMODULE
-+
-+# include <click/cxxprotect.h>
-+CLICK_CXX_PROTECT
-+# include <sys/ctype.h>
-+# include <sys/systm.h>
-+# include <sys/time.h>
-+# include <sys/param.h>
-+# include <sys/kernel.h>
-+# include <sys/mbuf.h>
-+# include <sys/malloc.h>
-+# include <sys/libkern.h>
-+# include <sys/proc.h>
-+# include <sys/sysproto.h>
-+CLICK_CXX_UNPROTECT
-+# include <click/cxxunprotect.h>
-+
-+#else /* CLICK_USERLEVEL */
-+
-+# include <stdio.h>
-+# include <stdlib.h>
-+# include <string.h>
-+# include <ctype.h>
-+# include <errno.h>
-+# include <limits.h>
-+# include <sys/socket.h>
-+# include <netinet/in.h>
-+# include <sys/time.h>
-+# 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<const unsigned char *>(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 <machine/byte_order.h>
-+# 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 <byteswap.h>
-+# 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, &timestamp, 8);
- # else
--    skb_set_timestamp(skb(), &timestamp.timeval());
-+    memcpy(&skb()->tstamp, &timestamp, 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<unsigned char *>(h);
-+    skb()->mac_header = const_cast<unsigned char *>(h);
- #else                         /* User-space and BSD kernel module */
-     _mac = const_cast<unsigned char *>(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<unsigned char *>(h);
--    skb()->nh.raw = const_cast<unsigned char *>(h) + len;
-+    skb()->mac_header = const_cast<unsigned char *>(h);
-+    skb()->network_header = const_cast<unsigned char *>(h) + len;
- #else                         /* User-space and BSD kernel module */
-     _mac = const_cast<unsigned char *>(h);
-     _nh = const_cast<unsigned char *>(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<unsigned char *>(h);
--    skb()->h.raw = const_cast<unsigned char *>(h) + len;
-+    skb()->network_header = const_cast<unsigned char *>(h);
-+    skb()->transport_header = const_cast<unsigned char *>(h) + len;
- #else                         /* User-space and BSD kernel module */
-     _nh = const_cast<unsigned char *>(h);
-     _h = const_cast<unsigned char *>(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 <click/ipaddress.hh>
-+#include <click/ip6address.hh>
-+#include <click/glue.hh>
-+#include <click/timestamp.hh>
-+#if CLICK_LINUXMODULE
-+# include <click/skbmgr.hh>
-+#else
-+# include <click/atomic.hh>
-+#endif
-+struct click_ether;
-+struct click_ip;
-+struct click_icmp;
-+struct click_ip6;
-+struct click_tcp;
-+struct click_udp;
-+
-+#if CLICK_NS
-+# include <click/simclick.h>
-+#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 &timestamp_anno() const;
-+    inline Timestamp &timestamp_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<const click_ether *>(mac_header());
-+}
-+
-+inline const click_ip *
-+Packet::ip_header() const
-+{
-+    return reinterpret_cast<const click_ip *>(network_header());
-+}
-+
-+inline const click_ip6 *
-+Packet::ip6_header() const
-+{
-+    return reinterpret_cast<const click_ip6 *>(network_header());
-+}
-+
-+inline const click_icmp *
-+Packet::icmp_header() const
-+{
-+    return reinterpret_cast<const click_icmp *>(transport_header());
-+}
-+
-+inline const click_tcp *
-+Packet::tcp_header() const
-+{
-+    return reinterpret_cast<const click_tcp *>(transport_header());
-+}
-+
-+inline const click_udp *
-+Packet::udp_header() const
-+{
-+    return reinterpret_cast<const click_udp *>(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 &timestamp)
-+{
-+#if CLICK_LINUXMODULE
-+# if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 13)
-+    memcpy(&skb()->stamp, &timestamp, 8);
-+# else
-+    skb_set_timestamp(skb(), &timestamp.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<Packet *>(skb);
-+  } else {
-+    Packet *p = reinterpret_cast<Packet *>(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<struct sk_buff *>(skb()));
-+#else
-+    return (_data_packet || _use_count > 1);
-+#endif
-+}
-+
-+inline WritablePacket *
-+Packet::uniqueify()
-+{
-+  if (!shared())
-+    return static_cast<WritablePacket *>(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<unsigned char *>(d);
-+    _tail = _end = const_cast<unsigned char *>(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<const IP6Address *>(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<unsigned char *>(h);
-+#else                         /* User-space and BSD kernel module */
-+    _mac = const_cast<unsigned char *>(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<unsigned char *>(h);
-+    skb()->nh.raw = const_cast<unsigned char *>(h) + len;
-+#else                         /* User-space and BSD kernel module */
-+    _mac = const_cast<unsigned char *>(h);
-+    _nh = const_cast<unsigned char *>(h) + len;
-+#endif
-+}
-+
-+inline void
-+Packet::set_ether_header(const click_ether *h)
-+{
-+    set_mac_header(reinterpret_cast<const unsigned char *>(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<unsigned char *>(h);
-+    skb()->h.raw = const_cast<unsigned char *>(h) + len;
-+#else                         /* User-space and BSD kernel module */
-+    _nh = const_cast<unsigned char *>(h);
-+    _h = const_cast<unsigned char *>(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<const unsigned char *>(iph), len);
-+}
-+
-+inline void
-+Packet::set_ip6_header(const click_ip6 *ip6h, uint32_t len)
-+{
-+    set_network_header(reinterpret_cast<const unsigned char *>(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<unsigned char *>(Packet::data());
-+}
-+
-+inline unsigned char *
-+WritablePacket::end_data() const
-+{
-+    return const_cast<unsigned char *>(Packet::end_data());
-+}
-+
-+inline unsigned char *
-+WritablePacket::buffer() const
-+{
-+    return const_cast<unsigned char *>(Packet::buffer());
-+}
-+
-+inline unsigned char *
-+WritablePacket::end_buffer() const
-+{
-+    return const_cast<unsigned char *>(Packet::end_buffer());
-+}
-+
-+inline unsigned char *
-+WritablePacket::buffer_data() const
-+{
-+    return const_cast<unsigned char *>(Packet::buffer());
-+}
-+
-+inline unsigned char *
-+WritablePacket::mac_header() const
-+{
-+    return const_cast<unsigned char *>(Packet::mac_header());
-+}
-+
-+inline unsigned char *
-+WritablePacket::network_header() const
-+{
-+    return const_cast<unsigned char *>(Packet::network_header());
-+}
-+
-+inline unsigned char *
-+WritablePacket::transport_header() const
-+{
-+    return const_cast<unsigned char *>(Packet::transport_header());
-+}
-+
-+inline click_ether *
-+WritablePacket::ether_header() const
-+{
-+    return const_cast<click_ether *>(Packet::ether_header());
-+}
-+
-+inline click_ip *
-+WritablePacket::ip_header() const
-+{
-+    return const_cast<click_ip *>(Packet::ip_header());
-+}
-+
-+inline click_ip6 *
-+WritablePacket::ip6_header() const
-+{
-+    return const_cast<click_ip6 *>(Packet::ip6_header());
-+}
-+
-+inline click_icmp *
-+WritablePacket::icmp_header() const
-+{
-+    return const_cast<click_icmp *>(Packet::icmp_header());
-+}
-+
-+inline click_tcp *
-+WritablePacket::tcp_header() const
-+{
-+    return const_cast<click_tcp *>(Packet::tcp_header());
-+}
-+
-+inline click_udp *
-+WritablePacket::udp_header() const
-+{
-+    return const_cast<click_udp *>(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/cxxprotect.h>
- CLICK_CXX_PROTECT
- #if CLICK_LINUXMODULE
-+#include <linux/autoconf.h>
- # include <net/checksum.h>
- # include <linux/in.h>
- #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/cxxprotect.h>
-+CLICK_CXX_PROTECT
-+#if CLICK_LINUXMODULE
-+# include <net/checksum.h>
-+# include <linux/in.h>
-+#else
-+# include <sys/types.h>
-+# include <netinet/in.h>
-+#endif
-+
-+/*
-+ * <clicknet/ip.h> -- 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 <click/cxxunprotect.h>
-+#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 "^<elementmap \|^<entry " <"$elementmap" | $awk '/ name="([^"]*)"/ {
-+  sub(/.* name="/, "", $0);
-+  sub(/".*/, "", $0);
-+  prov[$0] = 1;
-+}
-+/ provides="([^"]*)"/ {
-+  sub(/.* provides="/, "", $0);
-+  sub(/".*/, "", $0);
-+  split($0, d, / +/);
-+  for (j in d) prov[d[j]] = 1;
-+}
-+END {
-+  # delete references to drivers
-+  delete prov["userlevel"]; delete prov["linuxmodule"]; 
-+  delete prov["bsdmodule"]; delete prov["ns"];
-+  for (j in prov) print j;
-+}'
-+}
-+
-+findelem () {
-+    pfx=
-+    all=
-+    provisions=
-+    filenames=
-+    standards=
-+    unprovisions='false 0'
-+    while [ x"$1" != x ]; do
-+    case $1 in
-+    -S|--s|--st|--sta|--stan|--stand|--standa|--standar|--standard|--standards)
-+      standards=1; shift 1;;
-+    -p|--pre|--pref|--prefi|--prefix)
-+      if test $# -lt 2; then findelem_usage; fi
-+      shift 1; pfx="$1/"; shift 1;;
-+    -p*)
-+      pfx="`echo "$1" | sed 's/^-p//'`"/; shift 1;;
-+    --pre=*|--pref=*|--prefi=*|--prefix=*)
-+      pfx="`echo "$1" | sed 's/^[^=]*=//'`"/; shift 1;;
-+    -f|--filenames)
-+      filenames=f; shift 1;;
-+    -F|--filename-|--filename-p|--filename-pa|--filename-pai|--filename-pair|--filename-pairs)
-+      filenames=F; shift 1;;
-+    -V|--verb|--verbo|--verbos|--verbose)
-+      verbose=1; shift 1;;
-+    -a|--a|--al|--all)
-+      all=1; shift 1;;
-+    -r|--pro|--prov|--provi|--provid|--provide)
-+      if test $# -lt 2; then findelem_usage; fi
-+      shift 1; provisions="$1
-+$provisions"; shift 1;;
-+    -r*)
-+      provisions="`echo "$1" | sed 's/^-r//'`
-+$provisions"; shift 1;;
-+    --pro=*|--prov=*|--provi=*|--provid=*|--provide=*)
-+      provisions="`echo "$1" | sed 's/^[^=]*=//'`
-+$provisions"; shift 1;;
-+    -x|--u|--un|--unp|--unpr|--unpro|--unprov|--unprovi|--unprovid|--unprovide)
-+      if test $# -lt 2; then findelem_usage; fi
-+      shift 1; unprovisions="$1
-+$unprovisions"; shift 1;;
-+    -x*)
-+      unprovisions="`echo "$1" | sed 's/^-x//'`
-+$unprovisions"; shift 1;;
-+    --u=*|--un=*|--unp=*|--unpr=*|--unpro=*|--unprov=*|--unprovi=*|--unprovid=*|--unprovide=*)
-+      unprovisions="`echo "$1" | sed 's/^[^=]*=//'`
-+$unprovisions"; shift 1;;
-+    -e|--e|--el|--ele|--elem|--eleme|--elemen|--element|--elementm|--elementma|--elementmap)
-+      if test $# -lt 2; then findelem_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;;
-+    -P|--pa|--pac|--pack|--packa|--packag|--package)
-+      provisions="`elementmap_provisions "${clickdatadir}/elementmap.xml"`
-+$provisions"; shift 1;;
-+    -h|--h|--he|--hel|--help)
-+      cat <<'EOF' 1>&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 <click@pdos.lcs.mit.edu>.
-+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 <click@pdos.lcs.mit.edu>.
-+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 <click@pdos.lcs.mit.edu>.
-+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 <click/config.h>\n#include <click/package.hh>\n#include <click/glue.hh>";
-+  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 <click/config.h>\n#include <click/package.hh>";
-+  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 <<EOF >/tmp/click-buildtool-standards.$$
-+-     <click/standard/addressinfo.hh> AddressInfo-AddressInfo
-+-     <click/standard/alignmentinfo.hh>       AlignmentInfo-AlignmentInfo
-+-     <click/standard/errorelement.hh>        ErrorElement-ErrorElement
-+-     <click/standard/portinfo.hh>    PortInfo-PortInfo
-+-     <click/standard/scheduleinfo.hh>        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 <click@pdos.lcs.mit.edu>.
-+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 <click@pdos.lcs.mit.edu>.
-+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 <click@pdos.lcs.mit.edu>.
-+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 <click@pdos.lcs.mit.edu>.
-+EOF
-+      exit 0;;
-+    *)
-+      kversion_usage;;
-+    esac
-+    done
-+
-+    cat <<EOF
-+#include <click/config.h>
-+#include <linux/version.h>
-+#include <linux/module.h>
-+
-+/* a new version of EXPORT_NO_SYMBOLS that works */
-+const int __ksymtab_nothing[0] __attribute__((section("__ksymtab"))) = { };
-+EOF
-+    test $gpl = 1 && cat <<EOF
-+
-+#ifdef MODULE_LICENSE
-+MODULE_LICENSE("Dual BSD/GPL");
-+#endif
-+EOF
-+}
-+
-+
-+
-+##########
-+# KBUILD #
-+##########
-+
-+kbuild_usage () {
-+    echo_n "Usage: click-buildtool kbuild > 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 <click@pdos.lcs.mit.edu>.
-+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 <click@pdos.lcs.mit.edu>.
-+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 <click@pdos.lcs.mit.edu>.
-+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 <click/config.h>"
-+    echo "#include <linux/version.h>"
-+    echo "#include <linux/module.h>"
-+    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 <click@pdos.lcs.mit.edu>.
-+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 <click@pdos.lcs.mit.edu>.
-+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 <<EOF
-+#include <click/config.h>
-+#include <linux/module.h>
-+/* 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 <<EOF
-+#ifdef MODULE_LICENSE
-+MODULE_LICENSE("Dual BSD/GPL");
-+#endif
-+EOF
-+      fi
-+      c_command_nowarn=`echo $c_command | sed 's/-W[-a-z]*//g'`
-+      exec_command $c_command_nowarn $vfile.c
-+      exec_command "ld -r -o $package $cflags $files"
-+      exit 0
-+    elif test $driver = userlevel -o $driver = tool -o $driver = ns; then
-+      exec_command "${CXX-g++ -W -Wall } ${CXXFLAGS-$icxxflags} -shared -o $package $cflags $files"
-+      exit 0
-+    elif test $driver = bsdmodule; then
-+      exec_command "ld -Bshareable -o $package $cflags $files"
-+      exit 0
-+    fi
-+else
-+    exec_command "$command $@"
-+    exit 0
-+fi
-Files click-1.6.0/inst/bin/click-devirtualize and click-1.6.0-27/inst/bin/click-devirtualize differ
-diff -Nurb click-1.6.0/inst/bin/click-elem2man click-1.6.0-27/inst/bin/click-elem2man
---- click-1.6.0/inst/bin/click-elem2man        1969-12-31 19:00:00.000000000 -0500
-+++ click-1.6.0-27/inst/bin/click-elem2man     2009-02-11 14:08:52.000000000 -0500
-@@ -0,0 +1,1484 @@
-+#! /usr/bin/perl -w
-+
-+# click-elem2man -- creates man pages from structured comments in element
-+# source code
-+# Eddie Kohler
-+# Robert Morris - original make-faction-html script
-+#
-+# Copyright (c) 1999-2001 Massachusetts Institute of Technology
-+# Copyright (c) 2001-2003 International Computer Science Institute
-+# 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.
-+
-+my($verbose) = 0;
-+
-+# information stored about each Click element, indexed by C++ class name
-+my(%processing, %deprecated, %portcount, %docrequires, %requires, $PREFIX);
-+
-+my(%section_break) =
-+    ( 'head1' => 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<gt>";
-+      }
-+      $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]</) {
-+    
-+      # can't do C font here
-+      $t =~ s/([BI])<($nonest)>/"\\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<show this text|man/section>
-+      $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]</) {
-+    
-+      # can't do C font here
-+      $t =~ s/B<($nonest)>/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<show this text|man/section>
-+      $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 = <IN>;
-+      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/&lt;/</g;
-+      $x =~ s/&gt;/>/g;
-+      $x =~ s/&amp;/&/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 !/^<entry\b/;
-+      my($n) = (/\bname="(.*?)"/);
-+      my($dn) = (/\bdocname="(.*?)"/);
-+      my($p) = (/\bprocessing="(.*?)"/);
-+      my($hf) = (/\bheaderfile="(.*?)"/);
-+      my($pc) = (/\bportcount="(.*?)"/);
-+      my($req) = (/\brequires="(.*?)"/);
-+      if (defined($n) || defined($dn)) {
-+          $dn = xmlunquote(defined($dn) ? $dn : $n);
-+          $processing{$dn} = xmlunquote($p) if defined($p);
-+          $portcount{$dn} = xmlunquote($pc) if defined($pc);
-+          $req = defined($req) ? xmlunquote($req) : undef;
-+          $docrequires{$dn} = $req if defined($req);
-+
-+          $n = $1 if defined($req) && !defined($n) && /\bprovides="(.*?)"/;
-+          if (defined($n) && defined($req)) {
-+              $n = xmlunquote($n);
-+              $requires{$n} = [] if !defined $requires{$n};
-+              push @{$requires{$n}}, $req;
-+          }
-+          
-+          $headerhash->{xmlunquote($hf)} = 1 if defined($hf);
-+      }
-+    }
-+}
-+
-+sub read_elementmap ($;$) {
-+    my($fn, $headerhash) = @_;
-+    open(E, $fn) || die "$fn: $!\n";
-+    local($/) = undef;
-+    read_elementmap_text(<E>, $headerhash);
-+    close E;
-+}
-+
-+sub process_file_set ($$) {
-+    my($fn, $fnhash) = @_;
-+    if (open(IN, ($fn eq '-' ? "<&STDIN" : $fn))) {
-+      my(@a, @b, $t, $x);
-+      $t = <IN>;
-+      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 <click\@pdos.lcs.mit.edu>.
-+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 (<IN>) {
-+      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{ }{&nbsp;}g;
-+    if (@elts) {
-+      push @Links, "<a href=\"#$a\">$x</a>";
-+      $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("&nbsp;- ", @Links);
-+    print OUT <<"EOD;";
-+.\\"html <p><a href="#BY+FUNCTION"><b>By Function</b></a>:
-+.\\"html $links<br>
-+.\\"html <a href="#ALPHABETICAL+LIST"><b>Alphabetical List</b></a></p>
-+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 = <IN>;
-+      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 = <IN>;
-+    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/&/&amp;/g;
-+    $x =~ s/</&lt;/g;
-+    $x;
-+}
-+
-+# main program: parse options
-+sub read_files_from ($) {
-+    my($fn) = @_;
-+    if (open(IN, ($fn eq '-' ? "<&STDIN" : $fn))) {
-+      my(@a, @b, $t);
-+      $t = <IN>;
-+      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 <click\@pdos.lcs.mit.edu>.
-+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 "<?xml version=\"1.0\" standalone=\"yes\"?>
-+<?xml-stylesheet type=\"application/xml\" href=\"http://www.lcdf.org/click/xml/elementmap.xsl\"?>\n";
-+print OUT "<?xml-stylesheet type=\"application/xml\" href=\"file://$sourcedir/etc/elementmap.xsl\"?>\n" if defined($sourcedir) && $sourcedir =~ m|^/|;
-+print OUT "<elementmap xmlns=\"http://www.lcdf.org/click/xml/\"";
-+print OUT " sourcedir=\"$sourcedir\"" if defined($sourcedir);
-+print OUT " src=\"file://$sourcedir\"" if defined($sourcedir) && $sourcedir =~ m|^/|;
-+print OUT " provides=\"", join(' ', @provides), "\"";
-+print OUT " drivers=\"", join(' ', @drivers), "\"" if @drivers;
-+print OUT " dochref=\"$dochref\"" if defined($dochref);
-+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 "<entry";
-+
-+    print OUT " name=\"", $click_name[$id], "\"" if $click_name[$id];
-+    print OUT " cxxclass=\"", $cxx_name[$id], "\"" if $cxx_name[$id];
-+    print OUT " docname=\"", $doc_name[$id], "\"" if $doc_name[$id];
-+  
-+    my($hf) = $header_file[$id];
-+    $hf =~ s/^$prefix\/*// if $prefix;
-+    print OUT " headerfile=\"", xml_quote($hf), "\"" if $hf;
-+
-+    my($sf) = $source_file[$id];
-+    $sf =~ s/^$prefix\/*// if $prefix;
-+    print OUT " sourcefile=\"", xml_quote($sf), "\"" if $sf;
-+
-+    my($pc) = $port_count[$id];
-+    $pc = parents_port_count($id) if !$pc;
-+    print OUT " portcount=\"", $pc, "\"" if $pc;
-+
-+    my($p) = $processing[$id];
-+    $p = parents_processing($id) if !$p;
-+    print OUT " processing=\"", $p, "\"" if $p;
-+
-+    my($flow) = $flow_code[$id];
-+    $flow = parents_flow_code($id) if !$flow;
-+    print OUT " flowcode=\"", $flow, "\"" if $flow;
-+
-+    my($flags) = $flags[$id];
-+    $flags = parents_flags($id) if !defined($flags);
-+    print OUT " flags=\"", $flags, "\"" if defined($flags);
-+
-+    print OUT " methods=\"", $element_methods[$id], "\"" if $element_methods[$id];
-+  
-+    print OUT " requires=\"", $requirements[$id], "\"" if $requirements[$id];
-+    print OUT " provides=\"", $provisions[$id], "\"" if $provisions[$id];
-+    print OUT " libs=\"", xml_quote($element_libs[$id]), "\"" if $element_libs[$id];
-+
-+    print OUT " />\n";
-+}
-+
-+print OUT "</elementmap>\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 = <ERR>) {
-+      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 = "<end of file>" if $wanted eq "\376";
-+    $wanted =~ s/\r?\n?\Z//;
-+    $got = "<end of file>" 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) = <IN>;
-+    $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));
-+          $_ = <X>;
-+          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 "<stdin>: $!\n";
-+          return -1;
-+      }
-+      $display_fn = "<stdin>";
-+    } 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 <kohler@icir.org>.
-+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<VARIABLE>=I<VALUE>
-+
-+Provide a setting for I<VARIABLE>. Occurrences in the script of
-+'C<$VARIABLE>' or 'C<${VARIABLE}>' will be replaced by I<VALUE>. 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</tmp>; 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, <kohler@cs.ucla.edu>
-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 <class T>
-+inline T *
-+find(T *begin, T *end, const T &val)
-+{
-+    while (begin < end && *begin != val)
-+      begin++;
-+    return begin;
-+}
-+
-+template <class T>
-+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 <click/string.hh>
-+#include <click/vector.hh>
-+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<ArchiveElement> &,
-+                     ErrorHandler * = 0);
-+String create_ar_string(const Vector<ArchiveElement> &, 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 <click/glue.hh>
-+#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 <click/atomic.hh>
-+ * @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 <click/bighashmap.hh>
-+#include <click/bighashmap_arena.hh>
-+CLICK_DECLS
-+
-+#define BIGHASHMAP_REARRANGE_ON_FIND 1
-+
-+template <class K, class V>
-+void
-+HashMap<K, V>::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 <class K, class V>
-+HashMap<K, V>::HashMap()
-+  : _default_value(), _arena(0)
-+{
-+  initialize(0, DEFAULT_INITIAL_NBUCKETS);
-+}
-+
-+template <class K, class V>
-+HashMap<K, V>::HashMap(const V &def, HashMap_ArenaFactory *factory)
-+  : _default_value(def), _arena(0)
-+{
-+  initialize(factory, DEFAULT_INITIAL_NBUCKETS);
-+}
-+
-+template <class K, class V>
-+void
-+HashMap<K, V>::copy_from(const HashMap<K, V> &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<Elt *>(_arena->alloc());
-+      new(reinterpret_cast<void *>(&ee->key)) K(e->key);
-+      new(reinterpret_cast<void *>(&ee->value)) V(e->value);
-+      ee->next = 0;
-+      *pprev = ee;
-+      pprev = &ee->next;
-+    }
-+  }
-+  _n = o._n;
-+}
-+
-+template <class K, class V>
-+HashMap<K, V>::HashMap(const HashMap<K, V> &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 <class K, class V>
-+HashMap<K, V> &
-+HashMap<K, V>::operator=(const HashMap<K, V> &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 <class K, class V>
-+HashMap<K, V>::~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 <class K, class V>
-+void
-+HashMap<K, V>::set_dynamic_resizing(bool on)
-+{
-+  if (!on)
-+    _capacity = 0x7FFFFFFF;
-+  else if (_nbuckets >= MAX_NBUCKETS)
-+    _capacity = 0x7FFFFFFE;
-+  else
-+    _capacity = DEFAULT_RESIZE_THRESHOLD * _nbuckets;
-+}
-+
-+template <class K, class V>
-+void
-+HashMap<K, V>::set_arena(HashMap_ArenaFactory *factory)
-+{
-+  assert(empty());
-+  if (_arena)
-+    _arena->unuse();
-+  _arena = HashMap_ArenaFactory::get_arena(sizeof(Elt), factory);
-+  _arena->use();
-+}
-+
-+template <class K, class V>
-+inline size_t
-+HashMap<K, V>::bucket(const K &key) const
-+{
-+  return ((size_t) hashcode(key)) % _nbuckets;
-+}
-+
-+template <class K, class V>
-+typename HashMap<K, V>::Pair *
-+HashMap<K, V>::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 <class K, class V>
-+void
-+HashMap<K, V>::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 <class K, class V>
-+void
-+HashMap<K, V>::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 <class K, class V>
-+bool
-+HashMap<K, V>::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<Elt *>(_arena->alloc())) {
-+    new(reinterpret_cast<void *>(&e->key)) K(key);
-+    new(reinterpret_cast<void *>(&e->value)) V(value);
-+    e->next = _buckets[b];
-+    _buckets[b] = e;
-+    _n++;
-+  }
-+  return true;
-+}
-+
-+template <class K, class V>
-+bool
-+HashMap<K, V>::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 <class K, class V>
-+typename HashMap<K, V>::Pair *
-+HashMap<K, V>::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<Elt *>(_arena->alloc())) {
-+    new(reinterpret_cast<void *>(&e->key)) K(key);
-+    new(reinterpret_cast<void *>(&e->value)) V(default_value);
-+    e->next = _buckets[b];
-+    _buckets[b] = e;
-+    _n++;
-+    return e;
-+  } else
-+    return 0;
-+}
-+
-+template <class K, class V>
-+void
-+HashMap<K, V>::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 <class K, class V>
-+void
-+HashMap<K, V>::swap(HashMap<K, V> &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 <class K, class V>
-+_HashMap_const_iterator<K, V>::_HashMap_const_iterator(const HashMap<K, V> *hm, bool begin)
-+  : _hm(hm)
-+{
-+  size_t nb = _hm->_nbuckets;
-+  typename HashMap<K, V>::Elt **b = _hm->_buckets;
-+  for (_bucket = 0; _bucket < nb && begin; _bucket++)
-+    if (b[_bucket]) {
-+      _elt = b[_bucket];
-+      return;
-+    }
-+  _elt = 0;
-+}
-+
-+template <class K, class V>
-+void
-+_HashMap_const_iterator<K, V>::operator++(int)
-+{
-+  if (_elt->next)
-+    _elt = _elt->next;
-+  else {
-+    size_t nb = _hm->_nbuckets;
-+    typename HashMap<K, V>::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 <class K>
-+void
-+HashMap<K, void *>::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 <class K>
-+HashMap<K, void *>::HashMap()
-+  : _default_value(0), _arena(0)
-+{
-+  initialize(0, DEFAULT_INITIAL_NBUCKETS);
-+}
-+
-+template <class K>
-+HashMap<K, void *>::HashMap(void *def, HashMap_ArenaFactory *factory)
-+  : _default_value(def), _arena(0)
-+{
-+  initialize(factory, DEFAULT_INITIAL_NBUCKETS);
-+}
-+
-+template <class K>
-+void
-+HashMap<K, void *>::copy_from(const HashMap<K, void *> &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<Elt *>(_arena->alloc());
-+      new(reinterpret_cast<void *>(&ee->key)) K(e->key);
-+      ee->value = e->value;
-+      ee->next = 0;
-+      *pprev = ee;
-+      pprev = &ee->next;
-+    }
-+  }
-+  _n = o._n;
-+}
-+
-+template <class K>
-+HashMap<K, void *>::HashMap(const HashMap<K, void *> &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 <class K>
-+HashMap<K, void *> &
-+HashMap<K, void *>::operator=(const HashMap<K, void *> &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 <class K>
-+HashMap<K, void *>::~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 <class K>
-+void
-+HashMap<K, void *>::set_dynamic_resizing(bool on)
-+{
-+  if (!on)
-+    _capacity = 0x7FFFFFFF;
-+  else if (_nbuckets >= MAX_NBUCKETS)
-+    _capacity = 0x7FFFFFFE;
-+  else
-+    _capacity = DEFAULT_RESIZE_THRESHOLD * _nbuckets;
-+}
-+
-+template <class K>
-+void
-+HashMap<K, void *>::set_arena(HashMap_ArenaFactory *factory)
-+{
-+  assert(empty());
-+  if (_arena)
-+    _arena->unuse();
-+  _arena = HashMap_ArenaFactory::get_arena(sizeof(Elt), factory);
-+  _arena->use();
-+}
-+
-+template <class K>
-+inline size_t
-+HashMap<K, void *>::bucket(const K &key) const
-+{
-+  return ((size_t) hashcode(key)) % _nbuckets;
-+}
-+
-+template <class K>
-+typename HashMap<K, void *>::Pair *
-+HashMap<K, void *>::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 <class K>
-+void
-+HashMap<K, void *>::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 <class K>
-+void
-+HashMap<K, void *>::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 <class K>
-+bool
-+HashMap<K, void *>::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<Elt *>(_arena->alloc())) {
-+    new(reinterpret_cast<void *>(&e->key)) K(key);
-+    e->value = value;
-+    e->next = _buckets[b];
-+    _buckets[b] = e;
-+    _n++;
-+  }
-+  return true;
-+}
-+
-+template <class K>
-+bool
-+HashMap<K, void *>::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 <class K>
-+typename HashMap<K, void *>::Pair *
-+HashMap<K, void *>::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<Elt *>(_arena->alloc())) {
-+    new(reinterpret_cast<void *>(&e->key)) K(key);
-+    e->value = default_value;
-+    e->next = _buckets[b];
-+    _buckets[b] = e;
-+    _n++;
-+    return e;
-+  } else
-+    return 0;
-+}
-+
-+template <class K>
-+void
-+HashMap<K, void *>::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 <class K>
-+void
-+HashMap<K, void *>::swap(HashMap<K, void *> &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 <class K>
-+_HashMap_const_iterator<K, void *>::_HashMap_const_iterator(const HashMap<K, void *> *hm, bool begin)
-+  : _hm(hm)
-+{
-+  size_t nb = _hm->_nbuckets;
-+  typename HashMap<K, void *>::Elt **b = _hm->_buckets;
-+  for (_bucket = 0; _bucket < nb && begin; _bucket++)
-+    if (b[_bucket]) {
-+      _elt = b[_bucket];
-+      return;
-+    }
-+  _elt = 0;
-+}
-+
-+template <class K>
-+void
-+_HashMap_const_iterator<K, void *>::operator++(int)
-+{
-+  if (_elt->next)
-+    _elt = _elt->next;
-+  else {
-+    size_t nb = _hm->_nbuckets;
-+    typename HashMap<K, void *>::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/hashcode.hh>
-+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 K, class V> class _HashMap_const_iterator;
-+template <class K, class V> class _HashMap_iterator;
-+
-+template <class K, class V>
-+class HashMap { public:
-+
-+  struct Pair;
-+  
-+  HashMap();
-+  explicit HashMap(const V &, HashMap_ArenaFactory * = 0);
-+  HashMap(const HashMap<K, V> &);
-+  ~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<K, V> &);
-+
-+  // iteration
-+  typedef _HashMap_const_iterator<K, V> const_iterator;
-+  typedef _HashMap_iterator<K, V> 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<K, V> &operator=(const HashMap<K, V> &);
-+
-+  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<K, V> &);
-+  void resize0(size_t);
-+  size_t bucket(const K &) const;
-+
-+  friend class _HashMap_iterator<K, V>;
-+  friend class _HashMap_const_iterator<K, V>;
-+  
-+};
-+
-+template <class K, class V>
-+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<K, V>::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<K, V> *_hm;
-+  typename HashMap<K, V>::Elt *_elt;
-+  size_t _bucket;
-+
-+  _HashMap_const_iterator(const HashMap<K, V> *m, bool begin);
-+  friend class HashMap<K, V>;
-+  friend class _HashMap_iterator<K, V>;
-+
-+};
-+
-+template <class K, class V>
-+class _HashMap_iterator : public _HashMap_const_iterator<K, V> { public:
-+
-+  typedef _HashMap_const_iterator<K, V> inherited;
-+
-+  typedef typename HashMap<K, V>::Pair Pair;
-+  Pair *pair() const  { return const_cast<Pair *>(inherited::pair()); }
-+  V &value() const    { return const_cast<V &>(inherited::value()); }
-+
-+ private:
-+  
-+  _HashMap_iterator(HashMap<K, V> *m, bool begin) : inherited(m, begin) { }
-+  friend class HashMap<K, V>;
-+
-+};
-+
-+template <class K, class V>
-+inline typename HashMap<K, V>::const_iterator
-+HashMap<K, V>::begin() const
-+{
-+  return const_iterator(this, true);
-+}
-+
-+template <class K, class V>
-+inline typename HashMap<K, V>::iterator
-+HashMap<K, V>::begin()
-+{
-+  return iterator(this, true);
-+}
-+
-+template <class K, class V>
-+inline typename HashMap<K, V>::const_iterator
-+HashMap<K, V>::end() const
-+{
-+  return const_iterator(this, false);
-+}
-+
-+template <class K, class V>
-+inline typename HashMap<K, V>::iterator
-+HashMap<K, V>::end()
-+{
-+  return iterator(this, false);
-+}
-+
-+template <class K, class V>
-+inline V *
-+HashMap<K, V>::findp(const K &key) const
-+{
-+  Pair *p = find_pair(key);
-+  return (p ? &p->value : 0);
-+}
-+
-+template <class K, class V>
-+inline const V &
-+HashMap<K, V>::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 <class K, class V>
-+inline const V &
-+HashMap<K, V>::find(const K &key) const
-+{
-+  return find(key, _default_value);
-+}
-+
-+template <class K, class V>
-+inline const V &
-+HashMap<K, V>::operator[](const K &key) const
-+{
-+  return find(key);
-+}
-+
-+template <class K, class V>
-+inline
-+_HashMap_const_iterator<K, V>::operator unspecified_bool_type() const
-+{
-+    return live() ? &_HashMap_const_iterator::live : 0;
-+}
-+
-+
-+template <class K>
-+class HashMap<K, void *> { public:
-+
-+  struct Pair;
-+
-+  HashMap();
-+  explicit HashMap(void *, HashMap_ArenaFactory * = 0);
-+  HashMap(const HashMap<K, void *> &);
-+  ~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<K, void *> &);
-+
-+  // iterators
-+  typedef _HashMap_const_iterator<K, void *> const_iterator;
-+  typedef _HashMap_iterator<K, void *> 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<K, void *> &operator=(const HashMap<K, void *> &);
-+
-+  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<K, void *> &);
-+  void resize0(size_t);
-+  size_t bucket(const K &) const;
-+
-+  friend class _HashMap_iterator<K, void *>;
-+  friend class _HashMap_const_iterator<K, void *>;
-+  
-+};
-+
-+template <class K>
-+class _HashMap_const_iterator<K, void *> { 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<K, void *>::Pair Pair;
-+  const Pair *pair() const            { return _elt; }
-+  
-+  const K &key() const                        { return _elt->key; }
-+  void *value() const                 { return _elt->value; }
-+  
-+ private:
-+
-+  const HashMap<K, void *> *_hm;
-+  typename HashMap<K, void *>::Elt *_elt;
-+  size_t _bucket;
-+
-+  _HashMap_const_iterator(const HashMap<K, void *> *, bool begin);
-+  template <class, class> friend class _HashMap_const_iterator;
-+  template <class, class> friend class _HashMap_iterator;
-+  template <class, class> friend class HashMap;
-+
-+};
-+
-+template <class K>
-+class _HashMap_iterator<K, void *> : public _HashMap_const_iterator<K, void *> { public:
-+
-+  typedef _HashMap_const_iterator<K, void *> inherited;
-+
-+  typedef typename HashMap<K, void *>::Pair Pair;
-+  Pair *pair() const  { return const_cast<Pair *>(inherited::pair()); }
-+  void *&value() const        { return this->_elt->value; }
-+
-+ private:
-+
-+  _HashMap_iterator(HashMap<K, void *> *m, bool begin) : inherited(m, begin) { }
-+  template <class, class> friend class HashMap;
-+
-+};
-+
-+template <class K>
-+inline typename HashMap<K, void *>::const_iterator
-+HashMap<K, void *>::begin() const
-+{
-+  return const_iterator(this, true);
-+}
-+
-+template <class K>
-+inline typename HashMap<K, void *>::iterator
-+HashMap<K, void *>::begin()
-+{
-+  return iterator(this, true);
-+}
-+
-+template <class K>
-+inline typename HashMap<K, void *>::const_iterator
-+HashMap<K, void *>::end() const
-+{
-+  return const_iterator(this, false);
-+}
-+
-+template <class K>
-+inline typename HashMap<K, void *>::iterator
-+HashMap<K, void *>::end()
-+{
-+  return iterator(this, false);
-+}
-+
-+template <class K>
-+inline void **
-+HashMap<K, void *>::findp(const K &key) const
-+{
-+  Pair *p = find_pair(key);
-+  return (p ? &p->value : 0);
-+}
-+
-+template <class K>
-+inline void *
-+HashMap<K, void *>::find(const K &key, void *default_value) const
-+{
-+  Pair *p = find_pair(key);
-+  return (p ? p->value : default_value);
-+}
-+
-+template <class K>
-+inline void *
-+HashMap<K, void *>::find(const K &key) const
-+{
-+  return find(key, _default_value);
-+}
-+
-+template <class K>
-+inline void *
-+HashMap<K, void *>::operator[](const K &key) const
-+{
-+  return find(key);
-+}
-+
-+template <class K>
-+inline
-+_HashMap_const_iterator<K, void *>::operator unspecified_bool_type() const
-+{
-+    return live() ? &_HashMap_const_iterator::live : 0;
-+}
-+
-+
-+template <class K, class T>
-+class HashMap<K, T *> : public HashMap<K, void *> { public:
-+
-+  typedef HashMap<K, void *> inherited;
-+  struct Pair;
-+  
-+  HashMap()                           : inherited() { }
-+  explicit HashMap(T *def, HashMap_ArenaFactory *factory = 0)
-+                                      : inherited(def, factory) { }
-+  HashMap(const HashMap<K, T *> &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<Pair *>(inherited::find_pair(k)); }
-+  T **findp(const K &k) const { return reinterpret_cast<T **>(inherited::findp(k)); }
-+  T *find(const K &k, T *v) const { return reinterpret_cast<T *>(inherited::find(k, v)); }
-+  T *find(const K &k) const { return reinterpret_cast<T *>(inherited::find(k)); }
-+  T *operator[](const K &k) const { return reinterpret_cast<T *>(inherited::operator[](k)); }
-+  
-+  Pair *find_pair_force(const K &k, T *v) { return reinterpret_cast<Pair *>(inherited::find_pair_force(k, v)); }
-+  Pair *find_pair_force(const K &k) { return reinterpret_cast<Pair *>(inherited::find_pair_force(k)); }
-+  T **findp_force(const K &k, T *v) { return reinterpret_cast<T **>(inherited::findp_force(k, v)); }
-+  T *&find_force(const K &k, T *v) { return *reinterpret_cast<T **>(inherited::findp_force(k, v)); }
-+  T **findp_force(const K &k) { return reinterpret_cast<T **>(inherited::findp_force(k)); }
-+  T *&find_force(const K &k) { return *reinterpret_cast<T **>(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<K, T *> &o)       { inherited::swap(o); }
-+
-+  // iteration
-+  typedef _HashMap_const_iterator<K, T *> const_iterator;
-+  typedef _HashMap_iterator<K, T *> iterator;  
-+  inline const_iterator begin() const;
-+  inline iterator begin();
-+  inline const_iterator end() const;
-+  inline iterator end();
-+
-+  // dynamic resizing methods         inherited
-+
-+  HashMap<K, T *> &operator=(const HashMap<K, T *> &o) { return static_cast<HashMap<K, T *> &>(inherited::operator=(o)); }
-+
-+  struct Pair {
-+    K key;
-+    T *value;
-+  };
-+  
-+};
-+
-+template <class K, class T>
-+class _HashMap_const_iterator<K, T *> { public:
-+
-+    typedef _HashMap_const_iterator<K, void *> 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<K, T *>::Pair Pair;
-+    const Pair *pair() const { return reinterpret_cast<const Pair *>(_i.pair()); }
-+  
-+    const K &key() const      { return _i.key(); }
-+    T *value() const          { return reinterpret_cast<T *>(_i.value()); }
-+
-+ private:
-+
-+    inherited _i;
-+    
-+    _HashMap_const_iterator(const HashMap<K, T *> *t, bool begin) : _i(t, begin) { }  
-+    friend class _HashMap_iterator<K, T *>;
-+    template <class, class> friend class HashMap;
-+  
-+};
-+
-+template <class K, class T>
-+class _HashMap_iterator<K, T *> : public _HashMap_const_iterator<K, T *> { public:
-+
-+  typedef _HashMap_const_iterator<K, T *> inherited;
-+
-+  typedef typename HashMap<K, T *>::Pair Pair;
-+  Pair *pair() const  { return const_cast<Pair *>(inherited::pair()); }
-+  T *&value() const   { return pair()->value; }
-+
-+ private:
-+  
-+  _HashMap_iterator(HashMap<K, T *> *t, bool begin) : inherited(t, begin) { }
-+  template <class, class> friend class HashMap;
-+  
-+};
-+
-+template <class K, class T>
-+inline typename HashMap<K, T *>::const_iterator
-+HashMap<K, T *>::begin() const
-+{
-+  return const_iterator(this, true);
-+}
-+
-+template <class K, class T>
-+inline typename HashMap<K, T *>::iterator
-+HashMap<K, T *>::begin()
-+{
-+  return iterator(this, true);
-+}
-+
-+template <class K, class T>
-+inline typename HashMap<K, T *>::const_iterator
-+HashMap<K, T *>::end() const
-+{
-+  return const_iterator(this, false);
-+}
-+
-+template <class K, class T>
-+inline typename HashMap<K, T *>::iterator
-+HashMap<K, T *>::end()
-+{
-+  return iterator(this, false);
-+}
-+
-+template <class K, class T>
-+inline
-+_HashMap_const_iterator<K, T *>::operator unspecified_bool_type() const
-+{
-+    return inherited::live() ? &inherited::live : 0;
-+}
-+
-+template <class K, class V>
-+inline bool
-+operator==(const _HashMap_const_iterator<K, V> &a, const _HashMap_const_iterator<K, V> &b)
-+{
-+  return a.pair() == b.pair();
-+}
-+
-+template <class K, class V>
-+inline bool
-+operator!=(const _HashMap_const_iterator<K, V> &a, const _HashMap_const_iterator<K, V> &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<Link *>(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/glue.hh>
-+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<<off) { }
-+
-+    typedef Bitvector::unspecified_bool_type unspecified_bool_type;
-+    inline operator unspecified_bool_type() const {
-+      return (_p & _mask) != 0 ? &Bitvector::zero : 0;
-+    }
-+
-+    bool operator=(bool b);
-+    bool operator=(const Bit &);
-+
-+  private:
-+
-+    uint32_t &_p;
-+    uint32_t _mask;
-+
-+};
-+
-+
-+inline
-+Bitvector::Bitvector(int n)
-+    : _max(n - 1), _data(&_f0), _f0(0), _f1(0)
-+{
-+    if (_max > 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 <sys/types.h>
-+
-+/* 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 <asm/alternative.h> 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 <linux/autoconf.h>
-+#include <linux/types.h>
-+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 <click/fixconfig.h>
-+
-+#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 <click/config-userlevel.h>
-+
-+#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 <pcap.h> uses bpf_timeval. */
-+/* #undef HAVE_BPF_TIMEVAL */
-+
-+/* Define if you have the <byteswap.h> 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 <dlfcn.h> 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 <grp.h> 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 <inttypes.h> 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 <linux/if_tun.h> 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 <net/bpf.h> header file. */
-+/* #undef HAVE_NET_BPF_H */
-+
-+/* Define if you have the <net/if_tap.h> header file. */
-+/* #undef HAVE_NET_IF_TAP_H */
-+
-+/* Define if you have the <net/if_tun.h> header file. */
-+/* #undef HAVE_NET_IF_TUN_H */
-+
-+/* Define if you have the <netdb.h> header file. */
-+#define HAVE_NETDB_H 1
-+
-+/* Define if <new.h> exists and works. */
-+/* #undef HAVE_NEW_H */
-+
-+/* Define if <new> 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 <poll.h> header file. */
-+#define HAVE_POLL_H 1
-+
-+/* Placement new is always provided below. */
-+#define HAVE_PLACEMENT_NEW 1
-+
-+/* Define if you have the <pwd.h> 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 <strings.h> header file. */
-+#define HAVE_STRINGS_H 1
-+
-+/* Define if you have the strtoul function. */
-+#define HAVE_STRTOUL 1
-+
-+/* Define if you have the <sys/event.h> header file. */
-+/* #undef HAVE_SYS_EVENT_H */
-+
-+/* Define if you have the <sys/mman.h> header file. */
-+#define HAVE_SYS_MMAN_H 1
-+
-+/* Define if you have the tcgetpgrp function. */
-+#define HAVE_TCGETPGRP 1
-+
-+/* Define if you have the <termio.h> 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 <unistd.h> 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 <inttypes.h>
-+#endif
-+#include <sys/types.h>
-+
-+/* 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 <assert.h>
-+
-+/* 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 <new>
-+#elif HAVE_NEW_H
-+# include <new.h>
-+#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 <click/config-linuxmodule.h>
-+#endif
-+
-+/* Define stuff under a FreeBSD module. */
-+#ifdef CLICK_BSDMODULE
-+# include <click/config-bsdmodule.h>
-+#endif
-+
-+/* Define stuff under nsclick. */
-+#ifdef CLICK_NS
-+# include <click/config-ns.h>
-+#endif
-+
-+/* Define stuff under tools or a user-level driver. */
-+#if defined(CLICK_USERLEVEL) || defined(CLICK_TOOL)
-+# include <click/config-userlevel.h>
-+#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 <click/string.hh>
-+#include <click/vector.hh>
-+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<String>& conf);
-+String cp_unargvec(const Vector<String>& conf);
-+
-+void cp_spacevec(const String& str, Vector<String>& conf);
-+String cp_pop_spacevec(String& str);
-+String cp_unspacevec(const String* begin, const String* end);
-+inline String cp_unspacevec(const Vector<String>& 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<IPAddress>* 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<String>& 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<String>& conf, CP_VA_PARSE_ARGS_REST) CP_SENTINEL;
-+
-+int cp_assign_arguments(const Vector<String>& argv, const String *keys_begin, const String *keys_end, Vector<String>* 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<String>*, 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<IPAddress>*, 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<String>& 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<String>& 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<String>& 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<int*>(result));
-+}
-+
-+inline bool cp_integer(const String& str, int base, long* result)
-+{
-+    return cp_integer(str, base, reinterpret_cast<int*>(result));
-+}
-+
-+inline bool cp_integer(const String& str, long* result)
-+{
-+    return cp_integer(str, reinterpret_cast<int*>(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<unsigned int*>(result));
-+}
-+
-+inline bool cp_integer(const String& str, int base, unsigned long* result)
-+{
-+    return cp_integer(str, base, reinterpret_cast<unsigned int*>(result));
-+}
-+
-+inline bool cp_integer(const String& str, unsigned long* result)
-+{
-+    return cp_integer(str, reinterpret_cast<unsigned int*>(result));
-+}
-+#endif
-+
-+inline bool cp_ip_address(const String& str, struct in_addr* ina  CP_CONTEXT)
-+{
-+    return cp_ip_address(str, reinterpret_cast<IPAddress*>(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/dequeue.hh>
-+CLICK_DECLS
-+
-+template <class T>
-+DEQueue<T>::DEQueue(const DEQueue<T> &o)
-+    : _l(0), _n(0), _cap(0), _head(0), _tail(0)
-+{
-+    *this = o;
-+}
-+
-+template <class T>
-+DEQueue<T>::~DEQueue()
-+{
-+    for (int i = _head, j = 0; j < _n; i = next_i(i), j++)
-+      _l[i].~T();
-+    CLICK_LFREE(_l, _cap * sizeof(T));
-+}
-+
-+template <class T> DEQueue<T> &
-+DEQueue<T>::operator=(const DEQueue<T> &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 <class T> DEQueue<T> &
-+DEQueue<T>::assign(int n, const T &e)
-+{
-+    resize(0, e);
-+    resize(n, e);
-+    return *this;
-+}
-+
-+template <class T> bool
-+DEQueue<T>::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 <class T> void
-+DEQueue<T>::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 <class T> void
-+DEQueue<T>::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 <class T> void
-+DEQueue<T>::swap(DEQueue<T> &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 <class T> inline void
-+DEQueue<T>::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/glue.hh>
-+CLICK_DECLS
-+
-+template <class T>
-+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<T> &);
-+  ~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<T> &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<T> &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<T &>(const_iterator::operator[](n)); }
-+      T &operator*() const { return const_cast<T &>(const_iterator::operator*()); }
-+      T *operator->() const { return const_cast<T *>(const_iterator::operator->()); }
-+    };
-+  
-+    iterator begin()                  { return iterator(*this, 0); }
-+    const_iterator begin() const      { return const_iterator((DEQueue<T> &) *this, 0); }
-+    iterator end()                    { return iterator(*this, _n); }
-+    const_iterator end() const                { return const_iterator((DEQueue<T> &) *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<T> &operator=(const DEQueue<T> &);
-+  DEQueue<T> &assign(int n, const T &e = T());
-+  void swap(DEQueue<T> &);
-+
-+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 <class T> inline void
-+DEQueue<T>::push_front(const T &e)
-+{
-+    if (_n < _cap || reserve(-1)) {
-+      _head = prev_i(_head);
-+      new(velt(_head)) T(e);
-+      _n++;
-+    }
-+}
-+
-+template <class T> inline void
-+DEQueue<T>::pop_front()
-+{
-+    assert(_n > 0);
-+    --_n;
-+    _l[_head].~T();
-+    _head = next_i(_head);
-+}
-+
-+template <class T> inline void
-+DEQueue<T>::push_back(const T &e)
-+{
-+    if (_n < _cap || reserve(-1)) {
-+      new(velt(_tail)) T(e);
-+      _n++;
-+      _tail = next_i(_tail);
-+    }
-+}
-+
-+template <class T> inline void
-+DEQueue<T>::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 <click/package.hh>
-+
-+#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<ArchiveElement> &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<ArchiveElement> &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 <click/glue.hh>
-+#include <click/vector.hh>
-+#include <click/string.hh>
-+#include <click/packet.hh>
-+CLICK_DECLS
-+class Router;
-+class Master;
-+class Task;
-+class Timer;
-+class Element;
-+class ErrorHandler;
-+class Bitvector;
-+class Handler;
-+
-+/** @file <click/element.hh>
-+ * @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<String>&, 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<String>&) const;
-+    String configuration() const;
-+  
-+    virtual bool can_live_reconfigure() const;
-+    virtual int live_reconfigure(Vector<String>&, 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/element.hh>
-+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<Element*>&);
-+
-+};
-+
-+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 <click/string.hh>
-+#if defined(CLICK_USERLEVEL) || defined(CLICK_TOOL)
-+# include <stdio.h>
-+#endif
-+#include <stdarg.h>
-+#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 <click/string.hh>
-+#include <click/glue.hh>
-+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<const unsigned char *>(_data);
-+}
-+
-+/** @brief Returns a pointer to the address data. */
-+inline unsigned char *
-+EtherAddress::data()
-+{
-+    return reinterpret_cast<unsigned char *>(_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 <click/glue.hh>
-+#include <click/confparse.hh>
-+CLICK_DECLS
-+
-+/** @file <click/ewma.hh>
-+ *  @brief  Click's classes for supporting exponentially weighted moving
-+ *  averages.
-+ */
-+
-+/** @class DirectEWMAX include/click/ewma.hh <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.  <code>unsigned</code>
-+ *  and <code>uint64_t</code> 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.
-+ *
-+ *  <dl>
-+ *  <dt><strong>P::value_type</strong></dt>
-+ *  <dd>The EWMA's value type.  Example: <code>unsigned</code>.</dd>
-+ *
-+ *  <dt><strong>P::signed_value_type</strong></dt>
-+ *  <dd>The signed version of <code>P::value_type</code>.  Used internally.
-+ *  Example: <code>int</code>.</dd>
-+ *
-+ *  <dt><strong>unsigned P::stability_shift()</strong></dt>
-+ *  <dd>This function should return this EWMA's stability shift
-+ *  (see below).</dd>
-+ *
-+ *  <dt><strong>unsigned P::scale()</strong></dt>
-+ *  <dd>This function should return this EWMA's scaling factor
-+ *  (see below).</dd>
-+ *
-+ *  <dt><strong>unsigned P::compensation()</strong></dt>
-+ *  <dd>This function should return this EWMA's stability compensation,
-+ *  which normally equals 1 @<@< (stability_shift - 1).</dd>
-+ *  </dl>
-+ *
-+ *  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 <typename P>
-+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 <typename P>
-+inline void
-+DirectEWMAX<P>::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<typename P::signed_value_type>(val_scaled - _avg) >> stability;
-+#else
-+    if (val_scaled < _avg)
-+      _avg -= (_avg - val_scaled) >> stability;
-+    else
-+      _avg += (val_scaled - _avg) >> stability;
-+#endif
-+}
-+
-+template <typename P>
-+void
-+DirectEWMAX<P>::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<typename P::signed_value_type>(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 <typename P>
-+inline String
-+DirectEWMAX<P>::unparse() const
-+{
-+    return cp_unparse_real2(scaled_average(), P::scale());
-+}
-+
-+/** @class FixedEWMAXParameters include/click/ewma.hh <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: <code>DirectEWMAX@<FixedEWMAXParameters@<4, 10, unsigned, int@>
-+ *  @></code> 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: <code>DirectEWMAX@<FixedEWMAXParameters@<3, 10, uint64_t,
-+ *  int64_t@> @></code> defines a EWMA with alpha 1/8 (stability shift 3),
-+ *  scaling factor 10, and value type uint64_t.
-+ */
-+template <unsigned STABILITY, unsigned SCALE, typename T = unsigned, typename U = int>
-+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 <code>unsigned</code>. */
-+typedef DirectEWMAX<FixedEWMAXParameters<4, 10> > DirectEWMA;
-+
-+/** @brief A DirectEWMAX with stability shift 3 (alpha 1/8), scaling factor
-+ *  10 (10 bits of fraction), and underlying type <code>unsigned</code>. */
-+typedef DirectEWMAX<FixedEWMAXParameters<3, 10> > FastDirectEWMA;
-+
-+
-+/** @class StabilityEWMAXParameters include/click/ewma.hh <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: <code>DirectEWMAX@<StabilityEWMAXParameters@<10, unsigned, int@>
-+ *  @></code> defines a EWMA with user-settable alpha (stability shift)
-+ *  initially equal to 1/16, scaling factor 10, and value type unsigned.
-+ *
-+ *  A <code>DirectEWMAX@<StabilityEWMAXParameters@<...@> @></code> object has
-+ *  stability_shift() and set_stability_shift() methods.
-+ */
-+template <unsigned SCALE, typename T = unsigned, typename U = int>
-+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 <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 <em>rate</em>: 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
-+ *  <em>second</em>, 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:
-+ *
-+ *  <dl>
-+ *  <dt><strong>P::rate_count</strong></dt>
-+ *  <dd>The rate count, as a static constant (for example, defined by an
-+ *  enum).</dd>
-+ *
-+ *  <dt><strong>unsigned P::epoch()</strong></dt>
-+ *  <dd>This function returns the current epoch number.</dd>
-+ *
-+ *  <dt><strong>unsigned P::epoch_frequency()</strong></dt>
-+ *  <dd>This function returns the number of epochs per second.</dd>
-+ *  </dl>
-+ *
-+ *  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 <typename P>
-+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<P> _avg[P::rate_count];
-+  
-+    inline void update_time(unsigned now);
-+    
-+};
-+
-+/** @class RateEWMAXParameters include/click/ewma.hh <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: <code>RateEWMAX@<RateEWMAXParameters@<4, 10, unsigned, int@>
-+ *  @></code> defines a rate EWMA with user-settable alpha (stability shift)
-+ *  initially equal to 1/16, scaling factor 10, and value type unsigned.
-+ */
-+template <unsigned STABILITY, unsigned SCALE, typename T = unsigned, typename U = int>
-+class RateEWMAXParameters : public FixedEWMAXParameters<STABILITY, SCALE, T, U> { 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 <code>unsigned</code>
-+ *  that measures epochs in jiffies. */
-+typedef RateEWMAX<RateEWMAXParameters<4, 10> > RateEWMA;
-+
-+
-+template <typename P>
-+inline void
-+RateEWMAX<P>::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 <typename P>
-+inline void
-+RateEWMAX<P>::update(signed_value_type delta, unsigned ratenum)
-+{
-+    update_time(P::epoch());
-+    _current[ratenum] += delta;
-+}
-+
-+template <typename P>
-+inline int
-+RateEWMAX<P>::rate(unsigned ratenum) const
-+{
-+    return (scaled_average(ratenum) * P::epoch_frequency()) >> _avg[ratenum].scale();
-+}
-+
-+template <typename P>
-+inline String
-+RateEWMAX<P>::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 <asm/alternative.h>
-+#  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/timestamp.hh>
-+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 <header>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/cxxprotect.h>
-+CLICK_CXX_PROTECT
-+# ifdef WANT_MOD_USE_COUNT
-+#  define __NO_VERSION__
-+#  include <linux/module.h>
-+#  define HAVE_MOD_USE_COUNT 1
-+# endif
-+# include <linux/kernel.h>
-+# include <linux/version.h>
-+# include <linux/string.h>
-+# include <linux/skbuff.h>
-+# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
-+#  include <linux/malloc.h>
-+#  include <linux/vmalloc.h>
-+#  include <linux/interrupt.h>
-+# else
-+#  include <linux/hardirq.h>
-+# endif
-+# include <linux/ctype.h>
-+# include <linux/time.h>
-+# include <linux/errno.h>
-+CLICK_CXX_UNPROTECT
-+# include <click/cxxunprotect.h>
-+
-+#elif CLICK_BSDMODULE
-+
-+# include <click/cxxprotect.h>
-+CLICK_CXX_PROTECT
-+# include <sys/ctype.h>
-+# include <sys/systm.h>
-+# include <sys/time.h>
-+# include <sys/param.h>
-+# include <sys/kernel.h>
-+# include <sys/mbuf.h>
-+# include <sys/malloc.h>
-+# include <sys/libkern.h>
-+# include <sys/proc.h>
-+# include <sys/sysproto.h>
-+CLICK_CXX_UNPROTECT
-+# include <click/cxxunprotect.h>
-+
-+#else /* CLICK_USERLEVEL */
-+
-+# include <stdio.h>
-+# include <stdlib.h>
-+# include <string.h>
-+# include <ctype.h>
-+# include <errno.h>
-+# include <limits.h>
-+# include <sys/socket.h>
-+# include <netinet/in.h>
-+# include <sys/time.h>
-+# 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<const unsigned char *>(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 <machine/byte_order.h>
-+# 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 <byteswap.h>
-+# 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/router.hh>
-+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.
-+ *
-+ *  <h2>Immediate Handler Calls</h2>
-+ *
-+ *  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
-+ *
-+ *  <h2>HandlerCall Objects</h2>
-+ *
-+ *  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<String> &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<String> &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 <tt>"[ename.]hname[ value]"</tt>
-+     *
-+     *  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<Element *>(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 <typename T>
-+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<uintptr_t>(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 <click/bighashmap.cc>
-+
-+#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 <click/bighashmap.hh>
-+
-+#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/string.hh>
-+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 <strings.h>
-+#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 <click/string.hh>
-+#include <clicknet/ip6.h>
-+#include <click/ipaddress.hh>
-+#include <click/etheraddress.hh>
-+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 <click/ip6address.hh>
-+#include <click/hashcode.hh>
-+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 <click/glue.hh>
-+#include <click/vector.hh>
-+#include <click/ip6address.hh>
-+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<Entry> _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 <click/string.hh>
-+#include <click/glue.hh>
-+#include <clicknet/ip.h>
-+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<const unsigned char*>(&_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<unsigned char*>(&_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 <click/ipaddress.hh>
-+#include <click/hashcode.hh>
-+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 <click/glue.hh>
-+#include <click/vector.hh>
-+#include <click/ipaddress.hh>
-+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<Entry> _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 <click/hashmap.hh>
-+#include <click/router.hh>
-+#include <click/glue.hh>
-+#include <click/variableenv.hh>
-+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<String> &) 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<String, int> _element_type_map;
-+    Vector<ElementType> _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<String, int> _element_map;
-+    Compound *_c;
-+  
-+    TunnelEnd *_definputs;
-+    TunnelEnd *_defoutputs;
-+  
-+    // compound elements
-+    int _anonymous_offset;
-+
-+    // requirements
-+    Vector<String> _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<int> &, Router *);
-+
-+    void find_connections(const Hookup &, bool, Vector<Hookup> &) const;
-+    void expand_connection(const Hookup &, bool, Vector<Hookup> &) 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 <linux/errno.h>
-+# include <linux/ioctl.h>
-+#else
-+# include <errno.h>
-+# include <sys/ioctl.h>
-+#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 <asm/uaccess.h>
-+}
-+# else
-+#  define __CLICK_LLRPC_CAST(x) (x)
-+#  include <asm/uaccess.h>
-+# 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 <click/vector.hh>
-+#include <click/timer.hh>
-+#include <click/task.hh>
-+#include <click/sync.hh>
-+#include <click/atomic.hh>
-+#if CLICK_USERLEVEL
-+# include <unistd.h>
-+# include <signal.h>
-+# if HAVE_POLL_H
-+#  include <poll.h>
-+# endif
-+#endif
-+#if CLICK_NS
-+# include <click/simclick.h>
-+#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<RouterThread*> _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*> _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<int> _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<struct pollfd> _pollfds;
-+    Vector<Element*> _read_poll_elements;
-+    Vector<Element*> _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
-+  <ghost@aladdin.com>.  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 <purschke@bnl.gov>.
-+  1999-05-03 lpd Original version.
-+ */
-+
-+#ifndef CLICK_MD5_H
-+#define CLICK_MD5_H
-+#if CLICK_LINUXMODULE
-+#include <click/cxxprotect.h>
-+CLICK_CXX_PROTECT
-+#include <linux/crypto.h>
-+#include <asm/scatterlist.h>
-+CLICK_CXX_UNPROTECT
-+#include <click/cxxunprotect.h>
-+
-+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 <click/string.hh>
-+#include <click/vector.hh>
-+#include <click/straccum.hh>
-+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 *> _namedb_roots;
-+    Vector<NameDB *> _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<String> _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 <click/task.hh>
-+#include <click/atomic.hh>
-+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<Task*>&) 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:
-+ *
-+ * <dl>
-+ * <dt>SEARCH_STOP</dt>
-+ * <dd>Stop searching along this path.  This is the default.</dd>
-+ * <dt>SEARCH_CONTINUE</dt>
-+ * <dd>Continue searching along this path.</dd>
-+ * <dt>SEARCH_CONTINUE_WAKE</dt>
-+ * <dd>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.</dd>
-+ * </dl>
-+ */
-+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 <click/vector.hh>
-+#include <click/string.hh>
-+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)<CLICK_NAME(String)> &);
-+
-+#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 <click/ipaddress.hh>
-+#include <click/ip6address.hh>
-+#include <click/glue.hh>
-+#include <click/timestamp.hh>
-+#if CLICK_LINUXMODULE
-+# include <click/skbmgr.hh>
-+#else
-+# include <click/atomic.hh>
-+#endif
-+struct click_ether;
-+struct click_ip;
-+struct click_icmp;
-+struct click_ip6;
-+struct click_tcp;
-+struct click_udp;
-+
-+#if CLICK_NS
-+# include <click/simclick.h>
-+#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 &timestamp_anno() const;
-+    inline Timestamp &timestamp_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<const click_ether *>(mac_header());
-+}
-+
-+inline const click_ip *
-+Packet::ip_header() const
-+{
-+    return reinterpret_cast<const click_ip *>(network_header());
-+}
-+
-+inline const click_ip6 *
-+Packet::ip6_header() const
-+{
-+    return reinterpret_cast<const click_ip6 *>(network_header());
-+}
-+
-+inline const click_icmp *
-+Packet::icmp_header() const
-+{
-+    return reinterpret_cast<const click_icmp *>(transport_header());
-+}
-+
-+inline const click_tcp *
-+Packet::tcp_header() const
-+{
-+    return reinterpret_cast<const click_tcp *>(transport_header());
-+}
-+
-+inline const click_udp *
-+Packet::udp_header() const
-+{
-+    return reinterpret_cast<const click_udp *>(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 &timestamp)
-+{
-+#if CLICK_LINUXMODULE
-+# if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 13)
-+    memcpy(&skb()->stamp, &timestamp, 8);
-+# else
-+    memcpy(&skb()->tstamp, &timestamp, 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<Packet *>(skb);
-+  } else {
-+    Packet *p = reinterpret_cast<Packet *>(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<struct sk_buff *>(skb()));
-+#else
-+    return (_data_packet || _use_count > 1);
-+#endif
-+}
-+
-+inline WritablePacket *
-+Packet::uniqueify()
-+{
-+  if (!shared())
-+    return static_cast<WritablePacket *>(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<unsigned char *>(d);
-+    _tail = _end = const_cast<unsigned char *>(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<const IP6Address *>(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<unsigned char *>(h);
-+#else                         /* User-space and BSD kernel module */
-+    _mac = const_cast<unsigned char *>(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<unsigned char *>(h);
-+    skb()->network_header = const_cast<unsigned char *>(h) + len;
-+#else                         /* User-space and BSD kernel module */
-+    _mac = const_cast<unsigned char *>(h);
-+    _nh = const_cast<unsigned char *>(h) + len;
-+#endif
-+}
-+
-+inline void
-+Packet::set_ether_header(const click_ether *h)
-+{
-+    set_mac_header(reinterpret_cast<const unsigned char *>(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<unsigned char *>(h);
-+    skb()->transport_header = const_cast<unsigned char *>(h) + len;
-+#else                         /* User-space and BSD kernel module */
-+    _nh = const_cast<unsigned char *>(h);
-+    _h = const_cast<unsigned char *>(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<const unsigned char *>(iph), len);
-+}
-+
-+inline void
-+Packet::set_ip6_header(const click_ip6 *ip6h, uint32_t len)
-+{
-+    set_network_header(reinterpret_cast<const unsigned char *>(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<unsigned char *>(Packet::data());
-+}
-+
-+inline unsigned char *
-+WritablePacket::end_data() const
-+{
-+    return const_cast<unsigned char *>(Packet::end_data());
-+}
-+
-+inline unsigned char *
-+WritablePacket::buffer() const
-+{
-+    return const_cast<unsigned char *>(Packet::buffer());
-+}
-+
-+inline unsigned char *
-+WritablePacket::end_buffer() const
-+{
-+    return const_cast<unsigned char *>(Packet::end_buffer());
-+}
-+
-+inline unsigned char *
-+WritablePacket::buffer_data() const
-+{
-+    return const_cast<unsigned char *>(Packet::buffer());
-+}
-+
-+inline unsigned char *
-+WritablePacket::mac_header() const
-+{
-+    return const_cast<unsigned char *>(Packet::mac_header());
-+}
-+
-+inline unsigned char *
-+WritablePacket::network_header() const
-+{
-+    return const_cast<unsigned char *>(Packet::network_header());
-+}
-+
-+inline unsigned char *
-+WritablePacket::transport_header() const
-+{
-+    return const_cast<unsigned char *>(Packet::transport_header());
-+}
-+
-+inline click_ether *
-+WritablePacket::ether_header() const
-+{
-+    return const_cast<click_ether *>(Packet::ether_header());
-+}
-+
-+inline click_ip *
-+WritablePacket::ip_header() const
-+{
-+    return const_cast<click_ip *>(Packet::ip_header());
-+}
-+
-+inline click_ip6 *
-+WritablePacket::ip6_header() const
-+{
-+    return const_cast<click_ip6 *>(Packet::ip6_header());
-+}
-+
-+inline click_icmp *
-+WritablePacket::icmp_header() const
-+{
-+    return const_cast<click_icmp *>(Packet::icmp_header());
-+}
-+
-+inline click_tcp *
-+WritablePacket::tcp_header() const
-+{
-+    return const_cast<click_tcp *>(Packet::tcp_header());
-+}
-+
-+inline click_udp *
-+WritablePacket::udp_header() const
-+{
-+    return const_cast<click_udp *>(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/hashcode.hh>
-+CLICK_DECLS
-+
-+template <class T, class U>
-+struct Pair {
-+    T first;
-+    U second;
-+    Pair()                            : first(), second() { }
-+    Pair(const T &t, const U &u)      : first(t), second(u) { }
-+    typedef size_t (Pair<T, U>::*unspecified_bool_type)() const;
-+    inline operator unspecified_bool_type() const;
-+    inline size_t hashcode() const;
-+};
-+
-+template <class T, class U>
-+inline Pair<T, U>::operator unspecified_bool_type() const
-+{
-+    return first || second ? &Pair<T, U>::hashcode : 0;
-+}
-+
-+template <class T, class U>
-+inline bool operator==(const Pair<T, U> &a, const Pair<T, U> &b)
-+{
-+    return a.first == b.first && a.second == b.second;
-+}
-+
-+template <class T, class U>
-+inline bool operator!=(const Pair<T, U> &a, const Pair<T, U> &b)
-+{
-+    return a.first != b.first || a.second != b.second;
-+}
-+
-+template <class T, class U>
-+inline bool operator<(const Pair<T, U> &a, const Pair<T, U> &b)
-+{
-+    return a.first < b.first
-+      || (!(b.first < a.first) && a.second < b.second);
-+}
-+
-+template <class T, class U>
-+inline size_t Pair<T, U>::hashcode() const
-+{
-+    return (CLICK_NAME(hashcode)(first) << 13) ^ CLICK_NAME(hashcode)(second);
-+}
-+
-+template <class T, class U>
-+inline Pair<T, U> make_pair(const T &t, const U &u)
-+{
-+    return Pair<T, U>(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 <click/glue.hh>
-+#include <asm/msr.h>
-+#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 <click/element.hh>
-+#include <click/timer.hh>
-+#include <click/sync.hh>
-+#include <click/task.hh>
-+#include <click/standard/threadsched.hh>
-+#if CLICK_NS
-+# include <click/simclick.h>
-+#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<Element*>& 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<Element*>& result);
-+    int upstream_elements(Element* e, int port, ElementFilter* filter, Vector<Element*>& 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<int>& 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<String>& 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<Vector<int> *> _listenvecs;
-+    Vector<int>* 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<Element*> _elements;
-+    Vector<String> _element_names;
-+    Vector<String> _element_configurations;
-+    Vector<String> _element_landmarks;
-+    Vector<int> _element_configure_order;
-+
-+    Vector<Hookup> _hookup_from;
-+    Vector<Hookup> _hookup_to;
-+
-+    /** @cond never */
-+    struct Gport {
-+      Vector<int> e2g;
-+      Vector<int> g2e;
-+      int size() const                        { return g2e.size(); }
-+    };
-+    /** @endcond never */
-+    Gport _gports[2];
-+  
-+    Vector<int> _hookup_gports[2];
-+
-+    Vector<String> _requirements;
-+
-+    volatile int _state;
-+    bool _have_connections : 1;
-+    volatile int _running;
-+  
-+    Vector<int> _ehandler_first_by_element;
-+    Vector<int> _ehandler_to_handler;
-+    Vector<int> _ehandler_next;
-+
-+    Vector<int> _handler_first_by_name;
-+
-+    enum { HANDLER_BUFSIZ = 256 };
-+    Handler** _handler_bufs;
-+    int _nhandlers_bufs;
-+    int _free_handler;
-+
-+    Vector<String> _attachment_names;
-+    Vector<void*> _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<struct module*> _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<Element*>&) 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 &param, 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<Element*>&
-+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<String>&
-+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
-+ *  "<tt>no element named 'name'</tt>".  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 <click/sync.hh>
-+#include <click/vector.hh>
-+#if CLICK_LINUXMODULE
-+# include <click/cxxprotect.h>
-+CLICK_CXX_PROTECT
-+# include <linux/sched.h>
-+CLICK_CXX_UNPROTECT
-+# include <click/cxxunprotect.h>
-+#endif
-+#if CLICK_BSDMODULE
-+# include <click/cxxprotect.h>
-+CLICK_CXX_PROTECT
-+# include <sys/systm.h>
-+CLICK_CXX_UNPROTECT
-+# include <click/cxxunprotect.h>
-+#endif
-+
-+#define CLICK_DEBUG_SCHEDULING 0
-+
-+// NB: user must #include <click/task.hh> before <click/routerthread.hh>.
-+// We cannot #include <click/task.hh> 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*> _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 <click/element.hh>
-+#include <click/hashmap.hh>
-+#ifdef HAVE_IP6
-+# include <click/ip6address.hh>
-+#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<mauer> and C<mazu> 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<NAME> is an ambiguous
-+reference to some address, but C<NAME:ip> is always an IPv4 address,
-+C<NAME:ipnet> is always an IPv4 network address (IPv4 address prefix),
-+C<NAME:ip6> is always an IPv6 address, C<NAME:ip6net> is always an IPv6
-+network address, and C<NAME:eth> 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<DEVNAME:eth> defaults to
-+DEVNAME's Ethernet address.  (At userlevel, this works only on BSD and Linux.)
-+
-+=item *
-+
-+C<DEVNAME:ip> 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<String> &, 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/element.hh>
-+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
-+ * I<n>th input will start `OFFSETI<n>' bytes
-+ * off from a `MODULUSI<n>'-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<String> &, ErrorHandler *);
-+
-+  bool query1(Element *, int port, int &chunk, int &offset) const;
-+  static bool query(Element *, int port, int &chunk, int &offset);
-+
-+ private:
-+  
-+  Vector<int> _elem_offset;
-+  Vector<int> _elem_icount;
-+  Vector<int> _chunks;
-+  Vector<int> _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/element.hh>
-+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<String> &, 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 <click/element.hh>
-+#include <click/hashmap.hh>
-+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<ssh> and C<http> 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<getservbyname(3)> 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<NAME
-+PORT/PROTOCOL NAME...>', and comments starting with `C<#>' are ignored.  Thus,
-+lines from F</etc/services> 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<String> &, 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/element.hh>
-+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<whatever>'.
-+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<String>&, 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 <click/glue.hh>
-+#include <click/string.hh>
-+#ifdef CLICK_LINUXMODULE
-+# include <asm/string.h>
-+#elif defined(CLICK_BSDMODULE)
-+# include <sys/systm.h>
-+#else /* User-space */
-+# include <string.h>
-+#endif
-+CLICK_DECLS
-+
-+/** @file <click/straccum.hh>
-+    @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<const char *>(_s);
-+    }
-+
-+    /** @overload */
-+    inline char *data() {
-+      return reinterpret_cast<char *>(_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 <a>i</a>th 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<char>(_s[i]);
-+    }
-+    
-+    /** @brief Returns a reference to the <a>i</a>th 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<char &>(_s[i]);
-+    }
-+
-+    /** @brief Returns the last character in the string.
-+      @pre length() > 0 */
-+    char back() const {
-+      assert(_len > 0);
-+      return static_cast<char>(_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<char &>(_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<char>(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<const char *>(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<long>(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<unsigned long>(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<long>(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<unsigned long>(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<String::int_large_t>(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<String::uint_large_t>(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<String::int_large_t>(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<String::uint_large_t>(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 <click/algorithm.hh>
-+#include <click/atomic.hh>
-+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<char *>(&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 <click/glue.hh>
-+#include <click/atomic.hh>
-+#if CLICK_LINUXMODULE && defined(__SMP__)
-+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0)
-+#  include <linux/threads.h>
-+# else
-+#  include <linux/tasks.h>
-+# endif
-+# include <linux/sched.h>
-+# 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 <click/sync.hh>
-+ * @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 <click/element.hh>
-+#include <click/sync.hh>
-+#if __MTCLICK__
-+# include <click/atomic.hh>
-+# include <click/ewma.hh>
-+#endif
-+CLICK_DECLS
-+
-+#if CLICK_BSDMODULE
-+extern "C" {
-+ #include <sys/lock.h>
-+ #include <sys/mutex.h>
-+}
-+#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/routerthread.hh>
-+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<Element*>(_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<Task *>(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 <click/sync.hh>
-+#include <click/glue.hh>
-+#include <click/element.hh>
-+#include <click/timestamp.hh>
-+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/glue.hh>
-+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 <math.h>
-+#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 &timespec() 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 <click/archive.hh>
-+#include <stdio.h>
-+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<String>&);
-+
-+void parse_tabbed_lines(const String &, Vector<String> *, ...);
-+
-+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<ArchiveElement> *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 <click/string.hh>
-+#include <click/vector.hh>
-+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<String> &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<String> _names;
-+    Vector<String> _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 <click/glue.hh>
-+#include <click/vector.hh>
-+CLICK_DECLS
-+
-+template <class T>
-+Vector<T>::Vector(const Vector<T> &o)
-+  : _l(0), _n(0), _capacity(0)
-+{
-+  *this = o;
-+}
-+
-+template <class T>
-+Vector<T>::~Vector()
-+{
-+  for (size_type i = 0; i < _n; i++)
-+    _l[i].~T();
-+  delete[] (unsigned char *)_l;
-+}
-+
-+template <class T> Vector<T> &
-+Vector<T>::operator=(const Vector<T> &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 <class T> Vector<T> &
-+Vector<T>::assign(size_type n, const T &e)
-+{
-+  resize(0, e);
-+  resize(n, e);
-+  return *this;
-+}
-+
-+template <class T> typename Vector<T>::iterator
-+Vector<T>::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 <class T> typename Vector<T>::iterator
-+Vector<T>::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 <class T> bool
-+Vector<T>::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 <class T> void
-+Vector<T>::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 <class T> void
-+Vector<T>::swap(Vector<T> &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/algorithm.hh>
-+CLICK_DECLS
-+
-+template <class T>
-+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 <class In> ...
-+  Vector(const Vector<T> &);
-+  ~Vector();
-+
-+  Vector<T>& operator=(const Vector<T>&);
-+  Vector<T>& assign(size_type n, const T& e = T());
-+  // template <class In> ...
-+  
-+  // 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<T> &);
-+  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 <class T> inline void
-+Vector<T>::push_back(const T& e)
-+{
-+  if (_n < _capacity || reserve(RESERVE_GROW)) {
-+    new(velt(_n)) T(e);
-+    _n++;
-+  }
-+}
-+
-+template <class T> inline void
-+Vector<T>::pop_back()
-+{
-+  assert(_n > 0);
-+  --_n;
-+  _l[_n].~T();
-+}
-+
-+template <class T> inline typename Vector<T>::iterator
-+Vector<T>::erase(iterator i)
-+{
-+  return (i < end() ? erase(i, i + 1) : i);
-+}
-+
-+template <class T> inline void
-+Vector<T>::push_front(const T& e)
-+{
-+  insert(begin(), e);
-+}
-+
-+template <class T> inline void
-+Vector<T>::pop_front()
-+{
-+  erase(begin());
-+}
-+
-+
-+template <>
-+class Vector<void*> { 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<void*> &);
-+  ~Vector();
-+  
-+  Vector<void*> &operator=(const Vector<void*> &);
-+  Vector<void*> &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*> &);
-+  void clear()                                { _n = 0; }
-+
-+ private:
-+  
-+  void **_l;
-+  size_type _n;
-+  size_type _capacity;
-+
-+};
-+
-+inline void
-+Vector<void*>::push_back(void *e)
-+{
-+  if (_n < _capacity || reserve(RESERVE_GROW)) {
-+    _l[_n] = e;
-+    _n++;
-+  }
-+}
-+
-+inline void
-+Vector<void*>::pop_back()
-+{
-+  assert(_n > 0);
-+  --_n;
-+}
-+
-+inline Vector<void*>::iterator 
-+Vector<void*>::erase(Vector<void*>::iterator e)
-+{
-+  return (e < end() ? erase(e, e + 1) : e);
-+}
-+
-+inline void
-+Vector<void*>::push_front(void *e)
-+{
-+  insert(begin(), e);
-+}
-+
-+inline void
-+Vector<void*>::pop_front()
-+{
-+  erase(begin());
-+}
-+
-+
-+template <class T>
-+class Vector<T*>: private Vector<void*> {
-+  
-+  typedef Vector<void*> 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<T *> &o)                : Base(o) { }
-+  ~Vector()                           { }
-+
-+  Vector<T *> &operator=(const Vector<T *> &o)
-+              { Base::operator=(o); return *this; }
-+  Vector<T *> &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<T *> &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
-+
-+/*
-+ * <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
-+
-+/*
-+ * <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 <clicknet/ip.h>
-+
-+/*
-+ * <clicknet/icmp.h> -- 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 <clicknet/ip6.h>
-+
-+/*
-+ * <clicknet/icmp6.h> -- 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/cxxprotect.h>
-+CLICK_CXX_PROTECT
-+#if CLICK_LINUXMODULE
-+#include <linux/autoconf.h>
-+# include <net/checksum.h>
-+# include <linux/in.h>
-+#else
-+# include <sys/types.h>
-+# include <netinet/in.h>
-+#endif
-+
-+/*
-+ * <clicknet/ip.h> -- 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 <click/cxxunprotect.h>
-+#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 <clicknet/ip.h>
-+#undef s6_addr
-+#undef s6_addr16
-+#undef s6_addr32
-+#undef s6_addr64
-+
-+/*
-+ * <clicknet/ip6.h> -- 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 @@
-+/*
-+ * <clicknet/llc.h> - 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
-+
-+/*
-+ * <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
-+
-+/*
-+ * <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
-+
-+/*
-+ * <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
-+
-+/*
-+ * <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 @@
-+/*
-+ * <clicknet/wifi.h> - 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 <click/string.hh>
-+#include <stddef.h>
-+#include <click/vector.hh>
-+#include <click/hashmap.hh>
-+#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<ElementClassT *, int> &) const;
-+    virtual void collect_overloads(Vector<ElementClassT *> &) const;
-+
-+    static ElementT *expand_element(ElementT *, RouterT *, const String &prefix, VariableEnvironment &, ErrorHandler *);
-+
-+    virtual ElementClassT *resolve(int ninputs, int noutputs, Vector<String> &args, ErrorHandler *, const String &landmark);
-+    virtual ElementT *complex_expand_element(ElementT *, const String &, Vector<String> &, 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<String> *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<String> &, ErrorHandler *, const String &);
-+    ElementT *complex_expand_element(ElementT *, const String &, Vector<String> &, RouterT *, const String &prefix, VariableEnvironment &, ErrorHandler *);
-+    
-+    void collect_types(HashMap<ElementClassT *, int> &) const;
-+    void collect_overloads(Vector<ElementClassT *> &) 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<void *>(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<Traits> _e;
-+    HashMap<String, int> _name_map;
-+
-+    Vector<Globals> _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<int>&, 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<PortT> &, int start = 0) const;
-+    int force_index_in(Vector<PortT> &, int start = 0) const;
-+
-+    String unparse_input() const;
-+    String unparse_output() const;
-+    
-+    static void sort(Vector<PortT> &);
-+
-+};
-+
-+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 <click/string.hh>
-+
-+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<<d)) != 0; }
-+
-+    bool requires(const String &) const;
-+    bool provides(const String &) const;
-+    int flag_value(int) const;
-+    
-+    String *component(int);
-+    String *component(const String &);
-+
-+    void calculate_driver_mask();
-+
-+    enum {
-+      D_NONE,
-+      D_CLASS, D_CXX_CLASS, D_HEADER_FILE, D_PORT_COUNT, D_PROCESSING,
-+      D_FLOW_CODE, D_FLAGS, D_METHODS, D_REQUIREMENTS, D_PROVISIONS, D_LIBS,
-+      D_SOURCE_FILE, D_DOC_NAME,
-+      D_FIRST_DEFAULT = D_CLASS, D_LAST_DEFAULT = D_LIBS
-+    };
-+    static int parse_component(const String &);
-+    static ElementTraits make(int, ...);
-+
-+  private:
-+    
-+    static ElementTraits the_null_traits;
-+
-+    friend class ElementMap;
-+    
-+};
-+
-+typedef ElementTraits Traits;
-+
-+
-+inline
-+ElementTraits::ElementTraits()
-+    : def_index(0), driver_mask(Driver::ALLMASK), name_next(0)
-+{
-+}
-+
-+inline String *
-+ElementTraits::component(const String &s)
-+{
-+    return component(parse_component(s));
-+}
-+
-+#endif
-diff -Nurb click-1.6.0/inst/include/clicktool/lexert.hh click-1.6.0-27/inst/include/clicktool/lexert.hh
---- click-1.6.0/inst/include/clicktool/lexert.hh       1969-12-31 19:00:00.000000000 -0500
-+++ click-1.6.0-27/inst/include/clicktool/lexert.hh    2009-02-05 10:20:38.000000000 -0500
-@@ -0,0 +1,145 @@
-+// -*- c-basic-offset: 4 -*-
-+#ifndef CLICK_LEXERT_HH
-+#define CLICK_LEXERT_HH
-+#include <click/error.hh>
-+#include <click/hashmap.hh>
-+#include <stdio.h>
-+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<String, ElementClassT *> _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<int> _input_pidx;
-+    Vector<int> _output_pidx;
-+    Vector<const ElementT *> _input_elt;
-+    Vector<const ElementT *> _output_elt;
-+    Vector<int> _input_processing;
-+    Vector<int> _output_processing;
-+    Vector<PortT> _connected_input;
-+    Vector<PortT> _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<ElementT *>(e), pidx - _input_pidx[e->eindex()]);
-+}
-+
-+inline PortT
-+ProcessingT::output_port(int pidx) const
-+{
-+    const ElementT *e = _output_elt[pidx];
-+    return PortT(const_cast<ElementT *>(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 <click/error.hh>
-+#include <click/hashmap.hh>
-+#include <click/archive.hh>
-+#include <click/variableenv.hh>
-+typedef HashMap<String, int> 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<int> *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<ElementClassT *, int> &) const;
-+    void collect_locally_declared_types(Vector<ElementClassT *> &) const;
-+    void collect_overloads(Vector<ElementClassT *> &) const;
-+
-+    // CONNECTIONS
-+    int nconnections() const                  { return _conn.size(); }
-+    const Vector<ConnectionT> &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<PortT> &) const;
-+    void find_connections_from(const PortT &, Vector<int> &) const;
-+    void find_connections_to(const PortT &, Vector<PortT> &) const;
-+    void find_connections_to(const PortT &, Vector<int> &) const;
-+    void find_connection_vector_from(ElementT *, Vector<int> &) const;
-+    void find_connection_vector_to(ElementT *, Vector<int> &) 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<String> &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<ArchiveElement> &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<String> &, ErrorHandler *, const String &landmark);
-+    ElementT *complex_expand_element(ElementT *, const String &, Vector<String> &, 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<ElementT *> _elements;
-+    ElementT *_free_element;
-+    int _n_live_elements;
-+    Vector<int> *_new_eindex_collector;
-+
-+    Vector<ConnectionT> _conn;
-+    Vector<Pair> _first_conn;
-+    int _free_conn;
-+    
-+    StringMap _declared_type_map;
-+    Vector<ElementType> _declared_types;
-+
-+    Vector<String> _requirements;
-+
-+    StringMap _archive_map;
-+    Vector<ArchiveElement> _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<PortT> *port_expansions, const Vector<PortT> &ports, bool is_output, int which, ErrorHandler *) const;
-+    int assign_arguments(const Vector<String> &, Vector<String> *) 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<ElementT *>(_e); }
-+    ElementT *operator->() const      { return const_cast<ElementT *>(_e); }
-+    ElementT &operator*() const               { return const_cast<ElementT &>(*_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<ElementT *>(_e); }
-+    ElementT *operator->() const      { return const_cast<ElementT *>(_e); }
-+    ElementT &operator*() const               { return const_cast<ElementT &>(*_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 <click/pair.hh>
-+
-+class RouterUnparserT { public:
-+
-+    RouterUnparserT(ErrorHandler *);
-+
-+    struct Pair {
-+      ElementClassT *first;
-+      ElementClassT *second;
-+      Pair(ElementClassT *a, ElementClassT *b) : first(a), second(b) { }
-+    };
-+
-+  private:
-+    
-+    HashMap<int, int> _tuid_map;
-+    Vector<ElementClassT *> _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<Pair<ElementClassT *, ElementClassT *>, 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 <click/userutils.hh>
-+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 @@
-+<?xml version="1.0" standalone="yes"?>
-+<?xml-stylesheet type="application/xml" href="http://www.lcdf.org/click/xml/elementmap.xsl"?>
-+<?xml-stylesheet type="application/xml" href="file:///d/click/click-1.6.0-27/etc/elementmap.xsl"?>
-+<elementmap xmlns="http://www.lcdf.org/click/xml/" sourcedir="/d/click/click-1.6.0-27" src="file:///d/click/click-1.6.0-27" provides="i686 i386 i586 int64 linux linux_2_6 pcap" drivers="userlevel linuxmodule">
-+<entry name="ARPFaker" cxxclass="ARPFaker" docname="ARPFaker" headerfile="elements/ethernet/arpfaker.hh" sourcefile="elements/ethernet/arpfaker.cc" portcount="0/1" processing="h/h" flowcode="x/x" />
-+<entry name="ARPPrint" cxxclass="ARPPrint" docname="ARPPrint" headerfile="elements/ethernet/arpprint.hh" sourcefile="elements/ethernet/arpprint.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="ARPQuerier" cxxclass="ARPQuerier" docname="ARPQuerier" headerfile="elements/ethernet/arpquerier.hh" sourcefile="elements/ethernet/arpquerier.cc" portcount="2/1-2" processing="h/h" flowcode="xy/x" />
-+<entry name="ARPResponder" cxxclass="ARPResponder" docname="ARPResponder" headerfile="elements/ethernet/arpresponder.hh" sourcefile="elements/ethernet/arpresponder.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="AdaptiveRED" cxxclass="AdaptiveRED" docname="AdaptiveRED" headerfile="elements/aqm/adaptivered.hh" sourcefile="elements/aqm/adaptivered.cc" portcount="1/1-2" processing="a/ah" flowcode="x/x" requires="RED" />
-+<entry name="AddressInfo" cxxclass="AddressInfo" docname="AddressInfo" headerfile="&lt;click/standard/addressinfo.hh>" sourcefile="elements/standard/addressinfo.cc" portcount="0/0" processing="a/a" flowcode="x/x" />
-+<entry name="Align" cxxclass="Align" docname="Align" headerfile="elements/standard/align.hh" sourcefile="elements/standard/align.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="AlignmentInfo" cxxclass="AlignmentInfo" docname="AlignmentInfo" headerfile="&lt;click/standard/alignmentinfo.hh>" sourcefile="elements/standard/alignmentinfo.cc" portcount="0/0" processing="a/a" flowcode="x/x" />
-+<entry name="AverageCounter" cxxclass="AverageCounter" docname="AverageCounter" headerfile="elements/standard/averagecounter.hh" sourcefile="elements/standard/averagecounter.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="BandwidthMeter" cxxclass="BandwidthMeter" docname="BandwidthMeter" headerfile="elements/standard/bandwidthmeter.hh" sourcefile="elements/standard/bandwidthmeter.cc" portcount="1/2-" processing="h/h" flowcode="x/x" />
-+<entry name="BandwidthRatedSplitter" cxxclass="BandwidthRatedSplitter" docname="BandwidthRatedSplitter" headerfile="elements/standard/bwratedsplitter.hh" sourcefile="elements/standard/bwratedsplitter.cc" portcount="1/2" processing="h/h" flowcode="x/x" requires="RatedSplitter" />
-+<entry name="BandwidthRatedUnqueue" cxxclass="BandwidthRatedUnqueue" docname="BandwidthRatedUnqueue" headerfile="elements/standard/bwratedunqueue.hh" sourcefile="elements/standard/bwratedunqueue.cc" portcount="1/1" processing="l/h" flowcode="x/x" requires="RatedUnqueue" />
-+<entry name="BandwidthShaper" cxxclass="BandwidthShaper" docname="BandwidthShaper" headerfile="elements/standard/bandwidthshaper.hh" sourcefile="elements/standard/bandwidthshaper.cc" portcount="1/1" processing="l/l" flowcode="x/x" requires="Shaper" />
-+<entry name="BpfyFilter" cxxclass="BpfyFilter" headerfile="elements/ip/crapfilter3.hh" sourcefile="elements/ip/crapfilter3.cc" portcount="1/1-2" processing="h/h" flowcode="x/x" />
-+<entry name="Burster" cxxclass="Burster" docname="Burster" headerfile="elements/standard/burster.hh" sourcefile="elements/standard/burster.cc" portcount="1/1" processing="l/h" flowcode="x/x" />
-+<entry name="CPUQueue" cxxclass="CPUQueue" docname="CPUQueue" headerfile="elements/linuxmodule/cpuqueue.hh" sourcefile="elements/linuxmodule/cpuqueue.cc" portcount="1/1-" processing="h/l" flowcode="x/x" requires="linuxmodule" />
-+<entry name="CPUSwitch" cxxclass="CPUSwitch" docname="CPUSwitch" headerfile="elements/linuxmodule/cpuswitch.hh" sourcefile="elements/linuxmodule/cpuswitch.cc" portcount="1/1-" processing="h/h" flowcode="x/x" requires="linuxmodule" />
-+<entry name="ChangeUID" cxxclass="ChangeUID" docname="ChangeUID" headerfile="elements/userlevel/changeuid.hh" sourcefile="elements/userlevel/changeuid.cc" portcount="0/0" processing="a/a" flowcode="x/x" requires="userlevel" />
-+<entry name="ChatterSocket" cxxclass="ChatterSocket" docname="ChatterSocket" headerfile="elements/userlevel/chattersocket.hh" sourcefile="elements/userlevel/chattersocket.cc" portcount="0/0" processing="a/a" flowcode="x/x" requires="userlevel" />
-+<entry name="CheckARPHeader" cxxclass="CheckARPHeader" docname="CheckARPHeader" headerfile="elements/ethernet/checkarpheader.hh" sourcefile="elements/ethernet/checkarpheader.cc" portcount="1/1-2" processing="a/ah" flowcode="x/x" />
-+<entry name="CheckCRC32" cxxclass="CheckCRC32" docname="CheckCRC32" headerfile="elements/standard/checkcrc32.hh" sourcefile="elements/standard/checkcrc32.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="CheckICMPHeader" cxxclass="CheckICMPHeader" docname="CheckICMPHeader" headerfile="elements/icmp/checkicmpheader.hh" sourcefile="elements/icmp/checkicmpheader.cc" portcount="1/1-2" processing="a/ah" flowcode="x/x" />
-+<entry name="CheckIPHeader" cxxclass="CheckIPHeader" docname="CheckIPHeader" headerfile="elements/ip/checkipheader.hh" sourcefile="elements/ip/checkipheader.cc" portcount="1/1-2" processing="a/ah" flowcode="x/x" flags="A" methods="static_initialize static_cleanup" />
-+<entry name="CheckIPHeader2" cxxclass="CheckIPHeader2" docname="CheckIPHeader2" headerfile="elements/ip/checkipheader2.hh" sourcefile="elements/ip/checkipheader2.cc" portcount="1/1-2" processing="a/ah" flowcode="x/x" flags="A" requires="CheckIPHeader" />
-+<entry name="CheckLength" cxxclass="CheckLength" docname="CheckLength" headerfile="elements/standard/checklength.hh" sourcefile="elements/standard/checklength.cc" portcount="1/1-2" processing="a/ah" flowcode="x/x" />
-+<entry name="CheckPaint" cxxclass="CheckPaint" docname="CheckPaint" headerfile="elements/standard/checkpaint.hh" sourcefile="elements/standard/checkpaint.cc" portcount="1/1-2" processing="a/ah" flowcode="x/x" />
-+<entry name="CheckTCPHeader" cxxclass="CheckTCPHeader" docname="CheckTCPHeader" headerfile="elements/tcpudp/checktcpheader.hh" sourcefile="elements/tcpudp/checktcpheader.cc" portcount="1/1-2" processing="a/ah" flowcode="x/x" />
-+<entry name="CheckUDPHeader" cxxclass="CheckUDPHeader" docname="CheckUDPHeader" headerfile="elements/tcpudp/checkudpheader.hh" sourcefile="elements/tcpudp/checkudpheader.cc" portcount="1/1-2" processing="a/ah" flowcode="x/x" />
-+<entry name="CiscyFilter" cxxclass="CiscyFilter" headerfile="elements/ip/crapfilter2.hh" sourcefile="elements/ip/crapfilter2.cc" portcount="1/1-2" processing="h/h" flowcode="x/x" />
-+<entry name="Classifier" cxxclass="Classifier" docname="Classifier" headerfile="elements/standard/classifier.hh" sourcefile="elements/standard/classifier.cc" portcount="1/-" processing="h/h" flowcode="x/x" flags="A" requires="AlignmentInfo" />
-+<entry name="CompareBlock" cxxclass="CompareBlock" docname="CompareBlock" headerfile="elements/standard/compblock.hh" sourcefile="elements/standard/compblock.cc" portcount="1/2" processing="a/a" flowcode="x/x" />
-+<entry name="ControlSocket" cxxclass="ControlSocket" docname="ControlSocket" headerfile="elements/userlevel/controlsocket.hh" sourcefile="elements/userlevel/controlsocket.cc" portcount="0/0" processing="a/a" flowcode="x/x" requires="userlevel" />
-+<entry name="Counter" cxxclass="Counter" docname="Counter" headerfile="elements/standard/counter.hh" sourcefile="elements/standard/counter.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="CrapFilter" cxxclass="CrapFilter" headerfile="elements/ip/crapfilter.hh" sourcefile="elements/ip/crapfilter.cc" portcount="1/1-2" processing="h/h" flowcode="x/x" />
-+<entry name="CycleCountAccum" cxxclass="CycleCountAccum" docname="CycleCountAccum" headerfile="elements/linuxmodule/cyclecountaccum.hh" sourcefile="elements/linuxmodule/cyclecountaccum.cc" portcount="1/1" processing="a/a" flowcode="x/x" requires="linuxmodule int64" />
-+<entry name="DRRSched" cxxclass="DRRSched" docname="DRRSched" headerfile="elements/standard/drr.hh" sourcefile="elements/standard/drr.cc" portcount="-/1" processing="l/l" flowcode="x/x" />
-+<entry name="DecIPTTL" cxxclass="DecIPTTL" docname="DecIPTTL" headerfile="elements/ip/decipttl.hh" sourcefile="elements/ip/decipttl.cc" portcount="1/1-2" processing="a/ah" flowcode="x/x" />
-+<entry name="DelayShaper" cxxclass="DelayShaper" docname="DelayShaper" headerfile="elements/standard/delayshaper.hh" sourcefile="elements/standard/delayshaper.cc" portcount="1/1" processing="l/l" flowcode="x/x" />
-+<entry name="DelayUnqueue" cxxclass="DelayUnqueue" docname="DelayUnqueue" headerfile="elements/standard/delayunqueue.hh" sourcefile="elements/standard/delayunqueue.cc" portcount="1/1" processing="l/h" flowcode="x/x" />
-+<entry name="DevirtualizeInfo" cxxclass="DevirtualizeInfo" headerfile="elements/standard/devirtualizeinfo.hh" sourcefile="elements/standard/devirtualizeinfo.cc" portcount="0/0" processing="a/a" flowcode="x/x" />
-+<entry name="DirectIPLookup" cxxclass="DirectIPLookup" docname="DirectIPLookup" headerfile="elements/ip/directiplookup.hh" sourcefile="elements/ip/directiplookup.cc" portcount="1/-" processing="h/h" requires="IPRouteTable userlevel|bsdmodule" />
-+<entry name="Discard" cxxclass="Discard" docname="Discard" headerfile="elements/standard/discard.hh" sourcefile="elements/standard/discard.cc" portcount="1/0" processing="a/a" flowcode="x/x" />
-+<entry name="DiscardNoFree" cxxclass="DiscardNoFree" docname="DiscardNoFree" headerfile="elements/standard/discardnofree.hh" sourcefile="elements/standard/discardnofree.cc" portcount="1/0" processing="a/a" flowcode="x/x" />
-+<entry name="DriverManager" cxxclass="DriverManager" docname="DriverManager" headerfile="elements/standard/drivermanager.hh" sourcefile="elements/standard/drivermanager.cc" portcount="0/0" processing="a/a" flowcode="x/x" requires="Script" />
-+<entry name="DropBroadcasts" cxxclass="DropBroadcasts" docname="DropBroadcasts" headerfile="elements/standard/dropbroadcasts.hh" sourcefile="elements/standard/dropbroadcasts.cc" portcount="1/1-2" processing="a/ah" flowcode="x/x" />
-+<entry name="DynamicUDPIPEncap" cxxclass="DynamicUDPIPEncap" docname="DynamicUDPIPEncap" headerfile="elements/tcpudp/dynudpipencap.hh" sourcefile="elements/tcpudp/dynudpipencap.cc" portcount="1/1" processing="a/a" flowcode="x/x" flags="A" />
-+<entry name="EnsureEther" cxxclass="EnsureEther" docname="EnsureEther" headerfile="elements/ethernet/ensureether.hh" sourcefile="elements/ethernet/ensureether.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="Error" cxxclass="ErrorElement" docname="Error" headerfile="&lt;click/standard/errorelement.hh>" sourcefile="elements/standard/errorelement.cc" portcount="-/-" processing="a/a" flowcode="x/y" />
-+<entry name="EtherEncap" cxxclass="EtherEncap" docname="EtherEncap" headerfile="elements/ethernet/etherencap.hh" sourcefile="elements/ethernet/etherencap.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="EtherMirror" cxxclass="EtherMirror" docname="EtherMirror" headerfile="elements/ethernet/ethermirror.hh" sourcefile="elements/ethernet/ethermirror.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="FTPPortMapper" cxxclass="FTPPortMapper" docname="FTPPortMapper" headerfile="elements/app/ftpportmapper.hh" sourcefile="elements/app/ftpportmapper.cc" portcount="1/1" processing="a/a" flowcode="x/x" requires="TCPRewriter" />
-+<entry name="FastTCPFlows" cxxclass="FastTCPFlows" docname="FastTCPFlows" headerfile="elements/linuxmodule/fasttcpflows.hh" sourcefile="elements/linuxmodule/fasttcpflows.cc" portcount="0/1" processing="l/l" flowcode="x/x" requires="linuxmodule" />
-+<entry name="FastUDPFlows" cxxclass="FastUDPFlows" docname="FastUDPFlows" headerfile="elements/linuxmodule/fastudpflows.hh" sourcefile="elements/linuxmodule/fastudpflows.cc" portcount="0/1" processing="l/l" flowcode="x/x" requires="linuxmodule" />
-+<entry name="FastUDPSource" cxxclass="FastUDPSource" docname="FastUDPSource" headerfile="elements/linuxmodule/fastudpsrc.hh" sourcefile="elements/linuxmodule/fastudpsrc.cc" portcount="0/1" processing="l/l" flowcode="x/x" requires="linuxmodule" />
-+<entry name="FixIPSrc" cxxclass="FixIPSrc" docname="FixIPSrc" headerfile="elements/ip/fixipsrc.hh" sourcefile="elements/ip/fixipsrc.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="FromDevice" cxxclass="FromDevice" docname="FromDevice" headerfile="elements/linuxmodule/fromdevice.hh" sourcefile="elements/linuxmodule/fromdevice.cc" portcount="0/1" processing="h/h" methods="static_initialize static_cleanup" requires="AnyDevice linuxmodule" />
-+<entry name="FromDevice" cxxclass="FromDevice" docname="FromDevice.u" headerfile="elements/userlevel/fromdevice.hh" sourcefile="elements/userlevel/fromdevice.cc" portcount="0/1" processing="h/h" flowcode="x/x" requires="userlevel FakePcap" />
-+<entry name="FromDump" cxxclass="FromDump" docname="FromDump" headerfile="elements/userlevel/fromdump.hh" sourcefile="elements/userlevel/fromdump.cc" portcount="0/1-2" processing="a/ah" flowcode="x/x" requires="userlevel|ns FakePcap FromFile" />
-+<entry name="FromHost" cxxclass="FromHost" docname="FromHost" headerfile="elements/linuxmodule/fromhost.hh" sourcefile="elements/linuxmodule/fromhost.cc" portcount="0/1" processing="h/h" methods="static_initialize" requires="AnyDevice linuxmodule" />
-+<entry name="FromHost" cxxclass="FromHost" docname="FromHost.u" headerfile="elements/userlevel/fromhost.hh" sourcefile="elements/userlevel/fromhost.cc" portcount="0/1" processing="h/h" flowcode="x/x" requires="userlevel linux" />
-+<entry name="FromRawSocket" cxxclass="FromRawSocket" docname="FromRawSocket" headerfile="elements/userlevel/fromrawsocket.hh" sourcefile="elements/userlevel/fromrawsocket.cc" portcount="0-1/0-1" processing="h/h" flowcode="x/y" requires="RawSocket" />
-+<entry name="FromSocket" cxxclass="FromSocket" docname="FromSocket" headerfile="elements/userlevel/fromsocket.hh" sourcefile="elements/userlevel/fromsocket.cc" portcount="0-1/0-1" processing="h/h" flowcode="x/y" requires="Socket" />
-+<entry name="FrontDropQueue" cxxclass="FrontDropQueue" docname="FrontDropQueue" headerfile="elements/standard/frontdropqueue.hh" sourcefile="elements/standard/frontdropqueue.cc" portcount="1/1" processing="h/l" flowcode="x/x" requires="NotifierQueue" />
-+<entry name="FullNoteQueue" cxxclass="FullNoteQueue" docname="Queue" headerfile="elements/standard/fullnotequeue.hh" sourcefile="elements/standard/fullnotequeue.cc" portcount="1/1" processing="h/l" flowcode="x/x" requires="NotifierQueue" />
-+<entry name="GetIPAddress" cxxclass="GetIPAddress" docname="GetIPAddress" headerfile="elements/ip/getipaddress.hh" sourcefile="elements/ip/getipaddress.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="HashSwitch" cxxclass="HashSwitch" docname="HashSwitch" headerfile="elements/standard/hashswitch.hh" sourcefile="elements/standard/hashswitch.cc" portcount="1/1-" processing="h/h" flowcode="x/x" />
-+<entry name="HostEtherFilter" cxxclass="HostEtherFilter" docname="HostEtherFilter" headerfile="elements/ethernet/hostetherfilter.hh" sourcefile="elements/ethernet/hostetherfilter.cc" portcount="1/1-2" processing="a/ah" flowcode="x/x" />
-+<entry name="ICMPError" cxxclass="ICMPError" docname="ICMPError" headerfile="elements/icmp/icmperror.hh" sourcefile="elements/icmp/icmperror.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="ICMPPingEncap" cxxclass="ICMPPingEncap" docname="ICMPPingEncap" headerfile="elements/icmp/icmppingencap.hh" sourcefile="elements/icmp/icmppingencap.cc" portcount="1/1" processing="a/a" flowcode="x/x" flags="A" />
-+<entry name="ICMPPingResponder" cxxclass="ICMPPingResponder" docname="ICMPPingResponder" headerfile="elements/icmp/icmppingresponder.hh" sourcefile="elements/icmp/icmppingresponder.cc" portcount="1/1-2" processing="a/ah" flowcode="x/x" />
-+<entry name="ICMPPingRewriter" cxxclass="ICMPPingRewriter" docname="ICMPPingRewriter" headerfile="elements/icmp/icmppingrewriter.hh" sourcefile="elements/icmp/icmppingrewriter.cc" portcount="1-2/1-2" processing="h/h" flowcode="x/x" />
-+<entry name="ICMPPingSource" cxxclass="ICMPPingSource" docname="ICMPPingSource" headerfile="elements/icmp/icmpsendpings.hh" sourcefile="elements/icmp/icmpsendpings.cc" portcount="0-1/1" processing="h/a" flowcode="x/x" />
-+<entry name="ICMPRewriter" cxxclass="ICMPRewriter" docname="ICMPRewriter" headerfile="elements/icmp/icmprewriter.hh" sourcefile="elements/icmp/icmprewriter.cc" portcount="1/1-2" processing="a/a" flowcode="x/x" requires="IPRw ICMPPingRewriter" />
-+<entry name="ICMPSendPings" cxxclass="ICMPPingSource" docname="ICMPPingSource" headerfile="elements/icmp/icmpsendpings.hh" sourcefile="elements/icmp/icmpsendpings.cc" portcount="0-1/1" processing="h/a" flowcode="x/x" />
-+<entry name="IPAddrPairRewriter" cxxclass="IPAddrPairRewriter" docname="IPAddrPairRewriter" headerfile="elements/ip/ipaddrpairrewriter.hh" sourcefile="elements/ip/ipaddrpairrewriter.cc" portcount="1-/1-256" processing="h/h" requires="IPRw IPRewriterPatterns" />
-+<entry name="IPAddrRewriter" cxxclass="IPAddrRewriter" docname="IPAddrRewriter" headerfile="elements/ip/ipaddrrewriter.hh" sourcefile="elements/ip/ipaddrrewriter.cc" portcount="1-/1-256" processing="h/h" requires="IPRw IPRewriterPatterns" />
-+<entry name="IPClassifier" cxxclass="IPClassifier" docname="IPClassifier" headerfile="elements/ip/ipclassifier.hh" sourcefile="elements/ip/ipclassifier.cc" portcount="1/-" processing="h/h" flowcode="x/x" flags="" requires="IPFilter" />
-+<entry name="IPEncap" cxxclass="IPEncap" docname="IPEncap" headerfile="elements/ip/ipencap.hh" sourcefile="elements/ip/ipencap.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="IPFieldInfo" cxxclass="IPFieldInfo" headerfile="elements/ip/ipfieldinfo.hh" sourcefile="elements/ip/ipfieldinfo.cc" portcount="0/0" processing="a/a" flowcode="x/x" methods="static_initialize static_cleanup" />
-+<entry name="IPFilter" cxxclass="IPFilter" docname="IPFilter" headerfile="elements/ip/ipfilter.hh" sourcefile="elements/ip/ipfilter.cc" portcount="1/-" processing="h/h" flowcode="x/x" flags="" methods="static_initialize static_cleanup" requires="Classifier" />
-+<entry name="IPFragmenter" cxxclass="IPFragmenter" docname="IPFragmenter" headerfile="elements/ip/ipfragmenter.hh" sourcefile="elements/ip/ipfragmenter.cc" portcount="1/1-2" processing="h/h" flowcode="x/x" />
-+<entry name="IPGWOptions" cxxclass="IPGWOptions" docname="IPGWOptions" headerfile="elements/ip/ipgwoptions.hh" sourcefile="elements/ip/ipgwoptions.cc" portcount="1/1-2" processing="a/ah" flowcode="x/x" />
-+<entry name="IPInputCombo" cxxclass="IPInputCombo" docname="IPInputCombo" headerfile="elements/ip/ipinputcombo.hh" sourcefile="elements/ip/ipinputcombo.cc" portcount="1/1" processing="a/a" flowcode="x/x" flags="A" requires="CheckIPHeader" />
-+<entry name="IPMirror" cxxclass="IPMirror" docname="IPMirror" headerfile="elements/ip/ipmirror.hh" sourcefile="elements/ip/ipmirror.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="IPNameInfo" cxxclass="IPNameInfo" docname="IPNameInfo" headerfile="elements/ip/ipnameinfo.hh" sourcefile="elements/ip/ipnameinfo.cc" portcount="0/0" processing="a/a" flowcode="x/x" methods="static_initialize static_cleanup" />
-+<entry name="IPOutputCombo" cxxclass="IPOutputCombo" docname="IPOutputCombo" headerfile="elements/ip/ipoutputcombo.hh" sourcefile="elements/ip/ipoutputcombo.cc" portcount="1/5" processing="h/h" flowcode="x/x" />
-+<entry name="IPPrint" cxxclass="IPPrint" docname="IPPrint" headerfile="elements/ip/ipprint.hh" sourcefile="elements/ip/ipprint.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="IPRateMonitor" cxxclass="IPRateMonitor" docname="IPRateMonitor" headerfile="elements/ip/ipratemon.hh" sourcefile="elements/ip/ipratemon.cc" portcount="1-2/1-2" processing="a/a" flowcode="x/x" requires="userlevel" />
-+<entry name="IPReassembler" cxxclass="IPReassembler" docname="IPReassembler" headerfile="elements/ip/ipreassembler.hh" sourcefile="elements/ip/ipreassembler.cc" portcount="1/1-2" processing="a/ah" flowcode="x/x" />
-+<entry name="IPRewriter" cxxclass="IPRewriter" docname="IPRewriter" headerfile="elements/tcpudp/iprewriter.hh" sourcefile="elements/tcpudp/iprewriter.cc" portcount="1-/1-256" processing="h/h" requires="IPRw IPRewriterPatterns" />
-+<entry name="IPRewriterPatterns" cxxclass="IPRewriterPatterns" docname="IPRewriterPatterns" headerfile="elements/ip/iprwpatterns.hh" sourcefile="elements/ip/iprwpatterns.cc" portcount="0/0" processing="a/a" flowcode="x/x" requires="IPRw" />
-+<entry name="Idle" cxxclass="Idle" docname="Idle" headerfile="elements/standard/idle.hh" sourcefile="elements/standard/idle.cc" portcount="-/-" processing="a/a" flowcode="x/y" flags="S0" />
-+<entry name="InfiniteSource" cxxclass="InfiniteSource" docname="InfiniteSource" headerfile="elements/standard/infinitesource.hh" sourcefile="elements/standard/infinitesource.cc" portcount="0/1" processing="a/a" flowcode="x/x" flags="S1" />
-+<entry name="KernelFilter" cxxclass="KernelFilter" docname="KernelFilter" headerfile="elements/userlevel/kernelfilter.hh" sourcefile="elements/userlevel/kernelfilter.cc" portcount="0/0" processing="a/a" flowcode="x/x" requires="userlevel" />
-+<entry name="KernelHandlerProxy" cxxclass="KernelHandlerProxy" docname="KernelHandlerProxy" headerfile="elements/userlevel/khandlerproxy.hh" sourcefile="elements/userlevel/khandlerproxy.cc" requires="userlevel HandlerProxy" />
-+<entry name="KernelTap" cxxclass="KernelTap" docname="KernelTap" headerfile="elements/userlevel/kerneltap.hh" sourcefile="elements/userlevel/kerneltap.cc" portcount="0-1/1-2" processing="a/h" flowcode="x/y" flags="S3" requires="userlevel KernelTun" />
-+<entry name="KernelTun" cxxclass="KernelTun" docname="KernelTun" headerfile="elements/userlevel/kerneltun.hh" sourcefile="elements/userlevel/kerneltun.cc" portcount="0-1/1-2" processing="a/h" flowcode="x/y" flags="S3" requires="userlevel FakePcap" />
-+<entry name="LinearIPLookup" cxxclass="LinearIPLookup" docname="LinearIPLookup" headerfile="elements/ip/lineariplookup.hh" sourcefile="elements/ip/lineariplookup.cc" portcount="1/-" processing="h/h" requires="IPRouteTable" />
-+<entry name="LinkUnqueue" cxxclass="LinkUnqueue" docname="LinkUnqueue" headerfile="elements/standard/linkunqueue.hh" sourcefile="elements/standard/linkunqueue.cc" portcount="1/1" processing="l/h" flowcode="x/x" />
-+<entry name="LinuxIPLookup" cxxclass="LinuxIPLookup" docname="LinuxIPLookup" headerfile="elements/ip/lookupiproutelinux.hh" sourcefile="elements/ip/lookupiproutelinux.cc" portcount="1/1-" processing="a/a" flowcode="x/x" requires="userlevel" />
-+<entry name="LookupIPRouteMP" cxxclass="LookupIPRouteMP" docname="LookupIPRouteMP" headerfile="elements/ip/lookupiproutemp.hh" sourcefile="elements/ip/lookupiproutemp.cc" portcount="1/-" processing="a/a" flowcode="x/x" requires="linuxmodule" />
-+<entry name="MSQueue" cxxclass="MSQueue" docname="MSQueue" headerfile="elements/standard/msqueue.hh" sourcefile="elements/standard/msqueue.cc" portcount="1/1" processing="h/l" flowcode="x/x" />
-+<entry name="MarkIPCE" cxxclass="MarkIPCE" docname="MarkIPCE" headerfile="elements/ip/markipce.hh" sourcefile="elements/ip/markipce.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="MarkIPHeader" cxxclass="MarkIPHeader" docname="MarkIPHeader" headerfile="elements/ip/markipheader.hh" sourcefile="elements/ip/markipheader.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="Message" cxxclass="MessageElement" docname="Message" headerfile="elements/standard/messageelement.hh" sourcefile="elements/standard/messageelement.cc" portcount="0/0" processing="a/a" flowcode="x/x" />
-+<entry name="Meter" cxxclass="Meter" docname="Meter" headerfile="elements/standard/meter.hh" sourcefile="elements/standard/meter.cc" portcount="1/2-" processing="h/h" flowcode="x/x" requires="BandwidthMeter" />
-+<entry name="MixedQueue" cxxclass="MixedQueue" docname="MixedQueue" headerfile="elements/standard/mixedqueue.hh" sourcefile="elements/standard/mixedqueue.cc" portcount="2/1" processing="h/l" flowcode="x/x" requires="NotifierQueue" />
-+<entry name="NotifierQueue" cxxclass="NotifierQueue" docname="NotifierQueue" headerfile="elements/standard/notifierqueue.hh" sourcefile="elements/standard/notifierqueue.cc" portcount="1/1" processing="h/l" flowcode="x/x" requires="SimpleQueue" />
-+<entry name="Null" cxxclass="NullElement" docname="Null" headerfile="elements/standard/nullelement.hh" sourcefile="elements/standard/nullelement.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="Null1" cxxclass="Null1" docname="Null1" headerfile="elements/standard/nulls.hh" sourcefile="elements/standard/nulls.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="Null2" cxxclass="Null2" headerfile="elements/standard/nulls.hh" sourcefile="elements/standard/nulls.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="Null3" cxxclass="Null3" headerfile="elements/standard/nulls.hh" sourcefile="elements/standard/nulls.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="Null4" cxxclass="Null4" headerfile="elements/standard/nulls.hh" sourcefile="elements/standard/nulls.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="Null5" cxxclass="Null5" headerfile="elements/standard/nulls.hh" sourcefile="elements/standard/nulls.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="Null6" cxxclass="Null6" headerfile="elements/standard/nulls.hh" sourcefile="elements/standard/nulls.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="Null7" cxxclass="Null7" headerfile="elements/standard/nulls.hh" sourcefile="elements/standard/nulls.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="Null8" cxxclass="Null8" headerfile="elements/standard/nulls.hh" sourcefile="elements/standard/nulls.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="Paint" cxxclass="Paint" docname="Paint" headerfile="elements/standard/paint.hh" sourcefile="elements/standard/paint.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="PaintSwitch" cxxclass="PaintSwitch" docname="PaintSwitch" headerfile="elements/standard/paintswitch.hh" sourcefile="elements/standard/paintswitch.cc" portcount="1/-" processing="h/h" flowcode="x/x" />
-+<entry name="PaintTee" cxxclass="PaintTee" docname="PaintTee" headerfile="elements/standard/painttee.hh" sourcefile="elements/standard/painttee.cc" portcount="1/2" processing="a/ah" flowcode="x/x" />
-+<entry name="PerfCountAccum" cxxclass="PerfCountAccum" docname="PerfCountAccum" headerfile="elements/linuxmodule/perfcountaccum.hh" sourcefile="elements/linuxmodule/perfcountaccum.cc" portcount="1/1" processing="a/a" requires="linuxmodule i586 int64 PerfCountUser" />
-+<entry name="PerfCountInfo" cxxclass="PerfCountInfo" docname="PerfCountInfo" headerfile="elements/linuxmodule/perfcountinfo.hh" sourcefile="elements/linuxmodule/perfcountinfo.cc" requires="linuxmodule PerfCountUser" />
-+<entry name="PokeHandlers" cxxclass="PokeHandlers" docname="PokeHandlers" headerfile="elements/standard/pokehandlers.hh" sourcefile="elements/standard/pokehandlers.cc" portcount="0/0" processing="a/a" flowcode="x/x" />
-+<entry name="PollDevice" cxxclass="PollDevice" docname="PollDevice" headerfile="elements/linuxmodule/polldevice.hh" sourcefile="elements/linuxmodule/polldevice.cc" portcount="0/1" processing="h/h" methods="static_initialize static_cleanup" requires="AnyDevice linuxmodule" />
-+<entry name="PortInfo" cxxclass="PortInfo" docname="PortInfo" headerfile="&lt;click/standard/portinfo.hh>" sourcefile="elements/standard/portinfo.cc" portcount="0/0" processing="a/a" flowcode="x/x" />
-+<entry name="Print" cxxclass="Print" docname="Print" headerfile="elements/standard/print.hh" sourcefile="elements/standard/print.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="PrioSched" cxxclass="PrioSched" docname="PrioSched" headerfile="elements/standard/priosched.hh" sourcefile="elements/standard/priosched.cc" portcount="-/1" processing="l/l" flowcode="x/x" />
-+<entry name="ProgressBar" cxxclass="ProgressBar" docname="ProgressBar" headerfile="elements/userlevel/progressbar.hh" sourcefile="elements/userlevel/progressbar.cc" portcount="0/0" processing="a/a" flowcode="x/x" requires="userlevel" />
-+<entry name="PullNull" cxxclass="PullNullElement" headerfile="elements/standard/nullelement.hh" sourcefile="elements/standard/nullelement.cc" portcount="1/1" processing="l/l" flowcode="x/x" />
-+<entry name="PullSwitch" cxxclass="PullSwitch" docname="PullSwitch" headerfile="elements/standard/pullswitch.hh" sourcefile="elements/standard/pullswitch.cc" portcount="-/1" processing="l/l" flowcode="x/x" />
-+<entry name="PullTee" cxxclass="PullTee" docname="PullTee" headerfile="elements/standard/tee.hh" sourcefile="elements/standard/tee.cc" portcount="1/1-" processing="l/lh" flowcode="x/x" />
-+<entry name="PushNull" cxxclass="PushNullElement" headerfile="elements/standard/nullelement.hh" sourcefile="elements/standard/nullelement.cc" portcount="1/1" processing="h/h" flowcode="x/x" />
-+<entry name="Queue" cxxclass="FullNoteQueue" docname="Queue" headerfile="elements/standard/fullnotequeue.hh" sourcefile="elements/standard/fullnotequeue.cc" portcount="1/1" processing="h/l" flowcode="x/x" requires="NotifierQueue" />
-+<entry name="QuitWatcher" cxxclass="QuitWatcher" docname="QuitWatcher" headerfile="elements/standard/quitwatcher.hh" sourcefile="elements/standard/quitwatcher.cc" portcount="0/0" processing="a/a" flowcode="x/x" />
-+<entry name="RED" cxxclass="RED" docname="RED" headerfile="elements/aqm/red.hh" sourcefile="elements/aqm/red.cc" portcount="1/1-2" processing="a/ah" flowcode="x/x" requires="int64" />
-+<entry name="RFC2507Comp" cxxclass="RFC2507c" docname="RFC2507Comp" headerfile="elements/ip/rfc2507c.hh" sourcefile="elements/ip/rfc2507c.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="RFC2507Decomp" cxxclass="RFC2507d" docname="RFC2507Decomp" headerfile="elements/ip/rfc2507d.hh" sourcefile="elements/ip/rfc2507d.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="RIPSend" cxxclass="RIPSend" docname="RIPSend" headerfile="elements/ip/ripsend.hh" sourcefile="elements/ip/ripsend.cc" portcount="0/1" processing="h/h" flowcode="x/x" />
-+<entry name="RadixIPLookup" cxxclass="RadixIPLookup" docname="RadixIPLookup" headerfile="elements/ip/radixiplookup.hh" sourcefile="elements/ip/radixiplookup.cc" portcount="1/-" processing="h/h" requires="IPRouteTable" />
-+<entry name="RandomBitErrors" cxxclass="RandomBitErrors" docname="RandomBitErrors" headerfile="elements/standard/randomerror.hh" sourcefile="elements/standard/randomerror.cc" portcount="1/1" processing="a/a" flowcode="x/x" requires="int64" />
-+<entry name="RandomSample" cxxclass="RandomSample" docname="RandomSample" headerfile="elements/standard/randomsample.hh" sourcefile="elements/standard/randomsample.cc" portcount="1/1-2" processing="a/ah" flowcode="x/x" />
-+<entry name="RandomSource" cxxclass="RandomSource" docname="RandomSource" headerfile="elements/standard/randomsource.hh" sourcefile="elements/standard/randomsource.cc" portcount="0/1" processing="a/a" flowcode="x/x" />
-+<entry name="RandomSwitch" cxxclass="RandomSwitch" docname="RandomSwitch" headerfile="elements/standard/randomswitch.hh" sourcefile="elements/standard/randomswitch.cc" portcount="1/1-" processing="h/h" flowcode="x/x" />
-+<entry name="RangeIPLookup" cxxclass="RangeIPLookup" docname="RangeIPLookup" headerfile="elements/ip/rangeiplookup.hh" sourcefile="elements/ip/rangeiplookup.cc" portcount="1/-" processing="h/h" requires="DirectIPLookup" />
-+<entry name="RatedSource" cxxclass="RatedSource" docname="RatedSource" headerfile="elements/standard/ratedsource.hh" sourcefile="elements/standard/ratedsource.cc" portcount="0/1" processing="a/a" flowcode="x/x" />
-+<entry name="RatedSplitter" cxxclass="RatedSplitter" docname="RatedSplitter" headerfile="elements/standard/ratedsplitter.hh" sourcefile="elements/standard/ratedsplitter.cc" portcount="1/2" processing="h/h" flowcode="x/x" />
-+<entry name="RatedUnqueue" cxxclass="RatedUnqueue" docname="RatedUnqueue" headerfile="elements/standard/ratedunqueue.hh" sourcefile="elements/standard/ratedunqueue.cc" portcount="1/1" processing="l/h" flowcode="x/x" />
-+<entry name="RawSocket" cxxclass="RawSocket" docname="RawSocket" headerfile="elements/userlevel/rawsocket.hh" sourcefile="elements/userlevel/rawsocket.cc" portcount="0-1/0-1" processing="l/h" flowcode="x/y" requires="userlevel linux" />
-+<entry name="RoundRobinIPMapper" cxxclass="RoundRobinIPMapper" docname="RoundRobinIPMapper" headerfile="elements/ip/rripmapper.hh" sourcefile="elements/ip/rripmapper.cc" portcount="0/0" processing="a/a" flowcode="x/x" requires="IPRw" />
-+<entry name="RoundRobinSched" cxxclass="RRSched" docname="RoundRobinSched" headerfile="elements/standard/rrsched.hh" sourcefile="elements/standard/rrsched.cc" portcount="-/1" processing="l/l" flowcode="x/x" />
-+<entry name="RoundRobinSwitch" cxxclass="RoundRobinSwitch" docname="RoundRobinSwitch" headerfile="elements/standard/rrswitch.hh" sourcefile="elements/standard/rrswitch.cc" portcount="1/1-" processing="h/h" flowcode="x/x" />
-+<entry name="RoundTripCycleCount" cxxclass="RTCycles" docname="RoundTripCycleCount" headerfile="elements/linuxmodule/rtcycles.hh" sourcefile="elements/linuxmodule/rtcycles.cc" portcount="1/1" processing="a/a" flowcode="x/x" requires="linuxmodule int64" />
-+<entry name="ScheduleInfo" cxxclass="ScheduleInfo" docname="ScheduleInfo" headerfile="&lt;click/standard/scheduleinfo.hh>" sourcefile="elements/standard/scheduleinfo.cc" portcount="0/0" processing="a/a" flowcode="x/x" />
-+<entry name="ScheduleLinux" cxxclass="ScheduleLinux" docname="ScheduleLinux" headerfile="elements/linuxmodule/schedulelinux.hh" sourcefile="elements/linuxmodule/schedulelinux.cc" portcount="0/0" processing="a/a" flowcode="x/x" requires="linuxmodule" />
-+<entry name="Script" cxxclass="Script" docname="Script" headerfile="elements/standard/script.hh" sourcefile="elements/standard/script.cc" portcount="0/0" processing="a/a" flowcode="x/x" methods="static_initialize static_cleanup" />
-+<entry name="SetAnnoByte" cxxclass="SetAnnoByte" docname="SetAnnoByte" headerfile="elements/standard/setannobyte.hh" sourcefile="elements/standard/setannobyte.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="SetCRC32" cxxclass="SetCRC32" docname="SetCRC32" headerfile="elements/standard/setcrc32.hh" sourcefile="elements/standard/setcrc32.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="SetCycleCount" cxxclass="SetCycleCount" docname="SetCycleCount" headerfile="elements/linuxmodule/setcyclecount.hh" sourcefile="elements/linuxmodule/setcyclecount.cc" portcount="1/1" processing="a/a" flowcode="x/x" requires="linuxmodule int64" />
-+<entry name="SetIPAddress" cxxclass="SetIPAddress" docname="SetIPAddress" headerfile="elements/ip/setipaddress.hh" sourcefile="elements/ip/setipaddress.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="SetIPChecksum" cxxclass="SetIPChecksum" docname="SetIPChecksum" headerfile="elements/ip/setipchecksum.hh" sourcefile="elements/ip/setipchecksum.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="SetIPDSCP" cxxclass="SetIPDSCP" docname="SetIPDSCP" headerfile="elements/ip/setipdscp.hh" sourcefile="elements/ip/setipdscp.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="SetPacketType" cxxclass="SetPacketType" docname="SetPacketType" headerfile="elements/standard/setpackettype.hh" sourcefile="elements/standard/setpackettype.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="SetPerfCount" cxxclass="SetPerfCount" docname="SetPerfCount" headerfile="elements/linuxmodule/setperfcount.hh" sourcefile="elements/linuxmodule/setperfcount.cc" portcount="1/1" processing="a/a" requires="linuxmodule i586 int64 PerfCountUser" />
-+<entry name="SetRandIPAddress" cxxclass="SetRandIPAddress" docname="SetRandIPAddress" headerfile="elements/ip/setrandipaddress.hh" sourcefile="elements/ip/setrandipaddress.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="SetTCPChecksum" cxxclass="SetTCPChecksum" docname="SetTCPChecksum" headerfile="elements/tcpudp/settcpchecksum.hh" sourcefile="elements/tcpudp/settcpchecksum.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="SetTimestamp" cxxclass="SetTimestamp" docname="SetTimestamp" headerfile="elements/standard/settimestamp.hh" sourcefile="elements/standard/settimestamp.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="SetUDPChecksum" cxxclass="SetUDPChecksum" docname="SetUDPChecksum" headerfile="elements/tcpudp/setudpchecksum.hh" sourcefile="elements/tcpudp/setudpchecksum.cc" portcount="1/1-2" processing="a/ah" flowcode="x/x" />
-+<entry name="Shaper" cxxclass="Shaper" docname="Shaper" headerfile="elements/standard/shaper.hh" sourcefile="elements/standard/shaper.cc" portcount="1/1" processing="l/l" flowcode="x/x" />
-+<entry name="SimpleQueue" cxxclass="SimpleQueue" docname="SimpleQueue" headerfile="elements/standard/simplequeue.hh" sourcefile="elements/standard/simplequeue.cc" portcount="1/1" processing="h/l" flowcode="x/x" provides="Storage" />
-+<entry name="Socket" cxxclass="Socket" docname="Socket" headerfile="elements/userlevel/socket.hh" sourcefile="elements/userlevel/socket.cc" portcount="0-1/0-1" processing="a/h" flowcode="x/y" requires="userlevel IPRouteTable" />
-+<entry name="SortedIPLookup" cxxclass="SortedIPLookup" docname="SortedIPLookup" headerfile="elements/ip/sortediplookup.hh" sourcefile="elements/ip/sortediplookup.cc" portcount="1/-" processing="h/h" requires="LinearIPLookup" />
-+<entry name="SourceIPHashMapper" cxxclass="SourceIPHashMapper" docname="SourceIPHashMapper" headerfile="elements/ip/siphmapper.hh" sourcefile="elements/ip/siphmapper.cc" portcount="0/0" processing="a/a" flowcode="x/x" requires="IPRw" />
-+<entry name="SpinlockAcquire" cxxclass="SpinlockAcquire" docname="SpinlockAcquire" headerfile="elements/standard/spinlockacquire.hh" sourcefile="elements/standard/spinlockacquire.cc" portcount="-/-" processing="a/a" flowcode="x/x" />
-+<entry name="SpinlockInfo" cxxclass="SpinlockInfo" docname="SpinlockInfo" headerfile="elements/standard/spinlockinfo.hh" sourcefile="elements/standard/spinlockinfo.cc" portcount="0/0" processing="a/a" flowcode="x/x" />
-+<entry name="SpinlockRelease" cxxclass="SpinlockRelease" docname="SpinlockRelease" headerfile="elements/standard/spinlockrelease.hh" sourcefile="elements/standard/spinlockrelease.cc" portcount="-/-" processing="a/a" flowcode="x/x" />
-+<entry name="StaticIPLookup" cxxclass="StaticIPLookup" docname="StaticIPLookup" headerfile="elements/ip/lookupiproute.hh" sourcefile="elements/ip/lookupiproute.cc" portcount="1/-" processing="h/h" requires="LinearIPLookup" />
-+<entry name="StaticPullSwitch" cxxclass="StaticPullSwitch" docname="StaticPullSwitch" headerfile="elements/standard/staticpullswitch.hh" sourcefile="elements/standard/staticpullswitch.cc" portcount="-/1" processing="l/l" flowcode="x/x" />
-+<entry name="StaticSwitch" cxxclass="StaticSwitch" docname="StaticSwitch" headerfile="elements/standard/staticswitch.hh" sourcefile="elements/standard/staticswitch.cc" portcount="1/-" processing="h/h" flowcode="x/x" />
-+<entry name="StaticThreadSched" cxxclass="StaticThreadSched" docname="StaticThreadSched" headerfile="elements/linuxmodule/staticthreadsched.hh" sourcefile="elements/linuxmodule/staticthreadsched.cc" portcount="0/0" processing="a/a" flowcode="x/x" requires="linuxmodule" />
-+<entry name="StoreData" cxxclass="StoreData" docname="StoreData" headerfile="elements/standard/storedata.hh" sourcefile="elements/standard/storedata.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="StoreIPAddress" cxxclass="StoreIPAddress" docname="StoreIPAddress" headerfile="elements/ip/storeipaddress.hh" sourcefile="elements/ip/storeipaddress.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="StrideSched" cxxclass="StrideSched" docname="StrideSched" headerfile="elements/standard/stridesched.hh" sourcefile="elements/standard/stridesched.cc" portcount="1-/1" processing="l/l" flowcode="x/x" />
-+<entry name="StrideSwitch" cxxclass="StrideSwitch" docname="StrideSwitch" headerfile="elements/standard/strideswitch.hh" sourcefile="elements/standard/strideswitch.cc" portcount="1/1-" processing="h/h" flowcode="x/x" requires="StrideSched" />
-+<entry name="Strip" cxxclass="Strip" docname="Strip" headerfile="elements/standard/strip.hh" sourcefile="elements/standard/strip.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="StripIPHeader" cxxclass="StripIPHeader" docname="StripIPHeader" headerfile="elements/ip/stripipheader.hh" sourcefile="elements/ip/stripipheader.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="StripToNetworkHeader" cxxclass="StripToNetworkHeader" docname="StripToNetworkHeader" headerfile="elements/standard/striptonet.hh" sourcefile="elements/standard/striptonet.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="Suppressor" cxxclass="Suppressor" docname="Suppressor" headerfile="elements/standard/suppressor.hh" sourcefile="elements/standard/suppressor.cc" portcount="-/=" processing="a/a" flowcode="#/#" />
-+<entry name="Switch" cxxclass="Switch" docname="Switch" headerfile="elements/standard/switch.hh" sourcefile="elements/standard/switch.cc" portcount="1/-" processing="h/h" flowcode="x/x" />
-+<entry name="TCPRewriter" cxxclass="TCPRewriter" docname="TCPRewriter" headerfile="elements/tcpudp/tcprewriter.hh" sourcefile="elements/tcpudp/tcprewriter.cc" portcount="1-/1-256" processing="h/h" requires="IPRw IPRewriterPatterns" />
-+<entry name="Tee" cxxclass="Tee" docname="Tee" headerfile="elements/standard/tee.hh" sourcefile="elements/standard/tee.cc" portcount="1/1-" processing="h/h" flowcode="x/x" />
-+<entry name="TimedSink" cxxclass="TimedSink" docname="TimedSink" headerfile="elements/standard/timedsink.hh" sourcefile="elements/standard/timedsink.cc" portcount="1/0" processing="l/l" flowcode="x/x" />
-+<entry name="TimedSource" cxxclass="TimedSource" docname="TimedSource" headerfile="elements/standard/timedsource.hh" sourcefile="elements/standard/timedsource.cc" portcount="0/1" processing="h/h" flowcode="x/x" />
-+<entry name="ToDevice" cxxclass="ToDevice" docname="ToDevice" headerfile="elements/linuxmodule/todevice.hh" sourcefile="elements/linuxmodule/todevice.cc" portcount="1/0" processing="l/l" methods="static_initialize static_cleanup" requires="AnyDevice linuxmodule" />
-+<entry name="ToDevice" cxxclass="ToDevice" docname="ToDevice.u" headerfile="elements/userlevel/todevice.hh" sourcefile="elements/userlevel/todevice.cc" portcount="1/0-2" processing="l/h" flowcode="x/x" flags="S2" requires="FromDevice userlevel" />
-+<entry name="ToDump" cxxclass="ToDump" docname="ToDump" headerfile="elements/userlevel/todump.hh" sourcefile="elements/userlevel/todump.cc" portcount="1/0-1" processing="a/a" flowcode="x/x" flags="S2" requires="userlevel|ns FakePcap" />
-+<entry name="ToHost" cxxclass="ToHost" docname="ToHost" headerfile="elements/linuxmodule/tohost.hh" sourcefile="elements/linuxmodule/tohost.cc" portcount="1/0" processing="h/h" flags="S2" methods="static_initialize static_cleanup" requires="linuxmodule AnyDevice" />
-+<entry name="ToHost" cxxclass="ToHost" docname="ToHost.u" headerfile="elements/userlevel/tohost.hh" sourcefile="elements/userlevel/tohost.cc" portcount="1/0" processing="h/h" flowcode="x/x" requires="userlevel FromHost" />
-+<entry name="ToHostSniffers" cxxclass="ToHostSniffers" docname="ToHostSniffers" headerfile="elements/linuxmodule/tohostsniffers.hh" sourcefile="elements/linuxmodule/tohostsniffers.cc" portcount="1/0" processing="h/h" flowcode="x/x" requires="linuxmodule ToHost" />
-+<entry name="ToRawSocket" cxxclass="ToRawSocket" docname="ToRawSocket" headerfile="elements/userlevel/torawsocket.hh" sourcefile="elements/userlevel/torawsocket.cc" portcount="0-1/0-1" processing="l/l" flowcode="x/y" requires="RawSocket" />
-+<entry name="ToSocket" cxxclass="ToSocket" docname="ToSocket" headerfile="elements/userlevel/tosocket.hh" sourcefile="elements/userlevel/tosocket.cc" portcount="0-1/0-1" processing="l/l" flowcode="x/y" requires="Socket" />
-+<entry name="Truncate" cxxclass="Truncate" docname="Truncate" headerfile="elements/standard/truncate.hh" sourcefile="elements/standard/truncate.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="UDPIPEncap" cxxclass="UDPIPEncap" docname="UDPIPEncap" headerfile="elements/tcpudp/udpipencap.hh" sourcefile="elements/tcpudp/udpipencap.cc" portcount="1/1" processing="a/a" flowcode="x/x" flags="A" />
-+<entry name="UMLSwitch" cxxclass="UMLSwitch" docname="UMLSwitch" headerfile="elements/userlevel/umlswitch.hh" sourcefile="elements/userlevel/umlswitch.cc" portcount="0-1/0-1" processing="l/h" flowcode="x/y" requires="Socket" />
-+<entry name="Unqueue" cxxclass="Unqueue" docname="Unqueue" headerfile="elements/standard/unqueue.hh" sourcefile="elements/standard/unqueue.cc" portcount="1/1" processing="l/h" flowcode="x/x" />
-+<entry name="Unqueue2" cxxclass="Unqueue2" docname="Unqueue2" headerfile="elements/standard/unqueue2.hh" sourcefile="elements/standard/unqueue2.cc" portcount="1/1" processing="l/h" flowcode="x/x" />
-+<entry name="Unstrip" cxxclass="Unstrip" docname="Unstrip" headerfile="elements/standard/unstrip.hh" sourcefile="elements/standard/unstrip.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry name="UnstripIPHeader" cxxclass="UnstripIPHeader" docname="UnstripIPHeader" headerfile="elements/ip/unstripipheader.hh" sourcefile="elements/ip/unstripipheader.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
-+<entry headerfile="elements/linuxmodule/anydevice.hh" sourcefile="elements/linuxmodule/anydevice.cc" requires="linuxmodule" provides="AnyDevice" />
-+<entry headerfile="elements/userlevel/fakepcap.hh" sourcefile="elements/userlevel/fakepcap.cc" requires="userlevel|ns" provides="FakePcap" />
-+<entry headerfile="elements/userlevel/fromfile.hh" sourcefile="elements/userlevel/fromfile.cc" requires="userlevel|ns FakePcap" provides="FromFile" />
-+<entry headerfile="elements/userlevel/handlerproxy.hh" sourcefile="elements/userlevel/handlerproxy.cc" requires="userlevel" provides="HandlerProxy" />
-+<entry docname="IPRouteTable" headerfile="elements/ip/iproutetable.hh" sourcefile="elements/ip/iproutetable.cc" provides="IPRouteTable" />
-+<entry headerfile="elements/ip/iprw.hh" sourcefile="elements/ip/iprw.cc" provides="IPRw" />
-+<entry headerfile="elements/linuxmodule/perfcountuser.hh" sourcefile="elements/linuxmodule/perfcountuser.cc" requires="linuxmodule i586" provides="PerfCountUser" />
-+</elementmap>
-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 <friedman@prep.ai.mit.edu>
-+# Created: 1993-05-16
-+# Public domain.
-+#
-+# This file is maintained in Automake, please report
-+# bugs to <bug-automake@gnu.org> or send patches to
-+# <automake-patches@gnu.org>.
-+
-+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 <bug-automake@gnu.org>."
-+
-+# 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
-+
-+\1f
-+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: <http://www.read.cs.ucla.edu/click/doxygen>
-+
-+* 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::
-+
-+\1f
-+File: click.info,  Node: Overview,  Next: Helper Classes,  Prev: Top,  Up: Top
-+
-+1 Overview
-+**********
-+
-+* Menu:
-+
-+* Packet Transfer::
-+
-+\1f
-+File: click.info,  Node: Packet Transfer,  Prev: Overview,  Up: Overview
-+
-+1.1 Packet Transfer
-+===================
-+
-+\1f
-+File: click.info,  Node: Helper Classes,  Next: Packets,  Prev: Overview,  Up: Top
-+
-+2 Helper Classes
-+****************
-+
-+* Menu:
-+
-+* ErrorHandler::
-+
-+\1f
-+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
-+`<click/error.hh>'.
-+
-+* Menu:
-+
-+* ErrorHandler Initialization::
-+* Reporting Errors::
-+* Error Format Strings::
-+* Counting Errors::
-+* Basic ErrorHandlers::
-+* Error Veneers::
-+* Writing ErrorHandlers::
-+
-+\1f
-+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'.
-+
-+\1f
-+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'.
-+
-+\1f
-+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.
-+
-+\1f
-+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
-+     }
-+
-+\1f
-+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.
-+
-+\1f
-+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
-+
-+\1f
-+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'.
-+
-+\1f
-+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
-+`<click/packet.hh>'.
-+
-+* Menu:
-+
-+* Packet Structure and Contents::
-+* Packet Creation::
-+* Packets and sk_buffs::
-+* Packet Sharing::
-+* Packet Buffer Manipulation::
-+* Annotations::
-+* Packet Out-of-Memory::
-+* Handlers::
-+
-+\1f
-+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()
-+
-+\1f
-+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.
-+
-+\1f
-+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'.
-+
-+\1f
-+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.
-+
-+\1f
-+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.
-+
-+\1f
-+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::
-+
-+\1f
-+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.
-+
-+\1f
-+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 `<click/packet_anno.hh>' 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 `<click/packet_anno.hh>'.
-+
-+   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.
-+
-+\1f
-+File: click.info,  Node: Specific User Annotations,  Next: Other Annotations,  Prev: User Annotations,  Up: Annotations
-+
-+3.6.3 Specific User Annotations
-+-------------------------------
-+
-+The `<click/packet_anno.hh>' 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 `<click/packet_anno.hh>'.
-+
-+     #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
-+`<click/packet_anno.hh>'.
-+
-+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'
-+
-+\1f
-+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::
-+
-+\1f
-+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.
-+
-+\1f
-+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.
-+
-+\1f
-+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.
-+
-+\1f
-+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
-+     `<linux/if_packet.h>'.
-+
-+ -- 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'.
-+
-+\1f
-+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.
-+
-+\1f
-+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.)
-+
-+\1f
-+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.
-+
-+\1f
-+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::
-+
-+\1f
-+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.
-+
-+\1f
-+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.
-+
-+\1f
-+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
-+
-+\1f
-+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::
-+
-+\1f
-+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()'.
-+
-+\1f
-+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<int> &RESULTS)
-+     Appends to RESULTS all the handler indexes for ELEMENT's handlers,
-+     or all global handlers if ELEMENT is null.
-+
-+\1f
-+File: click.info,  Node: LLRPC Overview,  Prev: Accessing Handlers Internally,  Up: Handlers
-+
-+3.8.5 LLRPC Overview
-+--------------------
-+
-+\1f
-+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 `<click/task.hh>' header file.
-+
-+* Menu:
-+
-+* Task Initialization::
-+* Scheduling Tasks::
-+* Tickets::
-+* Task Thread Choice::
-+* Task Status::
-+* Task Handlers::
-+* Task Cleanup::
-+
-+\1f
-+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
-+`<click/standard/scheduleinfo.hh>' 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.
-+
-+\1f
-+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.
-+
-+\1f
-+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.
-+
-+\1f
-+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.
-+
-+\1f
-+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.
-+
-+\1f
-+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".
-+
-+\1f
-+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.
-+
-+\1f
-+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 `<click/timer.hh>' header file.
-+
-+* Menu:
-+
-+* Timer Initialization::
-+* Scheduling Timers::
-+* Timer Status Methods::
-+* Timer Cleanup::
-+
-+\1f
-+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.
-+
-+\1f
-+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.
-+
-+\1f
-+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.
-+
-+\1f
-+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.
-+
-+\1f
-+File: click.info,  Node: Notification,  Next: Coding Standards,  Prev: Timers,  Up: Top
-+
-+6 Notification
-+**************
-+
-+\1f
-+File: click.info,  Node: Coding Standards,  Next: Index,  Prev: Notification,  Up: Top
-+
-+7 Coding Standards
-+******************
-+
-+* Menu:
-+
-+* Upper and lower case names::
-+* Common name patterns::
-+
-+\1f
-+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').
-+
-+\1f
-+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).
-+
-+\1f
-+File: click.info,  Node: Index,  Prev: Coding Standards,  Up: Top
-+
-+Index
-+*****
-+
-+\0\b[index\0\b]
-+* 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)
-+
-+
-+\1f
-+Tag Table:
-+Node: Top\7f233
-+Node: Overview\7f2218
-+Node: Packet Transfer\7f2353
-+Node: Helper Classes\7f2470
-+Node: ErrorHandler\7f2618
-+Node: ErrorHandler Initialization\7f3523
-+Node: Reporting Errors\7f4673
-+Node: Error Format Strings\7f8229
-+Node: Counting Errors\7f12734
-+Node: Basic ErrorHandlers\7f13677
-+Node: Error Veneers\7f15602
-+Node: Writing ErrorHandlers\7f19343
-+Node: Packets\7f22748
-+Node: Packet Structure and Contents\7f24424
-+Node: Packet Creation\7f26727
-+Node: Packets and sk_buffs\7f30171
-+Node: Packet Sharing\7f32385
-+Node: Packet Buffer Manipulation\7f33889
-+Node: Annotations\7f38510
-+Node: Header Annotations\7f39633
-+Node: User Annotations\7f44362
-+Node: Specific User Annotations\7f46926
-+Node: Other Annotations\7f48352
-+Node: Destination Address Annotation\7f49046
-+Node: Timestamp Annotation\7f50312
-+Node: Device Annotation\7f51557
-+Node: Packet Type Annotation\7f52750
-+Node: Performance Counter Annotation\7f54390
-+Node: Annotations In General\7f55128
-+Node: Packet Out-of-Memory\7f55784
-+Node: Handlers\7f56549
-+Node: Read and Write Handler Overview\7f57053
-+Node: Adding Handlers\7f60246
-+Ref: Changing Handler Flags\7f62106
-+Node: Default Handlers\7f62591
-+Node: Accessing Handlers Internally\7f65097
-+Node: Handler Objects\7f65946
-+Node: Handlers By Name or Index\7f69116
-+Node: LLRPC Overview\7f71591
-+Node: Tasks\7f71730
-+Node: Task Initialization\7f73013
-+Node: Scheduling Tasks\7f76105
-+Node: Tickets\7f79882
-+Ref: Tickets-Footnote-1\7f80864
-+Node: Task Thread Choice\7f81096
-+Node: Task Status\7f82460
-+Node: Task Handlers\7f83806
-+Node: Task Cleanup\7f84870
-+Node: Timers\7f85502
-+Node: Timer Initialization\7f86263
-+Node: Scheduling Timers\7f87370
-+Node: Timer Status Methods\7f89646
-+Node: Timer Cleanup\7f90505
-+Node: Notification\7f91069
-+Node: Coding Standards\7f91191
-+Node: Upper and lower case names\7f91386
-+Node: Common name patterns\7f93028
-+Node: Index\7f93763
-+\1f
-+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.
-+\1f
-+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<Return>" 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 <span class=xxx>
-+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 "<a name='e-X'>"
-+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
-+<ul>
-+<~elements entry="<li><~name link> :: <~type link></li>">
-+</ul>
-+.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, <kohler@cs.ucla.edu>
-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
-+   <p>Here is a pretty picture:
-+   <img src="pretty.gif"></p>
-+
-+   Back to B<normal text> 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<lt>\fR is `<', \f(CWE<gt>\fR is `>', \f(CWE<amp>\fR is `&',
-+\f(CWE<solid>\fR is `/', \f(CWE<verbar>\fR is `|', \f(CWE<star>\fR is `*',
-+and \f(CWE<eq>\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<must> 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<click/llrpc.h>\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
-+<click/llrpc.h>). 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", <TCP source port number> [, \fIKEYWORDS\fR])
-+.br
-+\fBFromRawSocket\fR("UDP", <UDP source port number> [, \fIKEYWORDS\fR])
-+.br
-+\fBFromRawSocket\fR("GRE", <GRE key or PPTP call ID> [, \fIKEYWORDS\fR])
-+.br
-+\fBFromRawSocket\fR("ICMP", <ICMP identifier> [, \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<String> &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", <TCP source port number> [, \fIKEYWORDS\fR])
-+.br
-+\fBRawSocket\fR("UDP", <UDP source port number> [, \fIKEYWORDS\fR])
-+.br
-+\fBRawSocket\fR("GRE", <GRE key or PPTP call ID> [, \fIKEYWORDS\fR])
-+.br
-+\fBRawSocket\fR("ICMP", <ICMP identifier> [, \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", <TCP source port number>)
-+.br
-+\fBToRawSocket\fR("UDP", <UDP source port number>)
-+.br
-+\fBToRawSocket\fR("GRE", <GRE key or PPTP call ID>)
-+.br
-+\fBToRawSocket\fR("ICMP", <ICMP identifier>)
-+
-+\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 <p><a href="#BY+FUNCTION"><b>By Function</b></a>:
-+.\"html <a href="#Basic+Sources+and+Sinks">Basic&nbsp;Sources&nbsp;and&nbsp;Sinks</a>&nbsp;- <a href="#Basic+Classification+and+Selection">Basic&nbsp;Classification&nbsp;and&nbsp;Selection</a>&nbsp;- <a href="#Basic+Packet+Transfer">Basic&nbsp;Packet&nbsp;Transfer</a>&nbsp;- <a href="#Counters">Counters</a>&nbsp;- <a href="#Timestamps">Timestamps</a>&nbsp;- <a href="#Basic+Packet+Modification">Basic&nbsp;Packet&nbsp;Modification</a>&nbsp;- <a href="#Packet+Storage">Packet&nbsp;Storage</a>&nbsp;- <a href="#Active+Queue+Management">Active&nbsp;Queue&nbsp;Management</a>&nbsp;- <a href="#Packet+Scheduling">Packet&nbsp;Scheduling</a>&nbsp;- <a href="#Traffic+Shaping">Traffic&nbsp;Shaping</a>&nbsp;- <a href="#Information+Elements">Information&nbsp;Elements</a>&nbsp;- <a href="#Network+Devices">Network&nbsp;Devices</a>&nbsp;- <a href="#Host+and+Socket+Communication">Host&nbsp;and&nbsp;Socket&nbsp;Communication</a>&nbsp;- <a href="#Ethernet">Ethernet</a>&nbsp;- <a href="#ARP">ARP</a>&nbsp;- <a href="#IPv4">IPv4</a>&nbsp;- <a href="#IPv4+Routing">IPv4&nbsp;Routing</a>&nbsp;- <a href="#ICMP">ICMP</a>&nbsp;- <a href="#Network+Address+Translation">Network&nbsp;Address&nbsp;Translation</a>&nbsp;- <a href="#TCP">TCP</a>&nbsp;- <a href="#UDP">UDP</a>&nbsp;- <a href="#Trace+Manipulation">Trace&nbsp;Manipulation</a>&nbsp;- <a href="#TCP/IP+Measurement">TCP/IP&nbsp;Measurement</a>&nbsp;- <a href="#CRCs">CRCs</a>&nbsp;- <a href="#Paint+Annotations">Paint&nbsp;Annotations</a>&nbsp;- <a href="#Annotations">Annotations</a>&nbsp;- <a href="#Debugging">Debugging</a>&nbsp;- <a href="#Control">Control</a>&nbsp;- <a href="#Multithreaded+Click">Multithreaded&nbsp;Click</a>&nbsp;- <a href="#devices">devices</a><br>
-+.\"html <a href="#ALPHABETICAL+LIST"><b>Alphabetical List</b></a></p>
-+.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 <p><a href="#BY+FUNCTION"><b>By Function</b></a>:
-+.\"html <a href="#Basic+Sources+and+Sinks">Basic&nbsp;Sources&nbsp;and&nbsp;Sinks</a>&nbsp;- <a href="#Basic+Classification+and+Selection">Basic&nbsp;Classification&nbsp;and&nbsp;Selection</a>&nbsp;- <a href="#Basic+Packet+Transfer">Basic&nbsp;Packet&nbsp;Transfer</a>&nbsp;- <a href="#Counters">Counters</a>&nbsp;- <a href="#Timestamps">Timestamps</a>&nbsp;- <a href="#Basic+Packet+Modification">Basic&nbsp;Packet&nbsp;Modification</a>&nbsp;- <a href="#Packet+Storage">Packet&nbsp;Storage</a>&nbsp;- <a href="#Active+Queue+Management">Active&nbsp;Queue&nbsp;Management</a>&nbsp;- <a href="#Packet+Scheduling">Packet&nbsp;Scheduling</a>&nbsp;- <a href="#Traffic+Shaping">Traffic&nbsp;Shaping</a>&nbsp;- <a href="#Information+Elements">Information&nbsp;Elements</a>&nbsp;- <a href="#Network+Devices">Network&nbsp;Devices</a>&nbsp;- <a href="#Host+and+Socket+Communication">Host&nbsp;and&nbsp;Socket&nbsp;Communication</a>&nbsp;- <a href="#Ethernet">Ethernet</a>&nbsp;- <a href="#ARP">ARP</a>&nbsp;- <a href="#IPv4">IPv4</a>&nbsp;- <a href="#IPv4+Routing">IPv4&nbsp;Routing</a>&nbsp;- <a href="#ICMP">ICMP</a>&nbsp;- <a href="#Network+Address+Translation">Network&nbsp;Address&nbsp;Translation</a>&nbsp;- <a href="#TCP">TCP</a>&nbsp;- <a href="#UDP">UDP</a>&nbsp;- <a href="#Trace+Manipulation">Trace&nbsp;Manipulation</a>&nbsp;- <a href="#TCP/IP+Measurement">TCP/IP&nbsp;Measurement</a>&nbsp;- <a href="#CRCs">CRCs</a>&nbsp;- <a href="#Paint+Annotations">Paint&nbsp;Annotations</a>&nbsp;- <a href="#Annotations">Annotations</a>&nbsp;- <a href="#Debugging">Debugging</a>&nbsp;- <a href="#Control">Control</a>&nbsp;- <a href="#Multithreaded+Click">Multithreaded&nbsp;Click</a>&nbsp;- <a href="#devices">devices</a>&nbsp;- <a href="#Basic+Sources+and+Sinks">Basic&nbsp;Sources&nbsp;and&nbsp;Sinks</a>&nbsp;- <a href="#Basic+Classification+and+Selection">Basic&nbsp;Classification&nbsp;and&nbsp;Selection</a>&nbsp;- <a href="#Basic+Packet+Transfer">Basic&nbsp;Packet&nbsp;Transfer</a>&nbsp;- <a href="#Counters">Counters</a>&nbsp;- <a href="#Timestamps">Timestamps</a>&nbsp;- <a href="#Basic+Packet+Modification">Basic&nbsp;Packet&nbsp;Modification</a>&nbsp;- <a href="#Packet+Storage">Packet&nbsp;Storage</a>&nbsp;- <a href="#Active+Queue+Management">Active&nbsp;Queue&nbsp;Management</a>&nbsp;- <a href="#Packet+Scheduling">Packet&nbsp;Scheduling</a>&nbsp;- <a href="#Traffic+Shaping">Traffic&nbsp;Shaping</a>&nbsp;- <a href="#Information+Elements">Information&nbsp;Elements</a>&nbsp;- <a href="#Network+Devices">Network&nbsp;Devices</a>&nbsp;- <a href="#Host+and+Socket+Communication">Host&nbsp;and&nbsp;Socket&nbsp;Communication</a>&nbsp;- <a href="#Ethernet">Ethernet</a>&nbsp;- <a href="#ARP">ARP</a>&nbsp;- <a href="#IPv4">IPv4</a>&nbsp;- <a href="#IPv4+Routing">IPv4&nbsp;Routing</a>&nbsp;- <a href="#ICMP">ICMP</a>&nbsp;- <a href="#Network+Address+Translation">Network&nbsp;Address&nbsp;Translation</a>&nbsp;- <a href="#TCP">TCP</a>&nbsp;- <a href="#UDP">UDP</a>&nbsp;- <a href="#Trace+Manipulation">Trace&nbsp;Manipulation</a>&nbsp;- <a href="#TCP/IP+Measurement">TCP/IP&nbsp;Measurement</a>&nbsp;- <a href="#CRCs">CRCs</a>&nbsp;- <a href="#Paint+Annotations">Paint&nbsp;Annotations</a>&nbsp;- <a href="#Annotations">Annotations</a>&nbsp;- <a href="#Debugging">Debugging</a>&nbsp;- <a href="#Control">Control</a>&nbsp;- <a href="#Multithreaded+Click">Multithreaded&nbsp;Click</a>&nbsp;- <a href="#devices">devices</a><br>
-+.\"html <a href="#ALPHABETICAL+LIST"><b>Alphabetical List</b></a></p>
-+.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 <click/config.h>
-+#include <click/bitvector.hh>
-+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 <click/config.h>
-+#if CLICK_BSDMODULE
-+# include <sys/param.h>
-+# include <sys/proc.h>
-+#endif
-+#include <clicknet/ip.h>
-+#if CLICK_LINUXMODULE
-+# include <linux/string.h>
-+#else
-+# include <string.h>
-+#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 <click/config.h>
-+#include <click/glue.hh>
-+#include <click/ino.hh>
-+#include <click/router.hh>
-+#if INO_DEBUG
-+# include <click/straccum.hh>
-+#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<const ClickIno::Entry *>(v1);
-+    const ClickIno::Entry *b = reinterpret_cast<const ClickIno::Entry *>(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<const String *>(v1);
-+    const String *b = reinterpret_cast<const String *>(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<int> his;
-+    Router::element_hindexes(Router::element(_router, parent_elementno), his);
-+    Vector<String> 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<int> 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 <click/config.h>
-+#include <click/nameinfo.hh>
-+#include <click/glue.hh>
-+#include <click/confparse.hh>
-+#include <click/router.hh>
-+#include <click/error.hh>
-+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<uint32_t *>(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<int> 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<String> 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 <click/config.h>
-+#include <click/straccum.hh>
-+#include <click/string.hh>
-+#include <click/glue.hh>
-+#include <click/confparse.hh>
-+#include <click/timestamp.hh>
-+#include <stdarg.h>
-+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.
-+ *
-+ * <h3>Out-of-memory StringAccums</h3>
-+ *
-+ * 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<unsigned char *>(const_cast<char *>(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<char *>(_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<char *>(_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<String::uint_large_t>(-num), base, uppercase);
-+    } else
-+      append_numeric(static_cast<String::uint_large_t>(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 <click/config.h>
-+#include <click/string.hh>
-+#include <click/straccum.hh>
-+#include <click/glue.hh>
-+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.
-+ *
-+ * <h3>Initialization</h3>
-+ *
-+ * 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.
-+ *
-+ * <h3>Out-of-memory strings</h3>
-+ *
-+ * 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<char *>(_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<char *>(_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<char *>(_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<char *>(_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<char *>(_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<char *>(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<char *>(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<const unsigned char *>(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<const uint8_t*>(end());
-+    for (const uint8_t *x = reinterpret_cast<const uint8_t*>(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<char*>(&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<void*>
-+ * 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 <click/config.h>
-+#include <click/glue.hh>
-+#include <click/vector.hh>
-+CLICK_DECLS
-+
-+Vector<void*>::Vector(const Vector<void*> &o)
-+  : _l(0), _n(0), _capacity(0)
-+{
-+  *this = o;
-+}
-+
-+Vector<void*>::~Vector()
-+{
-+  delete[] _l;
-+}
-+
-+Vector<void*> &
-+Vector<void*>::operator=(const Vector<void*> &o)
-+{
-+  if (&o != this) {
-+    _n = 0;
-+    if (reserve(o._n)) {
-+      _n = o._n;
-+      memcpy(_l, o._l, sizeof(void *) * _n);
-+    }
-+  }
-+  return *this;
-+}
-+
-+Vector<void*> &
-+Vector<void*>::assign(size_type n, void* e)
-+{
-+  _n = 0;
-+  resize(n, e);
-+  return *this;
-+}
-+
-+bool
-+Vector<void*>::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<void*>::iterator
-+Vector<void*>::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<void*>::iterator
-+Vector<void*>::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<void*>::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<void*>::swap(Vector<void*>& 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 <click/config.h>
- #include <linux/version.h>
- #include <linux/module.h>
-+
- #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 <click/config.h>
-+#include <linux/version.h>
-+#include <linux/module.h>
-+#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 <click/config.h>
-+#include <linux/version.h>
-+#include <linux/module.h>
-+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 <linux/version.h>
- #include <linux/autoconf.h>
-+#include <linux/list.h>
-+
- #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 <linux/version.h>
-+#include <linux/autoconf.h>
-+#ifndef EXPORT_SYMTAB
-+# define EXPORT_SYMTAB
-+#endif
-+#ifdef CONFIG_MODVERSIONS
-+# define MODVERSIONS
-+# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
-+#  include <linux/modversions.h>
-+# endif
-+#endif
-+#include <linux/module.h>
-+#include "proclikefs.h"
-+#include <linux/string.h>
-+#include <linux/slab.h>
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
-+# include <linux/locks.h>
-+#endif
-+#include <linux/file.h>
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
-+# include <linux/namei.h>
-+#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 <kohler@cs.ucla.edu>");
-+#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 <asm/system.h>
-+
- #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 <click/config.h>
-+#include <linux/types.h>
-+#include <linux/kernel.h>
-+#include <asm/system.h>
-+
-+
-+#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 <click/config.h>
-+#include "modulepriv.hh"
-+
-+#include <click/routerthread.hh>
-+#include <click/glue.hh>
-+#include <click/router.hh>
-+#include <click/straccum.hh>
-+#include <click/master.hh>
-+#include <click/confparse.hh>
-+
-+#include <click/cxxprotect.h>
-+CLICK_CXX_PROTECT
-+#include <linux/sched.h>
-+#include <linux/timer.h>
-+#include <linux/interrupt.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <asm/bitops.h>
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
-+# include <linux/cpumask.h>
-+#endif
-+CLICK_CXX_UNPROTECT
-+#include <click/cxxunprotect.h>
-+
-+#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<int> *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(&current->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<uintptr_t>(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<uintptr_t>(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<int>;
-+  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 "<built-in>"
-+# 1 "<command line>"
-+# 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 <class T>
-+inline __attribute__((always_inline)) T *
-+find(T *begin, T *end, const T &val)
-+{
-+    while (begin < end && *begin != val)
-+ begin++;
-+    return begin;
-+}
-+
-+template <class T>
-+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(&notifier->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<char *>(&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<const char *>(_s);
-+    }
-+
-+
-+    inline __attribute__((always_inline)) char *data() {
-+ return reinterpret_cast<char *>(_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<char>(_s[i]);
-+    }
-+
-+
-+
-+
-+
-+    char &operator[](int i) {
-+ ;
-+ return reinterpret_cast<char &>(_s[i]);
-+    }
-+
-+
-+
-+    char back() const {
-+ ;
-+ return static_cast<char>(_s[_len - 1]);
-+    }
-+
-+
-+
-+    char &back() {
-+ ;
-+ return reinterpret_cast<char &>(_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<char>(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<const char *>(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<long>(i);
-+}
-+
-+
-+
-+
-+inline __attribute__((always_inline)) StringAccum &
-+operator<<(StringAccum &sa, unsigned short u)
-+{
-+    return sa << static_cast<unsigned long>(u);
-+}
-+
-+
-+
-+
-+inline __attribute__((always_inline)) StringAccum &
-+operator<<(StringAccum &sa, int i)
-+{
-+    return sa << static_cast<long>(i);
-+}
-+
-+
-+
-+
-+inline __attribute__((always_inline)) StringAccum &
-+operator<<(StringAccum &sa, unsigned u)
-+{
-+    return sa << static_cast<unsigned long>(u);
-+}
-+
-+
-+
-+
-+
-+inline __attribute__((always_inline)) StringAccum &
-+operator<<(StringAccum &sa, long long q)
-+{
-+    sa.append_numeric(static_cast<String::int_large_t>(q));
-+    return sa;
-+}
-+
-+
-+
-+
-+inline __attribute__((always_inline)) StringAccum &
-+operator<<(StringAccum &sa, unsigned long long q)
-+{
-+    sa.append_numeric(static_cast<String::uint_large_t>(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<char *>(_data);
-+
-+
-+
-+  ;
-+  deref();
-+  assign(_data, _length);
-+  return const_cast<char *>(_data);
-+}
-+
-+
-+
-+
-+char *
-+String::mutable_c_str()
-+{
-+  (void) mutable_data();
-+  (void) c_str();
-+  return const_cast<char *>(_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<char *>(_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<char *>(_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<char *>(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<char *>(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<const unsigned char *>(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<const uint8_t*>(end());
-+    for (const uint8_t *x = reinterpret_cast<const uint8_t*>(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<char*>(&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)
-+
-+
-+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 exportstub.o
-+STD_ELEMENT_OBJS = addressinfo.o alignmentinfo.o \
-+      errorelement.o portinfo.o scheduleinfo.o
-+OBJS = $(ELEMENT_OBJS) $(ELEMENTSCONF).o click.o
-+
-+CPPFLAGS =  -DCLICK_USERLEVEL
-+CFLAGS = -g -O2
-+CXXFLAGS = -g -O2
-+DEPCFLAGS = -MD
-+
-+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)
-+
-+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
-+DRIVER = click
-+ELEMENTSCONF = elements
-+INSTALLLIBS = libclick.a
-+else
-+DRIVER = $(MINDRIVER)click
-+ELEMENTSCONF = elements_$(MINDRIVER)
-+endif
-+INSTALLPROGS = $(DRIVER)
-+
-+all: $(INSTALLPROGS) $(INSTALLLIBS)
-+
-+ifneq ($(MAKECMDGOALS),clean)
-+-include $(ELEMENTSCONF).mk
-+endif
-+
-+$(DRIVER): Makefile libclick.a $(OBJS)
-+      $(CXXLINK) -rdynamic $(OBJS) libclick.a $(LIBS)
-+
-+libclick.a: Makefile $(LIBOBJS)
-+      $(AR_CREATE) libclick.a $(LIBOBJS)
-+      $(RANLIB) libclick.a
-+
-+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 "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
-+
-+DEPFILES := $(wildcard *.d)
-+ifneq ($(DEPFILES),)
-+include $(DEPFILES)
-+endif
-+
-+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
-+
-+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
-+
-+.PHONY: all clean clean-lib distclean elemlist \
-+      install install-lib uninstall